【发刊神器】YOLO26ssod把刚发布的 YOLO26 塞进半监督检测框架:一篇论文的创新点,我帮你凑齐了
【发刊神器】把刚发布的 YOLO26 塞进半监督检测框架:一篇论文的创新点,我帮你凑齐了
作者:NeuralDragon QQ:541137317
关键词:YOLOv26 · 半监督目标检测(SSOD) · EfficientTeacher · NMS-free · DFL-free · MuSGD
一句话:2026 年 1 月刚发布的 YOLOv26 + 半监督学习,模块化、可消融、创新点密集——
这套组合拳,天生就是为了「水…啊不,为了高质量产出一篇目标检测方向论文」而生的。


0. 为什么说它是「发刊神器」?
写一篇 CV 检测方向的论文,审稿人最爱问三件事:新不新、稳不稳、消融全不全。
这套代码恰好把这三点全占了:
- 够新:YOLOv26 是 Ultralytics 2026 年 1 月 14 日才发布的最新一代检测器,
NMS-free 端到端 + 去 DFL,本身就是热点;再叠加半监督学习这个长盛不衰的方向,
“新 backbone/新 head + 老问题新解法” 的故事天然成立。 - 够稳:底座是成熟的 EfficientTeacher 半监督框架(EMA 教师 + 伪标签 + 一致性),
不是从零搭,训练流程经过验证,复现风险低。 - 够消融:整套设计是积木式的——去不去 DFL、要不要 NMS-free 的 o2o 分支、
ProgLoss/STAL 开不开、SGD 还是 MuSGD、半监督比例 1%/2%/5%/10%……
每一个开关都是一张消融表,论文实验部分直接拉满。
⚠️ 本仓库的 YOLOv26 是对齐官方公开架构描述的社区复现版
1. 整体架构:换头不换流程
┌────────── 全监督主体(升级为 YOLOv26)──────────┐
输入图像 ─▶ Backbone(YoloV8/V13) ─▶ Neck(PAN) ─▶ Head(YOLOv26: DFL-free + o2o NMS-free)
└────────────────────────────────────────────────┘
│
o2m TAL(top_k=13) │ o2o TAL(top_k=1) ← NMS-free 监督
▼
半监督机制(不变):EMA 教师 / 伪标签 / 一致性 / 域判别
和很多人做的 YOLOv13 改造侧重点正好相反:
- YOLOv13 创新在骨干/颈部(HyperACE/FullPAD)→ 保留 v8 头;
- YOLOv26 创新在头部/训练(去 DFL、NMS-free)→ 重点是新头 + 新损失,骨干颈部复用。
两者可以叠加(YOLOv13 骨干 + YOLOv26 头),又是一篇消融的素材。
2. 三个能写进 Method 的创新点
2.1 DFL-free:把分布式框回归拍扁成直接回归
YOLOv8 回归头输出 4×(reg_max+1) 通道,再用 softmax+proj 积分出框。YOLOv26 直接回归 4 个值。
好处(论文里这么写):去掉脆弱的 softmax/proj 算子 → 导出图更简单 → 量化(INT8/FP16)更友好 →
边缘部署延迟更低。
工程上零结构改动,配置即开关:
Loss: { use_dfl: False, reg_max: 0 } # 4×(0+1)=4,回归头退化为直接回归 4 通道
2.2 NMS-free:一对一(o2o)分支,端到端出框
YOLOv10 风格双分配:训练时 o2m 分支(top_k=13)给丰富监督,o2o 分支(top_k=1)学「每目标一框」,
推理走 o2o → 不需要 NMS,也甩掉了 IoU/score 这类要逐场景调的部署超参。
Model: { Head: { name: 'YoloV26', end2end: True } }
这一点对半监督尤其香:伪标签生成时少了 NMS 阈值的玄学调参,
故事可以讲成「NMS-free 让伪标签更稳定」——又一个创新点。
2.3 MuSGD:Muon + SGD 混合优化器
二维权重走 Muon(Newton-Schulz 正交化更新,均衡各方向步长),一维参数走 SGD。hyp.optimizer: 'MuSGD' 一键开启,默认 SGD 保持兼容。优化器对比也是一张消融表。
3. 五分钟跑起来
# 0) 环境(务必 numpy<2 + torchvision)
pip install -r requirements.txt && pip install "numpy<2"
# 1) 前向自测(不需要数据/GPU,确认装好了)
python scripts/selftest_yolov26.py
# 期望:YoloV26Detect | reg_max:0 | use_dfl:False,回归 4 通道,eval (B,8400,85),[PASS]
# 2) 全监督训练 YOLOv26
python train.py --cfg configs/sup/public/yolov26l_coco.yaml
# 3) 半监督训练(先把上一步 best.pt 填进 ssod 配置的 weights:)
python train.py --cfg configs/ssod/custom/yolov26_custom_ssod.yaml
# 4) 验证 / 推理
python val.py --cfg configs/sup/public/yolov26l_coco.yaml --weights runs/yolov26/exp/weights/best.pt
python detect.py --weights runs/yolov26/exp/weights/best.pt --source assets/
4. 实验表格模板(数值留空,跑完自己填)
下面全是占位表格,
—处填你的实测结果。建议固定随机种子、记录 epoch/输入尺寸/硬件。
4.1 半监督主结果(COCO 标准协议,不同标注比例)
| 方法 | 标注比例 | mAP@0.5:0.95 | AP50 | AP75 | 备注 |
|---|---|---|---|---|---|
| Supervised baseline (YOLOv26) | 1% | — | — | — | 仅有标注 |
| Ours (YOLOv26 + SSOD) | 1% | — | — | — | +无标注 |
| Supervised baseline (YOLOv26) | 5% | — | — | — | |
| Ours (YOLOv26 + SSOD) | 5% | — | — | — | |
| Supervised baseline (YOLOv26) | 10% | — | — | — | |
| Ours (YOLOv26 + SSOD) | 10% | — | — | — |
4.2 消融实验(在同一标注比例下逐项开关)
| # | DFL-free | NMS-free(o2o) | ProgLoss | STAL | MuSGD | mAP | ΔmAP |
|---|---|---|---|---|---|---|---|
| 1 | ✗ | ✗ | ✗ | ✗ | ✗ | — | base |
| 2 | ✓ | ✗ | ✗ | ✗ | ✗ | — | — |
| 3 | ✓ | ✓ | ✗ | ✗ | ✗ | — | — |
| 4 | ✓ | ✓ | ✓ | ✗ | ✗ | — | — |
| 5 | ✓ | ✓ | ✓ | ✓ | ✗ | — | — |
| 6 | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
4.3 部署效率(NMS-free 的卖点)
| 配置 | 后处理 | 输入 | 延迟(ms)↓ | FPS↑ | 显存(GB) | 设备 |
|---|---|---|---|---|---|---|
| YOLOv26 (end2end=False, +NMS) | NMS | 640 | — | — | — | — |
| YOLOv26 (end2end=True) | 无 NMS | 640 | — | — | — | — |
4.4 优化器对比
| 优化器 | mAP | 收敛 epoch | 备注 |
|---|---|---|---|
| SGD | — | — | 默认 |
| MuSGD | — | — | Muon+SGD |
4.5 规模对比
| 规模 | width | depth | 参数量 | GFLOPs | mAP |
|---|---|---|---|---|---|
| n | 0.25 | 0.33 | — | — | — |
| s | 0.50 | 0.33 | — | — | — |
| m | 0.75 | 0.67 | — | — | — |
| l | 1.00 | 1.00 | — | — | — |
5. 论文创新点的「包装话术」(按需取用)
- Contribution 1:首次将最新一代 YOLOv26 的 DFL-free / NMS-free 端到端检测头引入
半监督目标检测,统一了「高效部署」与「标注高效」两个维度。 - Contribution 2:提出/适配 一对一(o2o) 分支的伪标签一致性,缓解传统 SSOD 中
NMS 阈值敏感导致的伪标签噪声。 - Contribution 3:在半监督设定下系统消融 DFL / NMS-free / ProgLoss / STAL / MuSGD
各组件,给出可复现的设计建议。
写作小贴士:审稿人讨厌「换了个 backbone 就说 SOTA」。多写为什么(机理分析),
多给消融和误差棒,少吹绝对数字。本仓库的模块化开关就是为这种写法准备的。
6. 避坑清单
| 坑 | 现象 | 解决 |
|---|---|---|
| numpy 2.x | numpy.dtype size changed / _ARRAY_API not found |
pip install "numpy<2" |
| 没装 torchvision | No module named 'torchvision' |
按 torch 1.12 对应版本装 torchvision |
| TAL 损失报 CUDA | CPU 上训练报错 | TAL 损失需 GPU;CPU 只用于 selftest_yolov26.py 前向自测 |
| 半监督学生损失 | 与 anchor-free 头对齐问题 | 见改造说明书 §7.4:仓库原有缺口,先小数据验证学生分支 |
7. 资源
- 改造原理详解:
docs/YOLOv26_改造说明书.md - 项目说明:
README.md - 全监督配置:
configs/sup/public/yolov26l_coco.yaml - 半监督配置:
configs/ssod/custom/yolov26_custom_ssod.yaml - 前向自测:
scripts/selftest_yolov26.py
觉得有用就点赞 + 收藏 + 关注三连~ 评论区交流你的数据集和实验结果。
更多推荐



所有评论(0)