MobileNet系列之MobileNet_v3

摘要:
MobileNet_V3小比MobileNet_v2延迟接近时,精度高6.6%。MobileNet_V3Ligle在COCO数据集检测中比v2快25%,但其精度几乎相同。MobileNet_V3 LargeLRASPP比MobileNet.V2RAPP在Cityscape拆分数据集上的速度快34%。MobileNet_V3主要内容MobileNet_V3专注于让设备高效实现高精度和低延迟的能力,而不是将数据发送到服务器,然后在服务器推理后将其发送回设备。MobileNet_V3使用平台感知NAS进行块搜索以形成全局网络结构,并使用NetAdapt对网络结构执行层级微调。正如论文中提到的,swish的大部分好处可以通过在更深层次使用它来发挥,因此在MobileNet_只有v3结构的中高层使用h-swish。

MobileNet系列之MobileNet_v1

MobileNet系列之MobileNet_v2

导言:

    继MobileNet_v1和v2提出后,在2019年,MobileNet_v3在众人的期盼下出来了,MobileNet_v3论文提出了两个模型,MobileNet_v3-Large和MobileNet_v3-small,其主要区别在于层数不同(其余设计都一样),此外还包括一个用于语义分割的MobileNet_v3-Large LRASPP模型。

   关注公众号CV技术指南,及时获取更多计算机视觉技术总结文章。

MobileNet_v3成就

    MobileNet_v3-Large在ImageNet分类中实现了比MobileNet_v2低百分之20的时延,同时高了3.2%精度。MobileNet_v3-small比MobileNet_v2在时延接近的情况下,高了6.6%的精度。

    MobileNet_v3-Large在COCO数据集检测上,在比v2快了25%,而精度却几乎一样。

    MobileNet_v3-Large LRASPP比MobileNet_v2 RASPP在Cityscapes分割数据集上快了34%。应该可以说是不负众望了。

MobileNet_v3主要内容

    MobileNet_v3着眼于赋予设备高效地实现高精度、低时延的能力,而不是发送数据到服务器,经过服务器推理后再发送回设备。为此,论文提出了以下内容:

1) 补充搜索技术

2) 适用于移动设备环境的非线性的新有效版本

3) 新的高效网络设计

4) 新的高效分割解码器(指的是语义分割)

01  NAS 和NetAdapt

    当前,在人工智能界内有一句名言,所谓人工智能,是越人工越智能。现有的一些网络所具备的高效的性能离不开人对这个网络模型的精心设计与调参。最近几年,如何让计算机根据需求和现有硬件条件自动生成网络已经进入重要研究方向。

    NAS-神经网络架构搜索。NAS通过设定一个空间,选择一个搜索策略在这个空间内搜索,采用一个评估策略对搜索效果进行评估,最终选择评估效果最好的结构。

    在早期,NAS主要进行单元级搜索,使用一些预定义的操作集合,(如卷积、池化等)此外还包括,每一层的卷积核的大小,步长大小,卷积核数量等,这些集合构成了搜索空间,使用一个搜索策略来选择操作集合,在训练集训练这些操作集合组成的网络,并在验证集上评估当达到某个阈值将会停止。

    最近,开始进行Block级的搜索,例如Inception结构,就是一个Block,在搜索空间中使用了不同大小,不同数量的block。搜索策略直接搜索这些block组成网络,进行测试。

    MobileNet_v3使用了用于block搜索的平台感知NAS(PlatformAware NAS for Blockwise Search)构成全局网络结构,使用NetAdapt对网络结构进行layer-level的finetune。使用的搜索目标是 ACC(m) × [LAT(m) / TAR]^w, 这里ACC(m)是模型精度,LAT(m)是延时,TAR是目标延时,w是超参数。

之所以不怎么介绍NAS,是因为NAS需要数以百计甚至上千的GPU来训练数月,例如 NASnet需要在 800 个 GPU 上训练 28 天,对于普通人来说实在有些遥不可及,当然最近也出了一些只需要少量GPU就能训练的算法,但至少现在还没到那种能满足普遍需求的时候。如有需要,公众号中有NAS的一篇较为全面的综述,可扫描文末二维码关注公众号。

网络改进

    在搜索得到的网络的基础上,提出了一些改进的方案。在网络的开始和结束部分,重新设计了计算量大的层,此外还提出了一种新的非线性,即h-swish,h-swish是最近swish的改进版本,计算速度更快,也更易于量化。

02  Redesigning Expensive Layers

