一 为什么读这篇
蛙神推荐的,对截止2018年10月出现的各种经典CNN网络的一个测评,算是比较新的一篇综述,通过阅读这篇,搞清楚CNN最新的发展脉络。
二 截止阅读时这篇论文的引用次数
0次。毕竟10月才出的。。
三 相关背景介绍
来自意大利和法国的学者,arXiv上的时间为2018年10月
四 论文的主要贡献
1 分析对比了40多种网络在普通平台和嵌入式平台上的识别准确率,模型复杂度,计算复杂度,内存使用,预测时间
2 让研究者知道目前网络已发展到什么程度,有哪些方向值得继续探索
3 让实践者知道如何在资源限制下选择最好的网络
五 详细解读
1 介绍
其他文章都是分析网络层的组成和识别性能,对计算代价方面(内存使用,预测时间)及其对识别效果的影响的分析较少。Canziani等人在2016年年中的时候对嵌入式系统上的网络做过一些分析,不过比较的网络个数较少。Huang等人在2017年的cvpr上分析过一批SOTA的目标检测网络的速度与准确率之间的权衡。本文的目的是进行更全面的比较,同时也在两种平台上进行比较。
几个重要发现
- 识别准确率并不随着运算的增加而增加
- 模型复杂度和准确率之前并不是线性关系
- 期望的吞吐量是可达准确率的上界???
- 不是所有的网络都有效的使用了它们的参数
- 几乎所有网络在高配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的图像大小为229x229
其余为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)就行了。另外,对于网络的评估指标有了更进一步的认识。不是所有网络都充分利用了它们的参数,模型的准确率并不直接与其复杂度相关。
七 补充
关于复杂度分析可以看下这两篇