ARTICLE DETAIL

资讯详情

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

如何快速训练UniDetector的CLIP分类头:Fast RCNN第二阶段训练完全详解

如何快速训练UniDetector的CLIP分类头:Fast RCNN第二阶段训练完全详解 如何快速训练UniDetector的CLIP分类头Fast RCNN第二阶段训练完全详解【免费下载链接】UniDetectorCode release for our CVPR 2023 paper Detecting Everything in the Open World: Towards Universal Object Detection.项目地址: https://gitcode.com/gh_mirrors/un/UniDetectorUniDetector 是 CVPR 2023 论文提出的开放世界通用目标检测框架其核心思路是借助 CLIP 的视觉-语言对齐能力实现零样本类别识别。本文面向新手详解如何基于预计算 Region Proposals区域建议训练 UniDetector 的 CLIP 分类头——也就是 Faster RCNN 解耦训练Decoupled Training中的Fast RCNN 第二阶段带你从零跑通完整流程。为什么第二阶段要解耦训练UniDetector 支持两种训练方式端到端End-to-end与解耦训练Decoupled Training。解耦训练把 Faster RCNN 拆成两步第一阶段只训练区域建议网络CLN 模型负责找出物体在哪第二阶段冻结建议能力直接读取第一阶段预先导出的 proposals 文件只训练RoI 分类头CLIP 分类头负责判断物体是什么。这样做的好处是 分类头训练更稳定不用担心建议网络漂移⚡ 推理时可以只跑一次建议网络并缓存 proposals后续不同数据集复用 建议网络与 CLIP 语言侧解耦便于分别调参。第一步训练并导出预计算 Proposals训练第一阶段建议网络以单数据集 COCOval35k为例使用配置 clip_decouple_faster_rcnn_r50_c4_1x_coco_1ststage.pybash tools/dist_train.sh configs/singledataset/clip_decouple_faster_rcnn_r50_c4_1x_coco_1ststage.py 8导出 proposals 文件训练完成后用测试脚本把每张图片的候选区域最多 1500 个保存为 pickle 文件。项目约定的默认文件名为rp_train.pkl训练集与rp_val.pkl验证集bash tools/dist_test.sh configs/singledataset/clip_decouple_faster_rcnn_r50_c4_1x_coco_1ststage.py [第一阶段checkpoint路径] 8 --out rp_train.pkl 提示如需在验证集上导出 proposals需按 docs/datasets.md 将配置中的数据集改为验证集配置再运行一次。第二阶段核心BBoxHeadCLIP 如何工作第二阶段模型类型是FastRCNN无 RPN 头核心组件有四个组件说明定义位置CLIPResNet 骨干替换了原始 ResNet 的 CLIP 视觉编码器mmdet/models/backbones/clipresnet.pyCLIPResLayer 共享头RoI 特征提取mmdet/models/roi_heads/shared_heads/clip_res_layer.pyBBoxHeadCLIP 分类头零样本分类核心mmdet/models/roi_heads/bbox_heads/bbox_head_clip.pyLoadProposals 数据管线从 pkl 文件加载预计算 proposalsmmdet/datasets/pipelines/loading.py分类头的工作原理见 bbox_head_clip.py从zeroshot_path加载预计算的 CLIP 文本嵌入即各数据集类别的零样本权重矩阵项目已随仓库发布在 clip_embeddings/ 目录例如 COCO 80 类用coco_clip_acname_rn50_manyprompt.npyLVIS v0.5 的 1230 类用lvis_v0.5_clip_acname_rn50_manyprompt.npyRoI 特征经平均池化 注意力池化后做L2 归一化再与文本嵌入计算余弦相似度得到各类别的分类分数训练时的分类损失采用 Focal 风格的二分类交叉熵FEDLoss 思想对当前 batch 出现的类别加权回归损失为 L1。数据流程上训练管线通过LoadProposals读取 proposals默认每图取前 2000 个与 GT 标注一起做正负样本分配IoU 阈值 0.5再送入分类头训练最快配置方法第二阶段训练命令配置要点以单数据集 COCO 第二阶段配置 clip_decouple_faster_rcnn_r50_c4_1x_coco_2ndstage.py 为例需要关注的 5 个关键字段proposal_filetrain/val/test 分别指向rp_train.pkl/rp_val.pklzeroshot_pathCLIP 文本嵌入文件路径类别数必须与num_classes一致num_classesCOCO 为 80LVIS v0.5 为 1230optimizer第二阶段学习率设为0.002比第一阶段小 10 倍并开启梯度裁剪max_epochs 12step 衰减点为[8, 11]。启动训练bash tools/dist_train.sh configs/singledataset/clip_decouple_faster_rcnn_r50_c4_1x_coco_2ndstage.py 8 --cfg-options load_fromregionclip_pretrained-cc_rn50_mmdet.pth其中--cfg-options load_from...用于加载微软 RegionCLIP 预训练权重README 中提供了下载方式这是分类头收敛的关键。多数据集训练可直接换用 configs/multidataset/ 下的*_2ndstage.py配置。训练完成后即可进行开放世界推理配置位于 configs/inference/clip_decouple_faster_rcnn_r50_c4_1x_lvis_v0.5_2ndstage.py标准第二阶段推理100 个 proposalsBBoxHeadCLIPInference头clip_decouple_faster_rcnn_r50_c4_1x_lvis_v0.5_2ndstage_withcalibration.py带概率校准的推理能输出更符合真实概率的检测分数。bash tools/dist_test.sh configs/inference/clip_decouple_faster_rcnn_r50_c4_1x_lvis_v0.5_2ndstage.py [第二阶段checkpoint路径] 8 --eval bbox常见问题清单问题排查建议报proposal_file相关错误确认rp_train.pkl/rp_val.pkl已导出且路径与配置一致类别数不匹配zeroshot_path的 .npy 嵌入类别数必须等于num_classes换数据集时两者同步修改收敛慢/效果差检查是否通过load_from加载了 RegionCLIP 预训练权重确认学习率为 0.002显存不足配置中已启用fp16loss_scale32可再降低samples_per_gpu多数据集训练报错确认数据集准备符合 docs/datasets.md 要求并使用configs/multidataset/对应配置总结UniDetector 的第二阶段训练本质是冻结建议、只调分类先训练 CLN 建议网络并导出 proposals再让 BBoxHeadCLIP 用 CLIP 文本嵌入做零样本分类。掌握proposal_filezeroshot_path这两个核心配置你就能在 COCO、LVIS 乃至任意多数据集上快速复现论文结果把 UniDetector 应用到自己的开放世界检测任务中。【免费下载链接】UniDetectorCode release for our CVPR 2023 paper Detecting Everything in the Open World: Towards Universal Object Detection.项目地址: https://gitcode.com/gh_mirrors/un/UniDetector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表