초보 개발자의 이야기, 릿허브

[논문리뷰] DenseNet (Densely Connected Convolutional Networks) 본문

논문/📚 논문 리뷰

[논문리뷰] DenseNet (Densely Connected Convolutional Networks)

릿99 2023. 1. 27. 14:51
728x90
반응형

DenseNet

 

https://arxiv.org/abs/1608.06993

 

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


 

 

1. INTRODUCTION

 

CNN(Convolutional Neural Network)은 객체 검출 및 인식을 위한 주요한 머신러닝 기법으로 자리잡았다.

수십년이 지난 지금, 컴퓨터 하드웨어와 네트워크 구조 등의 발전으로 인해

더 깊은 CNN을 구축하고 학습할 수 있게 되었다.

특히 ResNet 같은 경우, 100-Layer의 장벽을 뛰어넘기도 했다.

 

CNN이 점차 깊은 구조를 갖게되면서, 여러 문제들이 대두되기 시작됐다.

그 중 하나가 input이 수많은 Layer를 거치게 되면서, 네트워크 끝단에 다다를수록 정보가 소실된다는 것이다.

이러한 문제들을 위해 다양한 연구들이 진행되었으나, [각주:1] [각주:2] [각주:3]

모두 앞 Layer에서 뒷 Layer로의 short path를 사용한다는 공통점이 있었다.

 

이러한 아이디어들을 바탕으로, 본 논문에서는 간단한 아이디어의 connectivity pattern을 하나 제안했다.

바로, 네트워크의 레이어들 사이의 maximum information flow를 보장하기 위해,

모든 레이어들을 서로 연결하는 것이다.

아래 그림을 보자.

 

출처 : Densely Connected Convolutional Networks

위 그림이 바로 DenseNet의 구조를 가장 잘 나타내는 그림이다.

저번에 리뷰한 ResNet과의 가장 큰 차이점은,
ResNet이 Feature들이 Layer로 전달되기 전, summation을 통해 결합되는 반면 

DenseNet은 Feature들을 concatenation하여 결합한다는 것이다.

다시 말해, ResNet의 경우 자기자신인 Identity를 더해 다음 Layer의 input으로 부여했다면,

DenseNet은 단순 덧셈이 아닌, feature들을 "연결"하여 부여하게 된다.

 

따라서 n번째 Layer에는 이전의 모든 convolution block들의 feature map으로 이루어진 n개의 input이 있다.

이러한 feature map들은 (L - n)개의 subsequent Layer를 지나게 되고,

결국 L-layer network는 L(L + 1)/2 개의 connection을 갖게 된다.

(기존 구조들의 경우(ex) ResNet), L개의 connection을 갖는다.)

이렇듯 모든 Layer들을 촘촘하게(densely) 연결하는 dense connectivity pattern을 사용한 것이

바로 Dense Convolutional Network, DenseNet이다.

 

 

본 논문에서 소개한 DenseNet은 기준으로 삼은 다른 알고리즘들보다 더 놀라운 성과를 보였다.

그렇다면, 이러한 DenseNet의 장점에 대해서 간단히 알아보자.

 

1. Fewer Parameter

DenseNet은 모든 Layer를 연결한다는 점에서 기존 방식들보다 많은 Parameter가 필요할 것 같지만,

사실 DenseNet은 불필요한 feature map들을 재학습할 필요가 없기 때문에 더 적은 Parameter를 갖는다.

 

2. Information Preserved

기존 방식 중 하나인 ResNet의 경우 identity transformation을 통해 정보를 보존한다.  [각주:4] 

또한, ResNet을 변형한 다양한 연구들의 경우 training 중 random하게 정보가 누락되기도 한다. [각주:5] 

하지만 DenseNet은 네트워크에 추가되는 정보와 보존되는 정보를 명확히 구분하여 정보를 보존한다.

DenseNet의 Layer들은 매우 좁은 형태를 갖는데, (Layer당 12개의 필터)

네트워크의 "collective knowledge"에 작은 세트의 feature map만 더하며,

나머지 feature map들은 변경되지 않은 상태로 유지한다.

마지막 classifier는 네트워크의 모든 feature-map에 기반하여 decision한다.

 

3. Improve Flow of Information and Gradient

DenseNet의 가장 큰 장점은 training에 용이하도록 정보와 gradient의 flow를 개선시켰다는 점이다.

