PaddleSeg QualityInspector 中的 Faster R-CNN 模型库全解析:配置体系、精度清单与工业质检实战
人工智能计算机视觉预训练【免费下载链接】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点击查看免费下载本篇技术指南以 contrib/QualityInspector/configs/det/faster_rcnn/README.md 为骨架系统梳理 PaddleSeg 生态中工业质检全流程解决方案 QualityInspector 内置的 Faster R-CNN 目标检测模型库从 Model Zoo 精度清单、模块化配置架构、骨干网络变体到 COCO 预训练模型在磁砖缺陷检测场景下的训练、评估与端到端后处理落地。读完本文你将掌握 QualityInspector 中检测模型的配置原理、训练/验证命令以及如何将 Faster R-CNN 接入检测 后处理的质检全流程。一、Faster R-CNN 与 QualityInspector检测模型库的定位Faster R-CNN 是经典的两阶段目标检测框架核心思想是使用 Region Proposal NetworkRPN替代传统的选择性搜索Selective Search让候选区域生成与目标检测共享卷积特征实现接近实时的检测速度同时保持两阶段方法的高精度。该工作由 Ren、He、Girshick 与 Sun 于 2017 年正式发表于 IEEE TPAMI。在 PaddleSeg 仓库的 contrib/QualityInspector 工业质检全流程解决方案中检测算法库直接继承并复用 PaddleDetection 的成熟实现。所有检测模型的配置文件集中存放在 contrib/QualityInspector/configs/det/ 目录下其中 faster_rcnn/ 子目录就是本指南的主角——Faster R-CNN 模型的完整配置库包含 22 个可直接运行的 YAML 配置文件以及 7 个_base_基础配置模块。根据 contrib/QualityInspector/README.md 的说明QualityInspector 的设计目标是在 PaddleClas、PaddleSeg、PaddleDetection 三件套之上补齐工业质检场景所需的数据预处理、后处理、评测指标等配套能力而检测算法如 Faster R-CNN正是其检测单模型与检测 RoI 分割串联两类解决方案中的关键一环。二、Model Zoo 全览19 个预训练模型的精度清单README 文档的核心内容是一张完整的 Model Zoo 表格涵盖从轻量 ResNet34 到 Swin Transformer 的 19 个 Faster R-CNN 预训练模型均在 COCO 数据集上训练以下为完整清单Box AP 为 COCO 验证集上的指标骨架网络网络类型每张GPU图片个数学习率策略推理时间(fps)Box AP下载配置文件ResNet50Faster11x----36.7下载ResNet50-vdFaster11x----37.6下载ResNet101Faster11x----39.0下载ResNet34-FPNFaster11x----37.8下载ResNet34-FPN-MultiScaleTestFaster11x----38.2下载ResNet34-vd-FPNFaster11x----38.5下载ResNet50-FPNFaster11x----38.4下载ResNet50-FPNFaster12x----40.0下载ResNet50-vd-FPNFaster11x----39.5下载ResNet50-vd-FPNFaster12x----40.8下载ResNet101-FPNFaster12x----41.4下载ResNet101-vd-FPNFaster11x----42.0下载ResNet101-vd-FPNFaster12x----43.0下载ResNeXt101-vd-FPNFaster11x----43.4下载ResNeXt101-vd-FPNFaster12x----44.0下载ResNet50-vd-SSLDv2-FPNFaster11x----41.4下载ResNet50-vd-SSLDv2-FPNFaster12x----42.3下载Swin-Tiny-FPNFaster21x----42.6下载Swin-Tiny-FPNFaster22x----44.8下载Swin-Tiny-FPNFaster23x----45.3下载对表格的几点解读学习率策略 1x / 2x / 3x分别对应 COCO 训练惯例中的 12 / 24 / 36 个 epoch。以 optimizer_1x.yml 为例1x 策略为 12 个 epoch、基础学习率 0.01、在第 8 和第 11 个 epoch 处学习率衰减 10 倍2x 则在第 16、22 个 epoch 处衰减共 24 个 epoch。精度演进规律同骨架下 2x 比 1x 通常高出约 1.52 个 AP 点如 ResNet50-FPN 从 38.4 提升到 40.0vd 变体相比普通 ResNet 在同参数量下精度更优Swin-Tiny 配合 Transformer 骨架在 3x 策略下达表内最高的 45.3 Box AP。fps 列均为----README 未给出实测推理时间不能据此推断各模型的推理速度对比。每张 GPU 图片个数Swin 系列因显存占用较大设置为 2batch_size2其余为 1。三、配置体系_BASE_继承与模块化组装QualityInspector 的检测配置完全沿用 PaddleDetection 的_BASE_继承机制将网络结构、数据读取、优化器、运行环境、数据集拆分成独立的模块文件再通过顶层配置文件组装。以 faster_rcnn_r50_fpn_1x_coco.yml 为例完整内容如下_BASE_: [ ../datasets/coco_detection.yml, ../runtime.yml, _base_/optimizer_1x.yml, _base_/faster_rcnn_r50_fpn.yml, _base_/faster_fpn_reader.yml, ] weights: output/faster_rcnn_r50_fpn_1x_coco/model_final五个被继承的模块各司其职基础配置作用关键内容datasets/coco_detection.yml数据集与评测指标metric: COCO、num_classes: 80、TrainDataset/EvalDataset/TestDataset 定义runtime.yml运行环境与导出选项use_gpu、save_dir、snapshot_epoch、export 段post_process/nms/fuse_conv_bnbase/optimizer_1x.yml优化器与学习率Momentum L2 正则、PiecewiseDecay LinearWarmupbase/faster_rcnn_r50_fpn.yml网络结构FasterRCNN 架构、ResNet 骨干、FPN、RPNHead、BBoxHeadbase/faster_fpn_reader.yml数据预处理TrainReader/EvalReader/TestReader 的 transform 流水线这种设计带来的直接收益是换骨干网络只需在顶层文件覆盖ResNet小节并更换pretrain_weights换数据集只需替换 datasets 模块无需重写整套配置。例如 faster_rcnn_r50_vd_fpn_1x_coco.yml 仅用 9 行就完成了从 ResNet50 到 ResNet50-vd 的切换_BASE_: [ faster_rcnn_r50_fpn_1x_coco.yml, ] pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_pretrained.pdparams weights: output/faster_rcnn_r50_vd_fpn_1x_coco/model_final ResNet: depth: 50 variant: d # 关键差异启用 vdvirtual design结构 norm_type: bn freeze_at: 0 return_idx: [0,1,2,3] num_stages: 4Swin 系列同理faster_rcnn_swin_tiny_fpn_1x_coco.yml 换用_base_/optimizer_swin_1x.yml与_base_/faster_rcnn_swin_tiny_fpn.yml而 faster_rcnn_swin_tiny_fpn_2x_coco.yml 甚至直接继承 1x 配置只覆盖 epoch 与优化器参数。四、网络架构配置逐模块解读base/faster_rcnn_r50_fpn.yml 是 FPN 系列 Faster R-CNN 的网络骨架模板其模块拆解如下4.1 整体组装architecture: FasterRCNN pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_cos_pretrained.pdparams FasterRCNN: backbone: ResNet neck: FPN rpn_head: RPNHead bbox_head: BBoxHead bbox_post_process: BBoxPostProcessarchitecture声明模型类名FasterRCNN下的五个字段分别指定骨干、颈部特征金字塔、RPN 头、检测头与后处理模块形成骨干提取特征 → FPN 多尺度融合 → RPN 生成提案 → RoI 分类回归的完整链路。4.2 骨干网络 ResNetResNet: depth: 50 norm_type: bn freeze_at: 0 return_idx: [0,1,2,3] num_stages: 4depth网络深度50/101/34 等决定预训练权重匹配。return_idx: [0,1,2,3]从 res2 到 res5 共 4 个 stage 的特征都返回给 FPN索引 0 对应 res2配置文件注释明确说明。num_stages: 4与return_idx一一对应。freeze_at: 0不冻结任何 stage 参与训练。注意非 FPN 的 C4 风格配置base/faster_rcnn_r50.yml 中return_idx: [2]、num_stages: 3只输出单个尺度的 res5 特征配合Res5Head与 14×14 的 RoI 分辨率——这是 Faster R-CNN 原始论文不使用 FPN的配置风格。4.3 特征金字塔 FPNFPN: out_channel: 256FPN 将 res2res5 的特征自顶向下融合统一输出 256 通道的多尺度特征图供 RPN 与 RoI 提取使用。4.4 RPN 头锚框与提案生成RPNHead: anchor_generator: aspect_ratios: [0.5, 1.0, 2.0] anchor_sizes: [[32], [64], [128], [256], [512]] strides: [4, 8, 16, 32, 64] rpn_target_assign: batch_size_per_im: 256 fg_fraction: 0.5 negative_overlap: 0.3 positive_overlap: 0.7 use_random: True train_proposal: min_size: 0.0 nms_thresh: 0.7 pre_nms_top_n: 2000 post_nms_top_n: 1000 topk_after_collect: True test_proposal: min_size: 0.0 nms_thresh: 0.7 pre_nms_top_n: 1000 post_nms_top_n: 1000anchor_generator5 个金字塔层级 stride464各配一个基础锚框尺寸每个位置生成 3 种宽高比0.5/1.0/2.0共 15 组锚框。rpn_target_assign每张图采样 256 个锚框训练 RPN正样本比例 50%与真值 IoU 大于 0.7 为正样本、小于 0.3 为负样本。train_proposal / test_proposal训练时 NMS 前保留 2000 个候选、NMS 后保留 1000 个测试时 NMS 前后均保留 1000 个。topk_after_collect表示收集锚框后再做 topk 截断。4.5 检测头 BBoxHeadBBoxHead: head: TwoFCHead roi_extractor: resolution: 7 sampling_ratio: 0 aligned: True bbox_assigner: BBoxAssigner BBoxAssigner: batch_size_per_im: 512 bg_thresh: 0.5 fg_thresh: 0.5 fg_fraction: 0.25 use_random: True TwoFCHead: out_channel: 1024roi_extractorRoI Align 输出 7×7 特征图aligned: True开启像素对齐。TwoFCHead两个全连接层输出通道 1024。BBoxAssigner每图采样 512 个 RoI 训练分类头正样本比例 25%IoU 阈值 0.5 划分前景/背景。4.6 后处理 BBoxPostProcessBBoxPostProcess: decode: RCNNBox nms: name: MultiClassNMS keep_top_k: 100 score_threshold: 0.05 nms_threshold: 0.5RCNNBox 负责将回归输出解码为真实坐标MultiClassNMS 按类别独立执行 NMS保留得分大于 0.05 的框、NMS 阈值 0.5、每张图最多保留 100 个检测结果。这组参数决定了模型输出的原始检出在质检场景中通常会通过全流程后处理进一步过滤见第六节。五、骨干变体、训练数据与优化器配置5.1 骨干变体一览模型库覆盖了四种骨干演进路线对应配置文件中的关键差异变体代表配置关键参数差异ResNetC4无 FPNfaster_rcnn_r50_1x_coco.ymlreturn_idx: [2]、Res5Head、with_pool: trueResNet/ResNet-vd FPNfaster_rcnn_r50_fpn_1x_coco.ymlvariant: dvd 变体、四层 FPN 特征ResNeXt101-vd FPNfaster_rcnn_x101_vd_64x4d_fpn_2x_coco.ymlgroups: 64、base_width: 464×4d 分组卷积Swin-Tiny FPNfaster_rcnn_swin_tiny_fpn_1x_coco.ymlembed_dim: 96、depths: [2,2,6,2]、AdamW 优化器其中 Swin 骨干配置在base/faster_rcnn_swin_tiny_fpn.yml 中窗口大小 7、drop_path_rate 0.1、输出 4 个 stage 特征配套的 optimizer_swin_1x.yml 改用 AdamWweight_decay 0.05、梯度裁剪 1.0、base_lr 0.0001并对absolute_pos_embed、relative_position_bias_table、norm等参数单独设置 weight_decay 为 0——这是 Transformer 训练的标准做法。此外dcn/ 目录还提供了 Faster R-CNN 与可变形卷积 DCNv2 的组合例如 faster_rcnn_dcn_r50_vd_fpn_2x_coco.yml 中通过dcn_v2_stages: [1,2,3]在 ResNet 的 res3res5 层启用 DCNv2 卷积增强对形变目标的建模能力。5.2 数据读取与预处理coco_detection.yml 定义了 COCO 格式数据metric: COCO num_classes: 80 TrainDataset: name: COCODataSet image_dir: train2017 anno_path: annotations/instances_train2017.json dataset_dir: dataset/coco data_fields: [image, gt_bbox, gt_class, is_crowd]faster_fpn_reader.yml 定义了训练/验证/测试三套预处理流水线。训练侧采用多尺度随机缩放RandomResize从 6 组target_size短边 640800长边固定 1333中随机选择配合 0.5 概率的水平翻转、ImageNet 均值的NormalizeImage与PadBatchpad_to_stride 32评估与测试侧固定为 800×1333 缩放。5.3 优化器与学习率optimizer_1x.ymlepoch: 12 LearningRate: base_lr: 0.01 schedulers: - !PiecewiseDecay gamma: 0.1 milestones: [8, 11] - !LinearWarmup start_factor: 0.1 steps: 1000 OptimizerBuilder: optimizer: momentum: 0.9 type: Momentum regularizer: factor: 0.0001 type: L212 个 epoch、前 1000 步线性热身起始系数 0.1、第 8/11 epoch 学习率衰减为原来的 0.1配合 Momentum 优化器与 0.0001 的 L2 权重衰减。2x/3x 配置如 faster_rcnn_r101_fpn_2x_coco.yml仅调整 epoch 与 milestones其余完全复用。5.4 多尺度测试技巧faster_rcnn_r34_fpn_multiscaletest_1x_coco.yml 展示了无需重训的精度提升手段——将 Eval/TestReader 的Resize替换为MultiscaleTestResize- MultiscaleTestResize: {origin_target_size: [800, 1333], target_size: [700, 900], use_flip: False}推理时在 700900 的短边区间内做多尺度测试融合使 ResNet34-FPN 的 Box AP 从 37.8 提升到 38.2。六、在 QualityInspector 中训练与评估 Faster R-CNN检测模型的训练与评估入口位于 tools/det/底层直接调用 PaddleDetection 的 Trainer 引擎见 tools/det/train.py 中对ppdet.engine.Trainer的导入。6.1 单卡训练以 docs/det_seg/train_eval.md 中 HRNet 骨干的 Faster R-CNN 缺陷检测配置为例该配置继承自faster_rcnn系列的_base_/optimizer_1x.yml与后处理定义python3 tools/det/train.py -c configs/det/hrnet/faster_rcnn_hrnetv2p_w18_3x_defect.yml --use_vdltrue --vdl_log_dir./vdl_dir/scalar --eval-c指定配置文件--use_vdl开启 VisualDL 可视化--eval表示训练过程中周期性地在验证集上评估。训练产物保存在./output/配置名/目录最终权重为model_final.pdparams。6.2 多卡分布式训练CUDA_VISIBLE_DEVICES0,1 python3 -m paddle.distributed.launch tools/det/train.py -c configs/det/hrnet/faster_rcnn_hrnetv2p_w18_3x_defect.yml --use_vdltrue --vdl_log_dir./vdl_dir/scalar --eval6.3 模型评估python3 tools/det/eval.py -c configs/det/hrnet/faster_rcnn_hrnetv2p_w18_3x_defect.yml -o weights./output/faster_rcnn_hrnetv2p_w18_3x_defect/model_final.pdparams-o用于覆盖配置文件中的全局变量此处指定评估权重路径。注意文档说明目前检测评估仅支持单卡。6.4 自定义数据集的配置替换模型库的 COCO 配置可直接改造为质检数据集。以 defect_detection.yml 为例只需替换数据集路径与类别数metric: COCO num_classes: 5 TrainDataset: name: COCODataSet anno_path: ./dataset/MT_dataset/train.json dataset_dir: ./ data_fields: [image, gt_bbox, gt_class, is_crowd] allow_empty: true数据准备流程磁砖缺陷数据集 → PaddleSeg 分割格式 → COCO 检测 json详见 docs/tools_data/prepare_data.md转换工具位于 tools/convert_tools/。七、质检场景落地检测 后处理全流程7.1 质检数据集示例QualityInspector 的演示案例使用 Magnetic-tile-defect-datasets 磁砖表面缺陷数据集包含 Blowhole、Crack、Break、Fray、Uneven 五类缺陷与 Free正常样本每类均提供原始灰度图与像素级真值标注该数据集经 tools/dataset/MT_dataset.py 等工具转换后即可用于 Faster R-CNN 训练详见 docs/quick_start.md。7.2 质检场景下的检测配置hrnet/faster_rcnn_hrnetv2p_w18_3x_defect.yml 是质检场景的典型配置36 个 epoch、base_lr: 0.02、batch_size 16并且针对缺陷检测特点调低了 NMS 阈值、抬高了得分阈值BBoxPostProcess: decode: name: RCNNBox nms: name: MultiClassNMS keep_top_k: 100 score_threshold: 0.2 nms_threshold: 0.1nms_threshold: 0.1意味着更严格的 NMS相邻框更易被抑制适合缺陷框重叠度高的场景score_threshold: 0.2则在模型输出阶段过滤低置信度检出减轻后续后处理压力。这组值与 COCO 基线0.05/0.5的差异正体现了质检场景的针对性调优。7.3 端到端全流程配置检测模型训练完成后通过 configs/end2end/e2e_det.yml 组装检测 后处理流水线ENV: device: gpu output_dir: ./output_det/ save: True visualize: True PipeLine: - Detection: config_path: ./configs/det/hrnet/faster_rcnn_hrnetv2p_w18_3x_defect.yml model_path: ./output/faster_rcnn_hrnetv2p_w18_3x_defect/best_model.pdparams score_threshold: 0.01 - PostProcess: - JudgeDetByScores: score_threshold: 1: 0.2 2: 0.0 5: 0.3 - JudgeByLengthWidth: len_thresh: 0全流程配置文件分为ENV运行环境与PipeLine算子序列两部分详见 docs/end2end/parse_config.md。执行预测python3 tools/end2end/predict.py --config ./configs/end2end/e2e_det.yml --input ./dataset/MT_dataset/images/val --output_dir ./output_det/输出output.json中每张图像包含图像级isNG与实例级predbbox/score/category_name/isNG信息详见 docs/end2end/predict.md。后处理算子实现在 qinspector/ops/postprocess.py 中通过register注册、由 qinspector/cvlib/workspace.py 的create工厂按名称实例化目前支持三种 NG/OK 判定规则算子判定逻辑关键参数JudgeDetByScores置信度低于阈值的预测框判为 OKscore_threshold支持按类别给阈值JudgeByLengthWidth宽或高小于阈值的预测框判为 OKlen_threshJudgeByArea面积或 bbox 面积小于阈值的预测判为 OKarea_thresh有area字段用分割面积否则用 bbox 面积7.4 过杀/漏检评估与一键调优全流程评估使用 tools/end2end/eval.pypython3 tools/end2end/eval.py --input_path ./dataset/MT_dataset/val.json --pred_path ./output_det/output.json --config ./configs/end2end/e2e_det.yml --rules_eval --image_root ./输出三类工业级指标详见 docs/end2end/eval.md过杀指标OverkillOK 图像被误判为 NG 的比例可细分到每个缺陷类别图像级别漏检EscapeNG 图像没有被任何 NG 预测命中的比例实例级别漏检具体缺陷实例未被正确召回与 GT 的 IoU 大于iou_theshold默认 0.1的比例。当发现某类别过杀偏高时无需重新预测只需在 e2e_det.yml 中调整对应类别的score_threshold再以--rules_eval重新执行评估即可完成指标调优——这正是 Faster R-CNN 模型库在 QualityInspector 全流程中发挥价值的最终环节。八、扩展接入更多检测算法QualityInspector 的检测配置目录不仅包含 Faster R-CNN还内置了 Cascade R-CNN、Mask R-CNN、PP-YOLO、PP-YOLOE、YOLOX、YOLOF、DINO、DCN、GroupNorm 等系列见 configs/det/。根据 docs/det_seg/train_eval.md 的说明QualityInspector 只保留了部分算法配置文件实际可以使用 PaddleDetection 中集成的任意算法只需将算法的 config 文件放入./configs/det/目录即可。这意味着上述 Faster R-CNN 的配置组织方式_BASE_继承、模块拆分就是接入新算法时的参考范式。九、引用文献Faster R-CNN 原始论文Model Zoo README 附带article{Ren_2017, title{Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks}, journal{IEEE Transactions on Pattern Analysis and Machine Intelligence}, publisher{Institute of Electrical and Electronics Engineers (IEEE)}, author{Ren, Shaoqing and He, Kaiming and Girshick, Ross and Sun, Jian}, year{2017}, month{Jun}, }总结本文完整继承了 contrib/QualityInspector/configs/det/faster_rcnn/README.md 的 Model Zoo 清单并结合仓库源码展开了配置体系、网络模块、骨干变体、训练评估与质检全流程落地五个层面的深度解析。从实践角度看如果你需要在 QualityInspector 中使用 Faster R-CNN首选从 faster_rcnn_r50_fpn_1x_coco.yml 出发替换数据集模块与骨干配置即可若追求精度上限可参考 Swin-Tiny 3x45.3 AP或 ResNeXt101-vd-FPN 2x44.0 AP的配置组合最终通过端到端全流程与后处理参数调优将检测模型转化为满足过杀/漏检目标的质检方案。赞分享人工智能计算机视觉预训练【免费下载链接】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点击查看免费下载相关推荐PaddleSeg QualityInspector 中的 Cascade R-CNN 模型库高质量检测与实例分割配置全解析PaddleSeg QualityInspector 中的 Cascade R CNN 模型库高质量检测与实例分割配置全解析 导读 Cascade R CNN人工智能计算机视觉预训练如何零成本解锁Grammarly Premium高级版终极免费使用指南 如何零成本解锁Grammarly Premium高级版终极免费使用指南 还在为Grammarly高级版的高昂订阅费而烦恼吗想要享受专业级的语法检查、风人工智能计算机视觉预训练PaddleSeg QualityInspector 中的 PP-YOLO 检测方案模型库、配置解析与全流程实战PaddleSeg QualityInspector 中的 PP YOLO 检测方案模型库、配置解析与全流程实战 PP YOLO 是飞桨PaddlePadd人工智能计算机视觉预训练上一篇gh_mirrors/ps/psr7持续集成配置GitHub Actions自动化流程下一篇kernel-hardening-checker 架构解析深入理解多平台安全检查机制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考