TensorFlow에서는 matplotlib 라이브러리의 imshow 메서드를 활용하여 ImageNet 모델이 생성한 예측 결과를 시각화함으로써 손쉽게 검증할 수 있습니다.
사전 개념 이해하기
합성곱 신경망(CNN)이란?
합성곱 계층(convolutional layer)을 하나 이상 포함하는 신경망을 합성곱 신경망(CNN)이라고 부릅니다. CNN은 이미지 학습 모델을 구축할 때 가장 널리 사용되는 아키텍처입니다.
전이 학습(Transfer Learning)의 직관적 원리
이미지 분류에서 전이 학습의 핵심 아이디어는 다음과 같습니다. 대규모의 일반적인 데이터셋으로 학습된 모델은 시각 세계 전반에 적용 가능한 범용 모델로 활용될 수 있습니다. 이러한 모델은 이미 특징 맵(feature map)을 학습한 상태이기 때문에, 사용자가 처음부터 대규모 데이터셋으로 거대한 모델을 학습시킬 필요가 없습니다.
TensorFlow Hub란?
TensorFlow Hub는 사전 학습된(pre-trained) TensorFlow 모델들이 모여 있는 저장소입니다. 이곳의 모델을 활용하면 학습 모델을 손쉽게 미세 조정(fine-tuning)할 수 있습니다.
이 튜토리얼에서는 TensorFlow Hub의 모델을 tf.keras와 함께 사용하는 방법을 알아봅니다. 먼저 TensorFlow Hub에서 제공하는 이미지 분류 모델을 가져온 뒤, 전이 학습을 통해 사용자가 원하는 이미지 클래스에 맞게 모델을 미세 조정할 수 있습니다. 사전 학습된 분류기 모델에 이미지를 입력하면 별도의 학습 과정 없이도 해당 이미지가 무엇인지 예측할 수 있습니다.
개발 환경: Google Colaboratory
본 예제 코드는 Google Colaboratory(Colab)에서 실행합니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있는 환경으로, 별도의 설정이 필요 없으며 GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.
예제 코드
print("Predictions are checked")
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_class_names[n])
plt.axis('off')
_ = plt.suptitle("ImageNet predictions")코드 출처: https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
실행 결과


코드 설명
- 모델이 생성한 예측 결과를 검증합니다.
- 검증된 예측 결과는 matplotlib을 통해 격자 형태의 이미지로 화면에 출력되며, 각 이미지 위에는 예측된 클래스 이름이 제목으로 표시됩니다.