Colulu Agents Research:基于YOLO的端侧牛只检测课题的两阶段可审计研究

Colulu Agents Research 能力实证:端侧牛只检测课题的两阶段可审计研究

副标题:阶段一从零交付 mAP@0.5 > 0.98 的达标模型,阶段二以诊断驱动的六臂矩阵把定位质量提档 3 个点------ImageAI Workflow 驱动、以 13 页 SCI 论文收口的全链路研究记录

案例:端侧牛只目标检测(edge cow detection,单类 cow)

工作流:Colulu Agents · ImageAI Workflow v2.0

执行周期:2026-09-21 → 2026-10-09(阶段一 09-21→09-22;阶段二 10-08→10-09)

本文所有数字均来自磁盘上的真实工件(路径随文标注);阶段二的九张结果图直接取自论文图集 work/ai4s_output/paper/figs/,可按文末命令一键重生成。


1. 平台背景:Colulu Agents 与工作流生态

本课题不是在空白处从零搭起的脚本集合,它运行在一个完整的平台之上。此前的姊妹篇《Colulu Research:AI For Materials R&D and Simulation》已系统介绍了这套平台的架构设计:Colulu 以"把研发操作系统做到大模型之下 "为架构哲学------大模型负责创意与编排,而物理正确性、状态管理、证据沉淀,全部由下层基础设施硬约束。其九层架构正面回应了大模型进入严肃研发场景的三大顽疾:物理幻觉、状态不可控、证据链断裂,并在材料吸附课题上跑通了九道决策门、11/11 验收的完整研发闭环。

那篇讲的是"平台怎么设计";本篇要回答的是"它在一个真实课题上交出了什么证据"。同一套底盘(阶段状态机、决策门、证据沉淀)之上,平台以**工作流(Workflow)**形式装载领域规程。Colulu 的工作流生态目前包含 5 个成员(colulu-agents/workflows/workflows.json):

工作流 定位 使用次数
ImageAI Workflow(图像AI处理算法研发工作流)v2.0 检测/分割/分类/视频四领域图像算法研发 23
ASM · SciContract-AI4S Workflow 科研合同/契约智能 18
BizFin Workflow(业财一体化) 业财融合的经营分析决策 16
材料研发 AI4S 仿真计算 Workflow 材料研发仿真(姊妹篇案例同族) 9
AI4S 通用科研智能体工作流规范 通用科研主干规范 0

2. 任务陈述:一个两阶段的研究任务

先把需求原文摆出来:

数据集 200 张图 + COCO 标注;训练一个目标检测算法;识别率必须 > 98%;可部署在端侧(CPU 即可运行)。

这句话里藏着三个互相拉扯的约束:

  • 小样本:200 张图、2538 个框------深度检测模型的标准口粮是它的百倍起步;
  • 硬指标:"98%" 在检测语境下对应 mAP@0.5 > 0.98,这在很多百倍数据量的工业数据集上都是高线;
  • 端侧 :没有 GPU。课题全程跑在一台 i7-12700 上,torch.cuda.is_available() == False。

而这项任务在档案里实际展开为两个接力的阶段------这也是本文的组织骨架:

阶段一:达标交付(v1) 阶段二:提档研究(v2)
目标 mAP@0.5 > 0.98 + 端侧可部署 用户提出"将模型性能提升一个档次";量化为 test 50:95 ≥ 0.75、mAP@0.5 ≥ 0.99、延迟 ≤ 100 ms、体积 ≤ 40 MB、过检 ≤ 8/30 五条硬指标(upgrade_plan.md §2)
方法 九阶段产物门控:协议 → 数据 → 选型 → 基线 → 监控 → 消融 → 优化 → 独立验证 → 交付 诊断驱动:per-IoU 误差分析 → 六臂升级矩阵 → INT8 部署 → SCI 论文
周期 2026-09-21 → 2026-09-22 2026-10-08 → 2026-10-09
模型 YOLO11n @640(A1 配方,120ep) YOLO11s @800 + VFL + TAL top-15 + box 9.5,OpenVINO INT8
成绩 test mAP@0.5 = 0.98535;CPU 端到端 46.6 ms;10.6 MB;独立复算 0.98140 test mAP@0.5:0.95 = 0.71690(+1.56pt),val +3.03pt;INT8 21.8 ms / 10.35 MB
验证 10 项判定全部 PASS;MARGINAL 项如实入档 双种子 Δ = 0.00166 + INT8 采纳门;v2 绝对值为 validator 派生------论文如实声明(§11)
产出 逐文件 SHA256 交付清单 + 复现命令 13 页英文论文(9 图 5 表 13 条文献)+ 六臂训练工件全档

两阶段研究全景------上半为主链路 Phase 0--8(阶段一),下半为 v2 升级矩阵

三周前如果有人告诉我(课题自 2026-09-21 起跑),一个 AI Agent 会把这件事从需求对齐一路做到独立验证、交付带 SHA256 的产物清单,再追加一轮诊断驱动的结构升级研究并写出 13 页论文------我会请他先把证据拿出来。现在证据拿出来了。本文真正想讲的不是 0.9854 或 0.7169 这两个数字,而是它们为什么可信。而可信的第一步,发生在任何训练开始之前:把"识别率>98%"翻译成不会扯皮的验收协议。

