30倍加速,3毫秒急速识别,人、车、OCR等9大分类任务一网打尽

2024-02-05 13:59

本文主要是介绍30倍加速,3毫秒急速识别,人、车、OCR等9大分类任务一网打尽,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

“图像分类”作为人工智能领域的重要基础任务,早已在安防监控、智慧交通、医疗影像诊断甚至社交娱乐等行业被广泛应用,成为AI从业者的“必备技能”,例如安防系统中的人体属性识别;文档电子化、卡证识别中的图片方向校准;辅助驾驶中的交通标识、红绿灯状态识别等等,都离不开图像分类技术的支持。

8187a77c57e05b7b52f7be432ee97abc.gif

图1 PaddleClas图像分类应用示意图

a8d466b80e41535e8333138b3a3ac7ff.gif

然而,在实际产业应用中,想要得到一个既快又好的分类模型依然面临很多挑战:

大模型精度-速度难以兼顾

从大名鼎鼎的Resnet50到如今火热的Swin-Transformer,模型精度不断被刷新,但是预测效率并不高。使用Swin-Transformer最小的模型在CPU上预测速度也超过100ms,远远无法满足实时需求。

轻量化模型优化困难

虽然使用MobileNet系列等轻量化模型可以保证较高的预测效率,在CPU上预测一张图像大约3ms,但是模型精度往往和大模型有很大差距。

模型优化落地困难

想要得到性能理想的模型往往需要经过反复的调优操作和重新训练,即使是高频业务场景可参考的实践教程也极少,项目落地不仅耗时长,难度也很大。

ad06ffba487184ab6bef8660f91b88b8.gif

近期,飞桨图像分类开发套件 PaddleClas 推出的超轻量图像分类方案(Practical Ultra Light Classification,简称PULC),就可以完美解决上述产业落地中的难点。只需一行命令,就可完成模型训练,得到精度上与Swin-Transformer等大模型比肩的超轻量图像分类模型,预测速度加速30倍以上,CPU上仅需2ms。

4606bd69efd416a9b1c4cb34df46e461.png

表1 不同模型精度速度结果对比

同时基于这套方案,PaddleClas 团队还发布了人、车、OCR相关的9大场景模型,并且提供了极致简单、统一的使用方式,仅需2步就能实现业务 POC 效果验证,训练、推理、部署一条龙,极大降低应用门槛,真正实现“开箱即用”。

e367b9ca94a43b5566509f377ec62a06.png

8007f05361416060b8b663e2b249f754.gif

图2 9大场景模型效果示意图

57f107e277b90bfc8060c0d212c0cbff.png

传送门:

https://github.com/PaddlePaddle/PaddleClas

5af5bf946b56631133ae00f7d9b9311e.gif

超轻量图像分类方案核心技术介绍

超轻量图像分类方案(PULC)和核心技术主要包括4个优化策略,如下图所示。

b1dc2dedb37ec90246b76f588296260f.png

图3 超轻量图像分类方案(PULC)示意图

PP-LCNet轻量级骨干网络

PP-LCNet作为针对CPU量身打造的骨干网络模型,在速度、精度方面均远超如MobileNetV3等同体量算法,多个场景模型优化后,速度较SwinTransformer的模型快30倍以上,精度较MobileNetV3_small_0.35x高18个点。

SSLD预训练权重

SSLD半监督蒸馏算法可以使小模型学习到大模型的特征和ImageNet22k无标签大规模数据的知识。在训练小模型时,使用SSLD预训练权重作为模型的初始化参数,可以使不同场景的应用分类模型获得1-2.5个点的精度提升。

数据增强策略集成

该方案融合了图像变换、图像裁剪和图像混叠3种数据增强方法,并支持自定义调整触发概率,能使模型的泛化能力大大增强,提升模型在实际场景中的性能。模型可以在上一步的基础上,精度再提升1个点左右。

SKL-UGI知识蒸馏算法

SKL(symmetric-KL)在经典的KL知识蒸馏算法的基础上引入对称信息,提升了算法的鲁棒性。同时,该方案可以方便的在训练中加入无标签训练数据(Unlabeled General Image),可以进一步提升模型效果。该算法可以使模型精度继续提升1-2个点。

PaddleClas产业落地工具集

考虑到真实产业应用面对的各种软硬件环境和不同的场景需求,本次升级同时发布了PaddleClas产业落地工具集。针对图像分类任务,打通20种训练部署软硬件环境与方式,包括3种训练方式、5种训练环境、3种模型压缩策略、和9种推理部署方式,如下表所示。

ffad797b4b01876a131edcc2e903a2c5.png

表2 图像分类产业落地工具集支持的训练推理部署功能列表

其中特色能力如下:

01

分布式训练

飞桨分布式训练架构具备4D混合并行、端到端自适应分布式训练等多项特色技术。在PP-LCNet训练中,4机8卡相较于单机8卡加速比达到3.48倍,加速效率87%,精度无损。

02

模型压缩

飞桨模型压缩工具PaddleSlim功能完备,覆盖模型裁剪、量化、蒸馏和NAS。图像分类模型经过量化裁剪后,移动端平均预测耗时减少24%。

03

移动端/边缘端部署

飞桨轻量化推理引擎Paddle Lite适配了20+ AI 加速芯片,可以快速实现图像分类模型在移动设备、嵌入式设备和IOT设备等高效设备的部署。

以上所有模型、代码均在PaddleClas中开源提供,还有超详细文档教程和范例项目,赶紧查看全部开源代码并Star收藏吧~

链接指路:https://github.com/PaddlePaddle/PaddleClas

福利时间到

为了让开发者们更深入的了解PaddleClas这次发布的全新内容,解决落地应用难点,掌握产业实践的核心能力,6月15-6月17日晚20:30飞桨团队精心准备了为期三天的直播课程!

百度资深高工将为我们详细介绍超轻量图像分类方案,对各场景模型优化原理及使用方式进行拆解,之后还有产业案例全流程实操,对各类痛难点解决方案进行手把手教学,加上直播现场互动答疑,还在等什么!抓紧扫码上车吧!

加入PaddleClas技术交流群

b64d418df4d4cc82d2ffffe90915c852.png

入群福利:

获取PaddleClas详解本次升级内容的直播课链接。

获取PaddleClas团队整理的10G重磅图像分类学习大礼包,包括:

2e6124e11da2b64237dca8bdef7ce47f.png

图4 PaddleClas入群礼包内容示意

入群方式:

SETP1:微信扫描二维码,填写问卷

SETP2:加入交流群领取福利

4e3ef28dbaf09e713afdbed4db23ee65.png

更多阅读

官网地址:https://www.paddlepaddle.org.cn

PaddleClas项目地址:

GitHub: https://github.com/PaddlePaddle/PaddleClas

Gitee: https://gitee.com/paddlepaddle/PaddleClas

这篇关于30倍加速,3毫秒急速识别,人、车、OCR等9大分类任务一网打尽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681143

相关文章

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音