# Error Analysis 2026-05-24 本文档汇总 A official、B full、B-lite 和 B old + `occlusion_only` 的同口径逐图错误分析。 当前目标是先判断语义信息在什么场景帮助主任务、在什么场景伤害主任务,再决定是否继续训练新模型。 ## 输入运行 - `A_official`: `/home/yyao/lsy/agent-base-linux-codex/runs/validation_eval/qwen3_5_35b_a3b_exp_a_official` - `B_full_rerun`: `/home/yyao/lsy/agent-base-linux-codex/runs/validation_eval/qwen3_5_35b_a3b_exp_b_attr_rerun_20260501_174649_max12000_stream` - `B_old_occlusion_only`: `/home/yyao/lsy/agent-base-linux-codex/runs/validation_eval/qwen3_5_35b_a3b_ablation_occlusion_only_tp4_20260501_2058` - `B_lite_dataset`: `/home/yyao/lsy/agent-base-linux-codex/runs/validation_eval/qwen3_5_35b_a3b_exp_b_lite_v0_20260504_2206_dataset` ## 总体指标 | Run | Precision | Recall | F1 | Avg IoU | Maturity Acc | Occlusion Acc | Pred | Matched | Risk Cases | Mean Risk | |---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| | A_official | 0.9145 | 0.8857 | 0.8999 | 0.9074 | 0.9408 | 0.0 | 1076 | 984 | 20 | 1.5859 | | B_full_rerun | 0.8668 | 0.9253 | 0.8951 | 0.9033 | 0.8998 | 0.7463 | 1186 | 1028 | 20 | 1.8125 | | B_old_occlusion_only | 0.9046 | 0.9046 | 0.9046 | 0.906 | 0.9107 | 0.6975 | 1111 | 1005 | 20 | 1.5547 | | B_lite_dataset | 0.876 | 0.9091 | 0.8922 | 0.904 | 0.8909 | 0.7351 | 1153 | 1010 | 20 | 1.875 | ## 初步结论 - 当前 F1 最好的口径是 `B_old_occlusion_only`,F1 为 `0.9046`。 - 当前遮挡属性最好的口径是 `B_full_rerun`,occlusion acc 为 `0.7463`。 - 当前成熟度准确率最高的是 `A_official`,maturity acc 为 `0.9408`。 - B-lite 能学习遮挡属性,但没有超过 A official 的检测和成熟度基线,说明语义信息不宜继续以长文本输出形式直接压到检测任务上。 - 下一阶段应优先把语义用于后验验证、风险筛选和伪标签过滤。 ## 错误标签分布 | Error Tag | Image Count | |---|---:| | `bbox_alignment_risk` | 14 | | `dense_scene_sensitive` | 36 | | `maturity_error_risk` | 61 | | `occlusion_error_risk` | 77 | | `possible_false_positive` | 71 | | `possible_missed_detection` | 67 | ## Risk Case 重叠 | Run | Risk Case Count | |---|---:| | `A_official` | 20 | | `B_full_rerun` | 20 | | `B_old_occlusion_only` | 20 | | `B_lite_dataset` | 20 | Risk case 被多个实验同时命中的分布: | 命中实验数 | 图像数 | |---:|---:| | 1 | 10 | | 2 | 12 | | 3 | 10 | | 4 | 4 | ## 最高风险样本 | Image Key | Max Risk | Risk Runs | Error Tags | Best F1 | Worst F1 | |---|---:|---:|---|---|---| | `IMG_20191215_112843_jpg.rf.0e020631b2ff9bf178eefcc9e309b875_orig.jpg` | 8 | 4 | `bbox_alignment_risk`, `dense_scene_sensitive`, `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | B_full_rerun | B_lite_dataset | | `IMG_1187_jpg.rf.3d3e2bc9c31942b052ed4cb4889546cd_orig.jpg` | 7 | 4 | `bbox_alignment_risk`, `dense_scene_sensitive`, `possible_false_positive`, `possible_missed_detection` | B_old_occlusion_only | A_official | | `IMG_1242_jpg.rf.26200c8f2c2a985094bb5d3c03b5e754_orig.jpg` | 7 | 4 | `dense_scene_sensitive`, `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_lite_dataset | | `IMG_20191215_112604_jpg.rf.818f95a56efa2cb722edacc3af26c09d_orig.jpg` | 7 | 4 | `bbox_alignment_risk`, `dense_scene_sensitive`, `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_full_rerun | | `IMG_20191215_112836_jpg.rf.8a499c79911328bb6879fa58c10768ed_orig.jpg` | 7 | 4 | `dense_scene_sensitive`, `possible_false_positive`, `possible_missed_detection` | B_full_rerun | A_official | | `IMG_20191215_112909.jpg` | 7 | 4 | `dense_scene_sensitive`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_old_occlusion_only | | `IMG20211230170257_00_jpg.rf.9c0fcbc6329d4bc4bb29a19b21ffc3d5.jpg` | 7 | 3 | `maturity_error_risk`, `possible_false_positive`, `possible_missed_detection` | B_lite_dataset | B_full_rerun | | `IMG20211226161001_00_jpg.rf.c7c10a7d94dd5b7df7bd0950509d592d.jpg` | 6 | 4 | `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_old_occlusion_only | | `IMG20211226162202_00_jpg.rf.9aa4e47e9ee261e02716a19550c8a344.jpg` | 6 | 4 | `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_full_rerun | | `IMG_20191215_112617_jpg.rf.b1a388efd223e03fec31d3df9f5f437b.jpg` | 6 | 4 | `possible_false_positive`, `possible_missed_detection` | B_full_rerun | A_official | | `IMG20211226160908_00_jpg.rf.8c697b77eb53b1c176486e3a1fb26f14.jpg` | 6 | 3 | `bbox_alignment_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | B_full_rerun | B_lite_dataset | | `IMG20211226163021_00_jpg.rf.7b50dd7bb9ffd12705c288a75a722823.jpg` | 5 | 4 | `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_full_rerun | | `IMG20211230174505_00_jpg.rf.96444d7eb331967fac99820ddce4fbaa.jpg` | 5 | 4 | `dense_scene_sensitive`, `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | B_full_rerun | B_old_occlusion_only | | `IMG_1130_jpg.rf.e742c27f51bcd188352761cc173d0b8a_orig.jpg` | 5 | 4 | `dense_scene_sensitive`, `maturity_error_risk`, `possible_false_positive`, `possible_missed_detection` | B_lite_dataset | A_official | | `IMG_1139_jpg.rf.8757303148dc7b66106fd3e641459fd8_orig.jpg` | 5 | 4 | `bbox_alignment_risk`, `dense_scene_sensitive`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | B_full_rerun | B_old_occlusion_only | | `IMG_20191215_111017_jpg.rf.83704e10824aba4c89b1854ea5f73fd3.jpg` | 5 | 4 | `dense_scene_sensitive`, `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | B_full_rerun | A_official | | `IMG_20191215_111513_jpg.rf.f2e996d41716becea631c4d684f7dd7b.jpg` | 5 | 4 | `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_full_rerun | | `IMG_20191215_111949_jpg.rf.87f750340c92125f381ac94487d8a9ff.jpg` | 5 | 4 | `bbox_alignment_risk`, `dense_scene_sensitive`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | B_full_rerun | A_official | | `IMG_20191215_112325.jpg` | 5 | 4 | `dense_scene_sensitive`, `maturity_error_risk`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_old_occlusion_only | | `IMG_20191215_112339_jpg.rf.f2737ec8f97d2af58f42249a0b6a4f73_orig.jpg` | 5 | 4 | `dense_scene_sensitive`, `occlusion_error_risk`, `possible_false_positive`, `possible_missed_detection` | A_official | B_lite_dataset | ## 人工复核图 已导出最高风险 Top 30 样本的五联对比图: - 输出目录:`runs/analysis/validation_error_analysis_20260524/visual_review_images/` - 高清 300 DPI 输出目录:`runs/analysis/validation_error_analysis_20260524/visual_review_images_300dpi/` - 说明文件:`runs/analysis/validation_error_analysis_20260524/visual_review_images/README.md` - manifest:`runs/analysis/validation_error_analysis_20260524/visual_review_images/manifest.jsonl` 每张图包含: 1. GT。 2. A official。 3. B full rerun。 4. B old + `occlusion_only`。 5. B-lite dataset。 建议优先查看前 10 张,它们在多个实验中都被标为高风险,适合判断密集目标、误检、漏检和成熟度错误的主要来源。 ## 人工复核结果 人工复核记录见: - `docs/reviews/people/validation_error_analysis_20260524.md` - `docs/reviews/people/validation_error_analysis_20260524_summary.md` 人工复核前 10 张最高风险图后,当前结论需要修正: 1. 多数高风险样本中的 GT 存在明显漏标,尤其是密集、遮挡和小目标番茄。 2. 模型多出来的框基本没有明显多框或重复框问题,很多更像是真实番茄候选。 3. B-lite 在前 5 张高风险密集图中最接近人工判断。 4. A official 在部分图像上仍更稳,尤其 006、007、008、010。 5. 当前自动评估中的 false positive 可能包含大量 GT 漏标候选,因此 precision 可能被低估。 因此,下一步应优先推进漏标候选挖掘和 Gold v1 重审,而不是直接把模型多框解释为误检。 ## 漏标候选挖掘结果 已基于 A official、B full rerun、B old + `occlusion_only`、B-lite dataset 的预测结果生成漏标候选: - 脚本:`pipelines/mine_missing_label_candidates.py` - 文档:`docs/analysis/missing_label_candidates_20260524.md` - 输出目录:`runs/analysis/missing_label_candidates_20260524/` 结果摘要: - 原始 unmatched prediction:`449` - 聚类后候选:`227` - 含候选图像数:`64` - 四模型共同支持候选:`22` - 三模型共同支持候选:`46` ## 下一步 1. 人工优先查看 `runs/analysis/missing_label_candidates_20260524/preview_images/` 中 support=4 和 support=3 的候选。 2. 建立 Gold v1 Review 层,保留 Gold v1 不变,避免破坏数据可追溯性。 3. 用 `SemanticVerifier` 对候选框做番茄性、成熟度和遮挡验证。 4. 基于 accepted 候选构建 Gold v2 Candidate。 5. 在 review-adjusted GT 形成前,不建议继续训练新的长文本属性增强模型。