PaddleSeg发布图像异常检测高精度模型STFPM,无监督异常检测算法赋能产业升级

科技   2024-11-07 19:59   北京  
PaddleSeg是飞桨高性能图像分割开发套件,致力于帮助企业解决实际场景中图像分割相关问题,在超轻量化语义分割、医学图像分割和道路分割等重点场景形成了特色优势。经过广大开发者的使用、反馈和贡献,PaddleSeg持续迭代升级,整体架构设计更加合理优雅,集成的模型日益丰富。近期,PaddleSeg 2.10 版本正式发布,新增功能如下:
🔥 新增图像异常检测高精度模型:STFPM
🔥 支持低代码全流程开发能力

PaddleSeg 代码库地址

https://github.com/PaddlePaddle/PaddleSeg

图像异常检测实用模型:STFPM


算法解读

无监督异常检测任务在计算机视觉领域有着广泛的应用,如医学图像分析、智能监控、工业质检等。在医学领域,可以根据CT影像学习癌症检测模型,将正常人的CT影像作为正常样本进行学习,检测癌症患者的CT影像(异常样本)。在工业质检领域,需对工业零部件进行异常检测,将整幅图像中无缺陷的零部件作为正常样本,存在缺陷的零部件作为异常样本。无监督异常检测技术在计算机视觉领域具有广泛的应用前景和重要的研究价值。随着深度学习等技术的不断发展,无监督异常检测算法的性能将不断提升,为各种应用场景提供更加准确和可靠的异常检测能力。
无监督异常检测效果图
STFPM 是一种基于表征的无监督异常检测算法。其思想是希望通过某种映射将原输入图片映射到某个特征空间,在此特征空间可以更容易区分正常样本与异常样本的差异。该方法的特点是速度快,且能够实现Patch级的精确分割。
在具体实现时,采用在 ImageNet 上预训练的骨干网络提取图片的特征,在预测时通过比对正常样本与异常样本的特征的差异进行缺陷的分类与分割。STFPM 由预训练的教师网络和结构相同的学生网络组成。在训练时,学生网络通过将自身特征与教师网络中的对应特征相匹配来学习正样本图像的分布;在推理时,比较教师网络和学生网络的各个尺度特征的差异,差异越大,该位置的异常分数越高。
算法结构图
使用方法

  • 安装


安装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 Wheel包
pip install https://paddle-model-ecology.bj.bcebos.com/paddlex/whl/paddlex-3.0.0b1-py3-none-any.whl

  • 快速体验


几行代码即可完成产线的快速推理:
from paddlex import create_pipelinepipeline = create_pipeline(pipeline="anomaly_detection")output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/uad_grid.png")for res in output: res.print() ## 打印预测的结构化输出 res.save_to_img("./output/") ## 保存结果可视化图像 res.save_to_json("./output/") ## 保存预测的结构化输出

下图左侧为待检测图片,右侧为保存的分割结果图片。可以看到,STFPM 模型检测出了原始图片中对应存在缺陷的三个部位。

可视化结果
  • 二次开发


此外,如果官方模型无法满足场景效果的要求,用户可以使用 PaddleX 进行便捷高效的二次开发,收集自己场景的数据进行微调训练获得更优的精度。

基于统一命令完成无监督异常检测产线的数据校验、模型训练与评估推理,用户无需了解深度学习的底层原理,按模型要求准备好场景数据,简单运行命令即可完成模型迭代:
python main.py -c paddlex/configs/anomaly_detection/STFPM.yaml \ -o Global.mode=train \ -o Global.dataset_dir=./dataset/mvtec_examples

上述命令中:main.py 为模型开发统一入口文件;-c 用于指定模型配置文件的参数,模型配置文件 STFPM.yaml 中包含了模型的信息,如模型名、学习率、批次大小等,其中 mode 支持指定数据校验(dataset_check)、训练(train)、评估(evaluate)和模型导出(export)。

更详细的图像异常检测产线使用方法请参考文档:

https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/module_usage/tutorials/cv_modules/anomaly_detection.md


低代码全流程开发能力


在PaddleSeg的不断迭代升级过程中,我们不仅集成了众多高精度的经典模型,还特别强调了其在语义分割领域的低代码全流程开发能力。随着PaddleSeg 2.10版本的发布,我们通过飞桨低代码开发工具PaddleX,实现了PaddleSeg的低代码全流程开发。这一能力旨在实现简单且高效的模型使用、组合与定制,显著减少模型开发所需的时间,降低开发难度,并大幅加快模型在行业中的应用和推广速度。以下是基于PaddleX的一些升级亮点:

模型丰富一键调用
将涉及通用语义分割和图像异常检测的19个模型整合为2条模型产线,其中包括高精度语义分割模型OCRNet_HRNet和SegFormer系列,高效率语义分割模型PP-LiteSeg和SeaFormer系列,以及经典模型Deeplabv3和Deeplabv3_Plus系列。用户可根据需求灵活选择,并通过极简的Python API一键调用

语义分割模型benchmark

提高效率降低门槛

提供基于统一命令图形界面的两种方式,实现模型的简洁高效使用、组合与定制。支持多种部署方式,包括高性能部署、服务化部署和端侧部署。此外,对于各种主流硬件如英伟达GPU、昆仑芯、昇腾、寒武纪和海光等,模型开发时均可无缝切换。

详细的PaddleSeg低代码开发能力请参考文档:

https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/paddlex/overview.md

为了帮助您迅速且深入地了解PaddleSeg最新升级亮点以及新增图像异常检测模型STFPM在精度、速度方面的卓越优势,百度研发工程师将于11月14日(周四)19:00为您深度解析本次技术升级,并实操演示低代码开发工具PaddleX的操作技巧。此外,我们还将开设针对图像异常检测任务方向的产业场景实战营,手把手带您体验从数据准备、数据校验、模型训练、性能优化到模型部署的完整开发流程。机会难得,立即扫描下方二维码预约吧!





关注【飞桨PaddlePaddle】公众号
获取更多技术内容~


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