각 Layer들은 Loss function과 original input signal의 gradient에 직접적으로 접근가능하다.

(모든 Layer들이 서로 연결되어 있기 때문)

위와 같은 접근은 더 깊은 네트워크 구조에서의 training을 용이하게 해줄 뿐만 아니라,

Overfitting을 방지하는 Regularization 효과까지 얻을 수 있다.

 

 

 

 

2. RELATED WORK

 

DenseNet과 유사한 cascade 구조는 1980년대 신경망 문헌에서 이미 연구된 바 있으며, [각주:6]

비교적 최근에도 batch gradient decent 방식을 통해 train된

fully-connected cascade network가 연구된 바가 있다. [각주:7]

이는 소규모 Dataset에는 효과적이었지만, 수백 개의 Parameter를 가진 네트워크에만 적용할 수 있었다.

 

다른 여러 연구들을 통해 skip-connection을 통해 CNN의 multi-level feature를 활용하는 것이

다양한 vision 작업에 효과적인 것으로 드러났다. [각주:8] [각주:9] [각주:10] [각주:11]

특히 DenseNet과 유사한 cross-layer connection을 가진 네트워크 프레임워크를 도출한 연구도 존재했다. [각주:12]

 

Highway Network는 처음으로 100 Layer가 넘는 end-to-end 네트워크를 효과적으로 학습한 구조이다.

gate unit와 bypassing path를 이용해 죄적화했는데, bypassing path가 이 네트워크의 핵심이다.

ResNet의 경우, pure identity mapping이 바로 ResNet의 bypassing path이다.  [각주:13]

ResNet 또한 깊은 Layer에도 불구하고, ImageNet과 COCO 객체 검출에서 뛰어난 성과를 보여주었다.

 최근에는 1202-Layer ResNet을 성공적으로 학습시키기 위해 stochastic depth 라는 것이 제안되었는데, [각주:14]

stochastic depth는 학습 중 랜덤으로 Layer를 drop하면서, 깊은 residual network의 학습을 용이하게 해준다.

이러한 기법은 학습 시 모든 Layer가 필요하지 않을 수도 있다는 것과 함께,

깊은 네트워크에 엄청난 양의 중복(Redundancy)이 존재함을 보여주었다.

 

네트워크를 더 깊게 만드는 가장 직관적인 방법은 네트워크의 폭을 늘리는 것이다.

GoogleNet의 경우, 다양한 크기의 필터에 의해 생성된 feature map들을 concatenate한
"Inception module"을 사용했다.  [각주:15] [각주:16]

 사실 깊이가 충분하다면, ResNet의 각 Layer를 구성하는 필터 개수를 늘리기만하면 성능은 향상된다.

FractalNet 또한 넓은 네트워크 구조를 이용해 여러 Dataset에서 좋은 성능을 거두었다.

 

DenseNet은 깊거나 넓은 구조를 이용해 성능을 높이는 것과는 달리,

feature 재사용을 통해 parameter 효율성이 높고 훈련하기 쉬운 간단한 모델을 생성한다.

서로 다른 Layer들에 의해 학습된 feature map들을 concatenating 함으로써,

subsequent Layer들의 input 변화가 증가하고, 효율성 또한 향상된다.

이는 앞서 언급한 DenseNet과 ResNet 사이의 가장 큰 차이점과 동일하다.

(ResNet은 비교적 깊고 넓은 구조인 반면, DenseNet은 좁은 구조이다.)

ResNet뿐만 아니라, 다른 Layer들을 concatenate하는 Inception Network [각주:17] [각주:18]의 경우와 비교했을때에도

DenseNet은 더 단순하고 효율적인 구조를 갖는다.

 

마지막으로, 주목할만한 결과를 낸 혁신적인 네트워크 구조들에 대해서 살펴보자.

 º Network in Network(NIN) [각주:19]구조는 더 복잡한 feature들을 도출하기위해

convolutional Layer의 filter에 micro multi-layer perceptron(다층 퍼셉트론)을 추가했다.

 º Deeply Supervised Network(DSN) [각주:20]에서 내부 Layer들은 auxiliary classifier들을 통해 supervised되며,

이를 통해 이전 Layer들로부터 받은 gradient를 강화했다.

 º Ladder Network [각주:21] [각주:22]는 autoencoder에 lateral connection을 도입하여,

