Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -219,3 +219,4 @@ wiki/repowiki/*/meta/repowiki-metadata.json
# Checked-in, reproducible figures for Tencent/YOLO-Master Issue #52
!reports/issue52-figs/
!reports/issue52-figs/*.png
agent/logs/
320 changes: 320 additions & 0 deletions MoT_MoA_Ablation_Report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,320 @@
# YOLO-Master MoT/MoA 消融实验报告 —— ⚠️ 已被取代(SUPERSEDED 2026-08-07)

> ## 不要引用本报告的精度结论。
>
> 本报告是 2026-07-28 在 **COCO128(128 张图)** 上跑的初步探路实验,当时 VisDrone 因网络原因下载失败(见第六节局限性 4)。三个变体的 mAP50-95 分别是 **0.00021 / 0.00003 / 0.00045** —— 比有意义的检测性能低三个数量级。报告当时声称「相对排序有意义」,**这个前提事后被证伪**。
>
> **取代本报告的产出:**
>
> | 内容 | 有效产出 |
> |---|---|
> | 精度(VisDrone,8 臂 × 100ep) | `runs/visdrone_mot_ablation/comparison.md`、`runs/visdrone_hybrid/comparison.md`、`runs/visdrone_mot_placement/comparison.md` |
> | 精度(COCO 2017 全量,3 臂 × 20ep) | `runs/Coco_2017_mot_ablation/comparison.md` |
> | 延迟(8 臂交错重测,唯一可跨臂比较的口径) | `runs/latency_unified/latency_0_640_interleaved.csv` |
> | 路由可解释性 | `/root/autodl-tmp/Interpretability_of_routing_behavior/report.md` |
> | 总结 | `/root/autodl-tmp/Technical_summary_article/YOLO-Master_MoT_技术总结.md` |
>
> **被证伪的具体结论(三项):**
>
> 1. **「相对排序 MoA-N > EsMoE-N > MoT-N」(3.3 节)不成立。** COCO128 的排序在两个真实数据集上都不复现 —— 基线在两者上都是第一:
>
> | 数据集 | 基线 v10 | MoA | MoT | 实际排序 |
> |---|:---:|:---:|:---:|---|
> | COCO128(本报告,128 图) | 0.00021 | 0.00045 | 0.00003 | MoA > 基线 > MoT |
> | VisDrone(6.5K 图,100ep) | **0.17008** | 0.16797 | 0.16715 | **基线 > MoA > MoT** |
> | COCO 2017(118K 图,20ep) | **0.2890** | 0.2682 | 0.2477 | **基线 > MoA > MoT** |
>
> 128 张图上的 mAP 差异是噪声,不是信号。**这条是本次最贵的教训:给一个 0.0002 量级的数字排序,等于给噪声排序。**
>
> 2. **「MoA-N 相比基线提升 114%」(3.3 / 5.1 节)是对噪声做百分比。** 0.00045 vs 0.00021 的绝对差是 0.00024 —— 在 VisDrone 上单次运行的 epoch 间抖动就有 0.00086,比这个「+114%」大 3.6 倍。真实数据上 MoA **低于**基线(VisDrone −1.24%,COCO −7.2%)。
>
> 3. **延迟绝对值不可用(3.2 节)。** 本报告用 `warmup=10, reps=50` 的每臂连续计时,样本量太小且对臂间漂移不免疫(方法学详见技术总结 2.3 节)。表中 P50 18.3 / 44.0 / 39.3 ms 与八臂交错重测的 12.12 / 24.96 / 22.00 ms 差距 40%~78%。**相对倍数也不同**:本报告 MoT +140.7%,重测 +105.8%。
>
> **仍然有效的部分(两项):**
>
> - **3.1 节的参数量与 FLOPs 表**(3.450/4.055/3.577 M,8.664/12.263/9.235 G,标 `--actual-flops`)与 2026-08-07 八臂统一实测**逐字一致**。MoT +41.5% FLOPs、MoA +6.6% 这两个结论成立,且后来被用于订正 COCO 2017 报告里被 thop 低估的数字。
> - **3.4 节的训练稳定性结论**(三臂均无 NaN、无发散)与后续所有 VisDrone/COCO 运行一致。
>
> 报告余下内容按原样保留,作为方法学演进的记录 —— 特别是「小数据集相对排序」这个错误前提的完整形态。
>
> **本文件不应进入 PR。** 它是未跟踪的探路产物;若要保留,应移入 `docs/archive/` 并保留本横幅。

---

**实验日期**: 2026-07-28
**实验环境**: NVIDIA vGPU-48GB, CUDA 13.0, PyTorch 2.12.1
**数据集**: COCO128 (128 train, 128 val)
**训练配置**: 100 epochs, batch=16, imgsz=640, from scratch, AMP enabled

---

## 一、实验目标

对比三种架构变体在目标检测任务上的性能差异:
1. **YOLO-Master-v0.10-EsMoE-N** (基线): Backbone使用VisualEnhancedAdaptiveGateMoE,Neck使用标准C3k2
2. **YOLO-Master-v0.10-MoT-N** (实验组): Backbone同基线,Neck替换为C2fMoT (Mixture-of-Transformers)
3. **YOLO-Master-v0.10-MoA-N** (对比组): Backbone同基线,Neck替换为C2fMoA (Mixture-of-Attention)

---

## 二、架构对比

### 2.1 共同部分 (Backbone)
所有三个变体共享相同的 backbone:
- Conv stems (P1/2, P2/4)
- C3k2 blocks (P2, P3)
- **VisualEnhancedAdaptiveGateMoE** 在3个关键位置:
- P3/P4 junction: 4 experts, top-2
- P4/P5 junction: 8 experts, top-2
- P5: 16 experts, top-2
- A2C2f blocks (P4, P5)

### 2.2 差异部分 (Neck/Head)

| 变体 | Neck模块 | P3输出 | P4输出 | P5输出 | 核心特性 |
|------|---------|--------|--------|--------|---------|
| **EsMoE-N** | C3k2 | C3k2 (r=2) | C3k2 (r=2) | C3k2 (r=2) | 标准卷积聚合,无专家路由 |
| **MoT-N** | C2fMoT | C3k2 (r=2) | C2fMoT (r=4) | C2fMoT (r=4) | Transformer专家 (8 experts, kernel=7, heads=4) |
| **MoA-N** | C2fMoA | C3k2 (r=2) | C2fMoA (r=4) | C2fMoA (r=4) | 注意力专家 (6 experts, expansion=2.0) |

---

## 三、实验结果

### 3.1 模型规模与计算复杂度

| 模型 | 参数量(M) | vs基线 | FLOPs(G) | vs基线 | MoA模块数 | MoT模块数 |
|------|----------|--------|---------|--------|----------|----------|
| **EsMoE-N** | 3.450 | - | 8.664 | - | 0 | 0 |
| **MoT-N** | 4.055 | +17.5% | 12.263 | +41.5% | 0 | 6 |
| **MoA-N** | 3.577 | +3.7% | 9.235 | +6.6% | 6 | 0 |

**关键发现**:
- MoT-N 参数和计算量增长最显著 (+17.5% 参数, +41.5% FLOPs)
- MoA-N 仅增加 3.7% 参数,FLOPs 增长控制在 6.6%
- MoA 在模型规模上更接近基线,适合资源受限场景

### 3.2 推理延迟 (GPU: NVIDIA vGPU-48GB)

**测试配置**: warmup=10, reps=50, imgsz=640, device=cuda:0

> **⚠️ 本小节的延迟数字不可用(2026-08-07)**:`reps=50` 的每臂连续计时对臂间漂移不免疫。下表保留原值供对照,右侧给出可用的交错重测值。

| 模型 | ~~P50~~ | ~~P95~~ | ~~P99~~ | ~~Mean~~ | ~~vs基线~~ | **P50(交错重测)** | **P99(交错重测)** | **vs基线(重测)** |
|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| **EsMoE-N** | *18.269* | *19.305* | *20.789* | *18.235* | - | **12.12** | **19.86** | — |
| **MoT-N** | *43.976* | *47.445* | *50.794* | *44.428* | *+140.7%* | **24.96** | **34.28** | **+105.8%** |
| **MoA-N** | *39.296* | *43.745* | *45.755* | *38.206* | *+115.1%* | **22.00** | **34.61** | **+81.4%** |

**关键发现**(按重测值改写):
- EsMoE-N 延迟最低,P50=**12.12** ms(>82 FPS,非原文 54 FPS)
- MoT-N 延迟最高,P50=**24.96** ms,比基线 **+105.8%**(非 +140.7%)
- MoA-N 介于两者之间,P50=**22.00** ms
- ~~尾延迟趋势与中位数一致~~ → **重测后不一致**:MoA 的 P99(34.61)反而略高于 MoT(34.28),尽管其 P50 低 11.9%。**尾延迟排序不能从中位数排序推出。**

### 3.3 检测精度 (COCO128, 80类)

| 模型 | mAP50-95 | mAP50 | Precision | Recall |
|------|---------|-------|-----------|--------|
| **EsMoE-N** | 0.00021 | 0.00110 | 0.00159 | 0.03861 |
| **MoT-N** | 0.00003 | 0.00016 | 0.00053 | 0.01047 |
| **MoA-N** | 0.00045 | 0.00189 | 0.00129 | 0.01799 |

> **⚠️ 本小节全部结论已撤回(2026-08-07)。** 下方原文中「相对排序有意义」这个前提被 VisDrone 与 COCO 2017 双双证伪 —— 两个真实数据集上基线均为第一,MoA 均低于基线。详见文首横幅第 1、2 条。

~~**注**: COCO128 仅 128 张图,from scratch 训练 mAP 绝对值极低,但**相对排序**有意义。~~

~~**关键发现**:~~
- ~~**MoA-N** mAP50-95 最高 (0.00045),相比基线提升 114%~~
- ~~EsMoE-N 排名第二 (0.00021)~~
- ~~MoT-N 精度最低 (0.00003),可能在小数据集上过拟合~~

~~**相对排序**: **MoA-N > EsMoE-N > MoT-N**~~

**实测排序(取代上文)**:VisDrone 100ep **基线 0.17008 > MoA 0.16797 > MoT 0.16715**;COCO 2017 20ep **基线 0.2890 > MoA 0.2682 > MoT 0.2477**。

### 3.4 训练稳定性

| 模型 | NaN检测 | Loss发散 | 最终总Loss | 最佳总Loss | 差值 |
|------|--------|---------|----------|----------|------|
| **EsMoE-N** | ❌ | ❌ | 12.565 | 12.562 | 0.003 |
| **MoT-N** | ❌ | ❌ | 12.491 | 12.484 | 0.007 |
| **MoA-N** | ❌ | ❌ | 12.533 | 12.475 | 0.058 |

**关键发现**:
- 三个变体均未出现 NaN 或 loss 发散
- 最终 loss 与最佳 loss 差值均<0.06,收敛良好
- MoT-N 总 loss 最低 (12.491),但这不直接对应更高 mAP

### 3.5 Loss 分解 (Epoch 100)

| 模型 | Box Loss | Cls Loss | DFL Loss | 辅助Loss (MoE/MoA/MoT) |
|------|---------|---------|---------|----------------------|
| **EsMoE-N** | 3.121 | 5.571 | 3.873 | - |
| **MoT-N** | 3.114 | 5.556 | 3.821 | - |
| **MoA-N** | 3.153 | 5.562 | 3.818 | - |

**说明**: 辅助 loss (balance loss, router z-loss) 在本次实验中未单独记录,但已包含在总 loss 中。

---

## 四、效率-精度权衡分析

> **⚠️ 本节整节已撤回(2026-08-07)。** 两个小节都把 0.0002 量级的噪声当成精度轴:4.1 的帕累托前沿和 4.2 的性价比排名都由被证伪的 mAP 排序驱动,且延迟输入也是不可用的连续计时值。
>
> **实测的效率-精度关系(VisDrone,交错重测延迟)**:基线以 0.17008 mAP / 12.12 ms 同时占据精度与速度两端 —— **帕累托前沿上只有基线一个点**,MoA(0.16797 / 22.00)与 MoT(0.16715 / 24.96)都被完全支配。这与原文「前沿是 EsMoE-N → MoA-N 两点」相反。完整八臂权衡见技术总结 4.4 节。

### ~~4.1 帕累托效率分析~~(已撤回,见上)

以 **mAP50-95** 为精度指标,**P50 延迟** 为效率指标:

```
精度 (mAP50-95) ↑
0.00045 │ ● MoA-N
0.00021 │ ● EsMoE-N
0.00003 │ ● MoT-N
└────────────────────────────────────→ 延迟 (ms)
18.3 39.3 44.0
```

**帕累托前沿**: **EsMoE-N (最快)** → **MoA-N (最准)**

**MoT-N** 不在帕累托前沿上(既不是最快也不是最准)。

### ~~4.2 性价比评估~~(已撤回,见本节开头)

原文表格保留供对照。注意 🥇 同时给了排名第一和第二两行(3.20 < 3.33,MoA 实际低于基线),排名标注本身即与其数值矛盾:

| 模型 | ~~性价比 (×10⁻⁶)~~ | ~~排名~~ |
|------|:---:|:---:|
| ~~MoA-N~~ | *3.20* | *🥇* |
| ~~EsMoE-N~~ | *3.33* | *🥇 (相近)* |
| ~~MoT-N~~ | *0.17* | *🥉* |

VisDrone 实测的 mAP/延迟比:**基线 1.403**、MoA 0.764、MoT 0.670 —— 基线是 MoA 的 1.84 倍、MoT 的 2.09 倍,不存在「相近」。

---

## 五、结论与建议

### 5.1 核心结论

1. **EsMoE-N (基线)** 是**实时部署的最优选择**:
- 延迟最低 (18.3ms P50, >54 FPS)
- 参数最少 (3.45M)
- mAP 排名第二
- 训练稳定,无额外复杂度

2. ~~**MoA-N** 是**精度优化的推荐方案**~~ —— **已撤回**。原文如下,其精度前提已被证伪:
- ~~mAP50-95 最高 (+114% vs 基线)~~ → 真实数据上 MoA **低于**基线(VisDrone −1.24%,COCO −7.2%)
- 参数增长仅 3.7% ← 这一条仍然成立
- ~~延迟增长 115%,仍可接受~~ → 交错重测为 +81.4%,但基线本身只有 12.12 ms,MoA 的 22.00 ms 不是「可接受的代价」而是纯损失
- ~~适合精度要求高、实时性要求中等的场景~~ → 无此场景:MoA 在精度和延迟两侧都劣于基线

3. **MoT-N 不推荐用于当前架构**:
- 计算成本最高 (+41.5% FLOPs, +140.7% 延迟)
- mAP 最低 (可能在小数据集上过拟合)
- 不在帕累托前沿上
- 可能需要更大规模数据集或更长训练周期才能发挥优势

### 5.2 适用场景推荐

> **⚠️ 下表两行「推荐 MoA-N」的行已撤回** —— 它们建立在被证伪的「MoA 精度最优」之上。有效的场景化推荐见技术总结第 6 节(6 条,每条附统计量)。

| 场景 | 推荐模型 | 原因 |
|------|---------|------|
| 边缘设备实时检测 | **EsMoE-N** | 延迟低、参数少、功耗友好 |
| ~~云端批处理~~ | ~~MoA-N~~ | ~~精度最优,延迟可接受~~ → **改为 EsMoE-N**:MoA 精度更低且延迟 +81% |
| 视频流分析 (30 FPS) | **EsMoE-N** | 12.12ms(重测)延迟满足实时要求 |
| ~~高精度离线分析~~ | ~~MoA-N~~ | ~~牺牲速度换取精度~~ → **无换取**:MoA 牺牲了速度也没换到精度 |
| 资源极度受限 | **EsMoE-N** | 3.45M 参数最小 |

### 5.3 后续改进方向

1. **对 MoT-N**:
- 在更大数据集 (VisDrone 6.5K+, COCO 118K) 上重新评估
- 调整 Transformer 专家数量和 kernel size
- 尝试混合精度量化降低延迟

2. **对 MoA-N**:
- 探索更轻量的注意力机制 (如 linear attention)
- 优化 expert 路由策略减少计算冗余
- 考虑知识蒸馏到 EsMoE-N 架构

3. **数据集扩展**:
- 在 VisDrone (无人机视角) 上验证小目标检测能力
- 在 COCO 全量上验证泛化性能
- 对比预训练 vs from-scratch 的影响

---

## 六、实验局限性

1. **数据集规模**: COCO128 仅 128 张图,mAP 绝对值不具参考价值,仅相对排序有效
2. **训练周期**: 100 epochs 在小数据集上可能不足以充分区分模型容量差异
3. **硬件单一**: 仅在 NVIDIA vGPU-48GB 上测试,未覆盖边缘设备 (Jetson, RK3588)
4. **网络限制**: 未能完成 VisDrone 实验(网络下载失败),缺少中等规模数据集验证

---

## 七、附录

### 7.1 完整指标表

详见 `/root/autodl-tmp/YOLO-Master/runs/mot_ablation_coco128/summary.csv`

### 7.2 训练日志

- EsMoE-N: `runs/mot_ablation_coco128/v10/`
- MoT-N: `runs/mot_ablation_coco128/v10_mot/`
- MoA-N: `runs/mot_ablation_coco128/v10_moa/`

### 7.3 Benchmark 原始数据

`runs/mot_ablation_coco128/latency_0_640.csv`

### 7.4 复现命令

```bash
# Benchmark
python3 scripts/compare_mot_ablation.py \
--benchmark \
--imgsz 640 \
--reps 50 \
--device 0 \
--actual-flops \
--models v10 v10_mot v10_moa \
--project runs/mot_ablation_coco128

# Training
python3 scripts/compare_mot_ablation.py \
--train \
--epochs 100 \
--imgsz 640 \
--batch 16 \
--device 0 \
--models v10 v10_mot v10_moa \
--data coco128.yaml \
--project runs/mot_ablation_coco128 \
--patience 0 \
--seed 42 \
--deterministic \
--amp \
--exist-ok

# Summary
python3 scripts/compare_mot_ablation.py \
--summary-only \
--models v10 v10_mot v10_moa \
--project runs/mot_ablation_coco128
```

---

**报告生成时间**: 2026-07-28 15:30 UTC
**实验执行者**: Claude (Opus 4.6)
**项目**: YOLO-Master v0.10 MoE/MoT/MoA 架构消融研究
Loading