Densely Connected Convolutional Networks
Recent work has shown that convolutional networks can be substantially deeper, more accurate, and efficient to train if they contain shorter connections between layers close to the input and those close to the output. In this paper, we embrace this observa
arxiv.org
0. 핵심 요약
특정 시점의 layer 이전에 있는 모든 layer 들을 모두 입력으로 사용
특정 시점의 layer를 이후 모든 layer들의 입력으로 사용
위의 두 특징을 모두 사용한 DenseNet 이라는 architecture를 제안
1. BackGround
- DataSet
해당 논문에서는 총 4가지의 Dataset을 사용해서 모델의 성능을 검증
CIFAR10, CIFAR100, ImageNet, SVHN
ImageNet
다른 특별한 기법은 사용하지 않음
CIFAR
class가 10인 것과 100인 것을 모두 활용
mirroring과 shifting augmentation을 사용하였으며, normalize를 진행
SVHN(Street View House Numbers)
http://ufldl.stanford.edu/housenumbers/
The Street View House Numbers (SVHN) Dataset
SVHN is a real-world image dataset for developing machine learning and object recognition algorithms with minimal requirement on data preprocessing and formatting. It can be seen as similar in flavor to MNIST (e.g., the images are of small cropped digits),
ufldl.stanford.edu
도로 상에 존재하는 모든 주택들의 숫자 이미지를 모아둔 이미지로써, 숫자를 인식하는 데이터셋
해당 데이터셋에서는 따로 augmentation은 적용하지 않았으며, 모든 값에 255를 빼 0~1 사이로 값을 scaling
- Before ShortPath
DenseNet 논문 이전에 ResNet의 등장으로, shortpath를 사용하면 많은 이점이 있다는 것을 파악
ResNet과 GoogLeNet의 이점들을 합쳐 깊이와 넓이를 모두 넓히려는 Wide ResNet도 등장
ResNet의 기본 아이디어는 identity mapping을 추가하여 이전의 값을 보존하고 기울기 전파를 원활하게 하고자 하는 것
이때 이전의 값과 layer을 통해 나온 값을 더해주게 되는데, 논문의 저자는 이 부분에서 문제가 발생한다고 생각
모델의 입력을 $x_0$, layer를 H_l(·) (이때 l은 l번째를 의미)라고 할 때, ResNet은 식을 다음과 같이 표현
$x_l = H_l(x_{l-1}) + x_{l-1}$
이 과정을 보게 되면, layer를 거친 값과 이전 값을 단순히 더해주기 때문에 정보를 전달하는 데에 있어 방해가 됨즉, 정보가 온전히 전달되지 않는다고 생각따라서 이를 개선하기 위해 모든 층을 연결하고자 하였음
또 다른 문제점으로는, layer 별로 새로운 입력과 출력이 생성되다 보니 정보(state)가 연결되지 않고 따로 생성이는 서로 다른 정보를 저장하고 있기 때문에 그에 따라 parameter가 증가한다고 생각이를 개선하기 위해 모든 layer가 입력과 출력을 공유하게 하면서 parameter를 보존하기로 함
2. 논문 핵심 내용
- Feature Map Reuse
다음 그림은 DenseNet의 가장 대표적이자 가장 잘 표현한 그림
위와 같이 모든 layer들은 모두 연결되어 있으며, 출력 역시 모두 연결되어 있음
이러한 구조가 가져다주는 이점은 다음과 같다
1. feature map reuse
위 그림을 보게 되면, 모든 layer가 값들을 공유하고 있는 것을 볼 수 있다
이는 위에서 말한 것처럼 layer들이 서로 따로 작동하지 않고 하나로 유기적으로 작동하게 되면서 각각의 layer에서의 state가 모두 동일해진다
이는 더 많은 정보를 저장하거나 할 필요가 없어지기 때문에 그만큼의 parameter 이득을 얻을 수 있는 것이다
2. final layer에서의 정보
기존 model들은 마지막 classifier 에서 바로 이전의 layer의 출력으로만 모든 것을 결정해야 했다
하지만 densenet은 입력 값부터 바로 이전 layer 까지 모든 값을 보고 결정하기 때문에 더욱 정확하게 판단할 수 있다
3. 학습에서의 이득
2번과 이어지는 내용으로써, 모든 layer의 값이 출력과 연결되어 있다는 것은 모든 layer가 loss function에 직접적으로 연결되어 있다는 의미이다
이는 즉, 기울기가 전파되어서 오는 것이 아닌 loss function에서 직접적으로 오기 때문에 학습 속도가 더 빨라질 수 있는 것
- Concatenation
위에서 ResNet은 Sum을 통해 전달하기 때문에 정보 전달에 방해가 된다고 언급
이를 극복하기 위해 DenseNet은 모든 feature map을 concatenation 하기로 결정
식으로 표현하면 다음과 같다
$x_l = H_l([x_0, x_1, ... , x_{l-1}])$
이를 풀어서 설명하면 이전 layer들의 출력 값을 그대로 보존하면서 입력으로 활용하면서 각각의 정보들을 모두 유용하게 활용하겠다는 것이다
- Bottleneck
DenseNet에서 각 layer는 입력으로 $k_0 + k(l-1)$ 개의 feature map을 입력 받는다 (이때 $k_0$는 입력의 feature map)
하지만 출력은 $k$ 개의 feature map만 출력하게 되는데, 이는 입력에 비해 출력이 매우 작은 상황이다
따라서 이러한 문제를 해결하기 위해 1 x 1 convolution을 활용한다
1 x 1 convolution을 사용한 모델은 DenseNet-B 라고 함
이때 k는 hyper-parameter이며, 논문에서는 이를 growth rate라고 명칭
위와 같이 부르는 이유는 k의 값에 따라 새로 생성되는 정보를 기존의 global state에 얼마나 반영할지를 정하는 정도이기 때문
- Transition block
다음은 DenseNet의 전체적인 구조이다
이때 Dense Block은 우리가 위에서 얘기한 구조와 동일하다
하지만 Dense Block에 속하지 않는 구조가 존재하는데, 이를 transition block이라고 부르며 downsampling을 적용하는 구간이다
dense block의 구조를 보면 알겠지만, feature map의 size가 달라지게 되면 concat이 불가능해진다
하지만 size를 줄이지 않고 그대로 끝까지 모델을 구성하면 parameter의 수가 너무 많아지게 될 것이다
이러한 문제를 해결하기 위해 transition block을 중간중간 삽입하였으며, BN(Batch Normalization), 1x1, 2x2 average pooling으로 구성
이때 feature map을 얼마나 감소시킬 지를 $\theta$ 값으로 결정하게 되는데, 논문에서는 이를 0.5로 설정했으며 이를 적용한 모델을 DenseNet-C라고 함
위에서 설명한 B와 C를 동시에 적용한 모델은 DenseNet-BC라고 함
3. Model Architecture
모델의 자세한 구조는 위와 같으며, 전체적인 구조는 위에 나온 그림을 참고
4. Experiment
다음은 CIFAR와 SVHN의 성능 결과 표이다
+가 있는 데이터셋은 augmentation이 적용된 데이터
DenseNet이 매우 우수한 성능을 보이는 것을 확인할 수 있으며, k 값(growth rate)가 커질수록 성능이 더 향상하는 것을 볼 수 있다
특이사항은 SVHN에서 DenseNet-BC가 성능이 오히려 떨어진다는 것인데, 이에 대해 저자들은 SVHN 데이터셋 자체가 쉬운 데이터셋이라 너무 모델이 과해 overfitting이 발생했다고 추측
다음은 ImageNet 데이터셋에 대해 DenseNet과 ResNet을 비교한 그래프
해당 그래프로 알 수 있는 사실은 DenseNet이 ResNet에 비해 동일 파라미터 대비 성능이 매우 우수하다는 것이다
이는 parameter 뿐만 아니라 FLOPs를 측정했을 때 역시 마찬가지이다
Feature map reuse에 대한 부분도 확인해보기 위해 다음과 같은 heatmap을 생성
이는 transition layer에서 각 layer가 얼마나 반영되었는지를 보여준다
색깔을 확인했을 때 모든 layer에 걸쳐 고르게 분포되어 있는 것을 볼 수 있다
5. Contribution
'Dense Convolutional Network (DenseNet)'이라는 새로운 컨볼루션 네트워크 구조를 제안
어떠한 두 계층 간에도 직접적인 연결을 도입하여 수백 개의 계층으로 확장 가능하고 최적화에 어려움이 없음을 보임 DenseNet은 적은 매개변수와 계산으로 최첨단 성능을 달성
성능 저하나 오버피팅 없이 매개변수 수가 증가함에 따라 정확도가 일관되게 향상
DenseNet의 컴팩트한 내부 구조와 피처 재사용 능력 덕분에, 향후 컴퓨터 비전 작업에서 유용한 피처 추출기로서의 가능성을 탐구할 계획
+ Comment
ResNet에서 그치지 않고 한단계 더 발전시켜서 parameter의 수를 더욱 효율적으로 만들었다는 것이 인상적