semi-supervised learning에서 높은 정확도를 제공한다.

 º Deeply-Fused Net(DFN) [각주:23]은 서로 다른 base 네트워크들의 중간 Layer를 combining 함으로써,

information flow를 보다 향상시켰다.

 º Reconstruction Loss를 최소화하는 pathway를 사용해 네트워크를 확대함으로서,

이미지 분류 모델 또한 개선되었다. [각주:24]

 

 

 

 

3. DenseNets

 

단일 이미지 X0가 convolutional network를 통과한다고 하자.

네트워크는 L개의 Layer로 구성되어있고, 각 Layer에서는 non-linear transformation H(n)를 수행한다.

(여기서 n은 Layer의 index를 의미)

H는 Batch Normalization, RELU, Pooling, Convolution과 같은 동작들로 이루어져있으며,

n번째 Layer의 결과를 Xn이라 하자.

 

 

< ResNets >

 

기존의 Convolutional feed-forward network는

n번째 Layer의 output을 그 다음 Layer인 (n + 1)번째 Layer의 input으로 연결한다.

식으로 나타내면 다음과 같다.

 

Traditional Net

ResNet은 identity function을 통해 non-linear transformation을 건너뛰는 skip connection을 추가한다.

이 또한 식으로 나타내면 다음과 같다.

 

ResNet

ResNet의 장점은 identity function을 통해 Later Layer에서 Earlier Layer로
gradient가 직접적으로 흐를 수 있다는 점이다.

하지만 identity function과 H의 output이 summation을 통해 합쳐지면서
네트워크의 information flow를 방해할 수도 있다.

 

 

< Dense Connectivity >

 

Layer들 간의 information flow를 향상시키기 위해, 본 논문에서는 다른 connectivity pattern을 제안했다.
어떤 Layer 던지 subsequent Layer로 직접적으로 연결하는, 모든 Layer를 연결하는 방식이다.

아래 그림을 통해 자세히 살펴보자.

 

출처 : Densely Connected Convolutional Networks

Figure2.는 DenseNet의 구조를 도식화한 그림이다.

결과적으로, n번째 Layer는 이전의 모든 Layer들의 feature map(X0, ... ,Xn-1)을 input으로 받게 된다.

이를 수식으로 나타내면 다음과 같다.

 

위 식에서 [X0, X1, ...]은 각 Layer에서 만들어진 feature map들의 concatenation이다.

이러한 dense connectivity 때문에, 이러한 구조를 DenseNet이라 명명했다.

 

 

< Composite Function >

 

다른 연구[각주:25]에서 영감을 받아, H(n)을 다음 3가지 operation의 composite function으로 정의했다.
Batch Normalization, RELU, 3 x 3 Convolution

 

 

 

< Pooling Layers >

 

위의 식(2)에서 사용된 concatenation operation은 feature map의 사이즈가 바뀌면 사용할 수 없다.

하지만, Convolutional network의 down-sampling Layer를 통해 feature map의 사이즈를 바꿀 수 있다.

down-sampling을 용이하게 하기 위해, 네트워크를 서로 밀집하게 연결된 여러개의 dense block으로 나누었다.

 

 

위의 Figure 2.를 다시 보자.

각 Block 사이에서 Convolution과 Pooling을 수행하는 Layer를 Transition Layer라고 한다.

본 논문에서의 Transition Layer는 Batch Normalization Layer, 1 x 1 Convolutional Layer,

그리고 2 x 2 Pooling Layer로 구성되어있다.

 

 

< Growth Rate >

 

만약 각각의 function H(n)이 K개의 feature map을 만든다고 하면,

n번째 Layer의 feature map의 개수는 K0 + K(n - 1)개가 될 것이다.

(여기서 K0은 input Layer의 채널 수)

 

DenseNet과 기존 네트워크 구조들 간의 차이점은, DenseNet이 비교적 좁은 Layer를 가졌다는 것이다. (K = 12)

여기서 이 K를 네트워크의 Growth Rate라고 한다.

Growth Rate란, 다시 말해, 각 Layer에서 몇 개의 feature map을 뽑을지 결정하는 Parameter이며,

각 Layer가 전체 output에 어느정도 기여할지를 결정하는 Parameter이기도 하다.

 

 

 

< Bottleneck Layers >

 