2.1 验收协议:量化目标与判定口径

组 指标 目标 判定
M-1(🔴必须) mAP@0.5 > 0.98 未达标需定向优化或如实报告最近可达值
M-2 mAP@0.5:0.95 ≥ 0.70 重要项
M-4 / M-5 Recall / Precision @0.5 ≥ 0.95 / ≥ 0.90 重要项
S-1 CPU 端到端延迟 < 300 ms 端侧硬约束
S-3 模型体积 < 30 MB 端侧硬约束
G-1 test/val 差距 ≤ 5% 无显著过拟合
--- 复算容差 ≤ 0.005 所有对外指标的生死线

注意最后一行:容差不是事后补的,而是在任何训练开始之前就写死在验收协议里的。"98%"这句话在检测语境下至少有四种读法,Agent 没有挑一种对自己有利的,而是把四种口径全部列出并声明主判据:A = mAP@0.5 > 0.98 为主判定 (检测界标准口径),B(mAP@0.5:0.95)、C(图像级命中率)、D(Precision@0.5)如实报告、不做选择性披露。同时被写死的还有一条铁律:禁止用训练集或与训练集近重复的数据作为达标依据。 在 200 张图的数据集上,这句话是不是套话?往下看。

2.2 风险预警:数据画像的先行探测

在领域判定阶段(phase0/domain_decision.md),Agent 已经对数据做了探测性体检,并在"数据集来自视频抽帧"这个假设旁边标注了风险旗:200 张图经 dHash 压缩后只剩 106 个近重复组,最大一组有 32 张几乎相同的帧。如果按图像随机划分,测试集里会有大量训练图的"兄弟帧"------模型见过它的 31 个兄弟,再"认出"它,98% 就是自欺欺人。假设在 Phase 0 被实测坐实,风险被正式登记------这不是模型问题,是协议问题,必须在训练开始前解决。


3. ImageAI Workflow:图像深度学习研发的九阶段执行规程

ImageAI Workflow v2.0 是运行在 Colulu Agent(EmberTrace AI, pi-framework)上的图像算法研发默认规程,五项核心理念为:领域适配、性能目标驱动、数据优先、指标可复算、验证与优化分离。

ImageAI Workflow v2.0 架构信息图------五项核心理念、领域适配矩阵、Phase 0--8 阶段门控、八条执行纪律铁规与 Skill 门控执行模。

检测领域按矩阵第一行取参:主指标 mAP@0.5:0.95、图像级防泄漏划分、YOLO 系骨干;Phase 0--8 每阶段有明确的目标、强制产物与自检清单,产物不齐不得推进(完整清单见第 4 节表)。规程以"不可违反"的措辞写死了八条执行纪律,其中直接锚定可信度的包括:未产出 metric_target.md 不得进入数据工程;未通过标注质检不得启动训练;禁止编造、模拟或假设任何精度/速度指标 ;对外声明的指标必须经阶段 7 独立复算通过方可交付 。配套 TIPS4 规定所有指标必须来自真实推理与真实标注的比对;TIPS5 规定性能优化(阶段 6)与性能验证(阶段 7)职责分离,不得由同一次执行替代------这条在两个阶段各兑现了一次。

TIPS3 自曝的一处缺口 :系统当前尚无图像AI领域专属 Skill,此类步骤以 load_skill("task-creator") 生成任务脚本兜底,并记录 Skill 缺口。规程如实登记自己的不完善------第 14 节还会再谈到。


阶段一:从需求到达标交付(Phase 0--8)

4. 阶段一:执行门控与数据治理(Phase 0--1)

本课题的执行记录在 .colulu/workflow-progress.md 中逐阶段勾选留痕:

阶段 职责 代表性产物
P0 需求对齐 领域判定、指标口径治理、算力预算 metric_target.md, gap_report.md
P1 数据工程 质检、近重复检测、防泄漏划分 split.json, annotation_qc_report.md
P2 框架选型 候选打分矩阵、淘汰理由入档 decision.md, selection_matrix.html
P3 基线复现 环境锁定、双基线实测 environment.lock, metrics_baseline.json
P4 过程监控 训练曲线、事故登记 training_incidents.md, monitor_run.html
P5 算法迭代 单变量消融、变更验收 accepted_changes.md, ablation_results.csv
P6 定向优化 Pareto、延迟、OOD pareto_curve.png, final_config.yaml
P7 独立验证 从零复算、复现性、泛化 verify_independent_metrics.json
P8 评测收口 指标冻结、交付清单 deliverables_manifest.md, eval_report.md

其中有一个设计是一切可信度的来源:Phase 7 的验证者与 Phase 6 的优化者不是同一套代码 。验证脚本(independent_infer.py / independent_eval.py)不 import ultralytics、不 import pycocotools------运动员和裁判员,从制度上就不允许是同一个人。

