发布机器之心
编辑部,机器之心
百度 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 和工具!无论是在移动端,还是在移动端,进一步开放全过程部署IoT 最好的部署方案可以在这里找到,无论是在服务器端还是部署;开发了几十种图像分类算法 Trick 和工具!深入了解开发者算法开发过程中的难点,教你手拉手提高算法性能!你迫不及待地想看项目代码吗?送你一程的门:
https://github.com/paddlepaddle/PaddleClas
感觉不错的小伙伴可以起点 Star 支持一下~
在深入研究 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 预测,以满足大多数开发人员的需求。
更丰富的教程文档和调整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,方便反复研究查看~~~
GitHub: https://github.com/PaddlePaddle/PaddleClas
Gitee: https://gitee.com/paddlepaddle/PaddleClas