Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python과 TensorFlow를 활용해 ImageNet 예측 결과를 확인하고 시각화하는 방법

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

실행 결과

Python과 TensorFlow를 활용해 ImageNet 예측 결과를 확인하고 시각화하는 방법

Python과 TensorFlow를 활용해 ImageNet 예측 결과를 확인하고 시각화하는 방법

코드 설명

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