百度 PaddlePaddle 团队开发的 PaddleClas 是一个适用于业界和学界的图像分类任务工具集,能够帮助用户训练更好的计算机视觉模型并应用于真实场景中。近期 PaddleClas 迎来了全面升级,其中提供了更高精度的知识蒸馏模型、更丰富的模型种类以及更佳的开发体验,从而使得开发者更方便地在服务器端或者移动端、IoT 端进行部署。git
下载安装命令 ## CPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
图像分类任务做为深度学习视觉领域的「基石」,几乎是每一位视觉方向开发者最早要学习的基础本领。众所周知,图像分类已普遍应用在智慧零售、智慧交通、智慧医疗、智慧安防等等各行各业。不只如此,图像目标检测、图像分割、图像检索、OCR、人脸识别等高阶视觉任务也常将图像分类网络做为骨干网络。图像分类的网络结构和预训练模型则无疑是智能视觉技术的稳固地基和强壮骨架,它的性能直接影响高阶视觉任务的效果。github
图像分类任务如此重要,但好的分类网络却没有那么容易被训练出来。开发者每每要面临像目标遮挡、尺度变化、变形、背景噪音过大、光照视角多变、目标姿态多变等问题。为了解决这些困难,你们通常须要从数据增广、骨干网络设计、损失定义、优化器设计、模型压缩裁剪量化、模型可解释性、特征迁移学习等不一样的角度对图像分类问题进行深刻探索。听起来是否是就头大?算法
莫慌!PaddleClas 就是一个超强的图像分类任务的工具集,助力开发者训练出更好的视觉模型并快速应用落地。PaddleClas 近期也完成了全新的升级,本次升级以后,PaddleClas 可算成为了地表超强开源图像分类库(很差说『最』,怕被请喝茶)。那这个称号是从哪里来的呢?让咱们用事实说话,看看 PaddleClas 升级后到底有多强大!服务器
-
更高精度的模型:基于百度自研的知识蒸馏方案(SSLD),PaddleClas 开源了 14 个 SSLD 分类预训练模型,精度广泛提高 3% 以上;其中 ResNet50_vd 模型在 ImageNet-1k 数据集上的 Top-1 精度达到了 84.0%,Res2Net200_vd 预训练模型 Top-1 精度高达 85.1%。同时也优化出更多业界 SOTA 模型,并支持图像检测、分割以及 OCR 等高阶视觉任务全面提高模型效果;网络
-
更丰富的模型种类:本次升级新增 4 个系列模型(InceptionV三、GhostNet、ResNeSt 和 RegNet),至此 PaddleClas 总共包含 29 个系列的分类网络以及 134 个预训练模型;工具
-
开发体验进一步升级:全面支持动态图,使你的算法构建、训练以及评估调试更轻松。并进一步打通全流程部署,不管是在移动端、IoT 端仍是在服务器端进行部署,均可以在这里找到最佳的部署方案;性能
-
数十种图像分类算法开发的 Trick 和工具!深刻理解开发者算法开发过程当中的难点,手把手教你提高算法性能!学习
已经火烧眉毛要去看项目代码了嘛?传送门送你一程:优化
https://github.com/paddlepaddle/PaddleClasurl
以为不错的小伙伴能够点起 Star 支持一下~
在深刻研究 PaddleClas 以后呢,本文也给你们解析一下 PaddleClas 本次升级的详情。
更多高精度的知识蒸馏模型
PaddleClas 中提供了 SSLD 知识蒸馏方案,在无需更多有标签图像的条件下,能够在不换模型的基础上将分类模型的精度提高 3% 以上。在这次全面升级过程当中,PaddleClas 进一步提供了基于 ResNet_vd、HRNet、Res2Net_vd、MobileNetV三、GhostNet 等骨干网络蒸馏获得的 SSLD 预训练模型,不只能够用于迁移训练、预训练权重参数;也能够用于检测、分割等下游视觉任务中,进一步提高下游视觉任务的精度指标。
就让咱们看图说话:下面两张图给出了 PaddleClas 在服务器端和端侧(移动端、IoT 端)开源的 SSLD 蒸馏预训练模型的精度提高对比状况:
能够看出,不管是服务器端仍是移动端或 IoT 端,通过 SSLD 知识蒸馏以后的模型精度均提高了 3% 左右。并且模型越大,精度提高越明显。特别地,基于该蒸馏方案,PaddleClas 将 ResNet50_vd 的 Top-1 精度提高到 83.0%;进一步地,基于 Fix 策略,调大训练尺度 (224 -> 320),ResNet50_vd 的 Top-1 精度能够到达 84.0%。
此外,基于 SSLD 蒸馏预训练模型,在目标检测任务中,模型精度提高也很是明显,具体以下表所示:
在图像分割任务中, 基于 CityScapes 数据集的精度收益以下表所示:
在文字检测任务中(OCR),基于 DBNet 的精度收益以下:
在绝大多数场景中,不须要任何额外的训练或者预测成本,仅使用 SSLD 知识蒸馏预训练模型,即可以轻松提高模型精度。更多 SSLD 的原理和性能,能够到这里查看详情:https://github.com/PaddlePaddle/PaddleClas/blob/release/2.0-rc1/docs/zh_CN/advanced_tutorials/distillation/distillation.md
更丰富的模型种类
如咱们在开头所述, PaddleClas 在这次升级中,进一步丰富了模型库,新增 4 个系列模型(InceptionV三、GhostNet、ResNeSt、RegNet)。目前总共包含 29 个系列的分类网络以及 134 个预训练模型,包括 ResNet、ResNet_vd、Res2Net、ResNeXt 、HRNet、ResNeSt、MobileNetV1/2/三、GhostNet 等,涵盖了从服务器端到移动端的各种使用场景,这也是目前种类最丰富的图像分类代码仓库。
-
InceptionV3 是 Google 对 InceptionV2 的一种改进。首先,InceptionV3 设计和使用了更多种类的 Inception 模块,部分 Inception 模块将较大的方形二维卷积拆成两个较小的非对称卷积,从而大幅度节省参数量;
-
GhostNet 是华为于 2020 年提出的一种全新的轻量化网络结构。经过引入 Ghost module,大大缓解了传统深度网络中特征的冗余计算问题,使得网络的参数量和计算量大大下降;
-
ResNeSt 系列模型是 2020 年提出的。在原有的 ResNet 网络结构上作了改进,经过引入 K 个 Group 和在不一样 Group 中加入相似于 SEBlock 的 attention 模块,使得精度相比于基础模型 ResNet 有了大幅度的提高,且参数量和 flops 与基础的 ResNet 基本保持一致;
-
RegNet 是由 Facebook 于 2020 年提出。经过加入共享瓶颈 ratio、共享组宽度、调整网络深度与宽度等策略,最终实现简化设计空间结构、提升设计空间的可解释性、改善设计空间的质量,并保持设计空间的模型多样性的目的。
下面也分别给出了服务端模型和端侧模型在 T4 GPU 和骁龙 855 芯片上的预测耗时与精度曲线,你们能够根据本身的预测耗时或者精度要求,选择合适的分类网络。
更好的易用性
全面支持动态图
静态计算指的是程序在编译执行时首先生成神经网络结构,而后再执行相应操做。经过这种先定义后运行的方式,再次运行的时候就再也不须要从新构建计算图,所以在速度方面会更快一些。动态计算指的是程序按照编写命令的顺序进行执行,这会大大下降调试的难度。在这次升级中,PaddleClas 在训练过程当中为动态图模式,在预测部署时为静态图模式,从而保证了训练过程当中的易用性以及模型预测过程当中的效率。
多系统、多硬件、多端部署全面支持
PaddleClas 如今支持包括 GPU/CPU/XPU、Windows/Linux/MacOS 等多种训练平台。对于训练获得的模型,PaddleClas 提供基于服务器端(Paddle Inference)和 移动端、IoT 端(Paddle Lite),以及轻量化服务端(Hub Serving)的高性能部署方法,同时支持 Python 预测与 C++ 预测,知足大多数开发者的使用需求。
更丰富的教程文档及调优Trick
-
《PaddleClas 的图像分类训练、评估、预测开始教程》:https://github.com/PaddlePaddle/PaddleClas/blob/dygraph/docs/zh_CN/tutorials/getting_started.md
-
开源社区小伙伴总结的《基于 PaddleClas 完成产业级图像分类项目》
-
基于 Paddle Lite 在手机、机器人终端等进行模型优化与交叉编译的方案《PaddleClas 端侧部署教程》:https://github.com/PaddlePaddle/PaddleClas/blob/dygraph/deploy/lite/readme.md
-
针对开发者在开发过程当中遇到的实际难题总结出的《图像分类 30 问》https://github.com/PaddlePaddle/PaddleClas/blob/dygraph/docs/zh_CN/faq.md
-
还有《PaddleClas 每周 FAQ》https://github.com/PaddlePaddle/PaddleClas/blob/dygraph/docs/zh_CN/faq_series.md 等等高价值内容
此外,考虑到图像分类领域内容丰富,更新频繁,PaddleClas 官方团队计划尽量高频地持续更新图像分类领域的 Tricks、FAQ 等内容给到你们,力争全方位让开发者不管是进行学术科研以仍是产业算法应用过程当中都更加顺畅。
这样有如和璧隋珠同样的开源项目,这样用心勤奋的技术团队,你还不心动要尝试使用下 PaddleClas 吗?赶忙前往 PaddleClas 开源地址查看项目详情吧!也欢迎各位小伙伴点星(Star)、Fork、Watch,方便反复研究查看~~
下载安装命令 ## CPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
GitHub:
https://github.com/PaddlePaddle/PaddleClas
Gitee:
https://gitee.com/paddlepaddle/PaddleClas
本文同步分享在 博客“飞桨PaddlePaddle”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。