2024年最新【第26篇】MobileNets:用于移动视觉应用的高效卷积神经网络,2024年Python大厂面试分享

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

D K ⋅ D K ⋅ M ⋅ D F ⋅ D F (4) D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F} \tag{4} DK​⋅DK​⋅M⋅DF​⋅DF​(4)

相对于标准卷积,深度卷积非常有效。 然而,它只过滤输入通道,并没有组合它们来创建新功能。 因此,需要一个额外的层,通过 1 × 1 卷积计算深度卷积输出的线性组合,以生成这些新特征。

深度卷积和 1×1(逐点)卷积的组合称为深度可分离卷积,最初是在 [26] 中引入的。

深度可分离卷积计算成本:

D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F (5) D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F} \tag{5} DK​⋅DK​⋅M⋅DF​⋅DF​+M⋅N⋅DF​⋅DF​(5)

这是depthwise和1×1 pointwise卷积的总和。

通过将卷积表示为过滤和组合的两步过程,我们可以减少以下计算:

D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F = 1 N + 1 D K 2 \begin{aligned} & \frac{D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F}}{D_{K} \cdot D_{K} \cdot M \cdot N \cdot D_{F} \cdot D_{F}} \\ =& \frac{1}{N}+\frac{1}{D_{K}^{2}} \end{aligned} =​DK​⋅DK​⋅M⋅N⋅DF​⋅DF​DK​⋅DK​⋅M⋅DF​⋅DF​+M⋅N⋅DF​⋅DF​​N1​+DK2​1​​

MobileNet 使用 3 × 3 深度可分离卷积,它使用的计算量比标准卷积少 8 到 9 倍,而准确度仅略有降低,如第 4 节所示。

空间维度的额外分解,例如 [16, 31] 并没有节省太多额外的计算,因为在深度卷积中花费的计算很少。

3.2、网络结构和训练


MobileNet 结构建立在上一节中提到的深度可分离卷积之上,但第一层是全卷积。通过以如此简单的术语定义网络,我们能够轻松地探索网络拓扑以找到一个好的网络。 MobileNet 架构在表 1 中定义。

image-20220125175313205

所有层都遵循 batchnorm [13] 和 ReLU 非线性,但最终全连接层除外,它没有非线性并馈送到 softmax 层进行分类。图 3 将具有常规卷积、batchnorm 和 ReLU 非线性的层与具有深度卷积、1×1 逐点卷积以及每个卷积层之后的 batchnorm 和 ReLU 的分解层进行了对比。在深度卷积和第一层中使用跨步卷积处理下采样。最终的平均池化在全连接层之前将空间分辨率降低到 1。将深度卷积和点卷积计算为单独的层,MobileNet 有 28 层。

image-20220125175049382

仅仅根据少量的多加来定义网络是不够的。确保这些操作可以有效实施也很重要。例如,非结构化稀疏矩阵运算通常不会比密集矩阵运算快,直到非常高的稀疏度。我们的模型结构将几乎所有的计算都放入密集的 1 × 1 卷积中。这可以通过高度优化的通用矩阵乘法 (GEMM) 函数来实现。卷积通常由 GEMM 实现,但需要在内存中进行名为 im2col 的初始重新排序,以便将其映射到 GEMM。例如,这种方法用于流行的 Caffe 包 [15]。 1×1 卷积不需要在内存中进行这种重新排序,并且可以直接使用 GEMM 实现,它是最优化的数值线性代数算法之一。如表 2 所示,MobileNet 将 95% 的计算时间用于 1 × 1 卷积,其中也有 75% 的参数。几乎所有附加参数都在全连接层中。

image-20220125175356517

MobileNet 模型在 TensorFlow [1] 中使用 RMSprop [33] 进行训练,该模型具有类似于 Inception V3 [31] 的异步梯度下降。 然而,与训练大型模型相反,我们使用较少的正则化和数据增强技术,因为小型模型过拟合的问题较少。 在训练 MobileNets 时,我们不使用侧头或标签平滑,并通过限制大型 Inception 训练中使用的小作物的大小来额外减少图像失真量 [31]。 此外,我们发现在深度滤波器上放置很少或没有权重衰减(l2 正则化)非常重要,因为它们中的参数非常少。 对于下一节中的 ImageNet 基准,所有模型都使用相同的训练参数进行训练,而不管模型的大小。

