모델의 효율을 좋게 하도록 redundancy를 줄이거나 efficiency를 높이는 방식
Pruning / Distillation
Pruning: 모델에서 중요도가 낮은 뉴런을 제거하여 직접적인 모델 크기의 감소
모델의 redundancy를 줄이는 방법
장점: 모델 최적화에 따른 연산량 감소 및 모델사이즈 축소율이 상당함
단점: 모델 학습 및 pruning 과정이 복잡하고 매우 오래 걸리며, task별로 다른 적용방법을 필요로함
Distillation: 작은 모델에 큰 모델의 정보(knowledge)를 전달하여 작은 모델의 정확도를 향상시킴
모델의 efficiency를 높이는 방식
장점: Pre-trained model을 이용해 빠르게 학습시킬 수 있으며 범용적으로 적용 가능
단점: 모델 최적화 개념보다는 존재하는 모델의 표현력(capacity)을 최대한 사용하게 되어 정확도가 향상되어 큰 모델을 대체할 수 있게 되는 간접적인 모델 사이즈 축소방법
Network Pruning
네트워크의 수많은 파라미터중 중요하지 않은 파라미터들을 제거하는 방법
어떠한 기준을 정하여 rank를 만들도록 뉴런을 정렬(ranking)
Ranking에 따라 일정 threshold를 넘지 못하는 뉴런을 제거
이 과정에서 뒤에 연결된 뉴런에까지 모두 영향을 미치므로 파라미터가 많이 제거됨(pruning)
Pruned 네트워크의 정확도는 전에비해 조금 감소됨
너무 많이 pruning이 되면 네트워크가 손상되어 정확도 회복이 불가능
Pruning 후 네트워크를 재학습시켜 정확도를 회복
Interactive Pruning
Pruning Convolutional Neural Networks for Resource Efficient Inference
ICLR 2017 논문(Nvidia)
Pre-trained VGG16의 filter를 random하게 골라 pruning하고 validation set에서 cost function의 변화를 제일 적게 하는 뉴런의 rank가 높도록 하여 나열
실험결과 VGG16 네트워크 모델사이즈 10배정도 줄일 수 있었음
Caltech Birds-200 dataset 이용
Network Pruning on SSD
Multi-layer Pruning Framework for Compressing Single Shot MultiBox Detector
Singh, Pravendra, et al. 2019 IEEE Winter Conference on Applications of Computer Vision (WACV). IEEE, 2019.
Single Shot Multi-Box Detector(SSD)를 pruning
Object detection: PASCAL VOC dataset에 대해 정확도는 유지하며 6.7~4.9배의 모델 압축(VGG16 based)
Classification: CIFAR dataset에 대해 정확도는 유지하며 125배의 모델 압축(VGG16)
Sparsity induction: Pre-trained SSD 를 L1-norm이 적용된 loss function으로 threshold 이하의 weight를 0으로 만들어 pruning 될 layer 집합 𝐿을 만듦
L1-norm에는 test set과 val set을 이용함
기준이 될 threshold는 validation set을 이용하여 해당 레이어의 값 평균을 기준으로 정함
Filter selection: 이렇게 선택된 layer 집합 𝐿의 레이어 𝑙의 중요도를 평가
레이어 𝑙과 다음 레이어 𝑙+1간의 filter sparsity statics를 이용하여 중요도 평가
이 과정에서 레이어 l에서 중요하지 않다고 판단되는 filter의 list를 얻음
Layer 집합 𝐿에 대해 모두 반복수행
Pruning: 앞에서 중요하지 않다 판단된 레이어 𝑙과 해당 output과 연결된 layer 𝑙+1을 제거
Layer 집합 𝐿에 대해 모두 반복수행
Retraining: 앞에서 pruning된 네트워크를 original loss(SSD)를 이용해 떨어진 정확도를 복원(재학습)
실험 결과
실험 결과 정확도는 비교적 보존하면서 네트워크의 크기는 매우 크게 줄어들게 됨
또한 여타 모델에 비해 훨씬 높은 mAP로 추론하면서도 훨씬 작은 파라미터수를 가짐
SSD300의 경우 detection layer를 뒷단에서 pruning 하는것이 앞단에서 하는것보다 더 정확한 실험 결과를 보이는 것을 확인 할 수 있었는데, 이는 구조상 4, 5, 6번째 detection layer의 parameter 수가 매우 적지만 큰 객체를 찾는데 주요하게 작용하기 때문임
Network Distillation
개발에 사용되는 딥러닝 네트워크와 실제 적용되는 모델은 다름
개발에는 리소스 사용이 자유롭지만, application단에서는 그렇지 않음
이를 위해 크고 무거운 모델의 정보(knowledge)를 작고 가벼운 모델로 전달하여 작고 가벼운 모델이 더 정확한 추론을 하도록 학습시킴(Knowledge Distillation, KD)
Overfitting등에 강인한 앙상블(ensemble) 모델 및 ResNet등 무거운 모델(teacher network)에서 distilled knowledge를 작고 가벼운 모델(student network)로 전이(transfer)
이 과정에서 작고 가벼운(shallow/small) student model은 무거운 teacher model의 정보를 전달받을 수 있음
Network Distillation methods
Model compression
Buciluǎ, C., Caruana, R., & Niculescu-Mizil, A. (2006, August). In Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 535-541). ACM.
관측치(training dataset)가 많다면 구지 앙상블 모델을 쓰지 않고도 일반화 성능이 좋아진다는 점에서 착안
Heavy model(ensemble)은 학습 데이터셋이 많지 않아도 일반화 성능이 좋아 실제 test단에서 성능이 좋음
일반적으로 shallow model은 training set에만 적합하도록 overfitting되는 경향이 있음
Training set이 많다면 overfitting이 발생하더라도 전반적으로 generalization 성능이 좋아짐
Training set을 noise성분을 추가해 oversampling 하여 unlabeled oversampled data 생성
Pre-trained heavy model로 oversampled data를 labeling하여 oversampled dataset 생성
Oversampled dataset과 기존의 training dataset을 합쳐 large dataset을 만들어 light model 학습
Large dataset에는 heavy model(ensemble)의 정보가 담겨있음(distilled knowledge)
Light model의 large dataset을 이용한 학습을 통해 robust한 모델이 생성됨
More well-generalized / Robust against overfitting
Result
RMSE를 이용하여 모델 평가
Training dataset의 크기가 커질수록 compressed model의 정확도가 향상됨
Ensemble 모델과 정확도가 유사해짐
Do deep nets really need to be deep?
Ba, J., & Caruana, R. (2014). In Advances in neural information processing systems (pp. 2654-2662).
Distillation 과정에서 단순히 네트워크 출력으로 heavy model(ensemble)이 만든 class 정보를 주었던 앞의 방식에 logit 값을 적용하여 class information 뿐만 아니라 heavy model이 만들어내는 data 분포정보까지 전이
Logit은 클래스의 점수로, 이 점수를 학습시에 같이 고려하여 class의 확률분포를 알게 됨
Logit이란?
최종 추론 후 activation 통과 전의 값
학습과정
Pre-trained heavy model(ensemble)의 logit값을 light model로 전이해서 그 값을 토대로 학습
이 과정을 통해 추론class의 점수(heavy model의 출력분포)를 light model이 학습하게 되며 logit이 곧 distilled knowledge로 더 많은 정보를 이용하여 네트워크가 학습하게 됨
Deep Model Compression: Distilling Knowledge from Noisy Teachers
Sau, B. B., & Balasubramanian, V. N. (2016). arXiv preprint arXiv:1610.09650.
Distillation method 2와 큰 틀에서 동일
Heavy model의 logit을 light model이 닮도록 학습되어짐
하지만 heavy model(ensemble)의 logit값에 약간의 noise 성분을 추가
Logit에 noise성분 𝜖를 추가
추가된 noise 𝜖이 regularizer 역할을 하여 light model의 정확도가 향상됨
일반 training dataset으로 heavy model(ensemble)을 학습시킨 후, 해당 dataset에 대한 prediction의 분포값을 얻음(probability density function, pdf)
이 과정에서 일반적인 neural network가 사용하는 softmax가 아닌 temperature parameter 𝑇를 적용시킨 customized softmax를 사용
일반 softmax는 가장 큰 값을 1에 매우 가깝게, 나머지를 0에 매우 가깝도록 mapping(one-hot hard target)
Customized softmax는 temperature parameter 𝑇에 따라 1과 0 사이의 soft targets를 출력
𝑇가 0에 가까울수록 일반 hard target 생성(𝑇=1 일 때 일반 softmax)
𝑇가 10에 가까울수록 모든 확률은 1/# of class 로 수렴해 제대로된 추론 불가
𝑇가 중간에 적절하도록 설정하여 soft targets를 생성하도록 하여야 함(실험적으로 찾아야함)
Pre-trained heavy network가 customized softmax를 이용하여 생성한 pdf를 생성하도록 light model이 학습
논문에선 𝑇로 2~5 사이의 값 중 적절한 값을 찾아 사용(dataset별로)
실제 loss function은 일반적인 softmax로 추론된 label 정보와 soft targets 정보 모두 학습을 위한 변형된 cross entropy loss가 사용됨
Cross entropy loss가 label 정보와 soft target 정보 활용을 위한 2개 term으로 나뉘어 있으며, 비율이 𝛼로 조절됨(𝛼=0.5)
실험 결과
실험 결과, 일반적인 경우에 비해 soft target이 적용된 모델이 더 정확함
Network Distillation on SSD
Object detection at 200 Frames Per Second
Mehta, Rakesh, and Cemalettin Ozturk. Proceedings of the European Conference on Computer Vision (ECCV). 2018
정확도가 높은 teacher network의 정보를 distillation loss, unlabeled data를 이용하여 light-weight student network에 전달
Keypoint
Tiny-Yolo(Yolo-v2)를 변형하여 효율적인 구조 제안
Deep/narrow 구조를 이용하여 정확도는 보존하면서 연산량 줄임
Distillation loss
Training data
Main contributions
R-CNN 계열에 대한 distillation 적용이 아닌 sing shot 방식의 detector에 대한 적용
Single shot detector가 네트워크의 추론 후 외부의 non-maximal suppression(NMS)를 사용하여 최종 출력을 낸다는 것을 참고하여 FM-NMS를 제안하고, 이로부터 teacher의 distilled knowledge를 student로 전이
Objectness scaled distillation loss를 제안하고, 이를 이용하여 distillation을 수행
Dense feature map stacking
Feature map을 pooling을 사용하여 concat하는 방식이 아닌 yolo-v2의 feature map stacking 사용
일반적인 max pooling은 정보의 손실이 발생하므로 큰 feature map을 resize하여 feature map의 activation이 다른 feature map으로 분산되도록 함.
Bottleneck을 적용해 depth를 추가하여 네트워크 용량(capacity)은 늘리면서 연산량과 파라미터 수를 보존
Deep but narrow
Feature extractor의 출력 개수를 줄이고 feature stacking을 이용
Narrow하고 deep하도록 1x1 conv layer를 이용하여 연산량을 보존
Distillation loss for Training
네트워크의 최종 출력은 너무 많은 정보를 담고있음
NMS를 거치기 전의 feature map에서 객체 클래스 정보와 위치 정보가 혼잡하게 존재
이를 그대로 distillation할 경우 student는 overfitting으로 인해 정확도가 오히려 하락함
이를 해결하기 위해 student의 bounding box coordinate와 class probability가 teacher prediction의 objetness value가 높을때만 distilled 정보를 학습하도록 함
학습 과정에서 loss function에 의해 teacher가 background로 분류되는 객체에게 매우 작은 objectness value를 할당하도록 학습됨
Feature Map-NMS(FM-NMS)
동일 객체가 존재할것이라 네트워크가 추론하는 KxK cell 지역에 multiple candidate가 존재한다면 하나의 객체일 확률이 큼
이 중 가장 높은 objectness value를 갖는 결과를 선택하여 객체로 함.
Effectiveness of data
Labeled data가 많아질 때 네트워크의 정확도가 얼마나 개선되나 확인
PASCAL VOC와 해당 클래스의 MS COCO 이용
Unlabeled data에 대해선 teacher의 output(soft label)만을 이용하여 student를 학습
실험 결과(table 1, 3)
Merging different layers
다양한 layer에서 feature map이 stacking 될 때 정확도가 더 향상됨
초기 레이어보단 뒤쪽 레이어를 stacking하는게 정확도 향상에 도움됨
Max pooling보다 stacking이 더 정확도가 향상됨
Distillation with labeled data
PASCAL VOC 2007, 2012와 COCO에서의 65K 추가 이미지
실험 결과, distillation을 적용하기 위해선 distillation loss function의 objetness value scaling이 필수로 필요함(Obj-scaling)
학습 데이터셋이 많을수록 더 많은 soft label이 이용 가능해지므로 student의 정확도 향상이 컸음
하지만 teacher의 성능은 student의 성능향상에 크게 영향을 끼치지 못함(COCO teacher의 정확도에 상관 없이 student는 모두 정확도가 비슷하게 향상)
본 논문에선 Single Shot MultiBox Detector를 compressing하는 framework를 제안한다. 제안하는 SSD compressing framework는 Sparsity Induction, Filter Selection, Filter Pruning의 stage를 거쳐서 모델을 압축시킨다. Sparsity Induction stage에선 object detector model이 improved global threshold에 따라 sparsified(희박해진다는 의미)되어지며, Filter selection과 Pruning stage에선 두 연이은 convolutional layer의 filter weight에서 sparsity statistics에 근거해서 제거할 filter를 선택하고 제거하게 된다. 이로인해 기존의 구조보다 모델이 더 작아지게 된다. 제안하는 framework를 적용한 모델을 이용하여 다양한 데이터셋을 이용하여 검증하였으며, 그 결과를 다른 compressing 방법과 비교했다. 실험결과 PASCAL VOC에 대해 제안하는 방법을 적용했을 때 각각 SSD300과 SSD512에 대해서 6.7배, 4.9배의 모델 압축을 이뤄냈다. 게다가 SSD512모델에 대한 GTSDB 데이터셋 실험에선 26배의 모델 압축을 이뤄낼 수 있었다. 또한 일반적인 classification task에 대해 VGG16 모델을 이용하여 CIFAR, GTSRB 데이터셋을 학습시킨 모델에 적용시킨 결과 각각 125배, 200배의 모델압축과 90.5%, 96.6%의 연산량(flops)감소를 이루어냄과 동시에 정확도는 하락되지 않았다. 그리고 제안하는 framework를 모델에 적용시키는데엔 다른 추가적인 하드웨어나 라이브러리가 필요없다.
1. Introduction
Through this paper we make the following contributions:
Sparsity constraint-based training을 이용하는 multi-layer pruning 알고리즘을 제안하며, 정확한 객채인식을 하면서 줄어든 weight parameter set을 얻기위한 retraining step을 따른다.
PASCAL VOC와 GTSDB와같은 official benchmark를 통해 제안하는 방법이 적용된 SSD 모델을 평가했다.
제안하는 방법은 classification task에 적용 가능하다. 객체분류에 있어서 125~200배의 parameter수를 줄일 수 있었다.
2. Related work
Pruning and parameter sharing, Compact Architectures, Knowledge Distillation, Object detection에 대해 다룸
3. Multi-layer Pruning Framework
3.1 Famework Overview
기본적으로 각 필터의 중요도를 측정한다음에 그에 따라 중요하지 않은 필터를 제거하는 원칙을 따른다.
Figure 1에서 제안하는 filter pruninng strategy를 설명한다. Pre-trained model이 있고 이 모델의 파라미터는 $\Theta$이며, $L$ 이라는 pruning될 연이은 layer set이 존재한다. 전체 framework는 아래의 step을 따른다.
Sparsity induction: 첫 번째 step에서 sparse model $\Theta_{L1}$을 만들도록 하는 L1-norm이 적용된 loss function을 사용하여 모델을 학습시킨다. 다음으로 제거할 레이어 $L$에서 threshold보다 작은 값을 갖는 weight를 0으로 만든 모델 $\Theta_{L1}^{th}$을 만든다. 이 때 사용될 threshold값은 $\Theta_{L1}^{th}$모델이 validation set에서 돌아갈 때의 결과를 토대로 정한다. Pruning될 레이어 셋 $L$에서 단일 global threshold값을 사용한다. 이로인해 한 번의 step으로 $L$의 filter들을 prune할 수 있게된다. Details는 section 3.3에서 다뤄진다.
Filter selection: 레이어 집합 $L$에 속한 레이어 $l$의 중요도를 평가한다. 여기서 $\Theta_{L1}^{th}$ 모델에서의 레이어 $l$과 $l+1$의 filter sparsity statics를 사용한다. 주요 아이디어는 zero weights의 large fraction이 있는 $l$의 모든 필터와 zero weights의 large fraction이 있는 $l$의 필터를 제거하는 것이며, 그림 1에서와 같이 다음 layer $l+1$의 필터에서 이 필터를 가져다 연산하게 된다.(The key idea here is to remove all the filters in l that have a large fraction of zero weights in them as well as those filters in l that have a large fraction of zero weights corresponding to them in the filters of the following layer l + 1 as illustrated in Figure 1.) 이 step의 마지막에서 모델에서 제거 될 레이어 $l$의 필터에 대한 list를 얻게 된다. Step 2를 모든 $L$ 레이어에 대해 반복한다. Details는 섹션 3.4에서 다룬다.
Pruning: Layer $l$ 에서 step 2에서 선택된 필터들과 해당하는 output이 필요한 $l+1$ layer가 모델 $\Theta_{L1}$에서 제거된다. 모든 $L$의 레이어들에 대해 반복된다.
Retraining: 마지막으로 pruning된 네트워크를 original loss(W/O L1 regularization)를 이용하여 떨어진 정확도 복원을 위해 재학습 시킨다.
4. Experiment
논문에선 실험에 다양한 데이터셋과 detection, classification에 대해 다뤗지만 본 글에선 PASCAL VOC object detection에 대해서만 살펴본다.
4.1 Pruning of SSD on PASCAL VOC
Previous work[37]에선 base network만 pruning했지만, 본 논문에선 SSD 전체를 pruning한다. 하지만 구조가 복잡해 한번에 pruning하면 정확도가 많이 떨어지므로 multiple phase로 수행한다. 실험엔 VGG16 based SSD를 썼으며, SSD512에 대해 conv1 1 - conv4 3, conv4 3 - conv7, conv7- conv8 2, conv8 2 - conv12 2의 4개 phase로 pruning했다. 또한 localization과 classification layer들도 포함했다. SSD 300도 동일하게 4개의 phase로 나뉘었다.
Figure 2에선 L1 regularization의 효과를 보여준다. 적용하면 weight가 더 모이게 된다.
Thresholding 후 Figure 3에서 non-zero parameter가 확연히 줄어든걸 확인 할 수 있다.
각 실험결과는 위의 표에서 확인 가능하며, SSD300-prunded-3det등의 모델명에서 det은 해당 번째 detection layer까지 pruning을 진행하였단 뜻이다. 전체 SSD 모델을 봤을 때, feature extractor에서 만들어진 feature map이 뒤쪽 detection layer로 전달되어 detection 결과를 추론한다. 여기서 기본적으로 모델은 7종류의 feature map을 받게 되며, 해당 feature map을 출력하는 layer까지 pruning을 진행했다는 것을 의미하게 된다. 표 1을 보면 이해가 빠르다.
실험 결과 전제척으로 정확도는 많이 떨어지지 않으면서도 모델 사이즈는 엄청나게 줄어들게 되는것을 확인 가능하다.
Table 5를 보면, 각 detection layer가 어디까지 pruning 되었느냐에 따라 정확도와 파라미터 수, 모델 사이즈에 대한 영향력을 확인 할 수 있다.
Conclusion
본 논문에선 Multi-layer pruning 방법을 제안했다. 주요 아이디어는 training loss function을 수정해서 첫 번째 procedure로 sparsity(희소성)를 유도하는것이다. 두 번째로, sparsity inducing loss function이 0에 수렴하도록 학습되어진 모델의 filter를 pruning한다. 이로인해 classifier와 detector가 구조적으로 크기가 줄어들면서 정확도가 약간 감소하지만 retraining을 통해 그 정확도를 recover할 수 있게된다. 이로인해 SSD 객채탐지모델을 이용하여 SOTA의 압축률을 달성했다. 더 나아가 visiual recognition task와 다른 관련된 loss를 이용하여 filter를 pruning하는것에 대해 연구할 예정이다.
Neural network의 pruning은 1990년대에 제안된 아이디어다. 기본 아이디어는 네트워크의 많은 파라미터중 어떤것들은 중요도나 필요성이 떨어지는(redundant) 것들이 있으며, 따라서 output의 출력에 큰 영향력을 끼치지 못하는 파라미터들이 존재한다는 것이다.
만약 네트워크의 뉴런들을 어떤 뉴런이 더 중요한지에 따라 순서를 매겨서 나열 할 수 있다면, 낮은 순위에 존재하는 뉴런들은 상대적으로 output의 출력에 대한 기여도가 떨어지기 때문에 네트워크에서 그 뉴런들을 제거 할 수 있게 되며, 이로 인해 네트워크가 더 빠르게 동작 할 수 있게 된다.
이러한 빠르고 작은 네트워크는 mobile device에서 빠른 동작을 위한 필수요소다.
중요도를 정하는것(ranking)은 뉴런 weight의 L1/L2 평균, mean activations, 뉴런의 출력이 어떠한 validation set의 입력이 들어왔을 때 0이 아닌 횟수 등 몇몇의 다양한 방법들에 의해 정렬 될 수 있다. 이러한 pruning 다음엔 정확도가 떨어지게 되지만(하지만 ranking이 제대로 되었다면 조금밖에 떨어지지 않음) 보통은 네트워크를 더 학습시켜 이를 복구시킬 수 있게된다. 만약 한번에 너무 많이 pruning이 될 경우엔 네트워크가 손상되어 정확도의 복구가 불가능하게 된다. 따라서 실제로는 pruning이 interactive process가 되어야 한다.
이를 “Interactive Pruning” 이라 하며, Prune-Train-Repeat으로 수행된다.
Pruning이 popular하지 않은 이유는?
실제로 pruning에 대한 수많은 논문들이 존재하지만 real life상에서 접할 수 있는 딥러닝 프로젝트에 적용된경우는 드물다. 그 이유는 다음과같이 추측이 가능하다.
Ranking하는 방법이 아직까진 그렇게 좋지 못하므로 정확도의 향상이 크다.
실제 적용에 매우 힘들다.
Pruning을 실제 사용한 경우라도 official하게 내놓지 않는다(secret sauce advantage).
이러한 이유들로 인해 implementation을 한다음 그 결과를 확인해본다.
본 글에선 몇몇의 pruning 방법들에대해 살펴보고 최근논문에서 제안하는 방법을 implementation한다.
Kaggle Dogs vs Cats dataset에서 개와 고양이 분류를 위한 VGG network를 fine-tuning한다.(tranfer learning)
네트워크 pruning 뒤엔 속도가 3배, 크기가 4배가량 감소되었다.
Pruning for speed vs Pruning for a small model
VGG16 weight의 90%가량은 fully connected(fc) layer이지만 전체 floating point operation의 1%만을 차지한다.
몇몇 연구들은 fc layer 수를 줄이는데 중점을 두었으며, fc layer들을 pruning하여 모델 사이즈를 크게 줄일 수 있었다.
하지만 본 글에선 convolutional layer에서 전체 filter를 pruning하는데 중점을 둔다.
또한 pruning을 통해 네트워크 사이즈를 줄임으로써 사용될 메모리가줄어들게 된다. [1611.06440 Pruning Convolutional Neural Networks for Resource Efficient Inference] 논문에서 레이어가 깊어질수록 pruning에 의한 이점은 더 커지게 된다.
이는 마지막 convolutional layer가 많이 pruning 될수록 그 뒤에 연결되어있는 fc layer도 같이 정리가 되게 되므로 많은 메모리 절약의 효과를 가져오게 되기 때문이다.
Convolutional filter를 pruning할 때의 다른 option으로 각 필터의 weight를 줄이거나 단일 kernel에서의 특정한 dimension을 제거하는 방법이 있다. 하지만 몇몇의 filter에 대해서만 듬성듬성하게 pruning을 적용하여 계산 속도를 높히는것은 불가능하므로 최근의 연구들은 전체 filter들이 pruning하는 대신에 “Structured sparsity”를 선호한다.
이러한 논문들에서 다뤄지는 것들중 제일 중요한 것으로 큰 네트워크를 학습시킨 다음에 pruning함에 있어서, 특히 transfer learning의 경우, 작은 네트워크를 처음부터 학습시키는것보다 훨씬 더 나은 결과를 얻을 수 있다는 점이다.
아래에서 몇 가지 방법들에 대해 다뤄본다.
Pruning filters for efficient convnets
paper: https://arxiv.org/pdf/1608.08710.pdf
이 논문에선 전체 convolutional filter들에 대해서 pruning을 했다. 만약 Index가 k 인 filter를 pruning하게 될 경우 해당 필터가 존재하는 레이어와 다음 레이어에까지 영향을 주게 된다. 따라서 다음 레이어에서 Index k모든input channel들이 필요가 없어지므로 동시에 제거된다.
다음 레이어가 fc layer이고 해당 채널의 feature map의 크기가 MxN 일 경우, MxN개의 뉴런들이 fc layer에서 제거된다.
이 pruning 방법에서 ranking은 매우 간단하다. Ranking의 기준은 각 필터 weight의 L1 norm이다.
각 pruning iteration에서 모든 filter에 대해 순위를 매기고, m 개의 가장 낮은 rank 필터를 모든 layer에 대해 globally하게 pruning 한 다음 retrain하고 이를 다시 반복한다.
Structured Pruning of Deep Convolutional Neural Networks
이 논문의 방법은 앞의 방법과 매우 비슷하지만 ranking의 방법은 훨씬 더 복잡하다. N particle filter는 유지하도록 설정하는데, 이는 N convolutional filter가 pruning 될 것임을 뜻한다.
Particle에 의해 filter가 mask out 되지 않는 경우 각 particle은 validation set으로 측정되는 네트워크의 정확도를 기반으로 점수가 할당되어진다. 그런 다음 새로운 점수에 기반해서 새로운 pruning mask가 sampled된다.
이러한 연산과정은 heavy하므로 particle score의 측정에 작은 validation set을 사용했다.
Pruning Convolutional Neural Networks for Resource Efficient Inference
paper: https://arxiv.org/pdf/1611.06440.pdf
Nvidia에서 쓴 coool한 논문.
먼저 pruning problem을 combinatorial optimization problem으로 명시하고, weight B의 일부를 선택하여 pruning하면 네트워크 cost의 변경이 최소화 될 것이다.
논문에서 어떻게 그냥 difference가 아니라 absolute difference를 썻는지 살펴볼 필요가 있다. Absolute difference를 사용하여 pruned network의 성능이 너무 많이 떨어지지 않게 하면서도 증가하지 않도록 할 수 있게 된다. 논문에선 이를 통해 더 안정적인 이유로 인해 더 나은 결과를 보였다고 한다.
이제 모든 ranking 방법들은 아래의 cost function으로 결정된다.
Oracle pruning
VGG16에는 4224개의 conv filter들이 존재한다. 이상적인 ranking 방법은 각 필터를 random하게 처리한다음에 training set에서 cost function이 어떻게 변하는가를 관찰하면 된다. Nvidia 논문은 GPU resource가 충분해서 그렇게 했다. 이를 oracle ranking이라 하며, 이는 네트워크 cost의 변화를 최소화 할 수 있는 neuron의 rank를 높게 부여하는 방법이다. 이제 다른 ranking 방법에 대해 효용성을 측정하기 위해 oracle과 spearman과의 correlation을 계산한다. 놀랍게도 논문에서 제안한 ranking method(밑에 설명)은 oracle과 관련이 크다.
네트워크 cost function의 first order(계산이 빠름) taylor expansion에 기반한 새로운 뉴런 ranking방법을 제안한다.
필터 h를 pruning하는것은 곳 이것을 0으로 만드는것과 동일하다.
C(W, D)는 네트워크 weight가 W로 설정된 경우 데이터 집합 D에 대한 평균 network cost function을 의미한다. 이제 C(W, D, h=0) 주변으로 expansion함으로써 C(W, D)를 평가할 수 있게된다. 단일 filter를 제거하더라도 cost에 미치는 영향이 작아야 하므로 C(W, D)와 C(W, D, h=0)이 매우 가까워야한다.
필터 h의 ranking은 abs(C(W, D, h = 0) - C(W, D))다.
각 layer의 ranking들은 해당 layer의 rank들끼리 L2 norm으로 normalize된다. 아마도 이건 실험적으로 이렇게 했을 때 결과가 좋았기 때문에 이렇게 하는거같고.. 이 과정이 원글 저자는 구지 필요한지는 모르겠다고 한다. 하지만 pruning의 quality에는 지대한 영향을 끼치는것은 확실하다.
이 rank는 매우 직관적이다. 각 activation과 gradient 모두를 ranking 방법으로 사용할 수 있다. 이 중 하나라도 높게되면 이는 곧 output과 밀접한 연관이 있는 filter임을 의미한다. 이것들을 모두 곱함으로써 각 gradient나 activation이 매우 높거나 낮을 때 해당 filter를 유지하거나 버릴지를 결정하도록 하는데에 대한 기준을 삼을 수 있게된다.
이 논문에선 pruning problem을 네트워크 cost의 변화를 최소화 하는 문제로 바꾸고, taylor expansion 방법을 제안한다음, costs oracle의 차이를 통해 어떻게 네트워크를 pruning하는지를 제안했다. 이 논문에선 제안하는 방법이 다른 방법들의 성능보다 좋은 결과를 냈기때문에 oracle이 좋은 indeicator라고 생각 할 수 있다. 어쨌든 이게 particle filter 방법보다 더 적용이 간편하고 이해가 쉬우므로 이것을 implementation시켜본다.
Pruning a Cats vs Dogs classifier using the Taylor criteria ranking
Original paper: https://arxiv.org/pdf/1805.06361.pdf
Authors: Rakesh Mehta, Cemalettin Ozturk
Abstract
논문에선 수백FPS로 동작하는 효율적이고 빠른 object detector를 제안한다. 이를 위해 network architecture, loss function, traning data(labeled and unlabeled)의 세 가지 관점에서 연구했다. 작은 network architecture를 얻기 위해 몇몇의 연산량이 적은 light-weight 모델이면서 성능은 합리적인 연구들에 근거한 몇몇의 제안점들을 설명한다. 연산복잡도는 유지하면서 성능의 향상을 위해 distillation loss를 활용한다. Distillation loss를 사용함으로써 더 정확한 teacher network의 정보(knowledge)를 제안하는 light-weight student network에 전달한다. 논문에선 제안하는 one stage detector pipeline의 distillation이 효율적으로 동작하게 하기위해 objectness scaled distillation loss, feature map non-maximal suppression, detection을 위한 single unified distillation loss function을 제안한다. 마지막으로 distillation loss이 unlabeled data를 활용하여 얼마나 모델의 성능을 끌어올릴 수 있는지에 대해 탐구한다. 제안하는 모델은 teacher network의 soft label을 사용하는 unlabeled data도 이용하여 학습되어진다. 제안하는 네트워크는 VGG based object detector보다 10배 적은 파라미터를 갖고, 속도는 200FPS를 넘어서며 PASCAL dataset에 대해 제안하는 방법을 적용하여 14mAP의 정확도를 달성하는것이다.
1. Introduction
[25, 27, 22, 26, 7, 10, 21]의 연구들에선 deep convolutional network를 이용하여 정확도가 좋은 모델들이 제안되었다. [22(SSD), 26(YOLO9000)]등의 최신 연구에선 일반적인 객체를 정확하고 합리적인 속도로 검출했다. 이러한 연구들로 인해 감시, 자동주행, 로보틱스 등 다양한 산업분야에서 객채탐지가 사용가능해졌다. 해당 분야의 주요 연구들은 pubil benchmarks [21, 10]에 대해 SOTA의 성능을 내도록 집중되었다. 이러한 연구들로 인해 네트워크는 점점 더 깊어져만 갔고(Inception[33], VGG[32], Resnet[11]) 그결과 연산비용이 비싸지며 메모리를 많이 필요로하게 되었다. 이러한 연구들로 연산량증가로 인해 산업에 full-scale로 적용하는것은 불가능하다는 문제가 존재했다. 예를들어 30FPS로 동작하는 50개의 카메라들로 구성된 시스템에 SSD512를 적용하기 위해선 60개의 GPU가 필요하다[22]. 이는 처리해야 할 데이터량이 많아질경우 연산능력이 critical하며 필요한 GPU의 수는 더 많아진다. 하지만 몇 연구들에선 이러한 빠르고 low memory만 요구하며 효율적인 object detector의 중요성을 간과하였다[17]. 본 논문에선 단일GPU로 low memory만 사용하는 효율적이고 빠른 연산시간을 갖는 object detector에 대해 연구한다.
빠르고 효율적인 object detector를 디자인하기 위해 딥러닝 object detector에 필수 요소, 해당 필수요소를 만족하는 객채탐지기의 개발가능여부에 대해 중점적으로 탐구했다. [25, 27, 22, 26, 7]에 근거하여 딥러닝 기반의 객채탐지기 famework의 key component를 다음과 같이 정의했다. (1) Network architecture, (2) Loss function, (3) Traning data. 논문에선 각 component들에 대해 개별적으로 연구하고 본 논문에서 제안하거나 related work에 근거한 broad set of customizations을 설명하며, 그것들 중 뭐가 속도와 정확도의 trade-off에 있어서 가장 중요한지에 대해 연구한다.
네트워크 architecture는 객체탐지기의 속도와 정확도를 결정짓는 key factor다. 최근의 탐지기들[15]은 VGG나 Resnet등의 깊은 구조를 기반으로 하며 이는 정확도를 좋게하나 연산량이 많아지는 단점이 존재한다. Network comparison과 puning[9, 5, 13]은 detection architecture가 더 간단하도록 해주는 방법을 제안햇다[36, 31, 38]. 하지만 이러한 방법들은 아직도 속도의 향상이 필요한데, 예를들어 [31]의 작은 네트워크는 17FPS로밖에 동작하지 않으면서 17M의 파라미터를 갖는다. 본 연구에선 compact archicture 뿐만아니라 고속으로 동작하는 object detector의 design principle을 개발한다. Densenet[14], Yolo-v2[26], SSD[22]의 deep하고 narrow한 네트워크 구조에서 영감을 받았다. 깊은 구조를 사용하면 정확도는 향상되며 narrow한 layer로 인해 네트워크의 복잡도를 조절할 수 있게 된다. Architecture의 변경을 통해 정확도가 5mAP정도 향상 가능하다는것을 확인했다. 이러한 연구들을 기반으로 architecture design의 main contribution은 딥러닝 기반의 객체검출기를 간단하지만 효율적인 네트워크 아키텍쳐를 개발하면서 200 FPS 속도로 동작하게 하도록 한다. 게다가 제안하는 모델은 15M의 파라미터만을 사용하여 VGG16기반의 모델[3]이 138M개의 파라미터를 사용하는것에 비해 매우 작으므로 가장 작은 모델이 된다. 제안하는 모델의 속도는 Figure 1에서 비교 가능하다.
간단하고 빠른 architecture만을 사용해야 하기에 성능 향상을 위한 효율적인 학습 방법에 대해 조사했다. 어느정도 정확한 light-weight detector에 대해 더 정확한 모델을 이용하여 training 방법을 더 잘 하게 만든다. 이러한 목적으로 [12, 2, 1]의 network distillation 방법을 고려하였으며, 이는 큰 네트워크의 정보(knowledge)가 효율적으로 더 작은 네트워크의 표현력이 좋아지도록 사용되는 것이다. 비록 이러한 아이디어가 object detection에 최근 사용되었지만[3, 20], 본 논문에선 주요 contribution을 distillation의 적용의 측면에서 중요하게 적용되었다. (1) 본 논문의 방법은 첫 번째 single pass detector(Yolo)에 대한 적용이며, 이전의 연구들이 RCNN계열을 사용한것과 차이점을 갖는다. (2) 본 논문의 접근방식에서 가장 중요한 것은 object detection이 end-to-end 학습과정 외부의 non-maximal suppression(NMS)를 포함한다는 observation(관찰)에 기반한다는 점이다. NMS step 이전에 detection network의 마지막 layer는 detection된 region의 dense activation으로 구성되어지며 만약 student network에 직접 teacher의 이러한 정보(dense activation)가 전달되게 된다면 overfitting으로 이어져 성능이 떨어지게 될 것이다. (3) Teacher detection에서 더 질좋은 탐지를 강조하여 problem을 objectness scaled distillation loss로 공식화하였다. 논문의 실험결과들은 distillation이 연산복잡도는 낮게하면서 성능은 향상시키는 효율적인 접근방법임을 보여준다.
마지막으로 object detection의 관점에서 “the effectiveness of data”[8]에 대해 연구했다. 레이블링 된 데이터들은 그 양이 제한적이나, 매우 정확한 object detector와 엄청나게 많은 unlabeled data를 적용하게 될 경우 제안하는 light-weight detector의 성능이 얼마나 향상될지에 대해 연구했다. 제안하는 아이디어는 object detector 분야에 대해서만 연구되지 않은 semi-supervised learning 방법들[29, 35, 4]를 따른다. 최근에 object detector 앙상블을 사용하여 annotation들을 생성되도록 하는 [23]의 방식은 본 연구와 매우 관련성이 높다. 제안하는 방법은 [23]과 다음의 차이점들을 보인다. (1) Network distillation에서 더 효율적이게 teacher network에서의 convolutional feature map에서 나온 soft label을 전달한다[28]. (2) Objectness scaling과 distillation weight을 이용하는 본 논문의 loss공식은 teacher label의 weight given을 조절 할 수 있게 한다. 이러한 공식을 통해 ground truth의 학습에서의 중요성을 더 높게하면서도 상대적으로 정확도가 낮게 예측한 teacher의 결과를 flexible하게 이용 할 수 있게 된다. 게다가 제안하는 traning loss formulation은 detection loss와 distillation loss를 균일하게 이어주며, 이로인해 network는 labeled data와 unlabeled data의 정보를 모두 학습 할 수 있게 된다. 논문에선 이 논문이 labeled/unlabeled data를 jointly하게 이용하여 네트워크를 학습시키는 첫 번째 deep learning object detector 모델이라고 한다.
2. Architecture customizations
대부분의 성능좋은 객체탐지모델은 좋은성능을 위해 깊은 모델을 쓴다. 하지만 가장 빠른모델이라해도 속도가 20~60FPS로 제한된다[22, 26]. 더 빠른 객체탐지모델을 개발하기 위해 Tiny-Yolo[26]과 같은 성능은 중간정도지만 제일 빠른 모델을 baseline으로 선택했다. 이는 더 적은 convolutional layer를 가지는 Yolo-v2 모델이며, Yolo-v2와 동일한 loss function, optimization strategies(batch normalization[16]), dimenstion cluster, anchor box등을 갖는다. 이 모델을 기반으로 모델이 더 정확하고 빨라지도록 적용된 몇 가지 구조적 커스터마이징에 대해 설명한다.
Dense feature map with stacking
[(Densenet)14, (SSD)22]와 같은 최근의 연구에서 영감받아 이전 레이어의 feature map을 합침으로써 성능 향상이 되는 것을 관찰했다. 논문에선 주요 convolution layer의 마지막부분에서 몇몇의 이전 layer에서의 feature map을 합쳤다. 이전 레이어에서 온 feature map의 차원이 뒤쪽것과 다르다. [22]와 같은 논문에선 max pooling을 통해 resize 후 concat 했다. 하지만 max pooling은 곧 정보의 손실이므로 논문에선 더 큰 feature map을 크기를 조절해서 activation이 다른 feature map에 분산되도록 feature map을 stacking했다[26].
게다가 feature를 merging하면서 넓은 범위에서 bottleneck layer를 적용하였다. Bottleneck layer를 사용하는 이유는 정보를 더 적은 layer에 넣을 수 있기 때문이다[14, 34]. Bottleneck의 1x1 convolution layer는 depth를 추가시키는 동시에 compression ratio를 유연하게 표현하도록 해준다. Advanced layer(뒤쪽 레이어)들의 feature map들을 합치게 되면 성능이 향상되므로 initial layer들에 대해선 높은 compression ratio를, advanced layer들에 대해선 낮은 ratio를 사용했다.
Deep but narrow
Baseline인 Tiny-Yolo의 구조는 2014라는 큰 숫자의 feature channel을 마지막 몇 convolution layer에서 사용한다. 이전 layer에서의 feature map concat을 사용할 때는 이렇게 많은 feature map이 필요 없다. 따라서 filter의 숫자를 줄였으며, 이로인해 속도가 향상되었다.
SOTA 객체탐지기와 비교할 때 제안하는 구조는 depth가 좀 모자르다. 몇 conv layer를 쌓으면서 depth를 늘릴 순 있지만 이는 곧 연산량의 증가로 이어지므로 본 논문에선 연산량 제한을 위해 1x1 conv layer를 사용하였다. 마지막 major conv layer 이후 1x1 conv layer를 추가하여 network의 depth는 늘리면서도 연산복잡도는 증가시키지 않을 수 있었다.
Overall architecture
앞의 간단한 concept들을 묶어서 light-weight 객체탐지기를 제안한다. 이러한 modification들로 인해 baseline인 Tiny-Yolo에 비해 성능이 5 mAP정도 향상되었다. 게다가 속도도 20%가 더 빨라졌다. 이는 더 적은 convolutional filter 갯수덕분이라고 판단된다. Baseline인 Tiny-Yolo의 PASCAL dataset 성능은 54.2 mAP이지만, 제안하는 구조는 59.4 mAP를 달성했다. 전체적인 구조는 Figure 2에서 보여준다. 그리고 이 구조를 F-Yolo라고 명명한다.
3. Distillation loss for Training
논문에선 고속 동작을 위해 네트워크의 구조를 간단하게 했다. 그리고 network distillation[28, 12]방법의 적용을 통해 연산량은 늘리지 않으면서도 정확도의 향상을 꾀했다. Network distillation의 적용은 light-weight network를 student로 하여 large accurate network(teacher)의 정보를 이용하여 student 모델을 학습시키는것이다. 정보의 전달은 teacher network의 추론결과를 soft label 식으로 넘겨주게 된다.
Distillation 접근법을 묘사하기 전에 Yolo loss function이 어떻게 구성되었고 last convolution layer가 어떤지 간단하게 짚고 넘어간다. Yolo는 one stage 구조로써 RCNN계열과는 다르게 각 bounding box 좌표와 classification 확률이 동시에 마지막 레이어의 출력에서 이루어지게 된다. 따라서 마지막 레이어의 feature map의 갯수는 N x (K + 5)개로 설정되며 이 때 K는 클래스의 갯수, 5는 해당하는 bounding box의 좌표와 4개와 objectiveness value 1로 구성된다. 따라서 각각 anchor box와 cell에 대해 네트워크는 class probabilities, objectness value, bounding box coordinates를 학습하게 된다. 전체적인 objective는 다음의 3개 파트로 구분되며, 각각 regression loss, objectness loss, 그리고 classification loss이다. 이를 수식적으로 표현하면 아래와 같다.
각각 $\hat{o_{i}}, \hat{p_{i}}, \hat{b_{i}}$는 student의 objectnessm class probability, boundinb box coordinates이며 $o_{i}^{gt}, p_{i}^{gt}, b_{i}^{gt}$는 ground truth value들이다. Objectness는 예측결과와 ground truth사이의 IOU에 의해 결정되며, class 확률은 객채가 존재하는 경우의 class의 조건부 확률이고, box 좌표는 image size와 $L_{1}$ 나 $L_{2}$같은 loss function에 관계되어 있다. [25, 26] for details.
Distillation을 적용하기 위해 teacher network의 마지막 레이어의 출력을 가져와서 ground truth $o_{i}^{gt}, p_{i}^{gt}, b_{i}^{gt}$값을 대체하면 된다. Loss는 teacher network의 activation을 student network로 전파하게 된다. 하지만 single stage detector의 dense sampling으로 인해 이러한 간단한 방식의 application은 distillation을 효율적이지 못하게 만든다. 이에 대한 해결 방안은 아래에서 논해질것이며 이를통해 간단히 single stage detector에 distillation을 적용할 수 있게된다.
3.1 Objectness scaled Distillation
RCNN 계열에 distillation을 적용한 연구[20, 3] 에선 정보 전달을 위해 teacher의 마지막 출력만을 사용하여 student로 정보를 넘겼다. Yolo에도 이와 유사하게 적용하려고 했지만 single stage detector이기도 하고 prediction이 객체위치와 클래스를 한번에 추론하도록 하는 dense set of candidate를 이용하여 추론되기 때문에 어렵다. Yolo teacher는 image의 background region에도 많은 bounding box를 추론한다. 그 동안에 이러한 필요없는 background box들은 candidate의 objectness값으로 인해 무시되어진다. 하지만 standard distillation approach는 이러한 background detection 또한 student로 학습에 필요한 정보로써 넘어간다. 이는 bounding box training $f_{bb}()$에 영향을 주고, 이로인해 student network가 background영역에 teacher에 의해 잘못 추론된 결과를 학습하게 된다. RCNN based 객체탐지기들의 경우 비교적 적은 region proposal을 예측하도록하는 region proposal network를 사용하여 이러한 문제를 피해갔다. Background 지역의 잘못된 teacher의 prediction을 학습하는것을 피하기 위해 distillation loss를 objectness scaled function으로써 공식화했다. 기본 아이디어는 bounding box coordinate와 class probability를 teacher prediction의 objectness value가 높을때만 학습하도록 하는것이다. 함수의 objectness part는 objectness scaling이 필요하지 않는데, 이는 noisy candidate의 objectness value가 낮기 때문이다. Objectness part는 다음과 같이 정의된다.
Student network의 objectness scaled classification function은 다음과 같이 정의된다.
위 함수의 첫 번째 부분은 original detection function이며 두 번째 파트는 objectness scaled distillation part다. 비슷하게 student network의 bounding box coordinate도 objectness를 사용하며 scale되어있다.
표현력 좋은 teacher network는 background에 해당하는 대다수의 candidate에게 매우 작은 objectness value를 할당한다. Objectness based scaling은 single stage detector에서 distillation을 위한 filter역할을 하며, background cell에 매우 낮은 weight를 할당하게된다. Object같은 foreground 영역은 teacher network에서 높은 objectness값을 갖게되며, formulated distillation loss는 이러한 영역의 teacher knowledge를 이용하게 된다. Loss function은 원래와 같지만 distillation을 위해 ground truth 대신 teacher output만을 추가한 형태가 된다. 모델 학습을 위한 loss function은 아래와 같다.
이는 classification을 위한 detection과 distillation loss, bounding box regresssion, objectness를 고려한 식이다. 이 식은 모든 anchor box들과 마지막 conv feature map에서의 모든 cell location을 이용하여 최소화 되어지도록 학습되어진다.
3.2 Feature Map-NMS
Another challenge that we face comes from the inherent design of the single stage object detector. 모델은 하나의 cell에 대해 single anchor에서 하나의 박스만 추론하도록 학습되어지지만 실제로는 몇몇의 cell과 anchor box들에 의해 같은 객체에 대해 수 많은 박스를 추론하게 된다. 따라서 NMS가 object detecor 구조에서의 필수 후처리 과정이 된다. 하지만 NMS step은 end-to-end network 구조에서 맨 마지막에 붙으며 highly overlapping 추론결과는 detector의 last conv layer에서 표현되어진다. 이러한 추론결과가 teacher에서 student로 전달되어진다면 이는 쓸모없는 정보의 전달이 되는것이다. 따라서 teacher network가 highly overlapping detections에 대한 information loss을 전달하므로 위에서 설명된 distillation loss로 인해 모델의 전체적 성능이 떨어지게 된다. Higly overlapping detection의 feature map은 결국 같은 object class와 dimension에 대한 large gradient를 propagation하게되어 network가 over-fitting되게 만든다.
이러한 overlapping detections에서 발생하는 문제를 해결하기 위해 Feature Map-NMS(FM-NMS)를 제안한다. FM-NMS의 기본 idea는, 만약 같은 클래스에 상응하는 KxK cell 지역에 multiple candidate가 존재한다면 그것들은 image에서 같은 하나의 객체일 확률이 높다. 따라서 가장 높은 objectness 값을 선택해 단 하나의 candidate를 선택한다. 실제로 last layer feature maps에서 class probability에 해당하는 activation을 확인하고, activation이 동일한 class에 해당하는 0으로 설정한다. Figure 3에 idea가 설명되어있으며, detection form으로 teacher network의 soft label들이 보여진다. Teacher net의 last layer가 개 주변에 여러 box들을 추론한다. 동일 지역의 겹치는 추론을 피하기 위해 가장 높은 objectness 값을 선택한다. 겹치는 candidate중 가장 강한 candidate가 student network로 전달된다. 두 cell에 대한 idea의 예시가 figure 4에 나와있다. 실험에선 3x3 인접 cell에 대해서만 적용되었다.
4. Effectiveness of data
마지막으로 학습 데이터가 많다면 얼마나 성능이 좋아지는지에 대해 연구했다.
Labeled data
[37, 22]에선 더 많은 레이블링된 데이터를 통해 모델의 성능이 향상된다는것을 보였다. 하지만 초기연구는 모델의 용량을 제한하지않고 실험을 수행햇다. 본 연구에선 간단한 모델로 모델의 용량을 제한하고 평가해서 학습데이터가 많아질 경우 정확도가 좋아지는지를 확인했다.
Unlabeled data
레이블링된 데이터에는 한계가 있으므로 unlabeled 데이터와 distillation loss를 조합하여 네트워크를 학습시켰다. 제안하는 방법의 main idea는 사용가능한 soft label와 ground truth label을 이용하여 모델을 학습시키는것이다. 하지만 ground truth 레이블이 사용 불가한 경우 teacher에서의 soft label만 사용되어진다. 실제 논문에선 ground truth가 없을 경우 loss의 teacher part만 propagation하고 그렇지 않다면 식 (2)~(4)에 설명된 loss combination을 propagation한다. Objective function은 soft label과 ground truth로 균등히 조합되어 있기때문에 network를 학습시킴에 있어서 labeled data와 unlabeled data를 모두 사용 가능하게 된다.
5. Experiments on Object detection
실험은 PASCAL VOC 2007 dataset[6]을 이용하였으며 20개 클래스에 16K training image가 존재한다.
5.1 Implementation Details
평가에 darknet framework[24]를 사용했다. ImageNet[30]에 대해 학습된 Tiny-Darknet classifier가 parameter initialization으로 되었다. Pre-trained network의 마지막 두 레이어를 제거한 후 추가 conv layer들을 마지막에 달았다. Detection에 있어서 네트워크는 SGD로 최적화되고 initial learning rate는 $10^{-3}$으로 120 epoch까지, $10^{-4}$로 다음 20epoch, 마지막으로 $10^{-5}$로 20epoch를 학습시켰다. Momentum 0.9와 0.0005 weight decay를 적용했다. Batch size는 모두 32로 동일하다. 입력 이미지의 크기는 416x416이다. Network distillation 실험에선 $\lambda_{D=1$이고 이는 동일한 weight로 distillation과 detection loss가 적용되어진것을 의미한다. 하지만 loss에서 distillation part가 objectness로 곱해지므로 final distillation part weight는 항상 detection loss보다 적게 된다.
5.2 Architecture
본 섹션에선 서로다른 모델 구조 configuration에 대한 실험결과를 다룬다. 우선 base architecture에서 feature map merging으로 인한 효과를 측정했다. 다양한 레이어 merging 조합은 table 1에서 보여진다. 더 많은 레이어에서 feature map들이 같이 병합될 경우 정확도는 점점 더 좋아졌다. 또다른 중요한점으로, 네트워크 초기 레이어의 feature map을 합치는것보다 뒤쪽 레이어의 feature map을 병합하는것이 더 성능향상에 도움이 된다. Table 1의 레이어 출력 combination 결과에서 중간에 살짝 정확도가 떨어지는 경우가 있는데 이는 초기 레이어가 기초적인 정보만을 담을 수 있기 때문이다. Table 1에서 conv 11 column은 네트워크의 구조를 깊게 하기 위해 마지막에 추가된 1x1 conv layer다. 이러한 레이어로 인해 0.5mAP의 상승이 있었고 이러한 1x1 conv layer로 인해 연산량 측면에서 효율적으로 네트워크의 깊이를 증가시킬 수 있었다.
또한 두 개의 다른 방법을 이용한 feature map merging에 대해서도 실험비교결과를 보였다. 대부분의 이전 연구[22, 17]에서 사용한 maxpooling과 달리 feature stacking은 덜 흔한 방법이다[26]. 실험으로 feature stacking이 max pooling보다 더 나은 성능을 보인다는것을 확인했다. 더 나은 정확도를 위해 모든 merging combination에서 feature stacking을 사용했다.
Table 2에선 baseline detector의 다양한 변화에 따른 속도 차이를 보여준다. 속도는 GTX 1080 8GB GPU와 16GB CPU memory환경에서 측정되었다. 더 좋은 GPU를 쓰면 속도는 더 빨라진다. For the baseline Tiny-Yolo, we are able to achieve the speed of more than 200 FPS, as claimed by the original authors, using parallel processing and batch implementation of the original Darknet library. 모든 속도측정은 4952장의 Pscal VOC 2007 test image에 대한 평균시간이며, 파일 쓰기와 detection 시간을 모두 포함한 시간이다. 실험 결과에서 merging operation은 detector의 속도를 감소시키지만 feature map을 많게 해 준다. Combined feature maps layer의 convolutional operation은 detector의 속도를 줄인다. 따라서 feature map의 수를 줄이는것이 속도 향상에 큰 도움이 된다. 1024개의 feature map을 512개로 줄으로써 200FPS 이상의 속도를 달성 할 수 있었다. 마니막으로 1x1 conv layer를 구조의 끝에 추가하여 연산량의 증가를 최소화했다. 이러한 간단한 구조적인 modifications로 인해 popular한 architecture에 비해 더 빠른 속도로 동작한다.
5.3 Distillation with labeled data
우선 teacher와 student 네트워크에 대해 설명한다. 학습에 Yolo based teacher의 soft label을 사용한다. 전달되는 soft label을 이용하여 학습되므로 student와 teacher의 input image resolution은 같아야 한다. 따라서 Darknet-19 base Yolo-v2를 teacher model로 사용했다. 연산량이 적어 매우 빠른 제안하는 F-Yolo를 student로 사용했다. 실험에선 더 많은 labelled data가 성능 향상에 도움이 되는지를 Pascal과 COCO dataset의 조합으로 확인했다. Pascal에선 2007, 2012 training/validation set을, COCO에선 Pascal에서 클래스가 존재하는 카테고리의 training image를 사용했다. 65K개의 추가 이미지를 COCO에서 얻을 수 있었다.
Distillation traning에서의 teacher network의 효과를 연구하기 위해 teacher model을 두 개의 다른 데이터셋으로 학습시켰으며, 하나는 Pascal data와 다른 하나는 Pascal 과 COCO dataset의 combination된 set으로 학습을 시켰다. Baseline teacher 모델은 Table 3에서 보여진다. Yolo-v2를 COCO로 학습시킨 모델의 경우 성능이 3.5mAP가 좋아졌다. 이 과정을 통해 더 정확한 teacher model의 효과를 확인 할 수 있었다.
첫 번째 실험에서 제안하는 방법의 효과를 정의하기위한 다양한 방법들을 실험하고 비교했다. 이를 통해 single stage detector에 대한 다음의 두 가지 innovation을 제안한다. Objectness scaling and FM-NMS. Distillation을 FM-NMS와 objectness scaling step 없이 수행했다. 실험 결과는 table 3에서 확인가능하다. Distillation이 적용된 student network의 성능은 FM-NMS가 적용되지 않은 경우 성능이 baseline보다 더 떨어지게되는것을 확인할 수 있었다. 두 teacher network에 대해 네트워크 성능의 큰 하락이 확인 가능하다. 실험 결과를 통해 single stage detector에서 FM-NMS가 distillation이 동작하도록 하는 중요한 요소입을 확인했다. Objectness scaling 없이 진행된 실험에서 또한 약간의 성능이 하락하였다.
COCO의 추가 레이블링된 데이터셋을 이용한 실험의 경우 유사한 trend를 보이며, 따라서 FM-NMS과 object scaling이 중요함을 확인했다. 그리고 더 많은 학습 데이터를 이용해 full distillation 방법을 적용햇을 때 성능이 가장 많이 향상되었다. COCO training dataset을 사용한 full distillation 방법은 2.7mAP의 증가가 있었다. 학습 데이터셋이 클수록 더 많은 soft label이 이용 가능해지며, 이를 통해 더 많은 object like section의 정보가 이용이 가능해진다.
또한 baseline detector의 성능이 더 많은 traning dataset을 이용할 때 더 좋아진다는것을 확인했다. 이는 제안하는 light-weight 모델이 더 많은 traninig sample이 있을 때 충분한 용량을 갖는다는 것을 의미한다. Distillation loss와 추가 학습 데이터를 통해 제안하는 detector는 200FPS가 넘는 속도로 67mAP를 달성했다.
놀랍게도, 고정된 student에 있어서 teacher detector는 학습에 주요하게 동작하지 않았다. COCO teacher가 VOC와 COCO data의 조합으로 학습된 teacher보다 성능이 떨어졌다. 이는 teacher의 성능 차이가 크지 않기 때문에 teacher quality의 영향력을 평가하는게 어렵다고 판단된다.(¡ 4mAP)
각 PASCAL VOC 2007 test set에 대한 각 클래스별 정확도를 table 4에서 확인 가능하다. 제안하는 F-Yolo(구조변경만 적용된 모델)의 성능과 D-Yolo(구조 변화와 distillation loss의 적용)의 성능은 original Yolo와 Yolo-v2와 비교되어있다. 흥미롭게도 bottle이나 bird와 같이 작은 객체의 경우 distillation loss와 많은 training data가 적용된 경우 정확도가 10AP정도 향상되었다. Tiny-Yolo와 제안하는 방식의 성능비교는 Figure 5에서 그림으로 보여진다.
5.4 Unlabeled data
앞에서 COCO와 VOC를 섞은 데이터셋을 이용한 실험에선 F-Yolo가 더 많은 학습 데이터에 대해 학습이 가능한 충분한 용량이 있음을 밝혔다. 이번 section에선 제안하는 모델이 얼마나 많은 unlabeled data를 통해 학습이 가능한가를 확인한다. 이번 실험에선 traning set에서 unlabelled data를 늘려가며 정확도를 측정한다. 레이블링 데이터는 VOC에서만 사용하고 레이블이 없는 데이터는 COCO에서 사용한다. 레이블링/언레이블링 된 영상들은 함께 조합되어 학습에 사용되며, 레이블이 없는 이미지의 경우 teacher만 통과해서 추론된 soft-label 을 넘기도록 학습되어진다. 네트워크는 각 16K, 32K, 48K, 65K개의 unlabelled data를 이용하여 학습되어지도록 하며 그에대한 student network의 영향을 파악한다. 실험결과는 table 5에서 보여진다. 추가 data가 있을 경우 baseline detector의 성능이 3~4mAP정도 크게 증가하는것을 알 수 있다. 더 많은 unlabelled data가 있을 경우 성능은 더 향상 될 것이다.
It is interesting to compare the change in the performance with unlabeled data and COCO labeled data separately to understand the importance of annotation in the training. 레이블이 있는 COCO 데이터셋을 확용하여 제안하는 모델을 학습시켰을 때 64.2mAP가 측정되었으며(Table 3 student baseline) Yolo-v2를 teacher로 하여 unlabeled COCO 영상들을 사용했을 때 62.3mAP를 달성했다. 이는 비록 annotation이 중요하긴 하지만 정확한 teacher network가 간단하게 추가된 unlabeled training data를 이용하게 함으로써 더 큰 성능의 향상이 가능했음을 보여준다.
마지막으로 제안하는 distillation 방법을 경쟁하는 방법인 [3]과의 실험 결과를 비교했다. 비교대상 방법은 Fater-RCNN에 대한 distillation 방법이며, 제안하는 방법은 single stage용, 비교대상 방법은 two stage용이다. 실험 결과는 table 6에서 보여진다. 성능은 다음의 architecture에 대해 비교된다. Alexnet[19], Tuckernet [18], VGG-M [32]이며 이는 VGG-16[32]로부터 distillation된 정보를 이용한다. 제안하는 distilled network는 RCNN detector에 비해 엄청 빠르다. 파라미터 수 관점에서도 제안하는 방법과 Tucker 방법이 비교 가능하지만, Faster-RCNN based detector에 비해 엄청 빠르다. 이러한 방법들에 대해 속도 향상은 single stage detector의 효율적인 설계와 속도에 최적화 된 기본 네트워크 구조 및 훈련에 사용되는 추가적인 데이터 때문이다. 실험결과는 이러한 변화로 인해 9mAP이상의 정확도 향상과 더불어 더 빠르게 동작하는것을 보여준다.
Conclusion
논문에선 효율적이고 빠른 object detector를 제안했다. 객체검출모델의 speed performance의 trade-off를 조절하기위해 네트워크의 구조, loss function, training data의 역할에 대해 연구했다. 네트워크의 설계에는 이전에 수행되었던 연구들을 이용하여 계산복잡도를 적게 유지하기 위해 몇 가지의 간단한 idea들을 확인하고, 이 아이디어들의 방법을 활용하여 light-weight network를 개발했다. 네트워크 학습 과정에서 FM-NMS와 objectness scaled loss와 같이 carefully하게 설계된 components와 더불어 disitillation이 powerful한 idea임을 보였고, 이를 통해 light-weight single stage object detector의 성능이 향상되었다. 마지막으로 distillation loss를 기반으로 unlabeled data의 traning에 대한 연구를 수행했다. 논문의 실험에선 제안하는 design principle이 적용된 모델이 SOTA object detector들보다 훨씬 빠르게 동작하며 동시에 resonable한 성능을 얻을 수 있다는것을 보였다.
CNN을 이용하여 object detector의 성능이 크게 향상되었지만, 연산시간또한 크게 증가하게 되는 단점이 존재했다. SOTA 모델들은 매우 deep하고 많은 파라미터들을 갖는 구조를 사용한다. 이러한 모델들의 파라미터 수를 줄이는 연구들이 많이 수행되었지만, 성능또한 같이 줄어드는 단점이 존재했다. 본 논문에서는 knowledge distillation[20]과 hint learning[34]을 이용하여 정확도가 향상된 compact하고 fast한 object detection network의 학습을 위한 framework를 제안한다. 앞선 연구인 knowledge distillation에서는 간단한 classification task에 대한 성능 향상만을 보였다. 하지만 object detection의 경우 regresson, region proposal과 less boluminous label등의 challenging한 문제들이 존재한다. 논문에선 이러한 문제들에 대한 개선을 위해 class imbalance 해결을 위한 weighted cross-entropy loss, regression component를 해결하기 위한 teacher bounded loss, 그리고 intermediate teacher distributions을 더 잘 학습하기 위한 adaptation layer등을 제안한다. 실험에선 PASCAL, KITTI, ILSVRC, MS-COCO 데이터셋을 이용하여 다른 distillation configuration들에 대한 실험을 진행했으며, 일반적인 mAP의 측정으로 평가되었다. 실험 결과는 최근의 multi-class detection models에 대한 accuracy-speed trade-off의 향상을 보여준다.
1. Introduction
CNN등의 발전으로 인해 object detection의 성능은 매우 많이 발전했지만, 실제로 이를 적용하기에는 속도가 너무 느린 단점이 존재했다. 많은 연구들이 정확한 객체검출기 모델의 개발을 위해 진행되었지만 모두 deep한 구조를 사용함으로 인해 runtime의 computational expense가 증가했다. 하지만 이는 deep neural network들이 일반화를 위한 over-parameterized 문제로 알려져있다. 따라서 속도 향상을 위해 몇몇의 연구에선 새로운 구조의 fully convolutional network를 만들어 이를 해결하고자 하거나 작은 filter와 적은 channel을 이용해 파라미터 수를 줄여보고자 했다[22, 25]. 이로인해 객체검출기의 속도가 매우 빨라졌지만 아직도 real-time으로 사용하기엔 무리가 있고 성능향상을 위한 tunning이나 까다로운 redesign등이 필요하다.
표현력이 충분한 deep 네트워크의 경우 학습이 잘 되면 더 나은 성능을 보여준다. 하지만 적은 class를 위한 객체검출 모델들은 이런 표현력이 큰 모델이 필요없다. 이로인해 [9, 26, 41, 42]논문에선 모델 압축을 이용해 layer-wise reconstrunction을 따라 각 레이어의 weight를 분해하거나 fine-tunning을 이용해 정확도를 조금 올리게 된다. 이러한 방법들로 인해 속도는 많이 향상되지만 여전히 original model과 압축된 모델간의 성능차가 존재하며, object detection에 이를 적용할 경우 압축모델과 원래모델의 성능차이는 더 벌어지게 된다. 반면 knowledge distillation이 적용된 연구들의 경우 깊고 복잡한 모델의 behavior를 흉내내도록 shallow or compressed 모델이 학습되어지며 knowledge distillation을 통해 대개의 모델들이 정확도 하락을 복구하게 된다[3, 20, 34]. 하지만 이러한 결과들은 dropout과 같은 strong regularization도 적용하지 않고 간단한 네트워크를 이용해 간단한 classification문제에 대한 결과만들 보여준다.
Distillation을 복잡한 multi-class object detection에 적용하기에는 아래의 몇몇 문제가 따른다. 우선, 객체검출 모델의 성능은 모델 압축 시 classification 모델에 비해 성능이 더 떨어지게 된다. 이는 detection label이 더 expensive 하고 양이 많지 않기 때문이다(expensive and less boluminous). 두번째로, 모든 class가 동등하게 중요하다고 가정되는 classification을 위해 distillation이 제안되지만, object detection과 같이 background class가 훨씬 더 많이 사용되는 경우에는 knowledge distillation이 별 소용이 없게된다. 세번째로, detection은 각 classification과 bounding box regression을 한데로 묶는 복잡한 task이다. 마지막으로, 추가 challenge로써 다른 도메인의 데이터(high-quality and low-quality image domains, or image and depth domains)에 의존하는 다른 task와는 다르게 추가 데이터나 label이 없이 동일한 도메인(images of the same dataset) 내에서 정보(knowledge)를 이전하는데에 집중하는것이다.
위의 challenges에 대해 논문에선 knowledge distillation을 이용한 fast object detection 모델의 학습을 위한 방법을 제안한다. 논문의 main contributions는 아래에 있다.
Knowledge distillation을 이용한 compact multi-class object detection 모델의 end-to-end 학습 framework를 제안한다(section 3.1). 아는바로는 이게 첫 번째 성공적인 multi-class object detection의 knowledge distillation의 적용이다.
앞에서 말한 challenges를 효과적으로 다루는 새로운 loss를 제안한다. 세세적으로 object class의 반대인 background class를 위한 misclassification의 impact의 imbalance를 계산하는 classification을 위한 weighted cross entropy loss 를 제안한다(section 3.2). 다음으로 knowledge distillation을 위한 teacher bounded regression loss 를 제안하며(section 3.3) 마지막으로 teacher의 intermediate layer의 neuron에서의 distribution을 student가 학습하도록 해주는 adaptation layers for hint learning 을 제안한다(section 3.4).
Public benchmark를 이용하여 제안하는 모델을 평가한다. 모든 benchmark에 대해 성능이 모두 향상되었다. 각 제안하는 방법에 대해 모두 성능이 향상되었다(section 4.1 - 4.3).
논문에서 제안하는 framework에 대해 generalization과 under-fitting problem에 관련된 insight를 제안한다.
2. Related Works
CNNs for Detection. Deformable Part Model (DPM) [14] was the dominant detection framework before the widespread use of Convolutional Neural Networks (CNNs). Following the success of CNNs in image classification [27], Girshick et al. proposed RCNN [24] that uses CNN features to replace handcrafted ones. Subsequently, many CNN based object detection methods have been proposed, such as Spatial Pyramid Pooling (SPP) [19], Fast R-CNN [13], Faster-RCNN [32] and R-FCN [29], that unify various steps in object detection into an end-to-end multi-category framework.
Model Compression. CNNs are expensive in terms of computation and memory. Very deep networks with many convolutional layers are preferred for accuracy, while shallower networks are also widely used where efficiency is important. Model compression in deep networks is a viable approach to speed up runtime while preserving accuracy. Denil et al. [9]은 인공신경망이 때때로 과하게 parameterized 되므로 중복되는 parameter들에 대해 제거가 가능한 것을 증명한다. Subsequently, various methods [5, 7, 10, 15, 17, 30] have been proposed to accelerate the fully connected layer. Several methods based on low-rank decomposition of the convolutional kernel tensor [10, 23, 28] are also proposed to speed up convolutional layers. To compress the whole network, Zhang et al. [41, 42] present an algorithm using asymmetric decomposition and additional fine-tuning. 유사하게 Kim et al.[26]은 one-shot whole network compression을 제안하였으며, 정확도의 큰 하락 없이 1.8배의 속도가 향상되었다. 실험에서는 [26]에서 제안한 방법을 사용했다(Compression of Deep Convolutional Neural Networks for Fast and Low Power Mobile Applications). Besides, a pruning based approach has been proposed [18] but it is challenging to achieve runtime speed-up with a conventional GPU implementation. Additionally, both weights and input activations can be the quantized( [18]) and binarized ( [21, 31]) to lower the computationally expensive.
Knowledge Distillation. Knowledge distillation is another approach to retain accuracy with model compression. Bucila et al. [3] propose an algorithm to train a single neural network by mimicking the output of an ensemble of models. Ba and Caruana [2] adopt the idea of [3] to compress deep networks into shallower but wider ones, where the compressed model mimics the ‘logits’. Hinton et al. [20] propose knowledge distillation as a more general case of [3], which applies the prediction of the teacher model as a ‘soft label’, further proposing temperature cross entropy loss instead of L2 loss. Romero et al. [34] introduce a two-stage strategy to train deep networks. In their method, the teacher’s middle layer provides ‘hint’ to guide the training of the student model.
Other researchers [16, 38] explore distillation for transferring knowledge between different domains, such as high-quality and low-quality images, or RGB and depth images. 본 논문의 연구방향과 비슷하게 Shen et al.[36]에선 distillation과 hint framework에 대한 compact object detection model의 학습의 영향에 대하여 연구를 했다. 하지만 앞의 방법은 pedestrian(보행자) object detection task에 대하여만 진행된 연구이므로, 이는 multi-category object detection에는 general하게 적용하지 못한다. [36]과는 다르게 제안하는 방법은 multi-category object detection에 적용 가능하다. 게다가 [36]은 외부 region proposal 방법을 사용하지만 논문의 방법은 distillation과 hint learning이 최근의 end-to-end object detection framework의 region proposal과 classification 모두에 적용 가능함을 보인다.
3. Method
본 논문에선 Faster-RCNN[32]를 meth-architecture로 사용했다. Faster-RCNN is composed of three modules: 1) A shared feature extraction through convolutional layers, 2) a region proposal network (RPN) that generates object proposals, and 3) a classification and regression
network (RCN) that returns the detection score as well as a spatial adjustment vector for each object proposal. 각 RCN과 RPN 모두 1)의 출력을 사용하며, RCN은 RPN의 출력을 입력으로 사용한다. 정확한 객체검출을 위해 앞의 세 요소에 대해 표현력 strong한 모델을 학습하는것이 중요하다.
3.1 Overall Structure
논문에서 제안하는 세 가지 component를 이용해 high capacity를 갖는 teacher의 정보를 이용해 효율적인 student 객체검출기를 학습시켰다. Figure 1에선 전체적인 framework를 확인할 수 있다. 우선 hint based learning[34] (section 3.4)에선 teacher net의 feature를 닮도록 student net의 feature가 만들어지게한다. 다음으로 knowledge distillation framework [3, 20]을 이용해 RPN과 RCN classification module을 학습시킨다. Object detection의 severe category imbalance문제 해결을 위해 distillation framework에 weighted cross entropy loss를 적용했다. 마지막으로 teacher의 regression output을 student가 upper bound로 사용하게끔 transfer 했으며 만약 student의 regression output이 teacher의 것보다 더 낫다면 추가적인 loss는 적용되지 않는다. 전체적인 학습에서의 objective는 아래와 같다.
(1)
N은 RCN, M은 RPN의 batch size이다. $L_{cls}$ 는 ground truth를 이용한 hard softmax loss와 (2)의 soft knowledge distillation loss[20]의 조합으로 구성되어있다.$L_{reg}$ 는 smoothed L1 loss[13] 과 논문에서 제안하는 (2)의 teacher bounded L2 regression loss로 구성된 bounding box regression loss이다. 마지막으로 $L_{hint}$ 는 teacher의 feature response를 student가 닮도록 하는 hint based loss function이며 (6)에 설명되어있다.
3.2 Knowledge Distillation for Classification with Imbalanced Classes
분류기 모델의 학습을 위해 knowledge distillation이 제안되어 사용되었다. 만약 ${x_{i}, y_{i}},\; i=1, 2, …, n$ (where $x_{i}\in \mathfrak{J}$, $\mathfrak{J}$ 는 input image, $y_{i}\in \mathfrak{Y}$, $\mathfrak{Y}$는 해당하는 class label) 이라는 datasset이 있다고 해보자. $t$는 teacher model이며 $P_{t}=softmax(\frac{Z_{t}}{T})$는 teacher의 prediction, $Z_{t}$는 final score ouput이라고 하자. $T$는 temperature parameter(일반적으로 1로 설정)이다. 유사하게 $P_{s}=softmax(\frac{Z_{s}}{T})$는 student 네트워크 $s$의 prediction이다. Student network $s$는 아래의 loss function을 optimize하도록 학습된다.
(2)
$L_{hard}$는 Faster-RCNN의 ground truth label을 사용하는 hard loss이며 $L_{soft}$는 teacher의 prediction을 사용하는 soft loss, $\mu$는 hard와 soft loss의 balancing을 위한 파라미터이다. 보통은 deep 네트워크가 성능이 좋다. Soft label은 teacher에 의해 찾아진 다양한 클래스간의 관계에 대한 정보가 포함되어있다. Soft label을 이용한 학습에서 student network는 이러한 hidden정보들을 전달받게된다.
[20]에서 각 hard와 soft loss들은 cross entropy loss이다. 하지만 간단한 classification 문제와는 다르게 detection task는 심각한 서로다른 카테고리간의 imbalance를 고려해야하며, 이는 background로 분류되어야 하는 카테고리가 너무 많음을 의미하게된다. 분류기 모델의경우 발생가능한 오류는 foreground(detection 안의 bounding box쳐진 안 내용의) 오분류 뿐이다. 하지만 detection task는 background와 의미있는 foreground의 오분류는 매우 주요하며 foreground의 오분류는 매우 드물다. 이를 조절하기 위해 class-weighted cross entropy를 distillation loss로써 적용하였다. 식은 아래와 같다.
(3)
weight parameter인 $w_c$에 대해 논문에선 background class에 대해 큰 weight를 사용하였으며 다른 class들은 비교적 작은 weight를 사용했다. 예를 들어 PASCAL dataset에 대해 background class에 대해 $w_{0}=1.5$를, 다른 foreground class들에는 $w_{i}=1$을 사용했다.
$P_{t}$가 hard label과 매우 유사할 때 (하나의 class만 1에 매우 가깝고 나머지들은 0에 매우 가까운 경우) temperature parameter $T$는 softmax output을 soften하게 만들게 하기 위해 사용된다. 큰 temperature parameter를 사용할 경우 네트워크는 더 soft한 결과를 최종단에서 출력하게 되며 이를통해 거의 0에 가까운 softmax를 거친 결과가 cost function에서 무시되지 않도록 해준다. 이는 MNIST classification같이 매우 간단한 task에 적절하다. 하지만 prediction error가 이미 높은 어려운 문제같은 경우 큰 temperature parameter의 사용은 학습에 좋지않은 noise가 더 많이 생기게 한다. 따라서 작은 $T$가 [20]에선 큰 데이터셋에 대한 실험에 사용되었다. object detection과 같이 더 어려운 문제의 경우 distillation loss의 temperature parameter를 사용하지 않는것이($T=1$) 실제 가장 잘 작동한다는것을 알 수 있었다.(보충자료 참조)
3.3 Knowledge Distillation for Regression with Teacher Bounds
Classification layer에서 대부분의 CNN detector들[26, 29, 32, 33]은 input proposal의 size와 location을 조절하기 위해 사용한다. 때때로 좋은 regression 모델을 학습하는것이 object detector의 정확도를 보장하는데에 중요하다. Discrete category들의 distillation과 다르게 teacher의 regression output은 unbounded real valued regression output으로 인해 student model에게 매우 잘못된 guidance를 제공할 수 있다. 게다가 teacher는 ground truth와 모순되는 방향으로 regression direction 정보를 줄 수도 있다. 따라서 target(student)에서 teacher의 regression output을 그대로 사용하기보다는 student가 잘 학습하도록 upper bound로써 사용하도록 설정하였다. Student의 regression vector는 일반적으로 GT label과 가능하면 최대한 가깝도록 되어야하지만 특정 margin을 갖는 teacher의 추론보다 정확하게 된다면 student는 추가적인 loss없이 자신의 추론결과로만 학습하게 된다.(student의 추론이 teacher보다 정확하면 teacher에 의한 loss값 반영 없이 자체결과로만 학습) 논문에선 이를 teacher bounded regression loss 라 하며 $L_{b}$로 정의하고 아래와 같이 정의한다. $L_{b}$ 는 regression loss $L_{reg}$에서 사용된다.
(4)
수식에서 $m$은 margin, $y_{reg}$는 regression ground truth label, $R_{s}$는 student network의 regression output, $R_{t}$는 teacher network의 prediction, $\mathcal{V}$는 weight parameter(실험에선 0.5로 설정)다. $L_{sL1}$은 [13]의 smooth L1 loss이다. Teacher bounded regression loss $L_{b}$는 student의 error가 teacher의것보다 클 때 network를 penalize한다(loss가 증가함을 의미). $L_{b}$에서 L2 loss를 사용하지만 L1이나 smoothed L1과 같은 다른 regression loss도 $L_{b}$와 결합 가능하다. 이렇게 조합된 loss는 student가 teacher와 가깝거나 혹은 더 나은 regression을 만들도록 하며 만약 teacher의 성능에 도달할경우 student를 너무 많이 push하지 않게한다.
3.4 Hint Learning with Feature Adaptation
Distillation의 경우 final output만을 이용해 정보를 전달한다. [34]에서는 teacher의 중간 representation을 사용하는것이 학습과정에서 hint 로서 작용해 student의 성능이 더 좋아진다고 한다. 그들은 feature vector V와 Z에 대해 L2 distance를 사용했다.
(5)
수식에서 Z는 hint로 사용할 teacher의 중간 레이어에서의 feature, V는 student에서 guided될 레이어의 출력 feature를 의미한다. 또한 L1 loss를 사용하여 평가한다.
(6)
Hint learning을 적용할 때 사용될 student와 teacher의 뉴런 수, 즉 channels, width, height가 동일해야 한다. Hint와 guided layer의 채널 수를 맞추기 위해 출력 크기가 hint layer와 동일한 adaptation layer를 guided layer 뒤에 추가하였다. Adaptation layer는 student가 만들어낸 feature가 teacher와 동일하도록 하는 뉴런 수를 갖는 레이어다. 두 hint와 guided layer라 fully connected layer일 경우 adaptation layer도 fully connected layer가 된다. Hint와 guided layer가 convolutional layer일 경우 1x1 convolution을 사용하여 메모리 소모를 줄였다. 흥미롭게도 hint와 guided layer의 채널 수가 같더라도 adaptation layer를 적용하는것이 효율적인 knowledge transferring에 중요한것을 확인했다(section 4.3). 또한 adaptation layer는 hint와 guided layer의 feature 형식이 다른 경우에도 적용하여 matching 시킬 수 있다. Hint나 guided layer가 convolutional이고 hint와 guided layer의 해상도(크기)가 다른 경우 (VGG16과 AlexNet 비교같이) [16]의 padding trick을 이용하여 출력의 수를 맞추었다.
4. Experiment
In this section, we first introduce teacher and student CNN models and datasets that are used in the experiments. 다양한 데이터셋에 대한 전체 결과는 section 4.1에서 보여진다. Section 4.2에선 제안하는 방법을 더 작은 네트워크와 lower quality input을 이용한 실험결과를 보여준다. Section 4.3에서는 classification/regression, distillation 및 hint learning의 세 가지 component에 대한 albation study를 설명한다. Distillation, hint learning에 대해서 얻어진 insight는 section 4.4에서 다뤄진다. Details에 대해선 supplementary materials에서 설명된다.
Datasets
We evaluate our method on several commonly used public detection datasets, namely, KITTI [12], PASCAL VOC 2007 [11], MS COCO [6] and ImageNet DET benchmark (ILSVRC 2014) [35]. Among them, KITTI and PASCAL are relatively small datasets that contain less object categories and labeled images, whereas MS COCO and ILSVRC 2014 are large scale datasets. KITTI와 ILSVRC 2014 데이터셋은 test set의 ground-truth annotation을 제공하지 않으므로 [39]와 [24]의 tranining/validation을 사용했다. For all the datasets, we follow the PASCAL VOC convention to evaluate various models by reporting mean average precision (mAP) at IoU = 0.5 . For MS COCO dataset, besides the PASCAL VOC metric, we also report its own metric, which evaluates mAP averaged for IoU 2 [0.5 : 0.05 : 0.95] (denoted as mAP[.5, .95]).
Models
일반적인 구조인 AlexNet[27], AlexNet with Tucker Decomposition[26], VGG16[37], VGGM[4]를 teacher/student model의 CNN 구조로 사용했다. 각 student와 teacher 쌍에 대해 두개의 다른 settings를 적용했다. 첫 번째 실험 set에서 작은 네트워크(less parameters)를 student로, 큰 모델을 teacher로 사용하였다(예를 들어 AlexNet을 student로, VGG16을 teacher로 사용). 두 번째 실험 set에서는 네트워크의 구조를 유지하면서 작은 크기의 영상을 student model로 넣고, 큰 사진을 teacher model의 input으로 넣었다.
4.1 Overall Performance
Table 1은 다른 teacher model의 구조와 student model의 구조에 대한 mAP를 실험결과에 따라 비교한 결과이다. Teacher model을 사용하지 않는 실험의 경우 가장 나은 정확도가 나은 결과를 실어놓았다. 파라미터 수가 많은 크고 깊은 모델의 성능이 작고 shallow한 모델에 비해 성능이 좋았지만 속도는 작은 모델이 큰것보다 더 빨랐다.
Teacher와 student architecture의 차이에 불구하고 모든 dataset에 대해 distillation과 hint learning이 적용된 모델의 성닝이 더 향상되었다. Student model에 fixed scale(number of parameters)을 사용한 경우 자체적으로 from scratch training이나 fine-tunning은 최선의 선택이 아니다. 더 성능 좋은 teacher로 모델을 학습시킬 경우 student의 성능은 더 향상된다. 즉, 더 deep한 teacher가 전달해주는 정보(knowledge)가 student에겐 더 informative한 정보가 된다. 참고로 VGG16기반의 Tucker model은 alexnet보다 5배가량 모델 크기가 작지만 PASCAL datset에 대해 훨씬 높은 정확도의 향상이 있었다. 이는 CNN 기반 object detector가 매우 over-parameterized 되었음을 의미한다(효율이 낮음). 반대로 데이터셋의 크기가 큰 경우 복잡한모델의 성능을 뛰어넘는 결과를 만들기 더 어려웠다. 이는 큰 크기의 데이터셋을 위해선 용량(capacity)이 큰 모델이 적합함을 의미한다. 일반적으로 효율 측정에 있어서 KITTI dataset에 대해 VGG 16 teacher에서 AlexNet student로 3배 더 빠르다(영어로, Typically, when evaluating efficiency, we get 3 times faster from VGG16 as teacher to AlexNet as student on KITTI dataset. 문장이 엉터리다.). 자세한 정보는 supplementary material에서 확인바란다.
또한 [38]과 유사하게 또다른 student-teacher mode에 대해 연구했다. Teacher와 student가 완전히 동일한 구조를 유지하면서 student에겐 down-scaled image를 입력으로, teacher는 고해상도 이미지를 입력으로 줬다. 최근 연구[1]에서 입력 영상의 해상도가 object detection 성능에 큰 영향을 끼친다고 한다. 반면 downsampling된 이미지는 quadratically(2차적으로)하게 conv 연산량을 줄이고 속도를 향상시켰다. Table 2에서 PASCAL VOC dataset의 input size를 반으로 줄이고 student net에 넣었고, teacher에는 original 해상도 영상을 넣었을 때, teacher와 비교하여 student의 정확도는 거의 유지됨과 동시에 2배는 빠르게 동작하였다.(이상적으로 convolutional layer의 연산은 4배 빠르나 loading overhead와 다른 layer에서의 관련없는 연산들때문에 2배의 속도 향상에 그치게 됨)
4.2 Speed-Accuracy Trade off in Compressed Models
It is feasible to select CNN models from a wide range of candidates to strike a balance between speed and accuracy. However, off-the-shelf CNN models still may not meet one’s computational requirements. Designing new models is one option. But it often requires significant labor towards design and training(연산량 조절을 위해 새 모델을 설계해야 하지만 노동력이 많이 든다는 뜻). 학습된모델은 특정한 task를 위해서만 학습되었으므로 속도와 정확도의 trade-off를 고려하여 조절하는것은 또 다른 일이 되며 새 모델을 학습시키는것도 일이다. 이로 인해 distillation은 또 다른 attractive option이 될 수 있다
Object detection의 knowledge distillation 적용을 위한 speed-accuracy trade off를 이해하기 위해 Tucker decomposition이 적용된 AlexNet의 compression ratio(the ranks of weight matrices)를 변화시켜가며 실험했다. CNN의 FLOPS를 이용하여 compression ratio를 측정했다. Table 3은 압축된 크기가 원본의 20%가 되는 경우처럼 네트워크가 너무 많이 압축될 때 정확도가 57.2에서 30.3으로 급격하게 떨어지는것을 확인 할 수 있었다(table 2와 3 같이 확인필요). 하지만 제안하는 distillation framework가 적용되지 않은 squeezed network의 정확도는 37.5% 압축에 대해 finetune의 54.7%에 불과했다. 반면에 제안하는 방법을 적용한 경우 VGG16과 같은 deep teacher와 함께 정확도를 59.4%까지 향상시켰으며, 이는 압축되지 않은 AlexNet 모델의 57.2%보다 좋은 결과이다.
4.3 Ablation Study
Table 4에서 보여지듯, 제안하는 novel loss의 효과를 확인하기 위해 서로다른 distillation과 hint learning에 대한 비교실험을 수행했다. VGG16을 teacher로, Tucker를 student model로 모든 실험에서 통일했다. 다른 선택지들은 유사한 trend를 반영했다. Faster-RCNN에서 proposal classification과 bounding box regression은 두 main task이다. 일반적으로 classification은 cross entropy loss로 구성되며 Table 4에서 CLS로 정의되며 bounding box regression은 L2 loss로 regularized되며 L2로 Table 4에 나타난다.
Objective function에 의해 적은 확률값을 갖는 클래스가 무시되어지는것을 막기 위해 high temperature를 갖는 soft label, 즉 weighted cross entropy loss가 section 3.2에서 proposal classification task를 위해 제안되었다. Table 4에선 section 3.2의 (3)에서 제안된 weighted cross entropy loss(CLS-W)를 standard cross entropy loss(CLS)와 비교하며 PASCAL과 KITTI dataset 모두에서 약간의 성능 향상을 확인할 수 있다.
Bounding box regression에 대해서, 단순하게 student가 teacher의 출력을 따라하도록 하는것은 labeling noise에 의해 악영향을 미치게 된다. 이를 개선하기 위해 section 3.3의 (4)를 제안하였으며 이는 teacher의 예측이 student를 guide하도록 boundary로써작용한다. 이러한 방법으로 인해 Table 4의 L2-B에서 L2의 방법에 비해 1.3%이상의 정확도 향상이 있었다. 참고로 1%의 object detection 정확도 향상은 매우 큰것이며, 특히 많은 영상을 포함하는 large-scale dataset에서는 더 그렇다.
4.4 Discussion
이 단원에선 distillation과 hint learning에 대한 insight에 대해 다룬다. Table 5는 PASCAL과 COCO dataset의 trainval과 testing set에 대하여 VGG16의 정보로부터 학습된 Tucker model의 정확도를 비교한다. 일반적으로 distillation은 student의 generalization capability를 향상시키며 hint learning은 training과 testing 정확도 모두 향상하도록 도와준다.
Distillation improves generalization
[20]에서 다뤄진 image classification과 비슷하게 object detection task의 label간의 구조적인 relationship도 존재한다. 예를 들어서 ‘Car’는 ‘Person’보다 ‘Truck’ 클래스와 비슷한 시각적 특징을 공유한다. 이러한 구조적 정보는 ground truth annotation에 포함되어있지 않다. 따라서 high capacity를 갖는 teacher로부터 학습된 relational information을 student로 주입하는것은 detection model의 일반화 능력을 향상시키는데 도움이 될 것이다. Table 5에서는 distillation을 적용한 결과 모두 testing accuracy 성능이 향상 된 것을 확인할 수 있다.
Hint helps both learning and generalization
CNN based object detection task에서 under-fitting은 흔한 문제점이다. 간단한 분류와는 다르게 정확도가 많이 낮다. 이는 학습 알고리즘이 saddle point(minima)를 찾는데에 문제가 있는것으로 판단된다[8]. 반대로 hint는 intermediate layer에서의 guidance를 직접적으로 사용하여 이러한 문제를 피할 수 있다. 따라서 hint learning을 사용하여 학습된 모델은 training과 testing에서 모두 정확도가 향상된다.
마지막으로 distillation과 hint learning을 조합하는 경우 training과 test 정확도 모두 기존의 방법에 비해 크게 향상되었다. Table 5는 실험적으로 PASCAL과 MS-COCO에 대해 제안하는 방법이 효과가 있음을 보여준다. 제안하는 방법이 또한 face similar generalization이나 under-fitting problem에도 적용 가능 할 것이라 생각된다.
Conclusion
논문에선 knowledge distillation을 이용한 compact하고 빠른 CNN based object detector의 학습 framework를 제안했다. 매우 복잡한 teacher detector를 guide로 하여 효율적인 student model을 학습시켰다. Knowledge distillation, hint framework와 제안하는 loss function을 이용하였을 때 다양한 실험 setup에 대하여 모두 성능이 향상되었다. 특히 제안하는 framework로 학습된 compact model은 PASCAL VOC 데이터셋에 대한 teacher model의 정확도와 매우 비슷한 수준으로 훨씬 빠르게 동작하였다. 논문의 실험을 통해 object detector의 학습에 under-fitting 문제가 있음을 확인했으며, 이는 해당 연구분야에서 더 연구 가능한 insight를 준다.