TensorFlow에서는 'get_file' 메서드를 활용해 단일 이미지를 손쉽게 다운로드하여 모델을 테스트할 수 있습니다. 구글 API가 제공하는 이미지 URL을 'get_file' 메서드의 매개변수로 전달하면, 현재 실행 환경에 해당 데이터셋이 자동으로 저장됩니다.
사전 지식: CNN과 전이 학습
최소 한 개 이상의 합성곱 계층(convolutional layer)을 포함하는 신경망을 합성곱 신경망(CNN)이라고 하며, 이를 활용해 학습 모델을 구축할 수 있습니다.
이미지 분류에서 전이 학습(transfer learning)의 핵심 아이디어는 다음과 같습니다. 대규모의 일반적인 데이터셋으로 학습된 모델은 시각적 세계를 위한 범용 모델로 효과적으로 재사용될 수 있습니다. 즉, 특징 맵(feature map)을 이미 학습한 상태이기 때문에 사용자가 대규모 데이터셋으로 처음부터 모델을 학습시킬 필요가 없습니다.
TensorFlow Hub는 사전 학습된(pre-trained) TensorFlow 모델들을 모아놓은 저장소입니다. 이곳의 모델을 활용하면 학습 모델을 세밀하게 조정(fine-tuning)할 수 있습니다.
이 글에서는 TensorFlow Hub의 모델을 tf.keras와 함께 사용하는 방법과, Hub에서 제공하는 이미지 분류 모델을 활용하는 방법을 알아봅니다. 사전 학습된 분류기 모델에 이미지를 입력해 예측 결과를 얻는 것은 별도의 학습 과정 없이도 가능합니다. 이후에는 전이 학습을 통해 커스텀 이미지 클래스에 맞게 모델을 미세 조정할 수 있습니다.
Google Colaboratory 소개
본 예제 코드는 Google Colaboratory(Colab)에서 실행됩니다. Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정 없이 GPU(그래픽 처리 장치)를 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
예제 코드
print("Run it on a single image")
grace_hopper = tf.keras.utils.get_file('image.jpg','https://storage.googleapis.com/download.tensorflow.org/example_images/grace_hopper.jpg')
grace_hopper = Image.open(grace_hopper).resize(IMAGE_SHAPE)
grace_hopper코드 출처 − https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
실행 결과
Run it on a single image
Downloading data from https://storage.googleapis.com/download.tensorflow.org/example_images/grace_hopper.jpg
65536/61306 [================================] - 0s 0us/step
코드 설명
- 구글 스토리지에서 단일 이미지 데이터를 다운로드합니다.
- 다운로드한 이미지를 사전 학습된 모델에 입력하여 실행합니다.
- 처리된 이미지 데이터를 콘솔에서 시각화하여 확인합니다.