MobileNet과 network decoupling
1. overview
MobileNetV1은 depthwise separable convolution을 사용해 계산량을 줄이고
MobileNetV2는 inverted Residual block을 통해 계산량을 줄이고
MobileNetV3는 MobileNetV2에 Squeeze and excite를 사용해 계산량을 줄였다고함
2. MobileNetV2
ReLU6는 min(max(x,0),6)으로 ReLU에서 상한선을 6으로 고정한 함수
MobileNet 시리즈는 ReLU함수로 ReLU6를 사용
MobileNetV1과 MobileNetV2(stride=1, stride=2 version)의 기본 구조 비교
MobileNetV1은 depthwise convolution을 수행하고 pointwise convolution을 수행하여 계산량을 일반적인 convolution에 비해 상당히 줄임
MobileNetV2는 inverted residual block을 사용
MobileNetV1이 depthwise convolution을 수행하고 pointwise convolution을 수행했다면
MobileNetV2는 pointwise convolution을 수행하고 depthwise convolution을 수행하고 pointwise convolution을 수행하여 순서를 뒤집었더니 계산량을 획기적으로 줄였다
MobileNetV2의 경우 마지막 layer에 ReLU를 쓰지 않고 있는데 안쓰는게 성능이 좋았다고 한다
3. network decoupling abstract
depthwise separable convolution이 network design에서 상당히 효율적이었지만 full training setting을 할때 training에서 시간을 많이 소모한다?
이 논문에서는 regular convolution과 depthwise separable convolution의 수학적인 관계를 최초로 분석하였다
참고로 이전까지 나온 mobilenet 등에서 사용한 depthwise separable convolution은 그런 관계 분석 없이 경험적으로 좋다고 생각하고 그냥 해본것
우리는 depthwise separable convolution이 regular convolution의 principal component임을 보일것이다.
그러면서 network decoupling이라는, pretrained CNN을 mobilenet같은 depthwise separable convolution architecture에 transfer하여 가속화시키는 training-free method를 제안하겠다.
이 방법은 accuracy 손해를 감수할정도로 속도를 상당히 상승시켜줄 것이다.
4. 구체적인 network decoupling
depthwise convolution, pointwise convolution의 여러가지 합의 조합을 original network의 regular convolution에 approximation하는 것을 보임
위 그림을 보면 {PW,DW}가 pointwise 다음 depthwise이냐 depthwise 다음 pointwise냐 둘중 하나인데
이것의 임의의 조합을 임의의 N번해서 regular convolution에 approximation했다는 거
수학적으로 computing complexity를 올리지 않고 몇개의 depthwise separable convolution의 합으로 원래의 regular convolution을 equivalent하게 나타낼 수 있다.
regular convolution은 depthwise separable convolution의 합으로 equivalent하게 나타낼 수 있다.
따름정리로 주요 top-T개의 principal component depthwise separable convolution의 합으로 원래의 regular convolution을 approximation할 수 있다
몇개의 depthwise separable convolution의 합으로 원래의 regular convolution을 approximation할 수 있다.
실제로 실험해보면 우리의 결과가 다른 channel decomposition이나 spatial decomposition보다 계산량을 더욱 줄이면서 더 정확하게 근사시킨다
neural network에서 어느 순간 depthwise separable convolution이 경험적으로 좋다고 쓰이기 시작했는데
원래부터 있었던 CP decomposition이나 Tucker decomposition이랑 비슷해보인거임
그래서 이들이랑 연관시켜 합쳐서 나온게 network decoupling이라고? 비슷한것 같기도하고 아닌것 같기도하고…
5. MobileNet is special case of CP decomposition
실제로 2020년에 mobilenet block은 CP decomposition의 special case임을 증명함
network는 이제 layer 사이에 batch normalization이나 relu같은 non linearity를 넣는데
그런거 빼고 filter decomposition만 보면 CP decomposition이랑 다를게 없다는 거
mobilenetv1과 mobilenetv2 block을 CP decomposition으로 나타낼 수 있다
강의 들을때는 몰랐는데 다시 보니까 신기하네… network에서 경험적으로 좋다고 쓰던게 알고보니
수학적으로 알려진 CP decomposition이랑 tucker decomposition으로 결과적으로 연결된다는거
'딥러닝 > light weight modeling' 카테고리의 다른 글
tensor decomposition - Tucker decomposition, CP decomposition (0) | 2024.08.19 |
---|---|
network pruning이란 (0) | 2024.08.18 |
tensor decomposition 간단한 설명 (0) | 2024.08.17 |
network compiling 간단하게 (0) | 2024.08.16 |
network quantization 간단하게 (0) | 2024.08.16 |