각 Layer들은 K개의 output feature map을 생성하지만, 일반적으로 그에 비해 더 많은 input이 필요하다.

저번 ResNet 논문 리뷰에서도 언급했듯이, bottleneck 구조는 1 x 1 convoltion을 통해
3 x 3 convolution에서의 input을 줄임으로서 computational efficiency를 높일 수 있다.

DenseNet에서도 이러한 Bottleneck 구조를 사용했다.

 

 

< Compression >

 

모델의 compactness를 향상시키기 위해, transition Layer의 feature map의 개수를 줄일 수 있다.

만약 dense block이 m개의 feature map을 가지고 있다면,

그 뒤의 transition Layer는 θm개의 output feature map을 반환할 것이다.

여기서, θ가 바로 compression factor이다. (단, 0 < θ <= 1)

 

만약 θ < 1 인 경우, 이러한 DenseNet은 DenseNet-C라고 하며,

본 논문의 실험에서는 θ = 0.5 로 설정했다.

bottleneck, transition Layer 모두  θ < 1 인 경우, DenseNet-BC라고 명명했다.

 

 

< Implementation Details >

 

ImageNet dataset을 제외한 모든 dataset에서 사용된 DenseNet은

모두 동일한 개수의 Layer를 가진 3개의 Dense Block으로 구성된다.

첫 번째 Dense Block을 들어가기 전, input image에 대해 convolution with 16 output channel을 수행했다.

feature map size를 고정하기 위해, 커널 사이즈가 3 x 3 인 convolution Layer에서의 input은

모두 1 pixel씩 zero-padding 했으며,

인접한 두 Dense Block 사이의 Transition Layer로는 1 x 1 Convolution, 2 x 2 average pooling 을 사용했다.

마지막 Dense Block의 끝에는 global average pooling, softmax classifier가 실행된다.

3개의 Dense Block의 feature map size는 각각 32× 32, 16×16, 8×8이다.

 

ImageNet dataset에 대한 DenseNet은 DenseNet-BC를 사용했다.

224 x 224 이미지를 input으로 하며, Dense Block의 개수는 4개이다.

자세한 네트워크 구성은 아래 Table 1. 을 참고하자.

 

출처 : Densely Connected Convolutional Networks

 

 

 

 

4. EXPERIMENTS

 

DenseNet의 효과를 입증하기 위해 여러 데이터셋에 대해 실험을 진행했으며,

ResNet과 같은 최신 구조와 성능을 비교했다.

 

4.1. DATASETS

 

< CIFAR >

 

두 개의 CIFAR dataset(32 x 32 pixel의 color 이미지)을 사용했으며, (CIFAR-10(C10), CIFAR-100(C100))

training, test set은 각각 50,000, 10,000개이며, training set 중 5,000개는 validation에 사용했다.

data augmentation 방식으로는 가장 표준적인 mirroring/shifting 을 사용했다.

data augmentation을 거친 dataset의 이름에는 "+" 기호를 붙였다.(ex) C10+)

전처리로는 channel 평균과 표준편차를 이용하여 데이터를 정규화했으며,

최종 실행 시 50,000개의 data를 모두 사용하고 training이 끝나면 최종 test error를 report 했다.

 

 

< SVHN >

 

Street View House Numbers (SVHN) dataset(32 x 32 pixel의 color 이미지)을 사용했으며, 

training, test set은 각각 73,257, 26,032개이며, 추가적인 training을 위해 531,131개의 이미지를 사용했다.

data augmentation 없이 training을 진행했으며, training set 중 6,000개는 validation에 이용했다.

training 중 가장 낮은 validation error를 보인 모델을 선택하고 test error를 report 했다.

추가적으로, 픽셀값이 [0, 1] 범위 내에 있도록 255로 나눠주었다.

 

 

< ImageNet >

 

ILSVRC 2012 classification dataset을 사용했으며, 

training, validation set은 각각 1.2million, 50,000개이며, 1,000개의 class로 나뉜다.

모든 training image에 대해 동일한 data augmentation을 적용했으며,

test 시 single-crop 또는 10-crop(with size 224 x 224) 를 적용했다.

classification error는 validation set의 결과를 바탕으로 했다.

 

 

 

4.2. Training

 

Optimization : SGD

Batch size : 64(CIFAR & SVHN), 256(ImageNet)

Epoch : 300(CIFAR), 40(SVHN), 90(ImageNet)

