반응형

분류 전체보기 272

[ECCV 2018] ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design

Introduction 본 논문은 기존 경량화 모델에서 고려됐던 metric인 FLOPs이 간접적인 메트릭임을 지적하며 직접적인 메트릭인 speed와 latency를 언급했다. 더불어 네트워크 디자인에 대한 가이드라인을 제시하며 이에 따라 업그레이드된 ShuffleNetV2를 제안한다. 기존의 경량화 모델들은 주로 depth conv, ptwise conv, group conv과 같은 tensor decomposition을 활용하여 FLOPs을 줄이는 걸 목표로 디자인했다. 이를 따르면 실제 기기에 올라갈 때 빨라질 것 같지만 그렇지 않다. FLOPs만을 고려하는 디자인은 sub-optimal한 디자인일 수 밖에 없다. 1) FLOPs에는 영향을 덜 끼치지만 speed에는 영향을 끼치는 팩터가 있기 때문..

[CVPR 2018] ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

Introduction 본 논문은 pointwise group convolution과 channel shuffle을 활용하여 연산량을 줄이면서도 높은 성능을 보였다. Xception, ResNeXt의 경우 dense한 1x1 conv를 사용했기 때문에. 뿐만 아니라 이전포스트 'MobileNet'에서 보았듯이 1x1 conv를 활용하여 파라미터 수를 줄여 연산량을 줄일 수 있었지만 결과적으로 모델의 전체 연산량에서 많은 비율을 차지하는 것을 확인했다. 그리고 ResNeXt의 경우에는 3x3 conv를 하는 layer에만 group conv를 적용했는데, 이에 따라 각 residual unit에 대해 1x1 conv가 전체 연산량의 약 93%를 차지하는 것을 확인했다. 여튼, 알렉스넷보다는 13배 빠르고 ..

[Arxiv 2017] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

Introduction 본 논문은 모바일 환경에서 CNN 모델을 사용하기 위해 고안된 모델이다. 아이디어는 간단하다. 기존의 convolution 연산을 depthwise seperable convolution으로 잘 쪼개 필요한 연산량을 줄였다. 일반적인 convolution의 연산량이 어떤지 알아야 어떻게 이를 개선했는지 알 수 있을텐데 한번 살펴보자. 일반적인 conv는 input으로 $D_F \times D_F \times M$을 받으면 $D_G \times D_G \times N$ 으로 output feature map을 만들어낸다. 여기서 $M$은 input channel 개수를, $M$은 output channel 개수를 나타낸다. 그러면 Convolution filter는 $D_K \tim..

[CVPR 2016] Deep Residual Learning for Image Recognition (ResNet)

Introduction 이전 연구들(VGGNet, AlexNet, GoogLeNet)에서 레이어를 깊게 쌓을수록 데이터의 피쳐를 잘 추출할 수 있기 때문에 학습을 잘 할 수 있게 된다는 것을 알 수 있었다. 하지만, 레이어가 깊어지면 학습시키기가 어려워진다. 예를 들어, GoogLeNet의 경우 레이어가 깊어짐에 따라 'gradient vanishing'이 발생해 모델이 수렴하지 않거나 느리게 수렴하는 문제점을 갖고 있었다. 그래서 이를 해결하기 위해 'Auxillary Classifier'를 두어 해결하려는 시도를 했다. 뿐만 아니라 batch normalization layer를 둔다던가 초기값을 잘 설정(He Initialization, Xavier Initialization)하는 시도를 통해 해결..

[CVPR 2015] Going Deeper with Convolutions (GoogLeNet)

Introduction ILSVRC2014에서 1위한 GoogLeNet을 소개하는 논문이다. 성능을 높이기 위해 네트워크를 깊게 쌓고는 싶은데 computation cost가 많이 들어 이에 대한 고민을 슬슬 했던 것 같다. 모델에 Inception module을 도입했는데, dimension reduction을 통해 연산량을 줄이려고 1x1 conv를 도입한 것이 특징이다. 더불어 레이어를 깊게 쌓았을 때는 gradient vanishing이 생긴다. 이를 해결하기 위해 중간중간 inception module 뒤에 auxiliary classifier를 두었다. Achitecture Details Inception module Inception module은 여러 사이즈의 필터를 모아놓은 모듈이다. 이..

[Arxiv] cuDNN: Efficient Primitives for Deep Learning

Introduction cuDNN은 엔비디아에서 제공하는 DNN primitives를 모아놓은 라이브러리다. 본문에서는 CNN이 기존 선형대수 라이브러리와는 달리 dense kernel을 이용해 계산하는 점을 지적하며, 이를 위해 만든 최적화된 primitives를 어떻게 만들었는지 소개한다. Spatial Convolutions CNN에서 가장 중요한 연산은 convolution이다. 이때 필요한 파라미터는 다음과 같다. Convolution에는 input data와 convolutional filter 두 개의 input이 필요하다. input data는 미니 배치 내의 이미지 개수(N), 인풋 채널 개수(C), 이미지의 가로, 세로 (W,H)로 결정된다. convolutional filter는 아웃..

반응형