1. Densely Connected Convolutional Networks
HUANG, Gao, et al. Densely connected convolutional networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition.
발표자 : 오유진
2. Key Point
✓ Network 의 layer 간 information flow 를 보장하기 위해서 모든 layer 를 직접 연결
✓ layer 로 전달되기 전에 summation 을 해서 feature 를 결합하는 것이 아니라 concatenating 을 통해서 feature 결합
✓ Dense connection 에는 정규화 효과가 있어서 training set 이 작아도 overfitting을 줄일 수 있음
[Abstract]
• 각 layer에 대해 모든 preceding layer의 feature map이 input으로 사용되며,
own feature map이 모든 subsequent layer에 대한 input으로 사용
• Vanishing-gradient 문제 완화
• Feature propagation 강화,
• Parameter 수 감소
→Redundant feature maps 를 re-learn 할 필요가 없기 때문에 더 적은 parameter 로 기존의 성능 이상을 낼 수 있음
3. DenseNet
• 기존의 feed-forward network 는 𝑙 𝑡ℎ
layer 의 output 을 (𝑙 + 1) 𝑡ℎ
layer의 input과 연결 → 𝑋𝑙 = 𝐻𝑙(𝑋𝑙−1)
• ResNet 은 skip-connection 을 추가 → 𝑋𝑙 = 𝐻𝑙 𝑋𝑙−1 + 𝑋𝑙−1
– Gradient 가 later layer 에서 earlier layer 로 identity function 이 직접 흐름 → vanishing-gradient 일부 해결
– 하지만 identity function 과 output 𝐻𝑙이 합에 의해 결합되어 network에서의 information flow를 방해할 수 있음.
• Dense Connectivity 는 layer 간의 information flow를 향상시키기 위해 다른 연결 패턴을 제안
– 모든 layer 에서 모든 subsequent layer 로 직접 연결
– 𝑙 𝑡ℎ
번째 layer는 모든 preceding layer의 feature-map을 받음 → 𝑋𝑙 = 𝐻𝑙( 𝑋0, 𝑋1, ⋯ , 𝑋𝑙−1 )
4. Composition function → Dense block
DenseNet - architecture
• 𝐻𝑙을 3개의 연속작업 composite function 으로 정의. Batch normalization, ReLU, 3*3 convolution
• feature maps의 크기가 바뀌는 것이 𝑋𝑙 = 𝐻𝑙( 𝑋0, 𝑋1, ⋯ , 𝑋𝑙−1 ) 에 사용된 연결 연산에서 실행 불가능
• Down-sampling 을 용이하게 하기 위해 network를 밀도가 높은 여러 개의 dense block으로 나눔
• Layer 사이에서 Convolution 과 pooling을 하는 Transition layer라고 정의
• 실험에서 transition layer는 batch normalization layer 와 1*1 convolutional layer 와 2*2 avaverage pooling layer 로 구성.
Pooling layer
5. Growth rate
DenseNet - architecture
• 𝐻𝑙이 k개의 feature-map을 생성하면, 다음 layer는 𝑘0 + 𝑘 × (𝑙 − 1)개의 input
feature-map을 가짐
– 𝑘0 는 dense block 첫번째의 input layer 의 feature map 개수
• 한번 기록되면 network 내의 어디서든 접근 가능, 계층별로 layer 복제할 필요 없음.
• 각 layer는 k개의 output feature-map만 생성하지만 일반적으로 더 많은 input이 있음
• 1*1 convolution은 각각의 3*3 convolution 이전에 bottleneck layer로 나타나 input feature-map의 수를 줄임으로써 계산 효율을 향상시킴
Bottleneck layer
• BN → ReLU → 3x3 Conv의 구조에서 BN → ReLU → 1x1 Conv → BN → ReLU → 3x3 Conv의 Bottleneck 구조 적용
• 계산 복잡성을 줄여주는 효과가 있습니다.
Bottleneck layer
6. Compression
DenseNet - architecture
• 모델의 압축률을 더 향상시키기 위해 transition layer에서 feature-map의 수를 줄임
• Dense block이 m개의 feature-map을 포함한다면, 다음 transition layer가 [θm] output feature-map을 생성
• 여기서 0 < θ ≤ 1은 압축 인자. θ = 1일 때, transition layer를 거친 feature-map의 수는 변하지 않음
• θ < 1 인 DenseNet 을 DenseNet-C 라고 부르고 θ = 0.5로 설정
• θ < 1 인 bottleneck과 transition layer를 모두 사용하는 경우 → DenseNet-BC 모델
Architecture
7. DenseNet - advantage
Strong gradient flow
• 먼저 모든 feature map 들을 쌓아오기 때문에 layer 사이 사이 최대한 가치 있는 정보가 지나가게 할 수 있음
‒ ResNet 의 경우 network 시작 지점 layer 의 정보가 깊은 망을 거치면서 뒤로 갈수록 희미해지는데, Dens connectivity pattern 을 사용하면
초반 layer 의 정보를 쌓아가며 뒤쪽 layer 까지 효율적으로 전달
‒ 모델의 학습이 쉬워짐
➢ Standard Connectivity
Increasingly complex features
➢ Dense Connectivity
• 기존의 network 보다 parameter 의 수를 많이 줄일 수 있음
– Dense 한 network 연결을 통해 정보의 손실이 별로 없이 효율적으로 전달
– 이는 classifier 에 network 전체의 feature map 을 골고루 입력할 수 있게 해 더 적은 parameter 사용이 가능
• Dense connection 이 regularizing 효과를 가지고 있어서 작은 dataset 에서도 overfitting 을 줄여줌
8. Implementation details
사용한 DenseNet 의 구조
• ImageNet 에 적용할 때는 dense block 을 4개 사용
• CIFAR-10, SVHN 에는 dense block 을 3개 사용
‒ Dense block 내부에는 같은 수의 layer 가 존재
Classification layer
• 보통은 fully-connected network 사용하
는데, GAP(global average pooling) 사용
• Network 구조가 발전하면서 굳이
parameter 의 수가 증가하는 FC 를 넣어
주지 않기 때문
14. DenseNet Experiment
총 3가지 data set 사용해 실험
‒ CIFAR-10, CIFAR-100 (32*32 픽셀 컬러 이미지 train 50000, test 10000)
‒ SVHN (32*32 컬러 숫자 이미지 train 73257 test 26032)
‒ ImageNet (224*224 1000 개 class, train 120만, test 50000)
• K 가 증가하면 parameter 의 수가 많아지고 Bottleneck
Compression 을 사용하면 parameter 가 줄어드는 것 확인 가능
15. DenseNet Experiment
총 3가지 data set 사용해 실험
‒ CIFAR-10, CIFAR-100 (32*32 픽셀 컬러 이미지 train 50000, test 10000)
‒ SVHN (32*32 컬러 숫자 이미지 train 73257 test 26032)
‒ ImageNet (224*224 1000 개 class, train 120만, test 50000)
• K 가 증가하면 parameter 의 수가 많아지고 Bottleneck
Compression 을 사용하면 parameter 가 줄어드는 것 확인 가능
• SVHN 의 경우 BC 를 사용하지 않은 network 에서 더 좋은 결
과가 나옴
‒ SVHN 이 상대적으로 쉬운 작업이기 때문에 더 deep 한
모델이 학습데이터에 overfitting 되기 때문
16. DenseNet Experiment
총 3가지 data set 사용해 실험
‒ CIFAR-10, CIFAR-100 (32*32 픽셀 컬러 이미지 train 50000, test 10000)
‒ SVHN (32*32 컬러 숫자 이미지 train 73257 test 26032)
‒ ImageNet (224*224 1000 개 class, train 120만, test 50000)
• K 가 증가하면 parameter 의 수가 많아지고 Bottleneck
Compression 을 사용하면 parameter 가 줄어드는 것 확인 가능
• SVHN 의 경우 BC 를 사용하지 않은 network 에서 더 좋은 결
과가 나옴
‒ SVHN 이 상대적으로 쉬운 작업이기 때문에 더 deep 한
모델이 학습데이터에 overfitting 되기 때문
• ResNet 의 parameter 가 높은 모델과 DenseNet 의 parameter 가
굉장히 작은 모델의 성능이 비슷한 수준을 보임
18. Discussion
• Dense block 내부에서 convolution layer 들의 필터 가중치의 평균
• 픽셀 색깔이 source layer(s) 에서 target layer(𝑙) 로 연결되어 있는 가중치의 L1norm (normalized by number of input feature-map)
• 색이 빨간색일수록 더 높은 가중치
• 같은 block 내에서는 가중치가 잘 흩어져 있음
• Transition layer 에서 나온 가중치도 잘 퍼져 있음
• Classification layer 가 전체 weight 를 가져가기는 하지만 네트워크 마지
막 단에서 생긴 high-level feature 를 더 많이 가져감
19. Multi-Scale Dense Networks for Resource Efficient Classification
Gao Huang, Danlu Chen, Tsinghua Li, Felix Wu
발표자 : 오유진
20. Motivation
✓ Anytime classification – test 를 위한 networks prediction 이 점진적으로 update 되면서, output 의 prediction이 언제나 가능하게..
✓ budgeted batch classification – 분류를 위한 계산량 고정시켜 수행
• Test image → ‘easy’ VS. ‘hard
shallow model VS. deep model
• 다양한 resource demand 를 가진 multiple classifier training 해서 test 하기 위함
• Develop CNNs
– 계산을 ‘slice’하고 이러한 ‘slice’를 하나씩 처리
– CPU 시간이 고갈되거나 classification 이 충분히 이뤄지면 평가 중단
• 그래프와 같이 이전의 classifier 가 이후의 classifier의 성능에 부정적인 영향을 줌
21. Multi-Scale DenseNet - Architecture
• Network 의 마지막 layer 까지 모든 scale 을 유지하는 것은 비효율적
• Network 의 크기를 줄이는 방법 1
– 깊이에 따라 S 블록으로 분할
– 𝑆 − 𝑖 + 1 인 가장 큰 scale의 𝑖 𝑡ℎ
번째 block 만 유지
– Training 과 test 모두 계산량 줄임
• 매 번 scale 이 줄어들고transition layer 를 block 사이에 연결
• Network 의 크기를 줄이는 방법 2
– 가장 큰 scale feature 만 사용하기 때문에 대각선에 위치한 block 에서 classification 하는데 영향을 줌