[python] 미리 훈련된 MobileNet으로 이미지 분류하기

코딩/python|2020. 7. 26. 04:37

이미지넷으로 미리 훈련된 MobileNet으로 이미지를 분류해보도록 하겠습니다. MobileNet은 다른 이미지 분류 CNN 모델에 비해 적은 가중치들(weights)을 갖고 있습니다. 비교적 가벼운 모델이죠. 그럼에도 불구하고 분류 정확도에 있어서는 무거운 모델들과 비교했을 때 크게 뒤쳐지지 않습니다.

 

다음과 같은 신호등 이미지를 잘 분류해내는지 확인해볼까요? 

 

img2.jpg

 

다음 코드를 실행하시면 됩니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
from tensorflow.keras.applications.mobilenet import MobileNet, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
 
model = MobileNet(weights='imagenet')
 
img_path = 'img2.jpg'
img = image.load_img(img_path, target_size=(224224))
= image.img_to_array(img)
= np.expand_dims(x, axis=0)
= preprocess_input(x)
 
preds = model.predict(x)
print('Predicted:', decode_predictions(preds, top=3)[0])
cs

 

자, 결과를 한번 볼까요? 

 

위 이미지를 신호등이라고 잘 분류했다.

 

미리 훈련된 MobileNet이 위 사진이 traffic_light, 신호등에 관한 것임을 잘 분류해냈죠? 0.9665834, 약 97%의 확률로 신호등이라고 판단했습니다.