EfficientNet-lite详解:当前最强移动端轻量神经网络

原创
2020/03/26 23:23
阅读数 788

概述

3.17日谷歌在 GitHub 与 TFHub 上同步发布了 EfficientNet-lite,EfficientNet的端侧版本,运行在 TensorFlow Lite 上,针对端侧 CPU、GPU 和 EdgeTPU 做了优化。EfficientNet-lite提供五个不同版本(EfficientNet-lite0~4),让用户能够根据自己的应用场景和资源情况在延迟、参数量和精度之间做选择。

 

EfficientNet-Lite4 是计算量最大的版本,在 ImageNet上的top-1准确率达到了80.4%,同时能够以30ms/image的速度运行在 Pixel 4 的 CPU 上。EfficientNet-lite 具体的精度和延时参数的关系如下图所示。可见其已经把MobileNet V2,ResNet 50,Inception v4等模型远远甩在背后。



原理

EfficientNet-lite进行了一系列的优化:

 

量化。定点运算的速度要比浮点运算快很多,在移动设备算力有限的场景下,量化必不可少。但量化使用了定点数,表示范围相对于浮点数小很多,必然存在精度的损失。借助 TensorFlow Lite 中提供的训练后量化流程来对模型进行量化处理,尽可能地降低了对准确率的影响。通过量化,模型大小减少为1/4,推理速度提升近2倍。

EfficientNet-lite0 浮点模型float32与int8量化版本在模型尺寸、精度及时延的对比:

 

结构和算子优化。去除 squeeze-and-excitation 结构,因为目前在端侧设备上支持欠佳。

使用 Relu6替代swish 激活函数,swish激活复杂度高,并且对量化有不利影响。

放缩模型尺寸时固定 stem 与 head 模块,减少放缩后模型的大小与计算量。

 

使用

对于用户个性化的数据集,建议使用 TensorFlow Lite Model Maker,在已有 TensorFlow 模型上使用迁移学习。TensorFlow Lite Model Maker 支持很多模型结构,包括 MobileNetV2 和所有5个版本的 EfficientNet-Lite。以下为使用 EfficientNet-lite0 进行鲜花分类的代码,只要五行。

 

# Load your custom dataset

data = ImageClassifierDataLoader.from_folder(flower_path)

train_data, test_data = data.split(0.9)# Customize the pre-trained TensorFlow model

model = image_classifier.create(train_data, model_spec=efficienetnet_lite0_spec)# Evaluate the model

loss, accuracy = model.evaluate(test_data)# Export as TensorFlow Lite model.

model.export('image_classifier.tflite', 'image_labels.txt')

 

通过改变 model_spec 参数,可以尝试不同的模型。模型建立好以后,可以将其构建为移动端 app,把自己个性化的模型存放在 asset 文件夹。

 

展望

EfficientNet-lite是端侧部署的福音,没有特别复杂的算子,时延低,精度高,轻易打败了MobileNet,大家可以把以前用的MobileNet替换掉了。

 

附录

官方Github:

https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/lite

官方Blog:

https://blog.tensorflow.org/2020/03/higher-accuracy-on-vision-models-with-efficientnet-lite.html

EfficientNet论文链接:https://arxiv.org/abs/1905.11946

 

相关文章

人工智能技术分析

人工智能 机器学习 深度学习

第六届世界互联网大会乌镇峰会简评

华为人工智能战略分析:2019华为全连接大会

阿里含光 VS 华为昇腾:AI芯片路在何方

AI人工智能三要素:数据、算力和算法

计算机视觉(CV)任务介绍:分类、检测、分割、超分、关键点识别、图像生成、度量学习

理解深度学习中的分类网络:LeNet

 

PyTorch 1.3

tf.GradientTape详解:梯度求解利器

TensorFlow高阶API和低阶API

TensorFlow静态图和eager机制

TensorFlow 2.0

TensorFlow高阶API和低阶API

TensorFlow调试技巧

TensorFlow与PyTorch对比

PyCharm调试技巧

解读谷歌的AI杀手级专利:Dropout

 

AutoML算法分析(一):基于强化学习的算法

SENet详解

 

关于我

缘起:新的开始

 

公众号持续更新,欢迎订阅。

 

AI人工智能与大数据


本文分享自微信公众号 - AI人工智能与大数据(ai_data_tech)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部