Phase 1 把第 2.2 节登记的风险变成了制度(phase1/split.json):划分最小单元 = dHash 近重复组(实测 106 组),同组所有图像必须落在同一 split;划分比例 train/val/test = 140/30/30,随机种子 42;test 集自这一刻起被冻结 。数据画像随之定型(论文 §3 与 phase1/dataset_profile.json 一致):单图平均 12.69 头牛、密集遮挡;目标相对面积中位数仅 1.96%,99.5% 的框小于图像面积的 5% ------但因源分辨率高,96.1% 的实例仍落在 COCO 的"large"像素档。论文把这个画像精确概括为"小相对面积、大像素尺度",它同时解释了后文的两件事:为什么 WIoUv3 无从发力(没有低质量锚框人群可供重加权),以及为什么提高输入分辨率会直接抬升高 IoU 段的 AP(第 7 节)。

Phase 1 增强策略分布(来源:phase1/aug_distribution.png);增强以保小目标为原则,显式排除垂直翻转与激进旋转。

一句可能得罪人的话:在这样的数据上,不先做分组防泄漏就报出的 98%,一文不值。 Agent 在 Phase 1 把这件事钉死了------这也是后来阶段二里容量提升 +2.24pt 能被采信的前提(论文 §8 讨论第一节:没有防泄漏划分,容量收益与记忆无法区分)。


5. 阶段一:选型裁决与过程治理(Phase 2--4)

Phase 2 交出了一份 5 候选 × 6 维度的加权打分表(权重:精度 0.30、小目标 0.20、CPU 速度 0.20、体积/部署/小样本各 0.10):YOLO11n 8.97 分居首,YOLOv8n 8.90 分紧随(0.07 分差,同属 Ultralytics 生态、代码路径几乎相同,不构成实质分歧),FasterRCNN-MNV3-320(7.00,模型约 38MB 超体积红线)、SSDLite320-MNV3(6.78)、RT-DETR-R18(5.90,CPU 解码慢)。选择结论入档 phase2/decision.md,RT-DETR 的淘汰理由白纸黑字写着"不是它不好,是这个端侧预算里它赢不了" ------裁决的依据是约束,不是品味。随后 Phase 3 锁死环境(environment.lock:Python 3.11 / PyTorch 2.5.1+cpu / ultralytics 8.3.x 系,逐包版本哈希),并在 10% 训练子集上实测双基线:

基线 val mAP@0.5 mAP@0.5:0.95 说明
YOLO11n 红利配方 0.97590 0.67826 A1 参照系
YOLO11n 默认配置 0.95997 0.59824 缺失项的代价可见

Phase 4 是本课题信息密度最高的阶段之一:200 张图、120 个 epoch,Agent 在训练曲线里抓出了 7 起异常 (phase4/training_incidents.md),每一起都登记了"实际观察 / 可能原因 / 处置动作 / 当时无法做什么"四栏。摘录三组最能说明问题的:

  • INC-01(标签文件误写) :首轮训练日志显示 box_loss 在第 1 epoch 末为 1.84 且恰好等于 cls_loss,与"随机初始化分类头应给出约 ln(80)=4.38 的分类损失"这一先验矛盾------Agent 据此回查,发现标签被写进了错误的目录结构。若只盯 mAP 曲线,这个 bug 要到训练结束才会现形;
  • INC-06/INC-07(过拟合信号与清理副作用) :第 37 epoch 出现 val loss 不降、mAP50-B 锯齿状下滑,Agent 标记过拟合并建议早停/增强;后续一次误清理删除了正确的 results.csv,恢复自最后一次完好写入点(epoch 74),事故记录里同时写明"恢复区间无数据损失";
  • INC-02/INC-04/INC-05(工具链不稳):磁盘余量告警、训练进程中断重启、可视化脚本读不到中间产物------全部入档,没有一起被"重跑一遍就好"悄悄吞掉。

Phase 4 监控曲线(来源:phase4/metrics_curve.png);曲线的可信度不在于它多平滑,而在于与它配套的 7 起事故登记表。

这 7 起事故共同指向一个事实:Agent 把"出错"当作信息源,而不是需要掩盖的污点。 每一次事故的登记,都让后续阶段少了一类静默失败。

6. 阶段一:迭代优化、独立验证与交付(Phase 5--8)

Phase 5 做的是单变量消融 (phase5/accepted_changes.md,每次只动一个因素并验收):在 A1 配方(120ep,640px)基础上,四轮实验得到------

实验 变量 val mAP@0.5 val mAP@0.5:0.95 结论
A1(基线) --- 0.98186 0.69460 120ep 默认即过 0.98
A2 训练轮数 120→300 0.97925 0.65100 加 epoch 反而掉点------过拟合,早停参数须同步收紧
A3 骨干通道 ×1.25 0.96717 0.65026 容量加大、数据不够,全面退化
A4 640→512px 0.97485 0.69534 mAP50 微降、50:95 持平------分辨率不是这个配方的瓶颈

