一、论文阅读和视频学习
1.ShuffleNet V1 & V2
1.1ShuffleNet V1
a.效果
提出了channel shuffle的思想,相比于AlexNet,达到同样的error率的情况下非常轻量级。并且能够不断优化error率,且消耗时间依然小于AlexNet。
b.原理(channel shuffle)
GConv虽然能够减少参数与计算量,但是GConv中不同组之间信息没有交流。channel shuffle即因此提出的。
- 输入特征矩阵经过一个GConv1卷积,得到一个对应的特征矩阵。
- 对每一个GROUP依照卷积的划分进行划分,然后有序重组,即得到了通过channel shuffle的特征矩阵。
- 再对得到的特征矩阵进行GConv2卷积,其就可以融合不同的特征信息。
在网络中使用的group卷积占用的计算量是很少的,大部分计算量是被1×1卷积占用去了。所以改造:
经过验证,Shuffle Net的计算量是最小的。
1.2ShuffleNet V2
计算量主要计算卷积相关的一些指标,但是在GPU中只有一般的计算量在计算卷积,所以不能单纯用FLOPs评判算法计算量。在相同的FLOPs的情况下,并行度高的模型是要比并行度低的模型运行速度快的。
针对此,作者提出了设计一个高效的的网络四条建议:
-
当卷积层的输入特征矩阵与输出特征矩阵channel相等时memory access cost是最小的。
-
当GConv的groups增大时(保持FLOPs不变时),MAC也会增大。
-
网络设计的碎片化程度越高,速度越慢。
-
Element-wise操作带来的影响是不可忽视的。
提出:
2.EfficientNet V3
- 根据以往的经验,增加网络的深度能够得到更加丰富、复杂的特征并且能够很好的应用到其他任务中。但是网络的深度过深会面临梯度消失、训练困难等问题。
- 增加网络的宽度能够获得更高细粒度的特征并且也更容易训练,但对于宽度很大而深度较浅的网络,往往很难学习到更深层次的特征。
- 增加输入网络的图像分辨率能够潜在地获得更高细粒度地特征模板,但对于非常高地输入分辨率,准确率的增益也会减小。并且大分辨率图像会增加计算量。
2.1EfficientNet-B0
2.2MBConv
- 第一个升维的1×1卷积层,它卷积核个数是输入特征矩阵channel的n倍。
- 当n=1的时候,不要第一个1×1的卷积层了
- 关于shortcut连接,仅当输入MBConv结构的特征矩阵与输出的特征矩阵shape相同时才存在。
二、代码练习
1.使用VGG模型进行猫狗大战
1.1下载数据
1.2数据处理
1.3创建 VGG Model
1.4修改最后一层,冻结前面层的参数
1.5训练并测试全连接层
1.6可视化模型预测结果(主观分析)
2.AI艺术鉴赏挑战赛题
三、思考
针对题目并不能够实现很好的效果,这或许就是“知其然,而不知其所以然”的呈现。如果以后要走深度学习的方向,还是应该以熟悉各种模型原理为基础进行学习。