DynamicHead 调参实战:学习率、迭代步数与 Anchor 设置的 5 个关键技巧

📅 2026/8/20 17:48:19
DynamicHead 调参实战:学习率、迭代步数与 Anchor 设置的 5 个关键技巧
DynamicHead 调参实战学习率、迭代步数与 Anchor 设置的 5 个关键技巧【免费下载链接】DynamicHead项目地址: https://gitcode.com/gh_mirrors/dy/DynamicHeadDynamicHead 是 CVPR 2021 提出的动态检测头框架通过尺度感知、空间感知与任务感知三种注意力机制统一目标检测头在几乎不增加计算开销的前提下显著提升表征能力。无论你刚接触还是已跑通官方配置调参都是提升精度的关键环节。本文基于官方提供的 4 套配置R50ATSS、R50RetinaNet、R50Faster R-CNN、Swin-TATSS为你总结学习率、迭代步数与 Anchor 设置中最实用的 5 个调参技巧帮你少走弯路、快速提升 COCO mAP。1. 学习率从 BASE_LR 与批量大小的对应关系入手学习率是最容易踩坑的超参数。官方配置中R50 系列模型在IMS_PER_BATCH: 16时使用BASE_LR: 0.01见 dyhead_r50_atss_fpn_1x.yaml而 Swin-T 在IMS_PER_BATCH: 32时学习率降至0.0001并使用 AdamW。原因很简单Swin 骨干基于 Transformer 结构对学习率极为敏感必须配合小学习率 大权重衰减WEIGHT_DECAY: 0.05。实战建议改变批量大小时按线性缩放原则调整学习率例如批量翻倍则学习率约翻倍换用 Swin 等 Transformer 骨干时务必把优化器从 SGD 切换为 ADAMW见 dyhead_swint_atss_fpn_2x_ms.yaml否则很容易发散。2. 迭代步数与学习率衰减节点90K 迭代的节奏拆解官方三套 1x 配置统一采用MAX_ITER: 90000、STEPS: (60000, 80000)的调度方案即训练 9 万步在 6 万步和 8 万步处将学习率各衰减一次通常为 0.1 倍。这一节奏对应 COCO 数据集上约 12 个 epoch属于标准 1x schedule。调参要点当数据集较小或 GPU 较少时可适当延长迭代到 2x如 Swin-T 配置 dyhead_swint_atss_fpn_2x_ms.yaml 配合多尺度训练MIN_SIZE_TRAIN: (640, ..., 800)衰减节点应保持在总迭代的 2/3 与 8/9 附近给足后期精调空间。3. Anchor 设置ATSS 与 RetinaNet 的方案差异对比这是最容易被忽略却影响巨大的部分。两套官方配置展示了完全不同的 Anchor 设计哲学ATSSdyhead_r50_atss_fpn_1x.yaml每个特征层只用一个尺寸[[x*2,] for x in [32, 64, 128, 256, 512]]宽高比仅为[1.0]靠 ATSS 自适应的正负样本分配机制弥补 Anchor 数量的不足。RetinaNetdyhead_r50_retina_fpn_1x.yaml每个特征层 3 个尺寸步长2^(1/3)倍率默认 3 种宽高比Anchor 密度更高。调参建议使用 ATSS 时不必堆叠过多宽高比保持单 Anchor 反而训练更快且精度相当使用 RetinaNet 时若目标长宽比差异大可在ANCHOR_GENERATOR.ASPECT_RATIOS中加入[0.5, 1.0, 2.0]参照 R-CNN 配置 dyhead_r50_rcnn_fpn_1x.yaml。4. 迭代步数与 Anchor 的联动小目标数据集的两种加速策略当你的数据集小目标居多如航拍、卫星图单独调 Anchor 或单独加迭代往往不够。推荐组合策略下调最小 Anchor 尺寸将ANCHOR_GENERATOR.SIZES中 32 改成 16 或 24让小目标有匹配的先验框配合多尺度训练采用 Swin 配置中的MIN_SIZE_TRAIN随机采样等效扩充数据让新增的小 Anchor 有足够样本学习。5. 迭代步数与训练监控何时该停下来官方模型库显示ATSS DyHead 在 1x schedule 下达到 42.4 mAPRetinaNet 为 39.9Faster R-CNN 为 40.3Swin-T 在 2x 多尺度下冲到 49.8。这说明同样的MAX_ITER: 90000不同检测头收益不同。监控技巧在OUTPUT_DIR中观察验证集 mAP 曲线若 6 万步第一次衰减前 mAP 已停滞优先检查学习率是否过大出现 loss 震荡或过小下降过慢若衰减后 mAP 提升不明显可尝试在 train_net.py 的STEPS中加入第三个衰减节点。训练与评估命令可参考 README 中的标准用法python train_net.py --config configs/dyhead_r50_atss_fpn_1x.yaml --num-gpus 8。总结DynamicHead 调参并不神秘——学习率跟随骨干与批量大小迭代步数围绕衰减节奏展开Anchor 设置则取决于检测头类型。把这 5 个技巧用起来你的模型精度提升会立竿见影。想深入调试建议从 dyhead/dyhead.py 的 DyConv 模块和 dyhead/config.py 的NUM_CONVS、CHANNELS配置入手灵活组合出适合自己数据集的最佳方案。【免费下载链接】DynamicHead项目地址: https://gitcode.com/gh_mirrors/dy/DynamicHead创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考