Learning rate : 0.1

(CIFAR & SVHN : divided by 10 at 50% and 75% of the total number of training epochs)

(ImageNet : lowered by 10 times at epoch 30 and 60)

Wight Decay : 0.0001 (Nesterov Momentum of 0.9)

Dropout : 0.2 (C10, C100, SVHN)

 

 

 

4.3. Classification Result on CIFAR and SVHN

 

서로 다른 깊이(L)및 growth rate(k)로 DenseNet 훈련을 진행했다.
CIFAR, SVHN에 대한 결과는 Table2. 를 참고하자.

general trends를 나타내기 위해 기존 기술보다 높은 성능을 보인 결과는 굵은 글씨로 표기하였으며,

전체적으로 최상의 결과를 보인 네트워크는 파란색으로 표기했다.

 

 

출처 : Densely Connected Convolutional Networks

 

< Accuracy >

 

가장 주목할만한 trend는 Table 2.의 가장 아래줄에서 확인할 수 있다.

DenseNet-BC, 그 중에서도 특히 k = 40의 경우 CIFAR dataset에 대해 기존보다 훨씬 높은 성능을 보였다.

C10+, C100+에서 각각 3.46, 17.18%의 error rate를 보였으며,

이는 wide ResNet 구조에서 달성한 error rate보다 훨씬 낮은 수치이다.

 

C10과 C100(without data augmentation)에 대한 결과는 더욱 놀랍다.

두 경우에 대한 결과 모두 drop-path regularization을 사용한 Fractal Net보다 30% 가까이 낮았다.

 

dropout을 사용한 SVHN dataset에서는 k = 24인 DenseNet이 가장 좋은 결과를 보였다.

하지만, 250-Layer DenseNet-BC는 shortcut counterpart에 비해 더 좋은 성능을 내지 못했다.

SVHN이 비교적 쉬운 dataset에 속하며, 너무 깊은 모델의 경우 training set에 overfit되기 쉽기 때문에

이러한 현상이 발생한 것으로 보고 있다.

 

 

< Capacity >

 

compression이나 bottleneck layer가 없는 DenseNet의 경우, L과 k가 증가할수록 높은 성능을 보였다.

이는 model capacity의 growth와 주로 일치하는 것으로 보였는데, C10+와 C100+에서 이를 확인할 수 있다.

C10+의 경우, parameter의 개수가 증가할수록, error가 점차 줄어들었다. C100+ 또한 비슷한 양상을 보였다.

이를 통해 DenseNet이 크고 깊은 모델의 representational power를 이용할 수 있으며,

residual network에서 발생하는 overfitting이나 optimization문제가 발생하지 않음을 알 수 있다.

 

 

< Parameter Efficiency >

 

Table 2. 에서, DenseNet이 다른 구조들에 비해 parameter를 더 효과적으로 사용할 수 있음을 알 수 있다.

bottleneck 구조와 transition layer에서의 dimension reduction을 수행한 DenseNet-BC가 특히 그렇다.

 

예를 들어, 15.3M개의 parameter를 가진 250-Layer 모델이

다른 30M개 이상의 parameter를 갖는 여러 모델들(FractalNet, Wide ResNet)보다 높은 성능을 보였다.

또한, 1001-Layer의 ResNet 모델과 비교했을때,

DenseNet-BC가 90% 정도 적은 parameter를 가졌음에도 비슷한 성능을 보였다.

 

출처 : Densely Connected Convolutional Networks

위 그림은 C10+의 2개의 네트워크에 대한 training loss와 test error를 보여준다.

1001-Layer의 깊은 ResNet의 training loss값은 낮게 수렴하지만, test error는 비슷하다.

이에 대해서는 차후 자세히 분석 예정이다.

 

 

< Overfitting >

 

parameter를 더 효율적으로 사용함에 따라 발생하는 긍정적인 부작용 중 하나는 

DenseNet이 overfitting 되는 경향이 적다는 것이다.

본 논문에서는 data augmentation을 하지않은 dataset에서

DenseNet 구조의 improvement가 더 잘 두드러진다는 것을 확인했으며,

single setting에서의 잠재적인 overfitting을 확인했다.

이를 해결하기 위해서는 DenseNet-BC bottleneck and compression layer가 효과적일 것으로 보인다.

 

 

 

