ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PaddleSeg QualityInspector 全流程配置文件解析:从 ENV 到 PipeLine 的工业质检 PPL 配置实战

PaddleSeg QualityInspector 全流程配置文件解析:从 ENV 到 PipeLine 的工业质检 PPL 配置实战 人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载全流程配置文件end-to-end 配置文件是 QualityInspector 工业质检方案的核心编排层它以模块化方式把检测Detection、分割Segmentation、RoI 裁剪分割CropSegmentation与后处理PostProcess串联成一条可落地的质检流水线并通过统一的 YAML 定义环境与各阶段参数。本文以 contrib/QualityInspector/docs/end2end/parse_config.md 为主体结合 configs/end2end 下的真实配置与 qinspector 源码实现逐字段解读配置结构、三类工业质检 PPL 的差异以及后处理算子的源码级行为帮助读者直接上手编写、调整并复用质检全流程配置。一、配置文件整体设计模块化定义环境 流水线全流程配置文件将一条质检流水线拆解为两大部分环境信息ENV与流水线信息PipeLine。其中 ENV 描述运行环境、输出行为等全局设置PipeLine 以算子Operator列表的形式声明检测 → 分割 → 后处理的执行顺序。这种设计的直接收益是更换模型、调整阈值、增删阶段都不需要改动推理代码只改 YAML 即可。配置文件统一存放在 configs/end2end 目录下QualityInspector 提供三种覆盖常见工业质检场景的 PPL 配置配置文件流水线组成适用场景e2e_det.yml检测 后处理缺陷主要表现为框级别的目标检测任务e2e_seg.yml分割 后处理缺陷形状不规则、需要像素级掩码的整图分割任务e2e_det_RoI_seg.yml检测 RoI 分割 后处理先定位再精细分割的两阶段方案兼顾召回与精细度三种配置共用同一套ENV结构和后处理算子机制差异只在PipeLine中挂载的算子组合。下面以最完整的检测 RoI 分割 后处理配置为例逐字段解读。二、ENV 环境段运行设备、输出路径与保存开关ENV段控制整条流水线的运行环境和结果输出方式字段全部为全局生效项ENV: device: gpu # 运行环境 output_dir: ./output_det_roi/ # 保存输出的预测 json 文件和可视化图像的路径 save: True # 保存 json 文件 visualize: False # 是否进行可视化各字段含义如下device推理设备取值为gpu使用 GPU或cpu使用 CPU需与环境中实际可用的硬件一致output_dir预测结果output.json与可视化图像的保存根目录默认目录约定为./output/save是否将预测结果序列化为 json 文件置为True时会在output_dir下生成output.jsonvisualize是否输出可视化图像置为True时结果写入output_dir/show/目录。从源码实现看Pipeline 类 在初始化时会读取env_cfg中的output_dir缺省为output、visualize缺省 False与save缺省 False并在predict_images中根据save/visualize分别落盘 json 与调用可视化函数可见这三个开关直接决定推理后是否产生输出文件。三、PipeLine 流水线段算子按顺序执行PipeLine是一个有序的算子列表QualityInspector 的 Builder 会按列表顺序依次实例化每个算子operator并逐个执行前一阶段输出作为后一阶段输入。算子目前主要包含三类Detection检测模块输出缺陷 bbox 及其置信度BaseSegmentation/CropSegmentation分割模块前者对整图分割后者对检测框裁剪出的 RoI 区域做分割PostProcess后处理模块内部可再挂载多个判断规则rule对检出结果做 NG/OK 判定用于降低过杀。3.1 Detection 检测模块参数- Detection: config_path: ./configs/det/hrnet/faster_rcnn_hrnetv2p_w18_3x_defect.yml # 检测算法配置文件路径 model_path: ./output/faster_rcnn_hrnetv2p_w18_3x_defect/model_final.pdparams # 检测算法训练保存的模型路径 score_threshold: 0.01 # 只输出置信度大于 0.01 的 bboxconfig_path检测算法的训练/推理配置YAML路径例如 Faster R-CNN 系列路径位于 configs/det 目录model_path训练产出的权重文件.pdparams路径需与config_path中的模型结构匹配score_threshold检测阶段的置信度过滤阈值仅保留置信度大于该值的 bbox 进入后续阶段即它是流水线层面的第一道粗过滤。例如设为0.01时低于 0.01 的框在检测阶段即被丢弃。3.2 CropSegmentation RoI 区域分割模块参数- CropSegmentation: pad_scale: 0.5 # 根据检测 box 剪裁 RoI 区域时边长扩大的倍数 config_path: ./configs/seg/ocrnet/ocrnet_hrnetw18_RoI_defect_256x256_40k.yml # RoI 分割训练配置文件路径 model_path: ./output/seg_roi/best_model/model.pdparams # 分割训练保存的模型 aug_pred: False # 是否需要多尺度 Flip 推理pad_scale裁剪 RoI 时在检测框基础上向外扩大的倍数。设0.5表示在检测框边长的基础上再扩大 50%把缺陷周边上下文一并纳入分割区域避免缺陷紧贴框边缘导致分割信息不足该值过小可能截断缺陷过大则会引入无关背景干扰config_path/model_pathRoI 分割算法的配置与权重路径示例中使用 OCRNet HRNetW18 的256x256输入规格配置文件位于 configs/seg 目录aug_pred推理时是否启用多尺度 水平翻转Flip的测试时增强TTA。置为True时精度更高但推理耗时显著增加生产环境通常置False。在e2e_seg.yml中该模块被替换为整图分割算子BaseSegmentation参数只有config_path、model_path与aug_pred不含pad_scale——因为没有 RoI 裁剪环节。3.3 PostProcess 后处理模块规则链后处理模块是降低过杀把良品误判为缺陷的关键环节其结构是一个规则列表- PostProcess: # 后处理模块 - JudgeDetByScores: # 置信度判断 score_threshold: # 不同类别的置信度阈值若各个类别阈值一致则可写为 score_threshold: 0.1 1: 0.1 # 类别 1 的置信度低于该阈值的框判为 OK 框非缺陷 5: 0.2 - JudgeByLengthWidth: # 边长判断 len_thresh: 0 # 长或宽小于该像素值的预测判为 OK 框非缺陷 - JudgeByArea: # 面积判断 area_thresh: 1: 10 # 类别 1 且分割像素数小于 10 的预测判为 OK非缺陷后处理规则会按配置顺序依次叠加执行每一条规则只负责把不满足 NG 条件的预测实例标记为 OKisNG0。例如一个类别为 1、置信度为 0.05 的预测框会先被JudgeDetByScores判为 OK若置信度为 0.3 但分割面积只有 5 像素则会在JudgeByArea阶段被判为 OK。规则之间的执行关系是链式过滤这与 PostProcess 类 中for rule in self.rules: input rule(input)的实现一一对应。阈值写法的两种形式从 postprocess.py 的源码可以看出三个后处理算子的阈值均支持两种写法字典形式按类别如score_threshold: {1: 0.1, 5: 0.2}表示按category_id分别设置阈值未在字典中出现的类别默认判为 NGisNG1见 JudgeDetByScores 实现标量形式全局统一如score_threshold: 0.1所有类别共用同一阈值阈值以下的框判为 OK。这一点对实际调参很重要若只想收紧某一类缺陷如示例中类别 5 的 Uneven的判定用字典形式只调该类即可不会影响其他类别。三个后处理算子的判定逻辑JudgeDetByScores置信度判断对每个预测实例若score threshold判为 NG否则判为 OK。实现见 postprocess.py 的 JudgeDetByScores。JudgeByLengthWidth边长判断基于 bbox 的宽高只要bbox[2]宽 len_thresh或bbox[3]高 len_thresh即判为 NG宽、高都小于阈值则判为 OK。也支持按类别的字典阈值。实现见 JudgeByLengthWidth。例如len_thresh: 2表示宽或高小于 2 像素的检出被过滤为 OK如噪点产生的极小框。JudgeByArea面积判断优先使用分割结果的area像素数字段比较若预测结果没有area字段纯检测流水线则退化为用 bbox 面积w * h比较。实现见 JudgeByArea。area_thresh: {1: 10, 2: 5}表示类别 1 分割面积小于 10 像素、类别 2 面积小于 5 像素的预测判为 OK。需要特别说明的是JudgeByArea的退化分支意味着它同样可以用于纯检测流水线e2e_det.yml中未挂载面积算子但若挂载则以 bbox 面积参与判定这是从源码实现中可以明确确认的行为。四、配置解析与执行的底层原理了解配置文件如何被吃掉有助于排查配置问题。QualityInspector 的配置解析和执行分三层解析层 ConfigParser读取 YAML 后按ENV与PipeLine两个顶级键拆分分别得到env_cfg与model_cfg同时支持命令行-o/--opt参数在运行时覆盖任意配置项详见下文。组装层 Builder遍历PipeLine列表对每个算子通过create(op_arch, op_cfg, env_cfg)反射式实例化并按列表顺序依次调用实现检测 → 分割 → 后处理的拓扑执行执行结束时根据每个预测实例的isNG汇总出图像级isNG任一实例为 NG 则整图判 NG见 get_final_output。入口层 Pipeline统一封装配置解析、算子构建、输入解析支持目录批量、单图、图像列表三种输入方式见 _parse_input、结果落盘与可视化。其中值得注意的一点是PostProcess作为流水线最后一个算子其输入并非检测结果列表而是由 Builder 在进入后处理前将各阶段预测结果按image_path汇总到output字典中的见 Builder.run所以后处理规则能直接读取每个图像的pred列表并修改其中的isNG字段。命令行覆盖配置-o / --opt除了直接编辑 YAMLQualityInspector 还支持在启动命令时通过-o参数临时覆盖配置无需改动文件适合快速调参实验。覆盖语法支持点分路径例如python3 tools/end2end/predict.py \ --config ./configs/end2end/e2e_det.yml \ --input ./dataset/MT_dataset/images/val \ -o PipeLine.PostProcess.0.JudgeDetByScores.score_threshold.50.5该机制由 ArgsParser 的_parse_opt与 ConfigParser.merge_opt 共同实现能够对序列类型PipeLine 列表按下标定位对字典按键定位最终与文件配置深度合并。五、配置文件与预测、评估的衔接全流程配置文件是 QualityInspector 三个端到端工具链的总开关配置编写完成后即被以下两个环节直接复用全流程预测python3 tools/end2end/predict.py --config ./configs/end2end/e2e_det.yml --input 图像路径或目录 --output_dir ./output_det/得到以图像路径为 key、包含isNG图像级缺陷判断与pred实例级预测列表的output.json。若配置中save与visualize均为 True还会在output_dir/show/下生成可视化图像。详细用法见 全流程预测文档。全流程评估python3 tools/end2end/eval.py --input_path GT的coco json --pred_path 预测json --config ./configs/end2end/e2e_det.yml --rules_eval可输出工业质检常用的过杀率Overkill、图像级漏检Escape、实例级漏检三类指标并对 badcase 可视化。特别地--rules_eval配合--config可以只调整后处理参数而不重新跑检测/分割模型即可重新评估指标这正是配置文件模块化设计在生产中的核心价值。详见 全流程评估文档。六、调参实战思路结合三类指标与后处理规则链推荐的后处理参数调整路径是先跑通再收紧首次配置时把JudgeDetByScores的阈值设低如 0.01~0.1、len_thresh与area_thresh设小如 0~10保证缺陷不漏先获得较低的漏检基线依据过杀指标逐类收紧从评估输出的OK Evaluation Result表格中找到过杀率高的类别如某类 Overkill 超过 10%用字典形式只提高该类别的score_threshold或area_thresh权衡过杀与漏检收紧阈值通常伴随漏检Escape上升需要根据项目既定的过杀/漏检目标反复迭代这与 eval.md 中调整阈值后 Uneven 类别 Overkill 从 11.64% 降至 1.89%但需关注漏失是否上升的示例结论一致线上环境关闭可视化生产推理时将visualize置False、按需关闭save减少 IO 开销。七、小结全流程配置文件是 QualityInspector 工业质检方案配置即流水线思想的载体ENV控制运行环境与输出PipeLine以算子列表形式串联检测、分割、RoI 分割与后处理规则链配置解析与算子装配分别由 configs.py 与 framework.py 完成。掌握score_threshold、pad_scale、len_thresh、area_thresh等关键参数的语义与字典/标量两种写法即可针对不同缺陷类别灵活定制 NG/OK 判定规则在不重训模型的前提下持续优化过杀与漏检指标。三种开箱即用的 PPL 配置检测、分割、检测 RoI 分割已存放在 configs/end2end 目录可直接作为新项目配置的起点。赞分享人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载相关推荐如何快速为Royal TSX打造中文界面终极汉化包使用教程如何快速为Royal TSX打造中文界面终极汉化包使用教程 Royal TSX中文汉化包是一款专为macOS平台上的Royal TSX远程连接管理工具开发的本人工智能计算机视觉预训练PaddleSeg QualityInspector 中的 PSPNet 金字塔场景解析网络配置解析与训练实战PaddleSeg QualityInspector 中的 PSPNet 金字塔场景解析网络配置解析与训练实战 PSPNetPyramid Scene Pa人工智能计算机视觉预训练Django树形结构终极选择django-treenode与其他树形库深度对比指南 Django树形结构终极选择django treenode与其他树形库深度对比指南 在Django开发中处理树形结构数据是常见需求。无论是分类系统、组上一篇RD-Agent终极指南5步实现AI驱动自动化研发下一篇15分钟搞定智能会议纪要基于Qwen3-0.6B的零成本企业解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表