奇點雲三角肌「秀肌肉」,端化目標檢測模型再獲突破

人工智能正在驅動新一輪的商業變革,而算法技術則是推動核心底層技術的重要力量。算法崛起時代,技術浪潮可謂一日千里,算法工程師也只有不斷精進自身技術,才能與時俱進、馭浪前行。近日,奇點雲算法工程師三角肌在目標檢測算法領域又有新突破。

摘要

卷積神經網絡對目標檢測的精度有着顯著的提升,並且隨着卷積神經網絡的深度加深,對目標檢測精度提升也越大,但是也需要更多的浮點計算。許多研究者通過知識蒸餾的方法,通過把一個更深更大的教師網絡中的知識轉移到一個小的學生網絡中,以提高學生網絡在目標檢測中的效果。而大部分知識蒸餾的方法都需要設計複雜的代價函數,並且多數針對兩步目標檢測算法,本文針對一步目標檢測算法提出一個乾淨有效的知識蒸餾方案。將教師網絡生成的特徵層作爲真實樣本,學生網絡生成的特徵層做爲假樣本,並對兩者做生成對抗訓練,以提高學生網絡在一步目標檢測中的表現。

1 Introduction

近些年來,隨着目標檢測算法的發展,研究者們發現利用更深更大的卷積神經網絡作爲骨架,對目標檢測算法的精度提升越大。並且隨着目標檢測算法的檢測精度提升,使視覺檢測算法逐漸從非關鍵性領域,走向關鍵性領域(比如無人駕駛和醫療等領域)。但是爲了保證檢測精度,不得不使用更大的卷積神經網絡作爲骨架,造成檢測速度下降,計算設備成本增加。因此許多研究者在確保檢測精度的前提下,提高檢測速度提出了很多方法和總結,如通過深度分離卷積 [1,2],或者通過點羣卷積(pointwise group convolution)和通道混洗(channel shuffle)[3, 4] 來降低卷積神經網絡浮點運算次數的方法,在保證骨架網絡精度和容量的情況下減少計算量。雖然獲得可觀的提速效果,但是這些方法需要精心設計和調整骨架網絡。很多研究者認爲更深的骨架網絡雖然有着更大的網絡容量,因此在圖像分類、目標檢測等任務上有着更優秀的表現。但是一些特定的任務並不需要這麼大的容量,所以在保證卷積神經網絡精度的情況和下,對卷積神經網絡做壓縮、量化、通道減枝等[5, 6, 7, 8, 9]。

另一方面,有關於知識蒸餾的工作表明[10, 11, 12, 13],使用一個更深更大的模型,並且在充分訓練完畢後作爲teacher net,然後再選取一個比較淺的模型作爲student net,最後使用teacher net輸出的結果或者中間結果作爲soft label結合真實樣本的true label同時訓練student net,可以極大的提升student net在特定任務上的表現。但是大部分這些方法都需要設計非常複雜的代價函數和訓練方式,並且這些方法多用於圖像分類和兩步目標檢測等,極少用於一步目標檢測。因此,我們需要一個更加簡單而有效,並且可以適用於一步目標檢測的知識蒸餾方式。本文提出一種簡單而有效知識蒸餾神經網絡架構,並且可以明顯的提升student net在一步目標檢測網絡的表現。和常規的知識蒸餾方式不同的是,我們參考對抗生成的神經網絡架構[14],將重型目標檢測神經網絡和輕型目標檢測神經網絡的骨架分別拆分出來作爲teacher net和student net,然後把teacher net 生成的feature map作爲真實樣本,而student net則作爲生成器,並把student net生成的feature map作爲假樣本,最後根據真實樣本和假樣本設計一個神經網絡作爲判別器,做生成對抗訓練。

我們的貢獻主要有兩點:

1 提出一種不需要設計複雜的代價函數的網絡架構,並且可以適用於一步目標檢測。

2 利用對抗生成網絡架構,避免複雜的知識遷移設計,讓student net自動的從teacher net中獲取暗知識。

2 Related Works

深度學習目標檢測算法架構主要分爲兩種,一種是一步檢測,比如Liu W等人提出的SSD[15],直接通過通過卷積神經網絡迴歸出物體的位置和類別,另一種是二步檢測,如girshick等人提出的fast rcnn[16],以及後來Faster-RCNN [17] and R-FCN [18]等,首先通過卷積神經網絡迴歸候選框,最後根據候選框再次識別每個候選框的類別,並回歸出正確的位置。

網絡裁剪,許多研究者認爲深度神經網絡被過度參數化,並且有很多冗餘的神經元和連接,He Y等人認爲[8],cnn每層神經元都是稀疏的,利用lasso regression迴歸找出cnn每層最有代表性的神經元重構該層的輸出。Zhuang Z等人[9]認爲layer-by-layer進行通道剪枝會影響cnn的鑑別能力,所以通過在fine-tune和剪枝階段加入輔助loss,來保留cnn每層的鑑別能力。

