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

TensorFlow를 활용한 Python 예측 결과 확인 방법

TensorFlow는 predict 메서드와 NumPy 패키지의 argmax 메서드를 활용하여 모델의 예측 결과를 손쉽게 확인할 수 있습니다.

전이 학습(Transfer Learning)과 이미지 분류

적어도 하나 이상의 합성곱 계층(convolutional layer)을 포함하는 신경망을 합성곱 신경망(CNN)이라고 하며, 이를 활용해 학습 모델을 구축할 수 있습니다.

이미지 분류에서 전이 학습의 핵심 아이디어는 다음과 같습니다. 대규모의 일반적인 데이터셋으로 학습된 모델은 시각 세계 전반에 적용할 수 있는 범용 모델 역할을 할 수 있습니다. 즉, 특징 맵(feature map)을 이미 학습했기 때문에 사용자가 대규모 데이터셋으로 처음부터 대형 모델을 훈련할 필요가 없습니다.

TensorFlow Hub란?

TensorFlow Hub는 사전 학습된(pre-trained) TensorFlow 모델들을 모아놓은 저장소입니다. TensorFlow는 이러한 저장소의 모델을 활용해 학습 모델을 미세 조정(fine-tuning)할 수 있습니다.

이 글에서는 TensorFlow Hub의 모델을 tf.keras와 함께 사용하는 방법과, TensorFlow Hub에서 제공하는 이미지 분류 모델을 활용하는 방법을 살펴봅니다. 이 과정이 완료되면 전이 학습을 통해 사용자 정의 이미지 클래스에 맞게 모델을 미세 조정할 수 있습니다. 사전 학습된 분류기 모델이 이미지를 입력받아 해당 이미지가 무엇인지 예측하며, 별도의 학습 과정 없이도 이 작업을 수행할 수 있습니다.

Google Colaboratory 환경

여기서 소개하는 코드는 Google Colaboratory에서 실행됩니다. Colab 또는 Colaboratory는 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

예제 코드

print("예측 결과를 확인합니다")
predicted_batch = model.predict(image_batch)
predicted_id = np.argmax(predicted_batch, axis=-1)
predicted_label_batch = class_names[predicted_id]

코드 출처 − https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub

출력 결과

예측 결과를 확인합니다

코드 설명

  • model.predict(image_batch)를 호출하면 입력 이미지 배치에 대한 예측 확률 값들이 반환됩니다.
  • np.argmax 함수는 각 예측 결과에서 가장 높은 확률 값을 가진 인덱스를 추출합니다. axis=-1로 지정하면 마지막 축을 기준으로 최댓값의 위치를 찾습니다.
  • 추출된 인덱스를 클래스 이름 목록(class_names)에 적용하면 각 이미지에 대한 예측 레이블을 얻을 수 있습니다.
  • 이렇게 얻은 예측 레이블을 활용하면 앞서 그린 시각화 플롯을 다시 그려 실제 예측 결과를 눈으로 확인할 수 있습니다.