- image classification
- LeNet 구현
- Convolution 종류
- deep learning
- SPP-Net
- Optimizer
- overfeat
- 딥러닝
- Weight initialization
- object detection
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Today
- Total
I'm Lim
[논문 정리] CondenseNet 본문
Paper
Huang, Gao, et al. "Condensenet: An efficient densenet using learned group convolutions." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
Abstract
CondenseNet은 learned group convolution이라 불리는 새로운 모듈의 dense connectivity로 이루어진다. dense connectivity는 네트워크의 feature를 재사용하는데 유용한 반면, learned group convolution은 레이어간 불필요한 learning group convolution을 제거한다.
Introduction
Image Classification 모델들이 수많은 영역에서 활발히 적용되고 있지만, 이때까지의 모델들은 컴퓨터 자원이 충분한 상황을 고려하였다. 그 결과, 컴퓨터 자원이 충분치 못한 기기들에서는 실시간으로 처리가 불가능했다. 이러한 문제 때문에 Model Compression이 활발히 연구되기 시작하였다. 이러한 연구 덕분에 기존 모델들의 연산량을 적게는 5배정도 많게는 수십배까지 줄였다.
이러한 흐름 속에 CondenseNet은 DenseNet이 불필요한 dense connectivity를 가지는 것에 주목하였다. 이를 위해, CondenseNet은 하나의 레이어 내의 feautre들을 여러 그룹으로 나누고, 그룹 내의 중요도가 떨어지는 feature들의 연결을 제거하는 방법을 제안하였다 (learned group convolution).
Related Work and Background
1. Realted work
1 ) Weights pruning and quantization
딥러닝 모델은 주로 상당히 많은 수의 불필요한 가중치들을 가지고 있다. 다시 말해, 가중치들이 Pruning (가지치기) 되거나 quantization (양자화)되더라도 성능에 영향을 미치지 않는 노드들이 무수히 존재한다.
CondenseNet도 Pruning을 다음 두가지 방식을 통해 적용한다. 첫 번째로는 학습초기에 weight pruning을 진행한다. 이는 L1 정규화보다 더욱 효과적이라고 한다. 두 번째로는 Introduction에서도 소개한 중요도가 떨어지는 feature들의 연결을 제거하는 방식을 통해 pruning을 진행한다.
2 ) Efficient network architectures
MobileNet이나 NasNet등의 효율적인 (컴퓨터 비용이 적게드는) 모델들을 모두 depthwise separable convolution을 사용함으로써 파라미터 개수를 현저히 줄인다. 하지만, 이러한 depthwise seperable convolution은 Torch와 같은 플랫폼에는 구현이 되어있지 않다. 그러나, CondenseNet은 구현이 되어있는 group convolution operation을 사용하기 때문에 컴퓨터 효율이 더욱 좋다 (아마도, "플랫폼에서 직접 지원하지 않으므로 최적화가 안 좋을 것"이라고 말하고 싶은 것 같다).
2. DenseNet & Group Convolution은 이미 예전 글에서 정리하였기에 생략한다.
CondenseNet
CondenseNet은 DenseNet과 상당히 유사하지만, Group Convolution을 사용했다는점과 group convolution이전에 무작위로 입력을 섞는다는 점에서 차이가 있다. 그런데 진짜로 무작위로 입력을 섞어버리면 DenseNet의 성능이 떨어지는 현상을 발견하였다.
위에서 발견된 문제를 해결하기 위해, 저자는 입력 feature를 group하는 것 조차 모델이 학습하도록 하였다. 이렇게 되면, 모델이 필요한 feature를 선택하고, 필요없는 feature를 무시하므로 feature map 전체를 사용할 필요가 없어진다. 이를 learned group convolution이라 한다.
1. Learned Group Convolution
처음 절반은 condensing stages로 구성된다. 이 단계에서 반복적으로 학습을 하면서 필요없는 feature들에 낮은 가중치를 주면서 pruning한다.
나머지 절반은 Optimization stage로 구성된다. 이 단계에서는 group들을 고정시키고, filter를 학습한다.
위 두 과정을 거친 뒤, 학습된 sparsified layer는 testing stage에서 group convolution에 의해 구현될 수 있다.
1 ) Filter Groups
필터의 가중치가 [ O x R x W x H ]로 구성되는 상황이라고 가정하자. 이 때, O는 출력 채널의 개수이고, R은 입력 채널의 개수이다.
여러개의 1 x 1 Conv (group)를 적용시키면 이는 group으로 볼 수 있고, 이 때 각 그룹의 1 x 1 Conv 가중치는 [$\small{\dfrac{O}{G}}$ x $R$]로 볼 수 있다.
2 ) Condensation Criterion
Condensing stage에서 그룹 내 중요하지 않은 feature들을 제거한다고 했다. 그룹 g의 j번째 feature의 중요도를 계산하기 위해서 그룹 g의 가중치들의 절대 평균값을 이용한다. 즉, L1 norm이 다른 L1 norm들에 비해 작으면 제거한다. 이것은 sparse convolution으로 볼 수 있다.
3 ) Group Lasso
저자는 그룹 단위의 sparsity를 원하기 때문에 group lasso regularizer를 사용했다고 한다. group lasso regularizer는 그룹의 가중치를 통째로 0으로 만드는 효과를 가진다고 한다.
4 ) Condense Factor
그룹에 의해서 사용되는 feature map의 개수가 반드시 $\small{\dfrac{1}{G}}$는 없다. 따라서, 저자는 condensation factor C를 하이퍼 파라미터로 설정하였다. 이는 각각의 그룹에서 입력을 ${\small{\dfrac{R}{C}}}$만큼 선택하는 것으로 볼 수 있다.
5 ) Condensation Procedure
위 그림에서 C=3으로 설정하였고, C-1번째 condensing stage에서 1/C개의 필터 가중치를 pruning한다. 학습이 끝나면 그룹 내 $\small{\dfrac{1}{C}}$개 만큼의 weight만 유지된다. 이러한 과정을 $\dfrac{M}{2(C-1)}$만큼 반복한다. 이 때, M은 총 epoch을 의미한다. 즉, 처음 절반 정도는 condensing을 위해서 진행된다. 나머지 절반은 opimization stage를 위해 사용된다.
6 ) Learning rate
아래의 그림과 같이 Learning rate scheduler를 위해 cosine shape를 이용한다.
7 ) Index Layer
feature selection과 rearrangement opration을 위해 index layer를 사용한다.
2. Architecture Design
1 ) Exponentially increasing growth rate
기존의 DenseNet은 feautre map을 전부 다 연결시키는 방식이었다. 하지만, CondenseNet은 depth가 커질수록 연결되는 feature map이 더욱 많아지는 방식을 택했다. 쉽게 이야기해서 $k = 2^{m-1} k_0$로 설정한다 (m : dense block의 인덱스, $k_0$ : 상수).
2 ) Fully dense connectivity
feature re-use를 강화하기 위해 input later는 모든 레이어와 다 연결한다. feature의 크기가 레이어마다 다 다르기 때문에 average pooling을 이용하여 down sampling해줬다고 한다.
Ablation Study
Ablation Study를 위해서 CIFAR-10을 데이터로 사용하였고, 1 ) Pruning, 2 ) the number of groups, 3 ) condensation factor의 효과를 실험하였다.
1. Pruning strategy
그림 왼쪽에서 DenseNet-50에 다른 pruning 기법을 이용하여 성능을 비교하였다. Full model은 fully converged model에 사용하는 가중치 pruning 기법이라고 한다. Traditional Pruning은 CondenseNet과 동일하게 pruning을 진행하지만, 학습이 완료된 후에 가중치들이 pruning되는 기법이다.
결과를 보면, 학습 도중에 pruning을 진행하는 것이 학습이 완료된 후에 pruning을 진행하는 것보다 성능이 훨씬 좋음을 알 수 있다.
2. Number of groups
그림 중앙에서 G를 하이퍼 파라미터로 두고, 성능을 비교하였다. 단, C는 8로 고정시켰다고 한다.
결과를 보면, 그룹이 늘어날수록 성능이 개선됨을 알 수 있다. 이는 그룹을 늘리는 것은 그만큼 불필요한 가중치를 더 많이 제거할 유연성을 제공한다고 해석할 수 있다.
3. Effect of the condensation factor
그림 오른쪽에서 C를 하이퍼 파라미터로 두고, 성능을 비교하였다. C는 [ 1, 2, 4, 8 ]로 사용하였다. 또한, G는 4로 고정시켰다고 한다.
결과를 보면, C가 늘어날수록 성능이 개선됨을 알 수 있다.
4. Stability
결과를 보면 세 그룹의 filter group level의 연결은 달랐지만 (그림 위), 레이어 간 전체적인 정보의 흐름은 유사함을 보였다 (아래 그림). 이것은 세 가지 모델이 다른 가중치 초기화에도 불구하고, 유사한 global connectivity를 학습했음을 의미한다.
Discussion
CondenseNet은 학습과정에서 weight pruning 기법을 적용하여 DenseNet을 개선시킨 모델이다.
'Classification' 카테고리의 다른 글
[논문 정리] MobileNet v1 (0) | 2022.12.15 |
---|---|
[논문 정리] NasNet (0) | 2022.12.14 |
[논문 정리] SENet (0) | 2022.12.12 |
[논문 정리] ShuffleNet v1 (0) | 2022.12.10 |
[논문 정리] PyramidNet (0) | 2022.12.04 |