新智元專欄
論文下載:https://arxiv.org/pdf/1712.07493.pdf
深度網路不斷地提升電腦視覺任務的性能, 然而, 性能提高往往卻伴隨著愈高的計算複雜度, 這嚴重限制了深度網路在資源受限的平臺(如手機, 移動嵌入式設備等)的應用。 因此, 研究深度網路的加速吸引大量工作的關注。 近日, 中山大學、哈爾濱工業大學、桂林電子大學, 香港理工大學以及商湯科技公司聯合研究團隊提出基於類小波自編碼機的深度網路加速法。
模型介紹
近年來, 深度卷積神經網路在很多電腦視覺任務上取得非常大的突破, 但精度的提高往往以增加模型計算複雜度為代價。 例如, 在ImageNet圖像分類任務上, VGG16相比AlexNet提高了約8%的識別率的同時, 卻增加了約20倍的運算開銷。 因而高精度模型往往也需要極大的運算開銷, 如VGG16分類網路處理單張224×224的圖像, 需要約153.6億次浮點數運算。 大運算開銷意味著對處理設備的高要求,
迄今為止, 已經有一系列工作致力於深度網路加速的研究。 常見的工作主要有兩類, 第一類通過採用張量分解對卷積運算等價優化的方法實現計算加速。 概括地說, 這類方法一般步驟為:
1)通過對預訓練好的網路的卷積核進行低秩分解, 獲得這個網路的近似表達模型;
2)通過再次訓練, 重新微調近似表達模型的參數。
該類方法的不足在於, 涉及多個步驟的實現方式, 致使其難以較好地平衡模型識別精度和加速效果。
另一類方法通過在深度網路中採用量化的權重和回應值的方法來減少運算量。
顧此, 作者根據以下兩個準則設計加速方法:
1)不改變網路原本的結構, 以保證方法的普適性, 使其比較容易地推廣到具有不同結構的網路模型中;
2)提升網路模型速度的同時要把識別效果的損失控制在可接受的範圍。
表1:模型精度的提高往往以增加模型計算複雜度為代價
採用下採樣後的圖片替代原圖達到加速目的
由於輸入圖片的解析度大小直接跟深度網路浮點數運算量相關, 在網路訓練和測試過程採用下採樣後的圖片替代原圖作為輸入是一個直接、看似可行的加速方法。 如表1所示, 通過簡單縮放下採樣的方法雖然取得了可觀的加速比, 但由於資訊的丟失, 不可避免地導致識別精度的明顯下降。 為了解決這個問題, 作者提出了類小波自編碼機(Wavelet-like Auto-Encoder, WAE)。 方法的基本框架如如圖1所示。
●WAE加速模型
WAE把輸入圖片分解成兩個低解析度的小圖, 並以小圖作為深度網路的輸入,從而達到加速的效果。為了保證模型加速的同時識別精度不會有明顯損失,作者對兩個分解得到的子圖進行約束,使其具有以下兩個性質:
1)兩個子圖分別攜帶輸入圖像的高頻和低頻資訊,並能利用一個簡單的解碼過程合成原圖。這樣子,原圖大部分的資訊能夠保留下來以保證加速模型的識別精度。
2)高頻子圖攜帶盡可能少的信息,因此,能夠利用一個很小的網路來對其進行處理,避免引入大量的計算開銷。
WAE包括一個編碼層和一個解碼層。編碼層把輸入圖片分解成兩個低解析度子圖,解碼層基於這兩個子圖合成輸入圖像。
●損失函數
作者定義一個變換損失函數,用於訓練WAE。該損失函數包括輸入圖像和合成圖像的重構誤差以及高頻子圖的能量最小化損失函數。
●識別預測
低頻子圖輸入到一個基準識別網路(如VGG16,ResNet等)後得到特徵圖,並利用一個小網路將高頻子圖的資訊與特徵圖相融合,得到最後的識別結果。
實驗結果
作者在大規模物體識別的資料集ImageNet上進行實驗。該資料集覆蓋1,000類物體,其訓練集由大約128萬張圖像及其類別標籤組成,驗證集由5萬張圖片及其類別標籤組成。所有對比方法都在該訓練集進模型訓練,並在該驗證集上測試模型性能。
VGG16實驗結果:
作者首先用VGG16-Net作為基準模型,並比較WAE加速模型(表格2中的Ours)和原始的VGG16-Net的識別性能以及在CPU和GPU的運行效率。在CPU上,加速模型以僅僅0.22%的精度損失代價取得3.13×的加速比。而在GPU上,加速比則為2.59×。
其次,作者將WAE與目前最新的加速模型(表格2中的ThiNet和Taylor)進行對比。實驗結果(表格2)表明,WAE可以更好的平衡模型的識別性能和加速效果。
另外,為了突出WAE的優越性,作者還設計了兩個比較模型(表格2中的Wavelet+CNN和Decomposition+CNN)。與WAE類似,這兩個模型也是通過把原圖分解為低解析度子圖的方法達到加速的目的,從表格2可以看出,WAE性能表現也優於這兩個模型。
ResNet實驗結果:
為了證明WAE能夠泛化到具有不同結構的網路,作者進一步用ResNet50作為基準網路進行實驗對比。儘管ResNet50是一個更深、更緊湊的網路,WAE同樣可以取得1.88×的加速比,而識別精度的下降僅有0.8%,在識別精度和加速比上都優於ThiNet。
代碼和模型連結
https://github.com/tianshuichen/Wavelet-like-Auto-Encoder
引用:
[1] Tianshui Chen, Liang Lin, Wangmeng Zuo, Xiaonan Luo, Lei Zhang, Learning a Wavelet-like Auto-Encoder to Accelerate Deep Neural Networks, AAAI 2018.
[2] Karen Simonyan, Andrew Zisserman, Very Deep Convolutional Networks for Large-Scale Image Recognition, ICLR 2015.
[3] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, Deep Residual Learning for Image Recognition, CVPR 2016.
並以小圖作為深度網路的輸入,從而達到加速的效果。為了保證模型加速的同時識別精度不會有明顯損失,作者對兩個分解得到的子圖進行約束,使其具有以下兩個性質:1)兩個子圖分別攜帶輸入圖像的高頻和低頻資訊,並能利用一個簡單的解碼過程合成原圖。這樣子,原圖大部分的資訊能夠保留下來以保證加速模型的識別精度。
2)高頻子圖攜帶盡可能少的信息,因此,能夠利用一個很小的網路來對其進行處理,避免引入大量的計算開銷。
WAE包括一個編碼層和一個解碼層。編碼層把輸入圖片分解成兩個低解析度子圖,解碼層基於這兩個子圖合成輸入圖像。
●損失函數
作者定義一個變換損失函數,用於訓練WAE。該損失函數包括輸入圖像和合成圖像的重構誤差以及高頻子圖的能量最小化損失函數。
●識別預測
低頻子圖輸入到一個基準識別網路(如VGG16,ResNet等)後得到特徵圖,並利用一個小網路將高頻子圖的資訊與特徵圖相融合,得到最後的識別結果。
實驗結果
作者在大規模物體識別的資料集ImageNet上進行實驗。該資料集覆蓋1,000類物體,其訓練集由大約128萬張圖像及其類別標籤組成,驗證集由5萬張圖片及其類別標籤組成。所有對比方法都在該訓練集進模型訓練,並在該驗證集上測試模型性能。
VGG16實驗結果:
作者首先用VGG16-Net作為基準模型,並比較WAE加速模型(表格2中的Ours)和原始的VGG16-Net的識別性能以及在CPU和GPU的運行效率。在CPU上,加速模型以僅僅0.22%的精度損失代價取得3.13×的加速比。而在GPU上,加速比則為2.59×。
其次,作者將WAE與目前最新的加速模型(表格2中的ThiNet和Taylor)進行對比。實驗結果(表格2)表明,WAE可以更好的平衡模型的識別性能和加速效果。
另外,為了突出WAE的優越性,作者還設計了兩個比較模型(表格2中的Wavelet+CNN和Decomposition+CNN)。與WAE類似,這兩個模型也是通過把原圖分解為低解析度子圖的方法達到加速的目的,從表格2可以看出,WAE性能表現也優於這兩個模型。
ResNet實驗結果:
為了證明WAE能夠泛化到具有不同結構的網路,作者進一步用ResNet50作為基準網路進行實驗對比。儘管ResNet50是一個更深、更緊湊的網路,WAE同樣可以取得1.88×的加速比,而識別精度的下降僅有0.8%,在識別精度和加速比上都優於ThiNet。
代碼和模型連結
https://github.com/tianshuichen/Wavelet-like-Auto-Encoder
引用:
[1] Tianshui Chen, Liang Lin, Wangmeng Zuo, Xiaonan Luo, Lei Zhang, Learning a Wavelet-like Auto-Encoder to Accelerate Deep Neural Networks, AAAI 2018.
[2] Karen Simonyan, Andrew Zisserman, Very Deep Convolutional Networks for Large-Scale Image Recognition, ICLR 2015.
[3] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, Deep Residual Learning for Image Recognition, CVPR 2016.