[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 Teachable Machine

Teachable Machine

머신러닝 분야에서 점점 사람이 할 일이 없어지고 있다고 합니다.

마침 강사님께서 Teachable Machine이라는 플랫폼을 추천하셔서 직접 체험해 보았습니다.

프로젝트는 크게 이미지 프로젝트, 오디오 프로젝트, 포즈 프로젝트 이렇게 세 갈래가 있었습니다.

여기서 저는 이미지 프로젝트에서, 기린, 치타, 코끼리, 펭귄 각각 10개의 사진을 삽입하여서,

모델을 학습시켰습니다.

모델 학습 및 저장

이렇게 학습시킨 모델을 직접 웹캠으로 사진을 인식시켜 분류할 수도 있지만,

h5 파일로 학습된 모델을도 받을 수 있습니다.

그리고 각각의 분류 모델들의 라벨도 텍스트 파일로 다운 받을 수 있습니다.

학습된 모델 불러오기 및  활용

from tensorflow import keras
from keras.models import load_model
from PIL import Image, ImageOps
import numpy as np

# Load the model
model = load_model('keras_model.h5')

# Create the array of the right shape to feed into the keras model
# The 'length' or number of images you can put into the array is
# determined by the first position in the shape tuple, in this case 1.
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
# Replace this with the path to your image
image = Image.open('data2.jpeg')
#resize the image to a 224x224 with the same strategy as in TM2:
#resizing the image to be at least 224x224 and then cropping from the center
size = (224, 224)
image = ImageOps.fit(image, size, Image.ANTIALIAS)

#turn the image into a numpy array
image_array = np.asarray(image)
# Normalize the image
normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1
# Load the image into the array
data[0] = normalized_image_array

# run the inference
# prediction = model.predict(data)
# print(prediction)
prediction = model.predict(data)
print(prediction)

[[1.4245261e-03 3.8874522e-04 9.9786454e-01 3.2223319e-04]]

결과값은 확률로 나오기 때문에, 여기서부터 사람의 손이 필요합니다.

print(prediction)
if(prediction[0][0]>0.8):
  print("코끼리입니다.")
elif(prediction[0][1]>0.8):
  print("치타입니다.")
elif(prediction[0][2]>0.8):
  print("펭귄입니다.")
elif(prediction[0][3]>0.8):
  print("기린입니다.")
else:
  print("기타 다른 동물입니다.")

뒤에 이러한 코딩을 추가하면

펭귄 사진을 입력하면

'펭귄입니다.'라는 결과값이 출력됩니다.

머신러닝 분야에서는 사람이 할일이 점점 없어지는 추세라고 하지만,

그래도 여전히 사람의 섬세한 코딩이 필요한 곳이 있다는 것을 이번 간단한 프로젝트를 통하여 확인하였습니다.