4.4. Classification Results on ImageNet

 

이제 ImageNet dataset에 대한 결과를 확인해보자.

DenseNet-BC의 depth와 growth rate를 바꿔가며 진행했으며, 기존 ResNet구조와 비교했다.

두 구조간의 공정한 비교를 위해, Torch implementation 된 ResNet을 사용함으로서

데이터 전처리나 최적화 세팅 같은 다를 수 있는 요소들을 모두 제거했다.

단순히 ResNet 모델을 DenseNet-BC 네트워크로 바꿨으며, 실험 환경은 ResNet과 동일하게 설정했다.

 

출처 : Densely Connected Convolutional Networks

ImageNet에 DenseNet을 적용한 single-crop과 10-crop validation error 결과는 위와 같다.

Figure 3. DenseNet의 single-crop top1 validation error값과의 비교를 위한 그림으로,

왼편은 ResNet의 Parameter, 오른편은 FLOP에 대한 결과이다.

결과를 보면 알 수 있듯, DenseNet의 parameter 수와 computation이 훨씬 적음에도 불구하고,

ResNet과 비슷한 성능을 내는 것을 확인할 수 있다.

 

본 논문에서, 실험 설정이 ResNet에는 최적화되었지만,

DenseNet에는 최적화되어 있지 않다는 점 또한 주목할 필요가 있다.

만약 ImageNet에 맞는 DenseNet의 parameter를 보다 최적화한다면,

더 높은 성능을 낼 수 있을 것으로 기대된다.

 

 

 

 

5. DISCUSSION

 

표면적으로 보았을 때, DenseNet의 구조는 ResNet과 상당히 유사하다.

하지만, 두 구조간의 작은 차이는 실질적으로 두 네트워크 구조 간의 아주 큰 차이로 이어진다.

 

< Model Compactness >

 

input concatenation의 직접적인 결과로,

DenseNet에서 학습된 feature map들은 모든 subsequent Layer에 접근 가능하다. 

이는 네트워크 전체의 feature 재사용성을 높이고, 보다 compact한 모델이 되도록 한다.

 

출처 : Densely Connected Convolutional Networks

위 두 그래프를 살펴보자.

왼쪽 그래프는 DenseNet의 parameter efficiency를 비교하는 그래프,

오른쪽 그래프는 ResNet 구조와 DenseNet을 비교하는 그래프이다.

C10+에서 다양한 깊이의 여러 소규모 네트워크들을 train하고,

network parameter들의 function으로 test 정확도를 plot했다.

 

AlexNet이나 VGG-net과 같은 여러 유명한 네트워크 구조와 비교했을 때,

pre-activation된 ResNet은 적은 parameter에도 일반적으로 더 나은 결과를 냈다.

그렇다면 본 논문에서 제안된 DenseNet은 어떨까?

결론부터 이야기하자면, 앞서 언급했던 것과 동일하게,

DenseNet이 ResNet에 비해 parameter대비 더 좋은 성능을 냈다.

 

그래프상으로 보았을 때, DenseNet-BC가 가장 효율적인 parameter efficient varient였다.

또한, 동일한 수준의 정확도를 달성하는데 ResNet의 약 1/3 정도의 parameter만 이용했다.

즉, DenseNet의 model이 더 compact하고, fewer parameter를 가진다.

 

 

< Implicit Deep Supervision >

 

dense convolutional network의 accuracy가 향상되는 이유는

각각의 Layer들이 short connection을 통해 loss function의 추가적인 supervision을 받기 때문이다.

DenseNet을 이용해 일종의 "Deep supervision"을 수행할 수 있다.

Deep supervision의 이점은 이미 deeply-supervised nets(DSN)[각주:26]에서 증명된 바 있다.

(모든 hidden Layer에 classifier가 더해지며, intermediate Layer들이 보다 차별적인 특징을 학습하도록 한다)

 

DenseNet은 implicit한 방식으로 위와 유사한 Deep supervision을 수행한다.

네트워크 상단의 single classifier는 최대 2~3개의 transition Layer를 통해

모든 Layer를 직접적으로 supervision한다.

하지만 DenseNet의 loss function과 gradient의 경우,

모든 Layer에서 같은 loss function을 공유하기 때문에 훨씬 덜 복잡하다.

 

 

< Stochastic vs. deterministic connection >

 

