TensorFlow는 사전에 정의된 특징 추출기(feature extractor) 모델을 활용하여, Dense 레이어를 포함하는 순차(Sequential) 모델에 분류 헤드(classification head)를 간편하게 연결할 수 있도록 지원합니다.
함께 읽으면 좋은 글:
TensorFlow란 무엇이며, Keras는 어떻게 TensorFlow와 함께 작동하여 신경망을 생성할까요?
핵심 개념
최소 하나 이상의 합성곱 레이어(convolutional layer)를 포함하는 신경망을 합성곱 신경망(CNN)이라고 부르며, 이를 활용해 학습 모델을 구축할 수 있습니다.
이미지 분류에서 전이 학습(transfer learning)의 기본 아이디어는 다음과 같습니다. 대규모의 일반적인 데이터셋으로 학습된 모델은 시각적 세계 전반을 위한 범용 모델로 효과적으로 재사용될 수 있습니다. 이러한 모델은 이미 특징 맵(feature map)을 학습한 상태이므로, 사용자가 대규모 데이터셋으로 처음부터 거대한 모델을 새로 학습시킬 필요가 없습니다.
TensorFlow Hub는 사전 학습된(pre-trained) TensorFlow 모델을 모아 둔 저장소입니다. 이러한 사전 학습 모델을 활용하면 학습 모델을 미세 조정(fine-tuning)할 수 있습니다.
이번 글에서는 tf.keras와 함께 TensorFlow Hub의 모델을 사용하는 방법과, TensorFlow Hub에서 제공하는 이미지 분류 모델을 활용하는 방법을 알아봅니다. 이어서 전이 학습을 통해 커스텀 이미지 클래스에 맞게 모델을 미세 조정하는 과정까지 다룹니다. 사전 학습된 분류기 모델은 별도의 학습 없이도 이미지를 입력받아 해당 이미지가 무엇인지 예측할 수 있습니다.
본 예제는 Google Colaboratory에서 실행합니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있으며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.
예제
print("분류 헤드 연결")
num_classes = len(class_names)
model = tf.keras.Sequential([
feature_extractor_layer,
tf.keras.layers.Dense(num_classes)
])
print("모델의 기본 아키텍처")
model.summary()
print("예측 수행")
predictions = model(image_batch)
print("예측값의 차원")
predictions.shape
코드 출처 − https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
실행 결과
분류 헤드 연결 모델의 기본 아키텍처 Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= keras_layer_1 (KerasLayer) (None, 1280) 2257984 _________________________________________________________________ dense_3 (Dense) (None, 5) 6405 ================================================================= Total params: 2,264,389 Trainable params: 6,405 Non-trainable params: 2,257,984 _________________________________________________________________ 예측 수행 예측값의 차원 TensorShape([32, 5])
설명
- 사전 학습된 특징 추출기 위에 Dense 레이어로 구성된 분류 헤드가 연결됩니다.
- 'summary' 메서드를 호출하여 모델의 기본 아키텍처를 확인합니다.
- 특징 추출기 레이어는 1,280개의 출력 특징을 생성하고, Dense 레이어는 클래스 수(5개)에 해당하는 출력을 만듭니다.
- 배치 크기가 32인 입력에 대해 예측 결과의 차원은 [32, 5]로 확인됩니다.
- 전체 파라미터 2,264,389개 중 실제로 학습되는 파라미터는 Dense 레이어의 6,405개뿐이며, 나머지는 고정되어 있습니다.