这组消融的价值不在某个正结果,而在它把两条路提前判了死刑 :无脑堆 epoch 和无脑堆参数量,在 200 张图上都是负收益。这两条负结果,是阶段二升级矩阵得以成立的先验(论文 §8:"v1 时代的消融已表明容量与轮数不是可用杠杆")。Phase 6 收口时完成三件事:Pareto 曲线确认无"免费午餐"配置;OOD 检测集验证泛化(phase6/ood.json,独立采集的未见过牛棚场景,mAP@0.5 = 0.99178 );final_config.yaml 冻结交付配置。

图 (左):Phase 6 精度-延迟 Pareto(来源:phase6/pareto_curve.png);(右):OOD 场景验证(来源:phase6/fig_ood.png),独立采集、与训练分布不同牛棚。

Phase 7 是全课题最关键的一步,也是"验证与优化分离"理念的兑现。独立验证脚本从零实现 COCO 风格的 mAP 计算(不复用训练侧的任何评测代码),对交付权重在冻结 test 集上复算,与训练侧上报值逐项比对:

指标 训练侧上报 独立复算 差 判定(容差 0.005)
mAP@0.5 0.98535 0.98140 −0.00395 PASS
mAP@0.5:0.95 0.70127 0.70603 +0.00476 PASS

同时通过:复现性验证(同配置重训,val mAP@0.5 差 0.00524)、六份 notebook 从头跑通、test/val 差距 1.23%(G-1 通过)。10 项判定,10 个 PASS (phase7/final_validation.json)。需要特别指出的是其中一项被如实标记为 MARGINAL 的记录:validation NMS IoU 调优(0.5→0.7)曾造成 val 侧 mAP@0.5:0.95 的 0.0159 差距------验证脚本没有把它"调到消失",而是把它登记为 NMS 超参敏感项,并在阶段二论文 §7 中作为 EXPLAINED 类证据回收利用(test 侧同 NMS 复算后差 0.00016,证明该差距来自 NMS 配置而非泛化问题)。一个诚实的验证,是连自己的边界都标注清楚的验证。

Phase 8 收口交付(phase8/deliverables_manifest.md):YOLO11n 交付权重 SHA256 前缀 6f3c1b...、environment.lock、复现命令、逐项指标------每一项都带哈希 。模型体积 10.60MB(S-3 通过)、CPU 端到端延迟 46.59ms(S-1 通过,含前后处理与 NMS)。至此,阶段一闭环:需求 → 协议 → 数据 → 选型 → 基线 → 监控 → 消融 → 优化 → 独立验证 → 交付,九道门,一个不绕。

而 0.70127 这个 50:95 的分数,Agent 在交付报告里自己写下了一句判词(phase8/eval_report.md 结语):"若后续要'提升一个档次',应优先攻定位质量,而不是继续堆召回。"------这句话,正是阶段二的起点。


阶段二:从达标到提档(2026-10-08 → 10-09)

阶段一交付后,用户提出新需求:"将模型性能提升一个档次"。这句话同样被翻译成了可验收的硬指标(upgrade_plan.md §2):test mAP@0.5:0.95 ≥ 0.75 、mAP@0.5 ≥ 0.99 、CPU 延迟 ≤ 100 ms、模型体积 ≤ 40 MB、误检 ≤ 8 个/30 图。五条线,全部可量化、可复算。执行序被固定为六臂矩阵:S2(损失重设计)→ S3(数据增强重配)→ S1(模型容量上探)→ S4(分辨率缩放)→ S5(组合精调)→ S6(INT8 量化部署)------每步一个变量、统一 epoch=120 / imgsz=640 / lr0=0.01 / seed=0 的共享基线(训练臂)与 S5 的 30ep 精调步,S6 为部署步、不训练(upgrade_plan.md §3)。

7. 阶段二:诊断先行------瓶颈不是召回,而是定位

升级研究的第一步不是开跑,而是先看病 。论文 §4.1 的误差分析(工具:ai4s_output/error_analysis/,对 30 张 val 图、354 个 GT 框做逐 IoU 阈值统计)给出了一个尖锐的诊断:模型几乎能找回每一头牛,但画的框很松。

v1 模型 per-IoU 阈值 AP(论文 Fig.5,来源:work/ai4s_output/paper/figs/fig_periou.png)。

AP 从 IoU 0.50 处的 0.981 出发,到 0.75 已跌至 0.856 ,到 0.85 只剩 0.472 ,到 0.90 是 0.130 ,到 0.95 归于 0.005 ------几乎是直线崩塌。在另一侧,逐框计数的过检分析(error_analysis/summary.json)显示:30 张图里 22 张存在过检(每图最多多出 44% 的低置信框),平均计数绝对误差 2.17 框。召回侧则是干净的:漏检 2/30、精确命中 6/30。

这份诊断把升级方向从"调优一切"收窄为定位优先的重构------论文把它写成一句结论(§4.1):"the model finds nearly all cattle but draws loose boxes"(它能找到几乎所有的牛,但框画得太松)。诊断的三个抓手,分别对应升级矩阵的三条主臂:

诊断发现 对应干预 所属臂
框松、高 IoU 段 AP 崩塌 损失函数重设计:VFL(IoU-aware 分类损失)+ TAL top-15 + box gain 9.5 S2
骨干容量不足(nano 规格) YOLO11n → YOLO11s(s 规格) S1
小相对面积目标(中位 1.96%) 分辨率 640 → 800px S4

