모바일 넷의 두번째 버전이다. res넷의 res block을 가져왔따.
이해하기위해서는 mobilenet v1 과 depthwise separable에 대해 필수적으로 알아야하니
https://gwoolab.tistory.com/65
[CV] MobileNet
모바일환경에서도 잘 작동할 수 있도록 파라미터와 연산량을 줄이며 성능을 확보한 모델이다. 1. Depthwise Separable Convolution Xception 에서 언급했던 Depthwise Separable Convolution을 활용하여 연산량..
gwoolab.tistory.com
저번 게시물을 참고하면 좋겠다.
1. Linear Bottleneck
linear는 그냥 activation을 적용하지않았다고 생각하면 된다.
고차원의 데이터가 저차원으로 압축되면서 특정 정보들이 저차원의 어떤 영역으로 매핑이 되게 되는데, 이것을 manifold라 한다. 저자는 manifold에 activation을 적용하면 relu가 정보를 줄일 것이라 한다.
실제로 위의 그래프에서 볼 수 있듯 activation을 적용하지않은 것이 성능이 좋았다.
relu의 문제점 dying relu 중 gradient exploding 후자의 문제점을 해결하고자 6이후로 6을 보내는
relu6 : min(6,max(0,x)) 를 활용한다. (실험을 통해 6으로 결정했다고한다.)
stride1 block
1x1conv는 역시 채널을 줄이려고 사용했고 short cut까지 적용하여 학습이 잘되도록했다.
stride2 block
사이즈를 줄이기 위해 풀링이 아닌 stride 2를 활용하였다.
2. Inverted Residuals
일반적인 res block 은
input을 1x1로 채널을 줄이고 3x3conv로 feature를 추출한뒤에 skip connect와 합치기 위해 다시 채널을 줄이는
wide(input) -> narrow(bottleneck) -> wide(input과 같은 사이즈) 형태이다
inverted res block 은
input을 1x1로 채널을 확장하고 3x3conv로 feature를 추출한뒤에 skip connect와 합치기 위해 다시 채널을 늘이는
narrow(expansion) -> wide(depthwise) -> narrow(projection) 형태이다. 이때 projection에서는 relu를 거치지않는다.
위의 t는 얼마나 expansion할것인가 하는 하이퍼파라미터이다.
저차원의 channel에는 필요한 정보만 압축되어서 저장되어 있다라는 가정했기 때문이다.
필요한 정보는 저차원의 channel에 있기대문에, skip connect를 사용해도 필요한 정보를 더 깊은 layer까지 잘 전달할 것이라는 것이다
물론 메모리 사용량을 줄이기 위한 부분도 있다.
3. Architecture
'CV > classification' 카테고리의 다른 글
[CV] Shuffle Net (0) | 2022.05.04 |
---|---|
[CV] ResNext (0) | 2022.05.04 |
[CV] Squeeze Net (0) | 2022.05.04 |
[CV] MobileNet (0) | 2022.05.03 |
[CV] Xception (0) | 2022.05.03 |