論文地址:Benchmark Analysis of Representative Deep Neural Network Architecture
一 爲什麼讀這篇
蛙神推薦的,對截止2018年10月出現的各種經典CNN網絡的一個測評,算是比較新的一篇綜述,通過閱讀這篇,搞清楚CNN最新的發展脈絡。
二 截止閱讀時這篇論文的引用次數
被引用次數:25。
三 相關背景介紹
來自意大利和法國的學者,arXiv上的時間爲2018年10月
四 論文的主要貢獻
1 分析對比了40多種網絡在普通平臺和嵌入式平臺上的識別準確率,模型複雜度,計算複雜度,內存使用,預測時間
2 讓研究者知道目前網絡已發展到什麼程度,有哪些方向值得繼續探索
3 讓實踐者知道如何在資源限制下選擇最好的網絡
五 詳細解讀
1 介紹
其他文章都是分析網絡層的組成和識別性能,對計算代價方面(內存使用,預測時間)及其對識別效果的影響的分析較少。Canziani等人在2016年年中的時候對嵌入式系統上的網絡做過一些分析,不過比較的網絡個數較少。Huang等人在2017年的cvpr上分析過一批SOTA的目標檢測網絡的速度與準確率之間的權衡。本文的目的是進行更全面的比較,同時也在兩種平臺上進行比較。
幾個重要發現
- 識別精度不隨操作次數的增加而增加:事實上,有些架構的操作次數相對較少,如SE-ResNeXt-50 (32x4d),其識別精度非常高。
- 模型複雜度和準確率之前並不是線性關係
- 期望的吞吐量(例如用每秒推斷的數量表示)是可達到的精度的上限
- 不是所有的網絡都有效的使用了它們的參數
- 幾乎所有網絡在高配GPU上實時性能都不錯,但只有少數在嵌入式上表現過關
- 即使網絡的模型複雜度很低也得佔至少0.6GB的顯存
2 benchmark
軟件環境:PyTorch,cuDNN-v5.1,CUDA-v9.0
硬件環境-工作站:Titan X,3840 CUDA cores
硬件環境-嵌入式:Jetson TX1 board,Maxwell 256 CUDA cores
3 網絡架構
AlexNet 2012-NIPS
VGG家族:VGG-11, VGG-13, VGG-16, VGG-19,分別使用和不使用BN的版本 2014
BN-Inception 2015-ICML
GoogLeNet 2015-CVPR
SqueezeNet-v1.0, SqueezeNet-v1.1 2016
ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152 2016-CVPR
Inception-v3 2016-CVPR, Inception-v4, Inception-ResNet-v2 2016-ICLR
DenseNet-121, DenseNet-169, DenseNet-201, growth rate=32 2017-CVPR
DenseNet-161 growth rate=48 2017-CVPR
ResNeXt-101(32x4d), ResNeXt-101(64x4d) 2017-CVPR
Xception 2017-CVPR
DualPathNet-68, DualPathNet-98, DualPathNet-131 2017-NIPS
SE-ResNet-50, SENet-154, SE-ResNet-101, SE-ResNet-152, SE-ResNeXt-50(32x4d), SE-ResNeXt-101(32x4d) 2018-CVPR
NASNet-A-Large, NASNet-A-Mobile 2018-CVPR
MobileNet-v1 2017, MobileNet-v2 2018-CVPR
ShuffleNet 2018
4 性能指標
NASNet-A-Large的圖像大小爲331x331
InceptionResNet-v2,Inception-v3,Inception-v4,Xception的圖像大小爲299x299
其餘爲224x224
A 準確率
ImageNet-1k驗證集上的TOP1和TOP5準確率
B 模型複雜度
需要學習的總參數量
C 內存使用
爲網絡分配的內存和不同batch下處理需要的內存(batch1,2,4,8,16,32,64)
D 計算複雜度
floating-point operations(FLOPs)
乘法和加法的浮點運算。乘法和加法被記爲兩次浮點運算,因爲許多最近的模型卷積都沒有bias。
E 預測時間
5 評測結果
A 準確率 VS 計算複雜度 VS 模型複雜度
橫軸表示計算複雜度,縱軸表示準確率,球的大小表示模型複雜度
NASNet-A-Large有最高的準確率,同時計算複雜度也最高
在低計算複雜度下,SE-ResNeXt-50(32x4d)有最高的準確率同時模型複雜度也不高(2.76M個參數)
計算複雜度和準確率之間沒直接關係(SENet-154 VS SE-ResNeXt-101(32x4d))。模型複雜度和準確率之間也沒直接關係(VGG-13 VS ResNet-18)
B 準確率 VS 學習能力
網絡並未充分利用其所有的參數,所以有許多方法研究怎麼壓縮模型還能保持原模型的準確率。用TOP1準確率密度來衡量模型利用其參數的效率(TOP1準確率除其所有參數)
這點很明顯,專門針對移動端研發的網絡參數利用率更高,比如SqueezeNets,ShuffleNet,MobileNets和NASNet-A-Mobile
NASNet-A-Mobile和MobileNet-v2在準確率方面勝出
除此之外,Inception-v4和SE-ResNeXt-101勝出
C 預測時間
綠色越重性能越好,紅色越重性能越差
D 準確率 VS 預測時間
E 內存使用
當batch爲1時,絕大部分模型需要的顯存小於1GB
綠色越重需要的內存越少
從這個圖可以看出,絕大多數網絡batch不超過64顯存也沒佔多少,爲啥batch到128就不行了呢
F 內存使用 VS 模型複雜度
兩者呈線性關係
G 限制下的最佳網絡
有問題查這個表就行了
內存使用:高(<=1.4GB)中(<=1GB)低(<=0.7G)
計算時間:半實時(15FPS),實時(30FPS),超實時(60FPS)
6 結論
把Introduction提到的幾個重要發現複述了一遍
六 讀後感
根據這篇文章的結論,感覺綜合下來用SE-ResNeXt-50或101(32x4d)就行了。另外,對於網絡的評估指標有了更進一步的認識。不是所有網絡都充分利用了它們的參數,模型的準確率並不直接與其複雜度相關。
七 補充
關於複雜度分析可以看下這兩篇