点击上方 "蓝字" 关注 "AI 开发者"
深度学习融入到移动端的最新创意
将深度学习融合到移动端正成为人工智能领域最活跃的研究领域之一. 而设计能够在移动端运行时有效执行的深度学习模型, 则需要对神经网络中的许多架构范例进行更进一步的思考.
移动端的深度学习模型需要平衡复杂神经网络结构的精度和移动运行时的性能约束. 在移动端深度学习领域中, 计算机视觉仍然是最具挑战性的领域之一.
在 2017 年, 谷歌推出了基于 TensorFlow 的计算机视觉系列模型 MobileNets. 而最新的 MobileNets 架构正是于几天前发布, 其中包含了一些改进移动端计算机视觉模型的有趣想法.
MobileNetV3 是该模型结构的第三个版本, 它能够为许多主流的移动应用程序提供图像分析的功能. 该体系结构还被集成到流行的框架中, 例如: TensorFlow Lite.
MobileNet 需要尽可能维持其中发展较快的计算机视觉和深度学习领域与移动环境局限性之间平衡. 因此, 谷歌一直在定期对 MobileNets 架构进行更新, 其中也加入了一些有关于深度学习领域中最新颖的想法.
MobileNetV3 论文地址:
https://arxiv.org/abs/1905.02244
来自 MobileNetV1 的启发
MobileNets 的第一个版本于 2017 年春季发布, 其核心思想是引入一系列基于 TensorFlow 的计算机视觉模型, 在最大限度地提高精度的同时, 平衡设备上或嵌入式应用程序的有限资源. 从概念上讲, MobileNetV1 正试图实现两个基本目标, 以构建移动第一计算机视觉模型:
较小的模型 参数数量更少
较小复杂度 运算中乘法和加法更少
遵循这些原则, MobileNetV1 是一个小型, 低延迟, 低功耗的参数化模型, 可以满足各种用例的资源约束. 它们可以用于实现: 分类, 检测, 嵌入和分割等功能.
MobileNetV1 的核心架构则基于一个流线型架构, 该架构使用深度可分离卷积网络来构建了轻量级深度神经网络. 就神经网络结构而言, 深度可分离卷积将卷积核分成两个单独的卷积核, 这两个卷积核依次进行两个卷积, 即先是深度卷积, 然后进行逐点卷积, 如下图所示.
在 MobileNetV1 中, 深度卷积网络的每个输入信道都应用了单个滤波器. 然后, 逐点卷积应用 1 x1 卷积网络来合并深度卷积的输出. 这种标准卷积方法既能滤波, 又能一步将输入合并成一组新的输出. 在这之中, 深度可分离卷积将其分为两层, 一层用于滤波, 另一层则用于合并.
第一代 MobileNetV1 的实现作为了 TensorFlow Slim 图像分类库的一部分; 而随着新的移动应用程序使用全新的模式进行构建, 就诞生出了新的想法以改进整体架构.
升级后的二代 MobileNetV2
第二个版本的 MobileNet 架构于 2018 年初发布. MobileNetV2 则基于 MobileNetV1 的一些思想, 并结合新的思想来优化了诸如: 分类, 目标检测和语义分割等任务的体系结构. 从架构的角度来看, MobileNetV2 为架构增添了两个新模块:
引入了层与层之间的线性瓶颈
瓶颈之间的快捷连接. (基本结构如下所示)
MobileNetV2 之中的核心思想是, 瓶颈对模型的中间输入和输出进行编码, 而内层则用于封装模型从较低级别概念 (如: 像素等) 转换到较高级别描述符 (如: 图像类别等) 的能力. 最后, 与传统的剩余连接一样, 快捷方式能够实现更快地训练速度和更高的准确性.
加入 AutoML 的 MobileNetsV3
MobileNets 架构的最新改进在今年发表的一篇研究论文中 (https://arxiv.org/abs/1905.02244) 进行了总结, 其主要贡献是使用 AutoML 为给定的问题找到最佳的神经网络架构; 这与之前版本架构的人工设计形成了鲜明对比.
具体来说, MobileNetV3 利用了两种 AutoML 技术, 即:
MnasNet (一种自动移动神经体系结构搜索 (MNAS) 方法, https://ai.google/research/pubs/pub47217/)
NetAdapt (适用于移动应用程序的平台感知型算法, https://arxiv.org/pdf/1804.03230.pdf)
MobileNetV3 首先使用 MnasNet 进行粗略结构的搜索, 然后使用强化学习从一组离散的选择中选择最优配置. 之后, MobileNetV3 再使用 NetAdapt 对体系结构进行微调, 这体现了 NetAdapt 的补充功能, 它能够以较小的降幅对未充分利用的激活通道进行调整.
除此之外, MobileNetV3 的另一个新颖想法是在核心架构中加入一种名为「Squeeze-and-Excitation」的神经网络(简称 SE.NET, 也是 ImageNet 2017 图像分类冠军). 该神经网络的核心思想是通过显式地建模网络卷积特征通道之间的相互依赖关系, 来提高网络所产生表示的质量. 具体而言, 就是通过学习来自动获取到每个特征通道的重要程度, 然后依照这一结果去提升有用的特征并抑制对当前任务用处不大的特征.
为此, 开发者们提出了一种允许网络进行特征重新校准的机制. 通过该机制, 网络可以学习使用全局信息来选择性地强调信息性特征, 并抑制不太有用的特征.
而在 MobileNetV3 的例子中, 该架构扩展了 MobileNetV2, 将 SE.NET 作为搜索空间的一部分, 最终得到了更稳定的架构.
MobileNetV3 中还有一个有趣的优化, 则是重新设计了体系结构中一些运行成本较高的层. 第二代 MobileNetV2 中的一些层是模型准确性的基础, 但也引入了潜在变量. 通过合并一些基本的优化功能, MobileNetV3 能够在不牺牲准确性的情况下, 删除 MobileNetV2 体系结构中三个运行成本较高的层.
因此, MobileNetV3 相比以前的架构有了显著的改进. 例如, 在目标检测任务中, MobileNetV3 的操作延迟在减少 25% 的同时, 维持和以前版本相同的精度. 在分类任务中, 也能看到类似的改进, 如下图所示:
目前, 可以看到 MobileNets 仍然是移动计算机视觉中最先进的体系结构之一. 而在这过程中, AutoML 在 MobileNetV3 中的融合也为我们打开了一扇通向更多充满创意的的架构大门, 这些架构可能也是我们曾经从未想过的.
GitHub 中提供了 MobileNets 的最新版本, Tensorflow 目标检测 API 中则包含了 MobileNetV3 的具体实现, 相关地址如下.
MobileNets 最新版本 GitHub 地址:
https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet
MobileNetV3 的具体实现:
- https://github.com/tensorflow/models/tree/master/research/object_detection
- / 更多阅读 /
AI 开发者的社区官方专栏已经开通啦, 扫码即可查看更多历史内容~
点击 阅读原文 , 查看: OpenAI 机器学习实践之路
来源: http://www.tuicool.com/articles/7rUBnyy