다운로드
작성자: admin 작성일시: 2019-01-22 11:18:44 조회수: 657 다운로드: 49
카테고리: 기타 태그목록:

MobileNet

MobileNet은 컴퓨터 성능이 제한된 모바일, 디바이스 등에서 사용될 목적으로 설계된 CNN 구조이다. Xception에서 배웠던 Depthwise separable convolution이 사용하여 같은 레이어 수의 다른 CNN 구조에 비해 파라미터 수를 상당히 낮추었다.

Depthwise separable convolution

MobileNet의 Depthwise separable convolution연산은 Xception과 대부분이 동일하고, depthwise convolution 연산과 pointwise convolution 연산 사이에도 batch normalization과 ReLU 활성화 함수 단계가 추가된 점만 다르다.

추가 파라미터

논문에서는 네트워크의 사이즈를 좀 더 줄이기 위해 $\alpha$ (width multiplier)와 $\rho$ (resolution Multiplier), 두가지 파라미터를 추가했다. $\alpha$는 입 출력 피쳐맵 갯수에 곱해져 그 수를 줄이는데 사용되고, $\rho$ 는 이미지, 피쳐맵 크기에 곱해져 이미지의 크기를 줄이는 역할을 한다. Keras가 제공하는 모델에는 이 파라미터들이 반영되지는 않았다.

In [1]:
from keras.applications.mobilenet import MobileNet, decode_predictions

mobile = MobileNet()
# mobile.summary()
Using TensorFlow backend.
In [2]:
import cv2
import time 


img = cv2.imread('bird1.jpg', -1)
img = cv2.resize(img, (224, 224))

start = time.time() 
yhat = mobile.predict(img.reshape(-1, 224, 224, 3))
time = time.time() - start
# label_key = np.argmax(yhat)
label = decode_predictions(yhat)
label = label[0][0]

print("테스트 시 소요 시간 : {}".format(time))
print('%s (%.2f%%)' % (label[1], label[2]*100))
img = img[:,:,::-1]
plt.figure(figsize=(11,11))
plt.imshow(img)
plt.axis("off")
plt.show()
테스트 시 소요 시간 : 0.30811309814453125
oscilloscope (37.44%)

MobileNet V2

  • ResNet의 skip connection을 도입
  • 여기서는 add 할 때, 채널 수가 비교적 얕다.
  • keras의 application에서 이 모델은 channel_last만 지원한다.
In [3]:
from keras.applications.mobilenetv2 import MobileNetV2, decode_predictions

# mobilev2 = MobileNetV2()
# mobilev2.sumary()

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!