3.3、宽度乘数:更薄的模型


尽管基本的 MobileNet 架构已经很小且延迟很低,但很多时候特定的用例或应用程序可能需要模型更小更快。 为了构建这些更小、计算成本更低的模型,我们引入了一个非常简单的参数 α,称为宽度乘数。 宽度乘数 α 的作用是在每一层均匀地细化网络。 对于给定的层和宽度乘数 α,输入通道的数量 M 变为 αM,输出通道的数量 N 变为 αN。

具有宽度乘数 α 的深度可分离卷积的计算成本为:

D K ⋅ D K ⋅ α M ⋅ D F ⋅ D F + α M ⋅ α N ⋅ D F ⋅ D F (6) D_{K} \cdot D_{K} \cdot \alpha M \cdot D_{F} \cdot D_{F}+\alpha M \cdot \alpha N \cdot D_{F} \cdot D_{F} \tag{6} DK​⋅DK​⋅αM⋅DF​⋅DF​+αM⋅αN⋅DF​⋅DF​(6)

其中 α ∈ ( 0 , 1 ] \alpha \in(0,1] α∈(0,1]典型设置为 1, 0.75, 0.5 和 0.25。α = 1 是基线 MobileNet,α < 1 是缩减的 MobileNets。宽度乘数具有降低计算成本和二次方参数数量的效果 大约 a 2 a^{2} a2。宽度乘数可以应用于任何模型结构,以定义一个新的更小的模型,具有合理的精度、延迟和大小权衡。它用于定义一个需要从头开始训练的新的缩减结构。

3.4、分辨率乘数:减少表示


降低神经网络计算成本的第二个超参数是分辨率乘数 ρ。 我们将其应用于输入图像,并且每一层的内部表示随后被相同的乘数减少。 在实践中,我们通过设置输入分辨率来隐式设置 ρ。

我们现在可以将网络核心层的计算成本表示为具有宽度乘数 α 和分辨率乘数 ρ 的深度可分离卷积:

D K ⋅ D K ⋅ α M ⋅ ρ D F ⋅ ρ D F + α M ⋅ α N ⋅ ρ D F ⋅ ρ D F (7) D_{K} \cdot D_{K} \cdot \alpha M \cdot \rho D_{F} \cdot \rho D_{F}+\alpha M \cdot \alpha N \cdot \rho D_{F} \cdot \rho D_{F}\tag{7} DK​⋅DK​⋅αM⋅ρDF​⋅ρDF​+αM⋅αN⋅ρDF​⋅ρDF​(7)

其中 ρ ∈ ( 0 , 1 ] \rho \in(0,1] ρ∈(0,1]通常是隐式设置的,因此网络的输入分辨率为 224、192、160 或 128。ρ = 1 是基线 MobileNet,ρ < 1 是减少计算 MobileNets。分辨率乘数具有 将计算成本降低 ρ 2 \rho^{2} ρ2 的效果。

image-20220125181421083

作为一个例子,我们可以看看 MobileNet 中的一个典型层,看看深度可分离卷积、宽度乘数和分辨率乘数如何降低成本和参数。 表 3 显示了层的计算和参数数量,因为架构收缩方法依次应用于层。 第一行显示了一个完整卷积层的 Mult-Adds 和参数,输入特征图大小为 14 × 14 × 512,内核 K 大小为 3 × 3 × 512 × 512。我们将在下一节中详细介绍 在资源和准确性之间进行权衡。

四、实验

===============================================================

在本节中,我们首先研究深度卷积的影响以及通过减少网络宽度而不是层数来选择收缩。 然后,我们展示了基于两个超参数减少网络的权衡:宽度乘数和分辨率乘数,并将结果与许多流行模型进行比较。 然后,我们研究了应用于许多不同应用程序的 MobileNets。

