TF Keras Applications EfficientNetB0
TensorFlow 지원 범위
RBLN 컴파일러의 TensorFlow 경로는 Python 3.10~3.12에서 TensorFlow 2.18 및 tf_keras 2.18(Keras 2 API)로 검증되었습니다. Keras 3 모델은 지원하지 않으며, 이후 TensorFlow 릴리스는 검증되지 않았습니다.
개요
이 튜토리얼에서는 TF Keras Applications의 EfficientNetB0 모델을 RBLN Python API를 사용하여 컴파일하고 추론하는 방법을 보여줍니다.
환경 설정 및 설치 확인
시작하기 전에 시스템 환경이 올바르게 구성되어 있고 필요한 패키지가 모두 설치되어 있는지 확인합니다. 필요한 항목은 다음과 같습니다:
- 시스템 요구 사항:
- 필수 패키지:
- 설치 명령어:
| pip install tensorflow==2.18.0 tf_keras==2.18.0 numpy pillow
pip install \
--extra-index-url https://pypi.rbln.ai/simple \
rebel-compiler==0.12.0
|
Info
rebel-compiler를 사용하려면 RBLN Portal 계정이 필요합니다. - 위 명령은 Debian 계열 Linux(예: Ubuntu)에서 pip로 패키지를 설치하는 일반적인 절차를 전제로 합니다. OS나 환경이 다른 경우에는 설치 가이드에서 지원되는 설치 조합과 적용 가능한 명령을 확인할 수 있습니다.
RBLN Python API 사용
모델 컴파일
TF Keras Applications 모듈에서 EfficientNetB0를 임포트하고, 사전 학습된 가중치로 모델을 인스턴스화한 후 tf.function으로 변환합니다.
그 다음 RBLN 컴파일러로 모델을 컴파일하고 디스크에 저장합니다.
| import tensorflow as tf
from tf_keras.applications.efficientnet import EfficientNetB0
import rebel # RBLN 컴파일러
# Instantiate TF Keras Applications EfficientNetB0 model
model = EfficientNetB0(weights='imagenet')
func = tf.function(lambda input_img: model(input_img))
# Compile the model
input_info = [('input_img', [1, 224, 224, 3], tf.float32)]
compiled_model = rebel.compile_from_tf_function(
func,
input_info,
)
# Save the compiled model to disk
compiled_model.save('efficientnetb0.rbln')
|
모델 추론
EfficientNetB0에 필요한 입력 이미지를 다운로드하고 전처리합니다.
preprocess_input()을 사용해 적절히 전처리한 후, RBLN 런타임으로 컴파일된 모델을 로드하고 추론을 실행합니다.
decode_predictions()를 사용해 예측 결과를 디코딩하고 최상위 예측을 출력합니다.
| import urllib.request
from tf_keras.preprocessing import image
from tf_keras.applications.efficientnet import preprocess_input, decode_predictions
import numpy as np
import rebel # RBLN 런타임
# Prepare the input
img_url = 'https://rbln-public.s3.ap-northeast-2.amazonaws.com/images/tabby.jpg'
img_path = './tabby.jpg'
with urllib.request.urlopen(img_url) as response, open(img_path, 'wb') as f:
f.write(response.read())
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
x = np.ascontiguousarray(x)
# Load the compiled model
module = rebel.Runtime('efficientnetb0.rbln')
# Run inference
rebel_result = module.run(x)
# Check results
print('Top1 category:', decode_predictions(rebel_result, top=1)[0])
|
예시 출력:
| Top1 category: [('n02123045', 'tabby', 0.3798828)]
|
참고