[딥러닝] 강아지와 고양이 이미지 분류 실습

2022. 12. 8. 17:50코딩공부/딥러닝

728x90
반응형

텐서 플로우를 이용해서 이미지 분석을 해보았다!

 

우선 모듈을 import 해준다

import cv2
import matplotlib.pyplot as plt

import tensorflow_datasets as tfds
import tensorflow as tf

 

텐서 플로우의 dataset 중 cats_vs_dogs라는 이미지 데이터를 불러와준다

data_train, ds_info = tfds.load('cats_vs_dogs', split = [tfds.Split.TRAIN], with_info=True)
ds_info

이렇게 뜨면 데이터가 잘 불러와진 거다!

 

이제 불러온 이미지를 확인을 해보려고 한다.

우선 이미지는 30개 정도 들고 오고, 각각의 이미지를 numpy로 변환해준다.

images = [one['image'].numpy() for one in data_train[0].take(30)]
len(images)

이렇게 이미지가 잘 호출이 되었으면 이제 이미지를 확인할 수 있다

이미지 확인은 Imshow 함수를 이용하면 이미지 확인이 가능하다

plt.imshow(images[11])
plt.axis('off')

 

아직 딥러닝을 시킬 머리가 안돼서(?) resnet이라는 인공지능 모델을 가지고 오고 이미지의 크기도 정해준다.

resnet은 이미지로 충분히 학습이 된 인공지능 모델이다.

(이미지 학습은 더 공부해볼 예정!)

resnet50_pre = tf.keras.applications.resnet.ResNet50(weights='imagenet', input_shape=(224, 224, 3))
resnet50_pre.summary()

이렇게 뜨면 인공지능 모델이 불러와진 거다.

 

이제 사진이 어떤 대상인지 바꿔주는 라이브러리를 불러와준다.

from tensorflow.keras.applications.imagenet_utils import decode_predictions

 

예측하는 함수를 만든다

def pred_img(img):
  plt.imshow(img)
  plt.axis('off')
  plt.show()

  img_resized = cv2.resize(img, (224, 224))
  pred = resnet50_pre.predict(img_resized.reshape([1, 224,224, 3]))
  decoded_pred = decode_predictions(pred)

  for i, instance in enumerate(decoded_pred[0]):
    print('{}위: {} ({:.2f}%)'.format(i+1, instance[1], instance[2] * 100))

 

 

이미지를 불러와주면 

pred_img(images[15])

이렇게 이 사진의 동물이 고양이 태비라는 것을 알 수 있다

 

끝!

728x90
반응형