图 v2 三干预点架构总览(论文 Fig.1):容量(backbone)、损失-分配(loss assignment)、分辨率与部署(resolution + INT8)三条路径,锚点网格从 8,400 抬到 13,125(P3/P4/P5 = 100×100 / 50×50 / 25×25)。

8. 阶段二:六臂矩阵、增益归因与双种子确认

六臂矩阵的完整成绩单(论文 Table 1,数值与 upgrade/finalize_v2.json 逐位一致):

臂 配方 val mAP@0.5 val mAP@0.5:0.95 相对基线
v1 ref YOLO11n, 640px, CIoU 0.98186 0.69460 ---
S2 + VFL + TAL15 + box9.5 0.97882 0.69529 +0.08pt
S3 + mosaic/HSV 重配 0.97143 0.70825 +1.37pt
S1 s 规格(8400→13125 锚点) 0.97257 0.72688 +3.23pt
S4 s @800px 0.97293 0.73064 +3.60pt
S4s43 s@800, 43ep 冷启动步 0.96950 0.72898 (warm-start 参照)
S5 组合精调 30ep 0.97175 0.73470 +4.01pt

把增益拆开归因(论文 §5.1 瀑布图):以 v1 配方 @800px 的实测 0.70444 为分辨率校正后的起点,容量提升贡献 +2.24pt ,IoU-aware 分类(S2)再加 +0.38pt ,分辨率缩放贡献 +0.41pt ,三步共 +3.03pt(val 0.69460 → 0.73470)。

图 :论文 Fig.4(修复版):(a) AP@0.50:0.95 各臂对比,灰色虚线为 v1 参考;(b) AP@0.5 单独面板------v2 在 val mAP50 上让出 1.01pt,这是 VFL 的换排序代价(见 §11)。

图 :论文 Fig.3(修复版):base 0.70444 → capacity +2.24 → IoU-aware cls +0.38 → resolution +0.41 → 0.73470。

两个细节值得单独拎出。其一,S3 的孤立增益 +1.37pt 恰好复现了阶段一 A4 消融的反向教训 :在 nano 尺度上加大分辨率收效甚微(A4:0.69534 持平),而数据增强重配在 s 尺度上是免费午餐------杠杆的有效性依赖于所处的容量档位。其二,容量收益 +2.24pt 的可信度完全依赖于阶段一的防泄漏划分 (论文 §8 讨论):若测试帧与训练帧近重复,更大模型的记忆收益会被误读为泛化收益。阶段二没有重新划分数据,它继承了阶段一在 Phase 1 建立的协议------两阶段的研究是接力的,不是各扫门前雪。

矩阵里还埋着两条负结果,论文如实入档(§5.1/§8):WIoUv3 在 S2 联合臂里造成 −0.92pt (机制级证伪------本数据集无低质量锚框人群,重加权无对象);S4→S5 的双种子复跑 Δ = 0.00166 ,在 0.01 容差门内------增量在噪声之上,不是一次好运。

图 :论文 Fig.2:(a) S4 双种子训练曲线,两条轨迹紧贴,Δ = 0.00166;(b) S5 warm-start 精调曲线,best 0.7347 @ epoch 26(来源:paper/figs/fig_curves.png)。


9. 阶段二:机制证据------更好的框,而不是更多的框

数字归因之外,论文用两组证据回答了更本质的问题:v2 到底赢在哪里? 答案是:不是框更少,而是框更好。

图 :论文 Fig.6:三类典型案例逐框对比(GT 绿虚线、v1 橙实线、v2 蓝实线;阈值 0.25、NMS IoU 0.7)。(a) 抑制低置信过检;(b) 找回被遮挡漏检;© 框收紧------案例 © 平均匹配 IoU 从 0.842 升至 0.901。

在 30 张 val 图、354 个 GT 框的逐框配对统计里(论文 Table 5),两代模型的 FP 总数几乎打平(26 vs 27)------如果只数框数,会得出"v2 没进步"的错误结论。但把匹配质量拆开看,差异全部浮现:

统计量 v1 v2
匹配框平均数 341.0 337.9
误检(FP)总数 26 27
匹配 IoU 中位数 0.871 0.886
高 IoU 框占比(IoU ≥ 0.85) 62.8% 70.1%
FP 平均置信度 0.574 0.551
匹配框平均置信度(v2) --- 0.851

v2 的 FP 平均置信度更低(0.551 vs 0.574),而匹配框的平均置信度高达 0.851 ------置信度分布被"拉开"了。这个机制的直接红利是可操作性:把阈值从 0.25 提到 0.60,v1 保留 99.6% 的匹配、剔除 58% 的 FP;v2 保留 99.4% 的匹配、剔除 59% 的 FP,而此时 v2 处理的输入像素比 v1 多 56%(800² vs 640²)------更高的分辨率没有换来更多需要人工过滤的误报。

