TensorFlow는 matplotlib 라이브러리의 imshow 메서드를 활용하여 모델의 예측 결과를 손쉽게 플롯(시각화)할 수 있습니다.
전이 학습과 이미지 분류의 기본 개념
최소 하나 이상의 합성곱 계층(convolutional layer)을 포함하는 신경망을 합성곱 신경망(CNN)이라고 하며, 이를 활용하면 효율적으로 학습 모델을 구축할 수 있습니다.
이미지 분류에서 전이 학습(Transfer Learning)의 핵심 아이디어는 다음과 같습니다. 대규모 범용 데이터셋으로 학습된 모델은 시각적 세계에 대한 일반적인 특징 맵(feature map)을 이미 학습한 상태이므로, 이를 재활용하면 사용자가 처음부터 대규모 모델을 방대한 데이터셋으로 훈련시킬 필요가 없습니다.
TensorFlow Hub는 사전 학습된(pre-trained) TensorFlow 모델들이 모여 있는 저장소로, 이곳의 모델을 가져와 세부 조정(fine-tuning)하면 학습 모델을 손쉽게 개선할 수 있습니다.
이 글에서는 tf.keras와 함께 TensorFlow Hub의 모델을 사용하는 방법과, TensorFlow Hub에서 제공하는 이미지 분류 모델을 활용하는 방법을 살펴봅니다. 사전 학습된 분류기 모델에 이미지를 입력하기만 하면 별도의 학습 없이도 해당 이미지가 무엇인지 예측할 수 있으며, 나아가 전이 학습을 통해 사용자 지정 이미지 클래스에 맞게 모델을 미세 조정할 수도 있습니다.
개발 환경: Google Colaboratory
아래 코드는 Google Colaboratory(Colab)에서 실행됩니다. Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)도 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.
예제 코드
print("The results are plotted")
plt.figure(figsize=(10,9))
plt.subplots_adjust(hspace=0.5)
for n in range(30):
plt.subplot(6,5,n+1)
plt.imshow(image_batch[n])
plt.title(predicted_label_batch[n].title())
plt.axis('off')
_ = plt.suptitle("Model predictions")코드 출처 − https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
출력 결과


코드 설명
- 30개의 테스트 이미지가 6행 × 5열 격자 형태로 배치되어 한 번에 출력됩니다.
- 각 이미지 위에는 모델이 예측한 클래스 레이블이 제목(title)으로 표시되며, axis('off') 옵션으로 축 눈금이 제거되어 이미지만 깔끔하게 보여집니다.
- subplots_adjust(hspace=0.5)로 이미지 사이의 세로 간격을 넓혀 가독성을 높였습니다.
- 마지막으로 plt.suptitle을 통해 전체 그림 상단에 "Model predictions"라는 큰 제목이 추가됩니다.