基于PP-ShiTuv2新增PaddleX图像识别模型产线,显著提升商品识别等细粒度开放域产业场景检索性能

科技   2024-11-20 19:40   北京  



背景介绍


图像识别一直都是计算机视觉领域最基础的任务,也是生活中最为广泛应用的技术,从自动化身份核验中的人脸识别,到无人零售中的商品识别,其背后均有图像识别技术的应用,然而想要真正将技术落地应用却并不简单,虽然我们熟知的图像分类和目标检测一般认为属于图像识别范畴,但显然依赖单一技术难以解决实际应用中的问题:
  1. 当类别调整时,需要重新训练模型,对于类别需要频繁更新的场景,而零售商品的更新迭代速度很快,每次更新都重新训练模型显然是不切实际的;
  2. 很多场景要求细粒度识别,即不同类别特征差异较小,使用目标检测或是图像分类无法做到很好的区分,例如对于饮料商品,不同品牌的外观差异并不大;
  3. 深度模型训练依赖海量数据,数据集质量会严重影响模型性能,然而高质量数据集的制作成本不菲;
  4. 开放域目标检测技术依赖语义信息进行识别,因此类别的语言标注严重影响识别结果,例如商品识别中“尖叫”、“红牛”等标签,其语义信息和饮料图像特征并无明显关联;
针对上述问题,PaddleX基于PP-ShiTuV2新增通用图像识别模型产线相较于单一的开放域目标检测模型展现出明显的效果优势。

算法解读

PP-ShiTuV2 是一个实用的通用图像识别系统,主要由主体检测、特征学习和向量检索三个模块组成:
  • 主体检测模块:不同于一般的目标检测,主体检测只需将全部前景目标物体识别出来;

  • 图像特征模块:将主体检测模块识别得到的所有主体目标,通过深度学习模型提取得到对应的特征向量;

  • 向量检索模块:计算特征向量和特征底库的相似度,从而得到对应目标的预测类别;

PP-ShiTu
其中,图像特征模块的性能对于最终的识别效果至关重要,因为检索结果很大程度上依赖于特征向量的质量。通过深度学习方法,图像特征模块能够自动从图像数据中提取关键特征,这些特征以向量形式表示,能够高效捕捉图像的核心信息,从而为后续的检索任务提供有力支持。基于此,PaddleX 集成了两个服务端图像特征模型:PP-ShiTuV2_rec_CLIP_vit_base 和 PP-ShiTuV2_rec_CLIP_vit_large,两个模型均采用CLIP_vit作为骨干网络,进一步提升了特征提取模块的性能:在AliProducts数据集上,其recall@1指标最高可达91.03%,在内部私有开放域评测集上相较于PP-ShiTuV2_rec模型提升了超过20个百分点

:以上精度指标为 AliProducts recall@1。所有模型 GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz,线程数为8,精度类型为 FP32。

该系统从骨干网络选择和调整、损失函数的选择、数据增强、学习率变换策略、正则化参数选择、预训练模型使用以及模型裁剪量化多个方面,融合改进多种策略,对各个模块进行优化,最终在多个实际应用场景上的检索性能均有较好效果,且在处理商品等细粒度开放域场景时,PP-ShiTuV2相较于单一的开放域目标检测模型展现出明显优势。以下是PP-ShiTuV2与Grounding DINO模型的识别效果对比。

Grounding DINO模型识别白酒品牌

PP-ShiTuV2识别白酒品牌

Grounding DINO模型识别饮料品牌

PP-ShiTuV2识别饮料品牌


使用方法

下面就从零开始,使用PaddleX体验通用图像识别系统 PP-ShiTuV2:

  • 安装

根据设备选择安装 PaddlePaddle
# cpupython -m pip install paddlepaddle==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/# gpu,该命令仅适用于 CUDA 版本为 11.8 的机器环境python -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/# gpu,该命令仅适用于 CUDA 版本为 12.3 的机器环境python -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/

安装 PaddleX
pip install https://paddle-model-ecology.bj.bcebos.com/paddlex/whl/paddlex-3.0.0b2-py3-none-any.whl
  • 快速体验

PaddleX 提供了简单易用的 Python API,只需几行代码即可体验端到端预测效果,在PP-ShiTuV2的运行示例中需要预先构建索引库,您可以下载官方提供的饮料识别测试数据集,方便大家快速体验效果:

饮料识别测试数据集

https://paddle-model-ecology.bj.bcebos.com/paddlex/data/drink_dataset_v2.0.tar

from paddlex import create_pipeline
pipeline = create_pipeline(pipeline="PP-ShiTuV2")index_data = pipeline.build_index("drink_dataset_v2.0/", "drink_dataset_v2.0/gallery.txt")output = pipeline.predict("./drink_dataset_v2.0/test_images/", index=index_data)for res in output: res.print() res.save_to_img("./output/")
上述代码中:
  1. 首先使用产线名称调用create_pipeline()法实例化产线对象;

  2. 然后调用build_index()方法构建特征向量库;

  3. 最后即可使用predict()方法进行预测,对于预测结果支持print()方法进行打印,以及save_to_img()方法进行可视化并保存为图片。

PP-ShiTuV2预测可视化效果图

PP-ShiTuV2预测可视化效果图


  • 二次开发

如果对产线的预训练模型效果满意,可以直接对产线进行高性能推理/服务化部署/端侧部署,如果不满意,您也可以使用 PaddleX 进行便捷高效的二次开发,使用自己场景的数据对模型微调训练获得更优的精度。
基于 PaddleX 便捷的二次开发能力,使用统一命令即可完成数据校验、模型训练与评估推理,无需了解深度学习的底层原理,按要求准备好场景数据,简单运行命令即可完成模型迭代,此处以图像特征模块的模型训练为例:
python main.py -c paddlex/configs/general_recognition/PP-ShiTuV2_rec.yaml \ -o Global.mode=train \ -o Global.dataset_dir=./dataset/Inshop_examples
上述命令中,首先指定所用模型的配置文件(此处为PP-ShiTuV2_rec.yaml),然后选择模式为模型训练:-o Global.mode=train,再指定数据集路径:-o Global.dataset_dir 即可。
更多参数也可以继续在命令中追加参数设置:如指定前 2 卡 gpu 训练:-o Global.device=gpu:0,1;设置训练轮次数为 10:-o Train.epochs_iters=10。此外,相关参数均可通过修改.yaml配置文件中的GlobalTrain的具体字段来进行设置。
其余更详细的使用方法及产线部署、自定义数据集相关的内容,请参考PaddleX官方教程文档:

通用图像识别产线使用教程

https://paddlepaddle.github.io/PaddleX/latest/pipeline_usage/tutorials/cv_pipelines/general_image_recognition.html


图像特征模块使用教程

https://paddlepaddle.github.io/PaddleX/latest/module_usage/tutorials/cv_modules/image_feature.html


主体检测模块使用教程

https://paddlepaddle.github.io/PaddleX/latest/module_usage/tutorials/cv_modules/mainbody_detection.html


精彩课程预告


为了帮助您迅速且深入地了解全新升级的通用图像识别系统PP-ShiTuV2创新解决方案,百度研发工程师将于 11月21日(周四)19:00 为您深度解析本次技术升级。此外,我们还将开设针对通用图像识别模型产线的产业场景实战营,手把手带您体验从数据准备、数据校验、模型训练、性能优化到模型部署的完整开发流程。机会难得,立即扫描下方二维码预约吧!



关注【飞桨PaddlePaddle】公众号

获取更多技术内容~


飞桨PaddlePaddle
源于产业实践的开源深度学习平台
 最新文章