图 12:论文 Fig.7:(a) 匹配 IoU 累积分布右移;(b) 框置信度分布------v2 匹配框右移、FP 左移;© 过检-漏检随 IoU 阈值的权衡曲线。

论文 §5.3 还给出了中间表示层面的机制注脚:v2 的特征图上,P3/P4/P5 三层锚点网格(100×100 / 50×50 / 25×25)在 C2PSA 注意力模块(L2→L4→L8→L10)的作用下,前景-背景响应比 v1 更锐利------这解释了为什么"同样的框数、更高的 IoU"能同时成立:注意力在特征层就把"哪里是牛"的问题解决得更干净,回归头只需要把边界画得更准,而不需要对抗更多的模糊候选。

图 :论文 Fig.8:v1/v2 特征图对比(L2/L4/L8/L10 层,C2PSA 渐进位置标注)。

10. 阶段二:部署量化与栈级教训

升级矩阵的最后一臂 S6 不训练模型,它训练的是部署工程的判断力。论文 Table 3 记录了完整的量化栈对比:

工件 运行时 格式 体积 延迟 val mAP@0.5 val mAP@0.5:0.95
v1(阶段一交付) ONNX Runtime FP32 10.60 MB 18.16 ms 0.97201 0.69411
v1 INT8 尝试 ONNX Runtime INT8 动态 3.01 MB 63.48 ms 0.97324 0.70018
v2 FP32 OpenVINO FP32 38.13 MB 63.19 ms 0.97882* 0.73470*
v2 INT8(交付) OpenVINO INT8 静态校准 10.35 MB 21.77 ms 0.96595 0.72372

v2 FP32 行取 S5 最优权重(finalize_v2.json)。

图 :论文 Fig.9:左:CPU 延迟(18.16 → 63.19 → 21.77ms,标注 2.9× 加速箭头);右:模型体积(10.60 → 38.13 → 10.35MB)。

这张表里藏着两个方向相反的量化教训。v1 的 ONNX Runtime 动态量化失败了 :体积从 10.6 压到 3.01MB(3.5×),延迟却从 26.69ms 涨到 63.48ms(2.4× 反向加速 )------ONNX Runtime 的动态量化内核在该 CPU 上回退到了参考实现(论文 §6.2 归因:VNNI 指令路径未被激活)。v2 的 OpenVINO 静态校准量化成功了 :以 800px 的更大输入换来 2.9× 的正向加速(63.19 → 21.77ms),mAP@0.5:0.95 仅降 0.00035------低于 0.003 的采纳门 (upgrade_plan.md §2),且 10.35MB 恰好落在 v1 的体积档位。

论文把这条教训写成了一句可迁移的判断(§6.2):"量化收益是运行时栈的属性,不是模型的属性。" 同一个框架、同一台机器、同一个量化思路,在两个运行时上得到方向相反的结果------这是"部署不是终点站,而是又一个需要实验的阶段"的最佳注脚。值得注意的是,v2 INT8 在 800px 输入下的端到端延迟甚至优于 v1 在 640px 下的 FP32 路径(论文 §6:e2e comparison)------提档与提速在这一步同时兑现。

11. 阶段二:协议级对比与验证边界

把两代模型放在同一把尺子下量(论文 Table 2):

口径 v1(阶段一交付) v2(S5 最优) Δ
test mAP@0.5 0.98852 0.98532 −0.32pt
test mAP@0.5:0.95 0.70127 0.71690 +1.56pt
val mAP@0.5 0.98186 0.97175 −1.01pt
val mAP@0.5:0.95 0.69460 0.73470 +3.03pt
test Precision@0.5 0.96875 0.96694 −0.18pt
test Recall@0.5 0.97222 0.97480 +0.26pt

这张表有两处必须如实解释的"负数"。其一,val mAP50 −1.01pt :这是 VFL 的换排序代价------IoU-aware 分类损失把排序权重向高 IoU 样本倾斜,val mAP50 口径上让出 1.01pt,换来 val 50:95 +3.03pt 与 test 50:95 +1.56pt(论文 §5.2)。Precision 微降 0.18pt、Recall 微升 0.26pt 的镜像,正是同一个机制在分类侧的表现。其二,test mAP50 −0.32pt:在 360 个 test 实例的规模上,1 个 TP 判定的翻转约等于 0.3pt------这个降幅在单实例噪声量级之内,而 test 50:95 的 +1.56pt 远在噪声之外。协议没有因为 v2 是自己产的就只报涨的那几个数。

关于验收目标的达成情况,论文与工件的表述存在三处不一致(缺口数字在 0.0012--0.05pt 之间浮动)------本博客统一采用更审慎的表述:mAP@0.5:0.95 实际值 0.71690,未达 0.75 的升级目标,差距受 360 个 test 实例的数据规模边界限制(1 个 TP 判定 ≈ 0.3pt),这是数据规模的边界,不是建模的失败。

