尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

训练UniDetector前必看的20+个关键超参数:完整配置项逐条解读

训练UniDetector前必看的20+个关键超参数:完整配置项逐条解读 训练UniDetector前必看的20个关键超参数完整配置项逐条解读【免费下载链接】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 论文《Detecting Everything in the Open World》的代码实现它借助 CLIP 的文本嵌入实现零样本分类配合开放世界 RPN 就能检测训练集中没见过的物体。想训练或魔改它本文带你逐条解读训练 UniDetector 前必须了解的 20 个关键超参数覆盖模型结构、锚点、采样、数据与优化器五大模块新手也能一次看懂。一、配置文件在哪里先搞清楚目录结构所有配置集中在 configs/ 目录按用途分为四类目录用途代表文件configs/singledataset/单数据集如 COCO端到端训练clip_end2end_faster_rcnn_r50_c4_1x_coco.pyconfigs/multidataset/多数据集COCOObjects365OpenImages训练clip_end2end_faster_rcnn_r50_c4_1x_oidobj365coco.pyconfigs/inference/LVIS 两阶段解耦式decoupled训练/推理clip_decouple_faster_rcnn_r50_c4_1x_lvis_v0.5_2ndstage.pyconfigs/base/所有配置共享的运行时代基配置default_runtime.py每个训练配置都通过_base_继承 default_runtime.py先改自己的文件、必要时再改基配置是最稳妥的做法。二、模型结构类超参数决定检测器长什么样以 clip_end2end_faster_rcnn_r50_c4_1x_coco.py 为主线逐条说明model.type FasterRCNN端到端版本用FasterRCNN自带 RPNLVIS 解耦式第二阶段则用FastRCNN外接第一阶段 RPN 生成的候选框见configs/inference/目录。backbone.type CLIPResNetlayers[3, 4, 6, 3]即 CLIP 版本 ResNet-50四个 stage 的残差块数。想换更大的 CLIP backbone改layers即可stylepytorch指定权重布局风格。norm_cfg dict(typeBN, requires_gradFalse)冻结 BatchNorm 的 gamma/beta只更新其滑动统计量是 CLIP 预训练微调的常用做法能显著提升稳定性。rpn_head.in_channels1024 / feat_channels1024CLIPResNet 无 FPNRPN 直接吃第 4 层特征通道数必须与 backbone 输出对齐。anchor_generator的scales[2,4,8,16,32]、ratios[0.5,1.0,2.0]、strides[16]每个像素位置 5×315 个锚框步长 16。开放世界物体大小悬殊scales跨度从 2 到 32 正是为覆盖小虫子到摩天楼级别的尺度范围设计的。RPN 的bbox_coder.target_stds[1.0,1.0,1.0,1.0]锚框回归的编码标准差控制回归值缩放。RPN 的loss_clsuse_sigmoidTrue与loss_bboxL1Loss前景/背景二分类 框回归损失权重loss_weight1.0可按任务调整。roi_head.shared_head CLIPResLayer(layers[3,4,6,3])RoI 特征再过一个 CLIP 残差层做精修与 backbone 同款结构。RoIAlign output_size14把候选框特征对齐到 14×14之后经 shared_head 与avg_pool压缩为roi_feat_size7的 7×7 特征in_channels2048是共享头输出通道。bbox_coder.target_stds[0.1, 0.1, 0.2, 0.2]细粒度回归的编码标准差宽高校验比位置更宽松0.2 vs 0.1是 Faster R-CNN 系列的经典设置。zeroshot_path⭐零样本核心指向 CLIP 文本嵌入的.npy文件如 clip_embeddings/coco_clip_acname_rn50_manyprompt.npyacname 表示 a photo of a X 与类名拼接的多提示词。换数据集检测范围主要换这个文件 num_classes。num_classes80与zeroshot_path中嵌入行数一致LVIS 配置里为 1230多数据集版本为 500。with_clsFalse零样本模式下分类头不训练配置中注释也写明 loss_cls 训练时不生效只训练回归分支类别判别完全靠 CLIP 相似度。reg_class_agnosticTrue所有类别共享同一套回归参数减少参数、更适合零样本泛化。cat_freq_path多数据集版专有类别出现频率 JSON 文件用于按类别频率加权有效样本数均衡缓解长尾。beta0.3、gamma0.6、withcalibrationTrueLVIS 第二阶段推理专有beta是融合第一阶段开放世界 RPN 开放词汇置信度的权重gamma是推理分数校准参数withcalibrationTrue时生效见 clip_decouple_faster_rcnn_r50_c4_1x_lvis_v0.5_2ndstage_withcalibration.py。第一阶段专有项configs/inference/..._1ststage.pyOlnRPNHeadTBLRBBoxCoderIoULoss(loss_weight10.0)并带 FPNout_channels256, num_outs5与frozen_stages1冻结 stem用torchvision://resnet50初始化。三、正负样本分配与采样决定怎么学这些参数都在配置的train_cfg中是新手最容易忽略、却最影响收敛的一组RPN 分配器pos_iou_thr0.7 / neg_iou_thr0.3——与 GT 重叠 ≥0.7 判正样本0.3 判负样本。RPN 采样器num256, pos_fraction0.5——每张图采 256 个样本正负各半。RCNN 分配器pos_iou_thr0.5 / neg_iou_thr0.5——第二阶段阈值更宽松0.5且match_low_qualityFalse避免低质正样本。RCNN 采样器num512, pos_fraction0.25——512 个样本中正样本只占 25%负样本更多配合零样本场景压制误检。rpn_proposal.nms_pre12000, max_per_img2000训练时每图送进 RPN 的候选框上限资源紧张可下调。nms iou_threshold0.7RPN 内部 NMS 阈值越大保留的候选越多。四、测试与后处理超参数决定最终输出什么test_cfg直接影响推理行为与 mAPtest_cfg.rpn: nms_pre6000, max_per_img1000推理时候选框比训练时更保守换 Faster R-CNN 为 1000。score_thr0.0001置信度下限几乎不过滤——开放世界检测宁可多保留、靠 NMS 去重。nmsdict(typesoft_nms, iou_threshold0.5, methodgaussian)⭐用软 NMS高斯衰减而非硬 NMS对密集/重叠的开放世界物体更友好是本文代码库的标志性设置。max_per_img100每图最终保留 100 个检测框LVIS 配置为 300因为类别更多。五、数据与预处理超参数决定输入质量Resize img_scale[(1333,400),(1333,800)]训练时随机在长边 400~800 间缩放宽上限 1333保持宽高比测试时固定(1333, 800)。显存不足时把上界调到 600 即可。RandomFlip flip_ratio0.550% 概率水平翻转测试管线flipFalse关闭增强。img_norm_cfgImageNet 均值/方差[122.77, 116.75, 104.09]等——CLIPResNet 微调必须沿用 CLIP 的归一化改错会掉点。Pad size_divisor32尺寸补齐到 32 的倍数保证多次下采样不丢失。samples_per_gpu2, workers_per_gpu2每卡 batch 2单图分辨率高显存大户 DataLoader 线程数 2。注意调大 batch 时建议同步调整学习率。LVIS 推理专有LoadProposals num_max_proposals100proposal_filerp_val_ow.pkl——加载第一阶段 RPN 预生成的开放世界候选框第二阶段只负责分类/回归精修。多数据集专有ConcatDataset中每个子集需分配唯一dataset_id0/1/2与zeroshot_path列表、cat_freq_path列表一一对应。六、优化器与训练策略决定学多快、稳不稳optimizer SGD(lr0.02, momentum0.9, weight_decay0.0001)注意 lr 是0.02 而非 0.002——配合下一条的分组学习率系数才等效常规量级。paramwise_cfgbackbone与roi_head均lr_mult0.1⭐CLIP 预训练部分按 1/10 学习率微调RPN 等新增模块用全量学习率。这是微调 新训练混合场景的关键技巧。optimizer_config grad_clip max_norm35梯度全局范数裁剪防止训练早期梯度爆炸。lr_configpolicystep, step[8, 11]第 8、11 个 epoch 衰减学习率通常 ×0.1。warmuplinear, warmup_iters500, warmup_ratio0.001前 500 次迭代学习率从 0.1% 线性爬升CLIP 微调的标配。runner.max_epochs12实际训练 12 个 epoch注释中 actual epoch 3 × 3 9 是 1× schedule 的折算说明以max_epochs为准。checkpoint_config interval1每个 epoch 存一次权重。log_config interval50每 50 次迭代打一条日志evaluation interval1, metricbbox表示每 epoch 用 bbox 指标评测一次。dist_params backendnccl多机多卡通信后端配合tools/dist_train.sh启动分布式训练。七、快速对照表调参时优先动哪几项你的需求优先调整的超参数检测新的类别集合zeroshot_pathnum_classes显存不够img_scale、samples_per_gpu、nms_pre训练不稳 / loss 爆warmup_iters、lr_mult、grad_clip.max_norm漏检大/小物体anchor_generator.scales误检太多rcnn.pos_fraction、score_thr、soft_nms阈值类别长尾严重cat_freq_path多数据集、ClassBalancedDataset开放世界推理调优beta、gamma、withcalibration 核心源码参考零样本分类头实现见 bbox_head_clip.pyCLIP 骨干见 clipresnet.py文本嵌入生成脚本见 dump_clip_features_manyprompt.py。写在最后UniDetector 的配置看似条目繁多其实遵循一条清晰逻辑CLIP 预训练部分微调低学习率 冻结 BN新增模块全量训练分类交给零样本嵌入回归交给共享头后处理交给软 NMS。先把configs/singledataset/下的 COCO 配置跑通再向多数据集和 LVIS 两阶段扩展是最平滑的上手路径。祝训练顺利早日检测出万物【免费下载链接】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),仅供参考
返回列表