4.1、模型选择


首先,我们展示了具有深度可分离卷积的 MobileNet 与使用全卷积构建的模型相比的结果。 在表 4 中,我们看到与全卷积相比,使用深度可分离卷积仅将 ImageNet 上的准确率降低了 1%,从而极大地节省了多重加法和参数。

image-20220125211017227

接下来,我们展示了将具有宽度乘数的较薄模型与使用较少层的较浅模型进行比较的结果。 为了使 MobileNet 更浅,去除了表 1 中特征大小为 14×14×512 的 5 层可分离滤波器。 表 5 显示,在相似的计算和参数数量下,使 MobileNets 更薄比使它们更浅 3% 好。

image-20220125211031048

4.2、模型收缩超参数


image-20220125211233713

表 6 显示了使用宽度乘数 α 缩小 MobileNet 架构的精度、计算量和大小权衡。 精度平稳下降,直到架构在 α = 0.25 时最小。

image-20220125211343670

表 7 显示了通过训练具有降低的输入分辨率的 MobileNets 对不同分辨率乘数的精度、计算和大小权衡。 精度在分辨率范围内平稳下降。

image-20220125211820734

图 4 显示了由宽度乘数 α ∈ { 1 , 0.75 , 0.5 , 0.25 } \alpha \in\{1,0.75,0.5,0.25\} α∈{1,0.75,0.5,0.25} 和分辨率 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128} 。 当模型在 α = 0.25 时变得非常小时,结果是对数线性的,并带有跳跃。

image-20220125213202997

图 5 显示了 ImageNet 准确率 和16个模型在宽度系数 α ∈ { 1 , 0.75 , 0.5 , 0.25 } \alpha \in\{1,0.75,0.5,0.25\} α∈{1,0.75,0.5,0.25}和分辨率 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}参数数量之间的权衡。

image-20220125213836662

表 8 将完整的 MobileNet 与原始的 GoogleNet [30] 和 VGG16 [27] 进行了比较。 MobileNet 几乎与 VGG16 一样准确,同时体积小 32 倍,计算密集度低 27 倍。 它比 GoogleNet 更准确,同时体积更小,计算量减少 2.5 倍以上。

image-20220125213855076

表 9 比较了宽度乘数 α = 0.5 和分辨率降低 160 × 160 的缩减 MobileNet。缩减 MobileNet 比 AlexNet [19] 好 4%,同时比 AlexNet 小 45 倍,计算量少 9.4 倍。 在大小相同且计算量减少 22 倍的情况下,它也比 Squeezenet [12] 好 4%。

4.3、细粒度识别


image-20220125214030180

我们训练 MobileNet 在斯坦福狗数据集 [17] 上进行细粒度识别。 我们扩展了 [18] 的方法,并从网络上收集了比 [18] 更大但噪声更大的训练集。 我们使用嘈杂的网络数据来预训练细粒度的狗识别模型,然后在斯坦福狗训练集上微调模型。 斯坦福狗测试集的结果在表 10 中。MobileNet 几乎可以在大大减少计算量和大小的情况下达到 [18] 的最新结果。

4.4、大规模地理定位


PlaNet [35] 将确定照片拍摄地点的任务作为分类问题。 该方法将地球划分为作为目标类的地理单元格,并在数百万张带有地理标签的照片上训练卷积神经网络。 PlaNet 已被证明可以成功地定位大量照片,并且在完成相同任务的情况下优于 Im2GPS [6, 7]。

image-20220125214648241

我们使用 MobileNet 架构对相同数据重新训练 PlaNet。 而基于 Inception V3 架构 [31] 的完整 PlaNet 模型具有 5200 万个参数和 57.4 亿个多重加法。 MobileNet 模型只有 1300 万个参数,通常 300 万个用于主体,1000 万个用于最后一层和 58 万个多重加法。 如表 11 所示,与 PlaNet 相比,MobileNet 版本的性能仅略有下降,尽管它更紧凑。 此外,它仍然大大优于 Im2GPS。

4.5、人脸属性


一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值