百度 PaddlePaddle 团队开发的 PaddleClas 是一个适用于业界和学界的图像分类任务工具集,可以帮助用户训练更好的计算机视觉模型并应用于真实场景中。近期 PaddleClas 迎来了全面升级,其中提供了更高精度的知识蒸馏模型、更丰富的模型种类以及更佳的开发体验,从而使得开发者更方便地在服务器端或者移动端、IoT 端进行部署。
图像分类任务作为深度学习视觉领域的「基石」,几乎是每一位视觉方向开发者最先要学习的基础本领。众所周知,图像分类已广泛应用在智慧零售、智慧交通、智慧医疗、智慧安防等等各行各业。不仅如此,图像目标检测、图像分割、图像检索、OCR、人脸识别等高阶视觉任务也常将图像分类网络作为骨干网络。图像分类的网络结构和预训练模型则无疑是智能视觉技术的稳固地基和强壮骨架,它的性能直接影响高阶视觉任务的效果。图像分类任务如此重要,但好的分类网络却没有那么容易被训练出来。开发者往往要面临像目标遮挡、尺度变化、变形、背景噪音过大、光照视角多变、目标姿态多变等问题。为了解决这些困难,大家一般需要从数据增广、骨干网络设计、损失定义、优化器设计、模型压缩裁剪量化、模型可解释性、特征迁移学习等不同的角度对图像分类问题进行深入探索。听起来是不是就头大?莫慌!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 个系列模型(InceptionV3、GhostNet、ResNeSt 和 RegNet),至此 PaddleClas 总共包含 29 个系列的分类网络以及 134 个预训练模型;
开发体验进一步升级:全面支持动态图,使你的算法构建、训练以及评估调试更轻松。并进一步打通全流程部署,无论是在移动端、IoT 端还是在服务器端进行部署,都可以在这里找到最佳的部署方案;
数十种图像分类算法开发的 Trick 和工具!深入理解开发者算法开发过程中的难点,手把手教你提升算法性能!
https://github.com/paddlepaddle/PaddleClas在深入研究 PaddleClas 之后呢,本文也给大家解析一下 PaddleClas 本次升级的详情。PaddleClas 中提供了 SSLD 知识蒸馏方案,在无需更多有标签图像的条件下,可以在不换模型的基础上将分类模型的精度提升 3% 以上。在此次全面升级过程中,PaddleClas 进一步提供了基于 ResNet_vd、HRNet、Res2Net_vd、MobileNetV3、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 个系列模型(InceptionV3、GhostNet、ResNeSt、RegNet)。目前总共包含 29 个系列的分类网络以及 134 个预训练模型,包括 ResNet、ResNet_vd、Res2Net、ResNeXt 、HRNet、ResNeSt、MobileNetV1/2/3、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++ 预测,满足大多数开发者的使用需求。《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,方便反复研究查看~~如果您希望获得更深入的技术支持,或者与大批志同道合的深度学习领域的小伙伴一起交流,欢迎加入 PaddleClas 官方微信交流群,或者 QQ 群(703252161)如果您想详细了解更多飞桨的相关内容,请参阅以下文档。官网地址:https://www.paddlepaddle.org.cn
GitHub: https://github.com/PaddlePaddle/PaddleGitee: https://gitee.com/paddlepaddle/Paddle技术分析百度 PaddlePaddle图像分类任务工具集PaddleClas