dense convolutional network와 residual network의 stochastic depth regularization사이에는

흥미로운 connection이 하나 있다.

stochastic depth에서, residual network의 Layer들은 랜덤하게 drop되어

주변 Layer들 간의 direct connection이 생성된다.

pooling Layer는 drop하지 않기 때문에 네트워크는 DenseNet과 유사한 connectivity pattern을 갖는다.

방법은 궁극적으로 다를지 몰라도, stochastic depth에 대한 DenseNet interpretation은

이러한 정규화의 성공에 대한 통찰력을 제공한다.

 

 

< Feature Reuse >

 

DenseNet은 현재 Layer가 이전의 모든 Layer들의 feature map에 접근할 수 있도록 설계되었다.

본 논문에서는 train된 네트워크가 이러한 opportunity를

잘 활용하는지 조사하기 위해 다음과 같은 실험을 수행했다.

 

먼저, C10+, k = 12, L = 40인 DenseNet을 훈련시켰다.

각 블록 내의 convolutional Layer 'l'에 대해,  Layer 's'와의 연결에 할당된 average weight를 계산했다.

 

출처 : Densely Connected Convolutional Networks

위 Figure 5. 는 모든 3개의 dense block에 대한 heat-map을 나타낸 그림이다.

average absolute weight란, 이전 Layer에서 Convolution Layer에 대한 의존성에 대한 정도이다.

위 그림에서 빨간색 점(l, s)은 Layer 'l'이 이전 Layer 's'에서 생성된 feature-map을

많이 사용한다는 것을 나타낸다.

자세한 내용은 위 그림을 더 참고하도록 하자.

 

 

 

 

6. CONCLUSION

 

본 논문에서는 Dense Convolutional Network, 일명 DenseNet이라고 불리는

새로운 Convolutional Network 구조에 대해 소개했다. 

같은 feature map size를 가진 어떤 2개의 Layer들에 대한 direct connection에 대해 소개했으며,

optimization difficulty없이 Layer의 규모를 늘려나갈 수 있다는 것 또한 증명했다.

 

본 논문의 실험에서, DenseNet은

성능 저하나 overfitting 없이 parameter의 개수가 증가할수록 정확도가 향상되는 모습을 보였다.

또한 다양한 setting에서도 다른 기존 결과들에 비해 놀라운 성과를 보여주었으며,

심지어는 다른 구조들에 비해 적은 parameter 개수와 연산량으로 더 좋은 결과를 냈다.

본 논문에서 DenseNet의 parameter들은 ResNet환경에 맞게 setting되었는데,

이를 개선하면 더 좋은 결과가 나올 것으로 예상하고 있다.

 

DenseNet은 모든 Layer들을 연결한다는 간단한 connectivity rule을 따르면서도,

identity mapping, deep supervision, diversified depth 등의 특징을 모두 실현시켰다.

이러한 DenseNet 구조는 네트워크 전체에서

feature reuse를 더 용이하게 하고, model을 더 compact하게 만들었다.

 

DenseNet은 compact한 internal representations, feature redundancy 감소라는 장점을 통해

다양한 컴퓨터 비전 분야에서 훌륭한 feature extractor로 자리잡을 것이다.

 

 

 

 

< 논문 구현 >

 

https://beginnerdeveloper-lit.tistory.com/162

 

[논문구현] DenseNet (Densely Connected Convolutional Networks) 구현

DenseNet 에 대한 논문 리뷰 https://beginnerdeveloper-lit.tistory.com/161 [논문리뷰] DenseNet (Densely Connected Convolutional Networks) DenseNet https://arxiv.org/abs/1608.06993 Densely Connected Convolutional Networks Recent work has shown that

beginnerdeveloper-lit.tistory.com

 

 

 

 


REFERENCE

 

https://deep-learning-study.tistory.com/528

 

[논문 읽기] DenseNet(2017) 리뷰, Densely Connected Convolutional Networks

이번에 읽어볼 논문은 DenseNet, 'Densely Connected Convolutional Networks'입니다. DenseNet은 ResNet과 Pre-Activation ResNet보다 적은 파라미터 수로 더 높은 성능을 가진 모델입니다. DensNet은 모든 레이어의 피쳐맵

deep-learning-study.tistory.com

 

https://aijyh0725.tistory.com/2

 

Dense Net(2018)논문 정리

