揭秘UniDetector解耦训练的两阶段:OLN提议网络训练与Proposals提取完全指南 揭秘UniDetector解耦训练的两阶段OLN提议网络训练与Proposals提取完全指南【免费下载链接】UniDetectorCode release for our CVPR 2023 paper Detecting Everything in the Open World: Towards Universal Object Detection.项目地址: https://gitcode.com/gh_mirrors/un/UniDetector如果你正在研究UniDetector 解耦训练decoupled training这篇指南将带你完整拆解它最核心的两个阶段第一阶段训练 OLN 区域提议Region Proposal网络以及第二阶段基于 CLIP 的 RoI 分类并手把手讲清 Proposals 提取的每一步。UniDetector 是 CVPR 2023 论文《Detecting Everything in the Open World: Towards Universal Object Detection》的官方代码目标是训练一个能检测开放世界中任何类别的通用目标检测器。一、为什么要用解耦训练传统 Faster R-CNN 把找框RPN和认类RoI 分类捆在一起训练RPN 会受分类损失影响而过度拟合已知的 80/1200 个类别遇到新类别时就看不见了。UniDetector 的思路是把两阶段拆开、各自为战阶段模型学习目标第一阶段OLN-RPNOpen-World Localization Network只学哪里有物体完全不学分类中间步骤—用训好的 OLN 批量提取 Region Proposals 存成 pkl第二阶段CLIP Backbone RoI 分类头用 CLIP 图文对齐能力给框打类别分下图直观展示了 UniDetector 的目标用异构标注源不同标签空间联合训练泛化到开放世界二、整体流程一图看懂解耦训练共三步对应configs/singledataset/下的配置文件训练 OLN 提议网络→configs/singledataset/clip_decouple_faster_rcnn_r50_c4_1x_coco_1ststage.py提取 Proposalsdist_test.sh --out rp_train.pkl训练 RoI 分类→configs/singledataset/clip_decouple_faster_rcnn_r50_c4_1x_coco_2ndstage.py数据侧的处理链路如下第二阶段的 pipeline 会额外插入LoadProposals环节读取提议框多数据集版本Objects365COCO、OpenImagesObjects365COCO流程完全一致直接换成 configs/multidataset/ 下的配置即可。三、第一阶段训练 OLN 提议网络只定位、不分类 核心思想Learning localization instead of classification at the proposal stage——提议阶段只学定位从根源上避免 RPN 被分类带偏。实现位于 oln_rpn_head.py相比标准 RPN 有 4 个关键设计单 Anchor每个特征位置只用 1 个 anchorscales[8], ratios[1.0]让每个 anchor 吃更多数据泛化更好TBLR 回归用框中心到 GT 四条边的距离TBLRBBoxCoder代替 xywh 回归配 IoULossCenterness 分支额外预测框定得好不好的 objectness 分数L1 损失推理时用它作为提议分数排序关闭分类损失配置里loss_cls的loss_weight0.0模型完全不依赖类别标签数据集也设了class_agnosticTrue。训练命令8 卡COCO val35kbash tools/dist_train.sh configs/singledataset/clip_decouple_faster_rcnn_r50_c4_1x_coco_1ststage.py 8四、Proposals 提取把好框存成 pkl 文件训完 OLN 后用测试脚本对训练集和验证集分别跑一遍推理把每张图 top-2000 的提议框保存下来bash tools/dist_test.sh configs/singledataset/clip_decouple_faster_rcnn_r50_c4_1x_coco_1ststage.py [path_for_trained_checkpoints] 8 --out rp_train.pkl几个新手容易踩的坑文件命名有约定默认叫rp_train.pkl/rp_val.pkl这个名字写死在第二阶段的配置里clip_decouple_faster_rcnn_r50_c4_1x_coco_2ndstage.py 的proposal_file字段。改了输出名记得同步改配置或把 pkl 放到data_root对应位置。测试时不做 NMS第一阶段test_cfg里nms_thr0.0、max_num2000即每张图输出 2000 个带 objectness 分数、未去重的提议框见 oln_rpn_head.py。开放世界推理也要提取在 LVIS v0.5 上推理时用 clip_decouple_faster_rcnn_r50_c4_1x_lvis_v0.5_1ststage.py 提取rp_val_ow.pkl再喂给第二阶段配置推理。提取出的 pkl 会在第二阶段由LoadProposals读入loading.py训练时每图只取前 2000 个提议num_max_proposals2000。五、第二阶段CLIP 驱动的 RoI 分类第二阶段是一个标准的 FastRCNN 结构但换上了 CLIP 全家桶CLIPResNet 骨干clipresnet.pyCLIPResLayer共享头需加载 RegionCLIP 预训练权重BBoxHeadCLIPbbox_head_clip.py把 RoI 特征与类别语言嵌入如clip_embeddings/coco_clip_acname_rn50_manyprompt.npy做余弦相似度得到类别分数zeroshot_path指定嵌入文件路径输入框不再实时生成而是从proposal_file加载。训练命令注意load_from指向 RegionCLIP 权重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推理/评测时换成configs/inference/下对应配置即可还可选用..._2ndstage_withcalibration.py开启概率校准提升开放世界分数。六、配置文件速查表用途配置文件COCO 第一阶段OLN 训练clip_decouple_faster_rcnn_r50_c4_1x_coco_1ststage.pyCOCO 第二阶段RoI 分类clip_decouple_faster_rcnn_r50_c4_1x_coco_2ndstage.pyLVIS v0.5 开放世界推理1st/2ndclip_decouple_faster_rcnn_r50_c4_1x_lvis_v0.5_1ststage.py、clip_decouple_faster_rcnn_r50_c4_1x_lvis_v0.5_2ndstage.py多数据集训练Obj365COCO 等configs/multidataset/七、新手 FAQQ1第一阶段为什么能不用类别标签因为 OLN 只优化定位TBLR 回归 Centerness配置中分类损失权重为 0数据集class_agnosticTrue所有 GT 框都被当作同一个类处理所以模型天生对未知类别无偏。Q2rp_train.pkl 一定要叫这个名字吗不一定要但第二阶段配置里proposal_file默认指向rp_train.pkl/rp_val.pkl改任一边的命名即可两者保持一致就行。Q3需要准备哪些预训练资源区域 CLIP 图像嵌入由 RegionCLIP 提供mmdetection 格式权重语言侧 CLIP 嵌入已预计算好放在 clip_embeddings/ 目录也可用 dump_clip_features_manyprompt.py 自行生成。数据集准备参考 docs/datasets.md。Q4想从零克隆项目开始git clone https://gitcode.com/gh_mirrors/un/UniDetector项目基于 mmdetection v2.18.0安装环境请遵循 mmdetection 官方指南并额外安装 CLIP 库。✅ 掌握OLN 提议网络训练 → Proposals 提取 → CLIP RoI 分类这条主线后你就可以直接改配置复现 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),仅供参考