網絡量化, Wu J等人[20]通過k-means聚類算法加速和壓縮模型的卷積層和全連接層,通過減小每層輸出響應的估計誤差可實現更好的量化結果,並提出一種有效的訓練方案抑制量化後的多層累積誤差 。Jacob B[21]等人提出將weights和inputs量化爲uint8 bias量化爲unit32同時訓練期間前向時候採用量化,反向修正誤差不量化,以確保cnn表現的情況下提高inference速度。

知識蒸餾是一種壓縮模型並確保準確的一種方法。hinton 等人提出[2]將teacher net輸出的結果作爲soft label,並提倡使用溫度交叉熵而不是L2損失。romero 等人[19]認爲需要更多的unlabeled data讓student net去mimic才能使student net經可能的接近teacher net,Chen G[12]等人在優化2步目標檢測網絡分別將teacher net的中間feature map 以及rpn/rcnn的暗知識提取出來讓student net去mimic。其他研究者也有將teacher net的attention信息給student網絡,如Zagoruyko S[22]等人提出spatial-attention,將teacher net的熱力信息傳遞給student net。Yim J等人[23]將teacher net層與層之間的關係作爲student網絡mimic的目標。但是他們設計的的知識蒸餾都是要設計非常複雜的loss function,和複雜的暗知識的提取方式,並且這些方法多是在兩步目標檢測算法中很少用於一步目標檢測中。爲了能用一個簡單有效的知識蒸餾的方式,我們參考生成對抗網絡的架構方式[14]將教師網絡生成的特徵層作爲真實樣本,學生網絡生成的特徵層做爲假樣本,並對兩者做生成對抗訓練,以提高學生網絡在一步目標檢測中的表現。
奇點雲三角肌「秀肌肉」,端化目標檢測模型再獲突破

3 Method

在本文中,我們採用一步目標檢測算法SSD[15]作爲我們的目標檢測算法,SSD目標檢測算法結構主要分成兩部分,1)骨架網絡,作爲特徵提取器。2)Head,在骨架網絡提取的特徵上,檢測出目標的類別和位置。爲了能獲取更好的知識蒸餾效果,合理利用這個兩個部分至關重要。

3.1 Overall Structure

fig 1爲我們算法模型的整體結構,我們首先使用一個容量更大的SSD模型,在充分訓練後將該SSD模型拆分成骨架網絡和SSD-Head,其中骨架網絡作爲teacher net,然後再挑選一個容量較小的CNN作爲student net。我們把teacher net生成的多個feature map作爲true sample,而student net生成的多個feature map作爲fake sample,並且將true sample和fake sample送入D Net中相對應的每個判別網絡(fig 2)中,同時把fake sample輸入到SSD-Head中。

奇點雲三角肌「秀肌肉」,端化目標檢測模型再獲突破
3.2 Training Process

(1)

奇點雲三角肌「秀肌肉」,端化目標檢測模型再獲突破
奇點雲三角肌「秀肌肉」,端化目標檢測模型再獲突破

公式1中的N代表batchsize的大小,D代表判別網絡,Teacher和Student分別代表teacher net和student net, θt、θs、θd分別代表teacher net、student net 和D Net模塊中每個判別網絡的weights。Lconf表示SSD中分類的損失函數,Lloc表示SSD中邊界框的損失函數。

4 Experiment

在本章節,我們將在PASCAL VOC中做實驗來驗證我們的方法,包含20個類別。並且我們的方法訓練的硬件爲two NVIDIA GTX 1080Ti GPUs。訓練所用的軟件框架爲gluoncv。

4.1 Training and testing data

由於時間的關係,我們訓練使用的數據集Pascal Voc 2012trainval和Pascal Voc 2007 trainval sets,測試數據集爲Pascal Voc 2007 test sets。該數據集包含檢測物體的類別和位置信息。評估標準按照Pascal Voc競賽所約定的,通過iou=0.5時的mAP來評估模型檢測精度。而coco數據集上,使用coco 2017 trainset作爲訓練集,coco 2017 test作爲測試集。

4.2 Results

我們將原生的SSD和在不同的Teacher net下知識蒸餾的SSD做比較,最高可以提升student net 2.8mAP。不過有趣的是,當teacher net爲ResNet101,student net爲ResNet18時,提升的效果反而不如ResNet50。而在coco上使用resnet50作爲teacher net,moblinet作爲student net,提升Moblient-SSD 4個mAP。
奇點雲三角肌「秀肌肉」,端化目標檢測模型再獲突破

Table 1. Different student nets are not used GAN-knowledge distillation and the use of a GAN-knowledge distillation in different teacher net test results.
奇點雲三角肌「秀肌肉」,端化目標檢測模型再獲突破

目前已經將該方法使用在faster rcnn上,考慮到時間,目前僅僅在pascal voc 2007上進行測試,coco正在訓練。

Table 2. moblienetv1 use GAN-knowledge distillation in coco.

奇點雲三角肌「秀肌肉」,端化目標檢測模型再獲突破
Table 3. Teacher net爲骨架網絡爲ResNet101的faster rcnn,且使用Pascal Voc 2007 trainval作爲訓練集,在Pascal Voc 2007 test測試集上mAP爲74.8+。第一行和第二行使用GAN Knowledge Distillation[1]方法,第三行爲cvpr2019的 Distilling Object Detectors with Fine-grained Feature Imitation[2]的方法效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章