MobileNet系列之MobileNet_v3第1张MobileNet系列之MobileNet_v3第2张

    在MobileNet_v2的Inverted bottleneck结构中使用1x1卷积作为最后一层,用于扩大到一个更高维的特征空间,这一层对于提供丰富的特征用于预测极为重要,但也增加了延时。

    为了降低延时,并保持高维空间特征,MobileNet_v3中把这一层移到了平均池化层的后面,在最后的特征集现在只需要计算1x1的分辨率,而不是原来的7x7。这种设计选择的结果是,在计算和延迟方面,特性的计算变得几乎是免费的。

    一旦降低了该特性生成层的成本,就不再需要以前的瓶颈投影层来减少计算量。该观察允许删除前一个瓶颈层中的投影和过滤层,从而进一步降低计算复杂度。原始阶段和优化后的阶段如上图所示。

    另一个耗时的层是第一层卷积,当前的移动模型倾向于在一个完整的3x3卷积中使用32个滤波器来构建初始滤波器库进行边缘检测。通常这些过滤器是彼此的镜像。mobileNet_v3对这一层使h-swish非线性激活函数,其好处是使用了h-swish后滤波器的数量可以减少到16,而同时能够保持与使用ReLU或swish的32个滤波器相同的精度。这节省了额外的3毫秒和1000万 MAdds。

03   Nonlinearities

    在一篇语义分割的论文中提出了使用swish的非线性函数来代替ReLU函数,它可以显著提高神经网络的精度,其定义为:swish x = x · σ(x),这里σ(x)是sigmoid函数。然而swish虽然提高了精度,但sigmoid函数计算是极为昂贵的,在嵌入式移动端不适合它的存在,因此,MobileNet_V3提出了计算更为简便的h-swish函数,其定义如下:

MobileNet系列之MobileNet_v3第3张MobileNet系列之MobileNet_v3第2张

    如下图所示,这里的h是hard的意思,简单来说就是没那么平滑。经过实践检验,sigmoid和swish函数与其hard版本的函数在精度上并没有什么明显的差异。但是hard版本的计算却简便得多。

MobileNet系列之MobileNet_v3第5张MobileNet系列之MobileNet_v3第2张

    一般来说,在不同的设备上,对于sigmoid函数都是采用近似的方式实现,(例如,在高数中采用划分矩形求面积来近似实现积分,这里的近似是使用某些实现方式近似实现sigmoid函数),因此不同的实现方式会导致潜在的精度损失。而几乎所有的软件和硬件设备都可以直接实现ReLU6,因此这里的h-swish将不会出现sigmoid的情况,此外,h-swish可以通过分段函数实现(这是对h-swish的优化,下图是与没有优化的实验效果对比),这样会降低内存访问次数,从而大大降低了等待时间成本。

    论文中提到,在较深的层次中使用更能发挥swish的大多数好处,因此在MobileNet_v3结构中 中高层才使用h-swish。此外,h-swish即便使用了这些优化,但仍然引入了一些延迟成本,如下图所示,使用分段函数作为h-swish的优化比没有优化效果明显要好,节约了6ms(大概百分之10), 而相比于ReLU, 优化后的h-swish仅引入了1ms的成本,但精度更高。

MobileNet系列之MobileNet_v3第7张MobileNet系列之MobileNet_v3第2张

04   Large squeeze-and-excite

    先简要介绍一下这个模块,论文中并没有介绍。

    这是一个注意力机制中的一个模块SE,即插即用,用于现有的一些网络。其分为两个部分,一个是Squeeze部分,通过AdaptiveAvgPool2d将前一层的空间分辨率压缩为1x1,第二个部分是Excitation部分,对压缩后的部分进行线性变化(Linear),再ReLU,再Linear(通道数要与下一层通道数一致),再Sigmoid。将得到的一个1x1x下一层通道数 的层与原先网络直接卷积得到的下一层逐像素相乘,这样的好处是有些特征会被突出,有些特征会被抑制,从而实现模型的自注意力机制。

MobileNet系列之MobileNet_v3第9张MobileNet系列之MobileNet_v3第2张

    回到本文,MobileNet_v3中加入了这个模块,但进行了一些调整。一个是将sigmoid换成了h-swish。第二个是将第二Linear的通道数变为下一层的1/4。但这样就没办法逐像素相乘了,因为通道数不匹配,然后我去找了MobileNet_v3的代码,发现它在通道数变为1/4后又使用expand_as将其扩展成了下一层的通道数。