Dense Net 논문 정리 안녕하세요, 블로그에 처음 공부 내용을 정리하게 되었습니다. 저도 아직 가야할 길이 멀게만 느껴지지만, 열심히 공부하는 누군가가 저의 글을 보고 함께 달릴 수 있으시길

aijyh0725.tistory.com

 

https://ysbsb.github.io/cnn/2020/02/12/DenseNet.html

 

DenseNet 논문 리뷰 | mocha's machine learning

Densely Connected Convolutional Networks, Gao Huang, CVPR2017 Paper DenseNet 방법 요약 DenseNet은 이러한 short connection 방법을 바탕으로, 연속적으로 나오는 각각의 layer를 모두 연결하는 방법을 사용한다. 기존의 con

ysbsb.github.io

 

 

 

 

 

  1. K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016. [본문으로]
  2. G. Huang, Y. Sun, Z. Liu, D. Sedra, and K. Q. Weinberger. Deep networks with stochastic depth. In ECCV, 2016.  [본문으로]
  3. G. Larsson, M. Maire, and G. Shakhnarovich. Fractalnet: Ultra-deep neural networks without residuals. arXiv preprint arXiv:1605.07648, 2016.  [본문으로]
  4. K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016.  [본문으로]
  5.  G. Huang, Y. Sun, Z. Liu, D. Sedra, and K. Q. Weinberger. Deep networks with stochastic depth. In ECCV, 2016.  [본문으로]
  6. S. E. Fahlman and C. Lebiere. The cascade-correlation learning architecture. In NIPS, 1989.  [본문으로]
  7. B. M. Wilamowski and H. Yu. Neural network learning without backpropagation. IEEE Transactions on Neural Networks, 21(11):1793–1803, 2010  [본문으로]
  8. B. Hariharan, P. Arbeláez, R. Girshick, and J. Malik. Hypercolumns for object segmentation and fine-grained localization. In CVPR, 2015. [본문으로]
  9. J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015. [본문으로]
  10. P. Sermanet, K. Kavukcuoglu, S. Chintala, and Y. LeCun. Pedestrian detection with unsupervised multi-stage feature learning. In CVPR, 2013.  [본문으로]
  11. S. Yang and D. Ramanan. Multi-scale recognition with dagcnns. In ICCV, 201  [본문으로]
  12. J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. FeiFei. Imagenet: A large-scale hierarchical image database. In CVPR, 2009. [본문으로]
  13. K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016.  [본문으로]
  14. G. Huang, Y. Sun, Z. Liu, D. Sedra, and K. Q. Weinberger. Deep networks with stochastic depth. In ECCV, 2016. [본문으로]
  15. C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In CVPR, 2015.   [본문으로]
  16. C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z. Wojna. Rethinking the inception architecture for computer vision. In CVPR, 2016.   [본문으로]
  17. C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In CVPR, 2015. [본문으로]
  18. C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z. Wojna. Rethinking the inception architecture for computer vision. In CVPR, 2016.  [본문으로]
  19. M. Lin, Q. Chen, and S. Yan. Network in network. In ICLR, 2014. [본문으로]
  20. C.-Y. Lee, S. Xie, P. Gallagher, Z. Zhang, and Z. Tu. Deeply supervised nets. In AISTATS, 2015.  [본문으로]
  21. M. Pezeshki, L. Fan, P. Brakel, A. Courville, and Y. Bengio. Deconstructing the ladder network architecture. In ICML, 2016.  [본문으로]
  22. A. Rasmus, M. Berglund, M. Honkala, H. Valpola, and T. Raiko. Semi-supervised learning with ladder networks. In NIPS, 2015.  [본문으로]
  23. J. Wang, Z. Wei, T. Zhang, and W. Zeng. Deeply-fused nets. arXiv preprint arXiv:1605.07716, 2016. [본문으로]
  24. Y. Zhang, K. Lee, and H. Lee. Augmenting supervised neural networks with unsupervised objectives for large-scale image classification. In ICML, 2016. [본문으로]
  25. K. He, X. Zhang, S. Ren, and J. Sun. Identity mappings in deep residual networks. In ECCV, 2016.  [본문으로]
  26. C.-Y. Lee, S. Xie, P. Gallagher, Z. Zhang, and Z. Tu. Deeply supervised nets. In AISTATS, 2015.  [본문으로]
728x90
반응형