PaddlePaddle在不断增加官方支持的模型的同时,也在关注预训练模型的丰富度。 在过去的版本中,我们已经发布了目标检测Faster-RCNN、MobileNet-SSD、PyramidBox和场景文字识别CRNN-CTC、OCR Attention共计5个预训练模型。 近期,在图像分类领域我们一口气发布了四个系列共十个预训练模型,丰富扩充了预训练模型库,助力用户提高构建模型的效率,大大减轻“炼丹”的烦恼。 |
MobileNet v1
针对亟需在移动端应用深度学习技术的需求,MobileNet v1在存储空间和能耗低的地方表现优秀,在损失精度很小的情况下,计算量,存储空间,准确率方面都有明显提升。
ResNet 系列模型
ResNet创新性的提出了残差结构,一举在ILSVRC2015比赛中取得冠军,top5错误率为3.57%。斯坦福大学的Joyce Xu将ResNet称为「真正重新定义了我们看待神经网络的方式」的三大架构之一。
在最新发布的PaddlePaddle 预训练模型包括有ResNet50,ResNet101和ResNet152。
SE_ResNet 系列模型
SE 全称 Sequeeze-and-Excitation,在ILSVRC 2017 的分类项目中取得 了第一名的成绩。在 ImageNet 数据集上将 top-5 错误率从原先的最好成绩 2.991% 降低到 2.251%。
在最新发布的PaddlePaddle 预训练模型包括有SE_ResNeXt50_32x4d和SE_ResNeXt101_32x4d。
VGG 系列模型
VGGNet是牛津大学计算机视觉组和DeepMind公司共同研发一种深度卷积网络,2014年在ILSVRC比赛上获得了分类项目的第二名和定位项目的第一名。
在最新发布的PaddlePaddle预训练模型包括有VGG11,VGG13,VGG16,VGG19。
PaddlePaddle复现结果
以上预训练模型均经过官方测试验证,在精度上皆达到了应用要求。
您可以在他们的基础上进行开发,省却自己训练参数的过程,具体加载方式参考使用说明书。
Model | top-1/top-5 accuracy |
VGG11 | 69.22%/89.09% |
VGG13 | 70.14%/89.48% |
VGG16 | 72.08%/90.63% |
VGG19 | 72.56%/90.83% |
MobileNetV1 | 70.91%/89.54% |
ResNet50 | 76.35%/92.80% |
ResNet101 | 77.49%/93.57% |
ResNet152 | 78.12%/93.93% |
SE_ResNeXt50_32x4d | 78.50%/94.01% |
SE_ResNeXt101_32x4d | 79.26%/94.22% |
PaddlePaddle预训练模型使用说明书
1. 安装PaddlePaddle和模型库
在PaddlePaddle的模型库中已经包含了最新的相关训练代码,经过简单的配置与加载,即可快速部署研发,首先请安装最新版的PaddlePaddle并且下载PaddlePaddle模型库:
1. 2. | pip install -U paddlepaddle #推荐使用pip方式安装,目前支持Windows、MacOS、CentOS、Ubuntu多种操作系统 #如果您希望使用其他安装方式,可以按照官网文档的引导操作: #http://www.paddlepaddle.org/documentation/docs/zh/1.2/beginners_guide/install/index_cn.html git clone https://github.com/PaddlePaddle/models.git |
当模型成功克隆后,您可以在fluid/PaddleCV/image_classification下看到用于训练的train.py代码。
2. 加载预训练模型
使用我们之前在ImageNet数据集上训练的预训练模型,可以直接使用相应的结构和权重,将它们应用到您正在面对的问题上。
预训练模型从哪里下载呢?首先进入官方模型介绍链接
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/image_classification
下拉到readme页面的最下方:
可以看到一个Released models的表格。在表格的model一列是模型的名称,这个名称是一个超链接,链接对应的是这个模型的预训练权重下载地址,点击模型名称即可下载相应的预训练模型。
在train.py文件中,
通过fluid.io.load_vars加载相关预训练参数。
运行train.py, 通过指定 pretrained_model= "下载好的预训练模型路径",加载相应预训练模型进行训练。您可以更改调整预训练模型参数,来适应具体工作方向,例如检测,图像分类等。
例如,加载MobileNet v1预训练模型进行微调:
结语
对于想学习算法或者尝试现有框架的人来说,使用预训练模型能够提供很好的帮助。因为时间与计算量方面的诸多限制,不方便随时从头开始训练一个模型,这也正是预训练模型存在的原因。您可以运用预训练作为基准来改进现有模型,或者根据它测试自己的模型。
年后我们还会继续发布几组新的图像分类预训练模型(包括GoogleNet,MobileNetV2,ShuffleNet系列等),敬请期待,也欢迎大家留言告诉我们您最期待的预训练模型。