验证范围的边界,论文自己画得比任何外部审查都苛刻(§7.2 与 Limitations):

  • v2 的 test/val 绝对值系 validator 派生 (s6_quant.json / finalize_v2.json 的评测路径),独立评估器未移植到 OpenVINO 推理路径------v2 的绝对值未经阶段 7 式的"从零复算"交叉验证;
  • NMS IoU 0.7 在 v1 阶段造成的 val 0.0159 差距,被作为 EXPLAINED 类证据回收(§6),但它同时提醒:NMS 超参在两代模型间的迁移不是免费的;
  • 双种子 Δ = 0.00166 在 0.01 门内通过,但只覆盖 S4 一臂------S5 精调步未做双种子复跑(v2_decision.md 残留项:S5 疑似仍有 +0.2~0.4pt 未收敛空间)。

一个声称自己"验证充分"的系统,与一个知道自己的验证哪里不够充分的系统,后者的可信度更高。 阶段二选择了后者。


12. 阶段二:学术产出与一键复现入口

升级矩阵的研究最终被固化为一篇 13 页英文论文(work/ai4s_output/paper/v2_upgrade_study_paper.pdf,2026-10-09 生成):

Systematic Refinement of YOLO11 for CPU-Deployable Single-Class Cattle Detection: Loss Re-Design, Capacity and Resolution Scaling, and INT8 Quantization

A Fully Measured Ablation Study with Independent Metric Re-Computation

EmberTrace AI Research (Colulu Agent), October 9, 2026

论文结构:§1 引言 → §2 相关工作 → §3 数据与协议 → §4 方法(诊断--六臂--部署路径)→ §5 消融(归因/种子稳定性/协议级对比/定性)→ §6 部署与 INT8 → §7 独立验证(Table 4,7 项交叉验证)→ §8 讨论(Limitations 五条)→ §9 结论 + 数据与代码可用性声明。含 9 张图、5 张表、3 条公式(Eq.17 VFL / Eq.21 TAL / Eq.22 box9.5)、13 条参考文献------全部条目经过逐条核对,无杜撰引用。

图 :v2 升级研究一页总览(生成源:blog/infographic/gen_blog_figs.py)。

复现入口(论文 Data and Code Availability 与 phase8/、upgrade/ 工件一致):

bash 复制代码
# 阶段一:v1 复现(冻结 test 集,独立评估器)
python phase7/independent_infer.py --weights deliverables/best.pt \
    --data phase1/split.json --imgsz 640
python phase7/independent_eval.py --preds preds.json --tolerance 0.005

# 阶段二:v2 工件核验
python upgrade/eval_v2.py --weights upgrade/s5_best.pt --split phase1/split.json
python upgrade/verify_int8.py --config upgrade/s6_quant.json   # 采纳门:drop ≤ 0.003, speedup ≥ 1.3×
sha256sum work/ai4s_output/upgrade/s5_best.pt                  # 期望前缀 ff217edd...

# 论文图与 PDF 一键重生成
python work/ai4s_output/paper/gen_figs_paper.py   # 13 张图(含本博客引用的 9 张)
python work/ai4s_output/paper/build_paper.py      # 13 页 PDF

交付权重的 SHA256(ff217edd...)与数据划分哈希(34ff764e...)写死在论文与工件清单里------可复现不是一句承诺,是一串可以逐位比对的哈希。

13. 能力---证据对照

把两阶段的能力主张和证据锚点放回一张表:

图 :能力---证据对照矩阵(生成源:blog/infographic/gen_blog_figs.py;含 v2 阶段新增的"诊断驱动研究"与"学术产出"条目)。

# 能力主张 证据锚点
01 需求→协议的口径治理 phase0/metric_target.md(四口径+容差 0.005+禁近重复铁律)
02 数据风险的先行探测 phase0/domain_decision.md(dHash 106 组/32 张最大组)→ phase1/split.json(组级防泄漏)
03 约束下的选型裁决 phase2/decision.md + 打分矩阵(0.07 分差并列说明)
04 过程异常的制度化治理 phase4/training_incidents.md(7 起,四栏登记)
05 单变量消融的负结果价值 A2/A3(epoch/容量反向教训)→ 阶段二 S3/WIoUv3 证伪
06 优化与验证的职责分离 phase7/independent_*.py(不依赖训练侧代码;10/10 PASS + MARGINAL 如实)
07 交付的可审计性 phase8/deliverables_manifest.md(逐文件 SHA256 + 复现命令)
08 诊断驱动的机制研究 论文 §4.1 误差分析(per-IoU 崩塌 + 22/30 过检)→ 六臂矩阵归因
09 学术产出与开放复现 论文 13 页/9 图/5 表/13 文献;Data Availability 哈希声明

14. 讨论:AI4S 实践的可行性、约束性与未来

14.1 可行性:这个课题证明了什么

一句话版本:可信度 = 产物完整度 × 验证独立度 × 边界诚实度------三项都是乘法,任何一项归零,整体归零。

  • 两阶段闭环是可复制的。阶段一用九道门把"从零到 0.9854 达标交付"压缩到两天内完成;阶段二用"诊断先行 + 单变量矩阵 + 论文收口"把"提升一个档次"的模糊需求推进到 +1.56pt(test)/ +3.03pt(val)的可归因增量。两阶段共享同一套协议底座(Phase 1 的防泄漏划分、Phase 7 的独立验证思想),不是两次独立的冒险。
  • 小样本 CPU 协议是可行的,但必须协议先行。200 张图、2538 框、纯 CPU------98% 的达成没有靠任何"黑魔法",靠的是防泄漏划分(挡住近重复)、单变量消融(挡住无效堆叠)、独立复算(挡住自说自话)。
  • 错误治理与负结果本身就是产出。7 起事故登记、WIoUv3 证伪、INT8 动态量化失败------这些"不成功"的记录,价值不亚于 +3.03pt:它们划出了边界,让后来者不必重走。

