특성 추출은 MobileNetV2 모델을 사용합니다. ResNet50, AlexNet 등의 모델을 사용할 수 있지만, MobileNetV2는 빠르고 코드 길이가 길지 않기 때문에 사용이 편리합니다. 하지만 다른 모델을 선택해도 이미지 분류가 가능하므로 다양한 모델을 적용해 보는 것도 개인적인 학습에 도움이 되므로 진행해 보길 권장합니다.
코드 11-4 특성 추출
model = tf.keras.applications.MobileNetV2(include_top=False, weights='imagenet',
input_shape=(224,224,3)) ------ ①
predictions = model.predict(images.reshape(-1,224,224,3)) ------ ②
pred_images = predictions.reshape(images.shape[0], -1)
① 특성 추출을 위해 MobileNetV2를 사용하기 위한 파라미터는 다음과 같습니다.
ⓐ include_top: 네트워크 최상단에 완전연결층을 넣을지 여부를 선택하는 것으로, False로 설정했기 때문에 완전연결층을 추가하지 않습니다.
ⓑ weights: 'None'과 'imagenet'을 선택할 수 있습니다. 'None'은 임의의 초깃값을 설정하는 것이고, 'imagenet'은 ImageNet에 대한 선행 학습의 가중치를 사용하겠다는 것입니다.
ⓒ input_shape: 입력에 대한 크기를 의미합니다. 입력은 224×224의 크기를 가지며, 3은 RGB로 칼라 이미지를 뜻합니다.
② reshape의 인자 -1은 해당 자리 부분의 형태(shape)는 비워 두고, 다른 차원의 형태가 모두 결정된 후 남은 부분의 형태로부터 수정하겠다는 의미입니다.