MobileNet系列之MobileNet_v3第11张MobileNet系列之MobileNet_v3第2张

MobileNet系列之MobileNet_v3第13张MobileNet系列之MobileNet_v3第2张

MobileNet_v3结构:

MobileNet系列之MobileNet_v3第15张MobileNet系列之MobileNet_v3第2张

MobileNet系列之MobileNet_v3第17张MobileNet系列之MobileNet_v3第2张

MobileNet系列之MobileNet_v3第19张MobileNet系列之MobileNet_v3第2张

实验结论

    在本文开头已经介绍了MobileNet_v3的成就,记住那些即可,这里只给出图,就不多介绍了,无非就是不同的超参数下其精度和延时有何变化,在某某数据集中与某某模型对比。稍微看看足以

MobileNet系列之MobileNet_v3第21张MobileNet系列之MobileNet_v3第2张

MobileNet系列之MobileNet_v3第23张MobileNet系列之MobileNet_v3第2张

MobileNet系列之MobileNet_v3第25张MobileNet系列之MobileNet_v3第2张

MobileNet系列之MobileNet_v3第27张MobileNet系列之MobileNet_v3第2张

 

本文来源于公众号 CV技术指南 的模型解读系列。

欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

 在公众号中回复关键字 “技术总结” 可获取以下文章的汇总pdf。

MobileNet系列之MobileNet_v3第29张MobileNet系列之MobileNet_v3第2张

其它文章

北京大学施柏鑫:从审稿人视角,谈谈怎么写一篇CVPR论文

Siamese network总结

计算机视觉专业术语总结(一)构建计算机视觉的知识体系

欠拟合与过拟合技术总结

归一化方法总结

论文创新的常见思路总结

CV方向的高效阅读英文文献方法总结

计算机视觉中的小样本学习综述   

知识蒸馏的简要概述   

优化OpenCV视频的读取速度

NMS总结   

损失函数技术总结

注意力机制技术总结   

特征金字塔技术总结   

池化技术总结

数据增强方法总结   

CNN结构演变总结(一)经典模型

CNN结构演变总结(二)轻量化模型 

CNN结构演变总结(三)设计原则

如何看待计算机视觉未来的走向   

CNN可视化技术总结(一)-特征图可视化

CNN可视化技术总结(二)-卷积核可视化

CNN可视化技术总结(三)-类可视化

CNN可视化技术总结(四)-可视化工具与项目

免责声明:文章转载自《MobileNet系列之MobileNet_v3》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java导出CSV文件分布式系统的一致性问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

高斯模糊的算法(高斯卷积 高斯核)

通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果。 "模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur)。它将正态分布(又名"高斯分布")用于图像处理。 本文介绍"高斯模糊"的算法,你会看到这是一个非常简单易懂的算法。本质上,它是一种数据平滑技术(data smoothing),适用于多个场合,图像处理...

CSAR——Channel-wise and Spatial Feature Modulation Network for Single Image Super-Resolution

1. 摘要 CNN 中的特征包含着不同类型的信息,它们对图像重建的贡献也不一样。然而,现在的大多数 CNN 模型却缺少对不同信息的辨别能力,因此也就限制了模型的表示容量。 另一方面,随着网络的加深,来自前面层的长期信息很容易在后面的层被削弱甚至消失,这显然不利于图像的超分辨。 作者提出了一个通道和空间特征调制(CSFM)网络,其中一系列特征调制记忆(FMM...

神经网络+增强学习

该文章转至:https://www.cnblogs.com/xlturing/p/5844555.html 马里奥AI实现方式探索 ——神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典的马里奥形象出现。平时我们都是人来玩马里奥游戏,能否可以让马里...

动手学深度学习 | 经典卷积神经网络LeNet | 21

目录 LeNet 代码 QA LeNet 上面是LeNet的结构示意图。 模型定义 net = nn.Sequential( # 这里输出是28*28,所以要padding=2,填充为32*32 nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(), nn.A...

多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】

原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/例题与常用套路【入门】 前置技能 对复数以及复平面有一定的了解 对数论要求了解:逆元,原根,中国剩余定理 对分治有充足的认识 对多项式有一定的认识,并会写...

数字识别,神经网络

来源:https://www.numpy.org.cn/deep/basics/fit_a_line.html 数字识别 本教程源代码目录在book/recognize_digits,初次使用请您参考Book文档使用说明。 #说明: 硬件环境要求: 本文可支持在CPU、GPU下运行 Docker镜像支持的CUDA/cuDNN版本: 如果使用了Docke...