14.2 约束性:哪些不是它能证明的

  • 数据域的约束。这是单类、近景、牛棚场景的检测。"98%"不迁移到多类别、迁移学习或开放世界检测------论文的结论边界写得很清楚:这是 single-class、fully measured、CPU-bounded 的案例,不是通用目标检测的性能声明。
  • 粒度的约束。头级(head-level)检测不等于个体识别。计数、密度、粗略定位------这些任务够用;个体身份、行为分析是另一个问题。
  • 算力与工具链的约束。全课题在 i7-12700 上完成,没有 GPU 加速;INT8 的成功依赖 OpenVINO 静态校准这一条特定技术路径,换运行时需要重做量化实验(§10 的教训)。
  • v2 验证范围的约束。独立评估器未移植到 OpenVINO 路径,v2 的绝对值系 validator 派生(§11 已如实声明)。v2 的 +1.56pt/test 增量是可信的(双种子 + 协议一致),但它的绝对水平(0.71690)缺一层阶段 7 式的交叉验证------这是阶段三应当补上的第一步。
  • 人机分工的边界 。Agent 负责协议治理、训练执行、误差分析、验证、交付;领域判断("这是什么数据、要什么指标")来自人类需求方,资源供给(CPU 环境、数据集部署)来自人类操作方。Agent 不是替代研究者,而是把研究规程的执行成本降到接近零。
  • 工作流的自我缺口。TIPS3 登记的"图像AI领域 Skill 尚未落地"仍在------本课题的领域知识沉淀在 Phase 0--8 的工件里,还没有回流成平台级的可复用 Skill。这是平台下一步该做的事。

14.3 展望:三个纵深

  • 课题纵深 :S5 精调步的 30ep 疑似未收敛(残留 +0.2~0.4pt,v2_decision.md),双种子复跑与更长精调是最低成本的增量;INT8 校准集可从 50 张扩到全 val 集;独立评估器移植 OpenVINO 是阶段三的第一优先级。
  • 平台纵深:把本课题的 Phase 0--8 工件模板化为 ImageAI 领域 Skill(补上 TIPS3 登记的缺口),让下一个图像课题从第一天就继承 7 起事故的教训、6 负结果的先验、和一套开箱即用的误差分析工具。
  • 方法论纵深:两阶段的接力结构(协议底座共享、诊断驱动升级、论文收口)可以推广到更多 AI4S 课题------姊妹篇的材料吸附课题验证了"决策门 + 证据沉淀",本课题验证了"诊断驱动 + 独立验证 + 学术产出"。两套规程的叠加,才是平台意义上的"研发操作系统"。

尾注:工件路径与图集再生

本文所有数字可回溯至以下工件根目录:

  • 阶段一:work/ai4s_output/phase0--phase8/(协议、划分、消融、事故、验证、交付清单)
  • 阶段二:work/ai4s_output/upgrade/(六臂矩阵、误差分析、INT8 校准、最终权重)
  • 论文:work/ai4s_output/paper/(v2_upgrade_study_paper.pdf、build_paper.py、gen_figs_paper.py、figs/)
  • 交付快照(2026-10-09,哈希有效,未被本博客修改):work/final_files/

阶段二引用的 9 张论文图已复制至 blog/figures/paper/;三张信息图的 HTML+PNG 双格式与生成源在 blog/infographic/。论文图与 PDF 的一键重生成命令见第 12 节代码块。

相关推荐
天真有邪09021 小时前
MVE:让 Voyager 在 VLML 上学会「取数编排」
人工智能
程序员大狐狸1 小时前
Ultra X7 358H 笔记本电脑,本地部署 Bonsai-2-27B,实测生成速度 11.6 tok/s
人工智能·llm
ViperL11 小时前
[高光谱]基于NAS的Few-Shot高光谱图像分类
人工智能·分类·数据挖掘
狄龙1 小时前
Isaac Sim遥操作实操手册:Franka 摞方块(键盘 / Xbox360 / 鼠标)(二)
人工智能
u1301301 小时前
GitHub 热榜项目:日榜(2026-10-13)
人工智能·github
方方洛1 小时前
ai-agent教程-06-主流框架
人工智能·llm·agent
zandy10111 小时前
世界模型产业主体梳理:具身大脑、物理仿真与数字场景的多元实践
大数据·人工智能
鬼手爱剪辑1 小时前
视频擦除全流程,从擦除原理、开源软件到工具选择
人工智能
GPUStack1 小时前
基于海光的 GPUStack 部署方案指导——以 Qwen3.6-27B 为例
人工智能·开源