YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
# agent-base
本仓库用于构建一个面向精准农业场景的多模态大模型闭环系统,当前聚焦于西红柿的单图多目标认知标注、审核、数据构建、训练评估与边缘部署前置实验。
当前论文构想暂定为 AgriAgent: Semantic-Aware Multi-Agent Annotation Distillation for Edge-Oriented Tomato Maturity Detection。仓库工程应围绕三条主线推进:
- 语义感知自动标注:用云端 VLM 的颜色比例、遮挡程度和 reasoning 缓解半成熟边界模糊。
- 多智能体闭环数据生产:按 Raw / Silver / Gold / Eval 分层沉淀结构化资产,保持审核和训练格式转换解耦。
- 边缘导向蒸馏:用中型 VLM 做训练、评估和漏标挖掘,再将能力压缩到低资源小模型。
论文框架、当前证据和待补实验见 docs/paper_alignment.md。
截至 2026-03-31 的最新状态
- 正式实验 A 已完整训练结束,产物目录为
runs/mid/qwen3_5_35b_a3b_exp_a_official/v4-20260323-201311/。 - 当前推荐实验 A 验证模型目录为
runs/mid/qwen3_5_35b_a3b_exp_a_official/v4-20260323-201311/checkpoint-151-merged/。 - 已补齐验证集推理链路:
prepare_validation_reference -> run_validation_inference -> evaluate_semantic_predictions。 - 验证推理当前默认支持
vllm与transformers双后端,默认走vllm。 - 已修复验证解析 bug:模型输出中的字符串形式
bbox_2d(如"[290, 526, 380, 754]")现在可被正确解析,不再出现“模型明明输出了框但评估结果全 0”的假象。 - 实验 A 当前有效验证结果:
precision=0.9145、recall=0.8857、f1=0.8999、avg_iou_on_matched=0.9074。 - 实验 A 验证结果目录:
runs/validation_eval/qwen3_5_35b_a3b_exp_a_official/。 tests/test_semantic_evaluator.py已新增回归测试,覆盖think包裹 + 字符串 bbox 的真实模型输出格式。- 实验 B 已完成正式训练,产物目录为
runs/mid/qwen3_5_35b_a3b_exp_b_attr/v1-20260331-192847/,merged 模型目录为runs/mid/qwen3_5_35b_a3b_exp_b_attr/v1-20260331-192847/checkpoint-145-merged/。 - 实验 B 首轮验证结果目录为
runs/validation_eval/qwen3_5_35b_a3b_exp_b_attr/,当前结果为precision=0.9341、recall=0.3699、f1=0.53、occlusion_accuracy_on_matched=0.7953。 - 已确认首轮实验 B 结果不能直接视为模型真实退化,主要问题是验证推理阶段丢失了
assistant输出模板,导致属性增强版样本更容易输出长段分析文本并出现parse_failure_count=26。 run_validation_inference.py已在2026-03-31修复为:保留原始用户问题,并把val.jsonl中的assistant模板转成额外的显式 JSON 输出约束。- 与该修复对应的回归测试已加入
tests/test_semantic_evaluator.py。 - 当前待办不是继续改训练,而是在 GPU 空闲后重跑实验 B 验证推理,确认修复后 detection recall 和 parse failure 是否回升。
当前稳定数据契约
当前主链路严格遵循以下事实:
- 标注任务已经从“单图单目标”切换为“单图多目标”。
- 当前阶段不再保留
disease_suspicion字段。 - 模型输出的 bbox 统一按
0-1000归一化相对坐标理解。 - reviewer 负责把
bbox_1000转换为像素bbox。 silver_dataset.jsonl采用“每个目标一行”的沉淀方式。gold_builder按image_path聚合同图多目标 Silver 记录,再生成单图 Gold 样本。- 正式 Gold 发布除
gold_dataset.jsonl外,还应同时输出summary.json、report.md、sample_check.jsonl。
论文结果对应关系
当前仓库已能支撑论文中的数据集、系统架构和中型模型验证部分:
- Gold v1:
2620张图像、22793个目标,平均每图8.6996个目标。 - 成熟度分布:
未成熟=14397、半成熟=3566、完熟=4830。 - 遮挡分布:
无=9727、轻度=9554、重度=3512。 - 实验 A 检测基线:
precision=0.9145、recall=0.8857、f1=0.8999。 - 实验 B 首轮显示属性表达有潜力:
occlusion_accuracy_on_matched=0.7953,但当前低召回受验证输出协议影响,需要重跑。
论文草稿中提到的边缘 0.8B/2B 蒸馏、跨作物泛化和完整消融实验仍未完成,当前文档不得把这些写成已验证结论。
截至 2026-03-20 的当前状态
1. 数据链路状态
仓库当前已经具备一条可运行的新版多目标数据链路:
run_pipeline_silver.py:生成 Silverpipelines/clean_silver_dataset.py:清洗已有 Silverpipelines/evaluate_silver_dataset.py:评估 Silverpipelines/manual_qc.py:人工复核抽样pipelines/gold_builder.py:构建 Goldpipelines/check_gold_regression.py:对比两版 Gold 发布结果,检查是否存在明显回归pipelines/evaluate_semantic_predictions.py:对结构化预测结果做逐图语义评估
当前推荐下游优先使用 cleaned Silver,而不是原始全量 Silver。
2. 现有数据资产
- 原始全量 Silver:
runs/silver/full_rerun_20260311_210637/silver_dataset.jsonl - cleaned Silver:
runs/silver/full_rerun_20260311_210637_cleaned/silver_dataset.jsonl - Silver 清洗摘要:
runs/silver_cleaning/silver_clean_20260311_223551/summary.json - cleaned Silver 评估摘要:
runs/evaluation/silver_eval_20260311_223604/summary.json
当前 cleaned Silver 规模:
- 记录数:
22793 - 清洗掉记录:
429 - 其中超小框剔除:
424
3. 正式 Gold 发布状态
当前已经基于 cleaned Silver 发布正式 Gold:
- 正式 Gold:
runs/gold/gold_release_v1/gold_dataset.jsonl - 发布摘要:
runs/gold/gold_release_v1/summary.json - 发布报告:
runs/gold/gold_release_v1/report.md - 抽样检查:
runs/gold/gold_release_v1/sample_check.jsonl
当前 gold_release_v1 规模:
- 图像数:
2620 - 目标数:
22793 - 平均每图目标数:
8.6996
说明:
- Gold 构建阶段已支持把历史 Windows
image_path重写为当前 Linux 可用路径。 - 原始路径会保存在
source_image_path中,便于后续追溯。 - 当前
gold_release_v1已可作为后续训练和评估的正式基线。
4. 训练数据与训练脚本准备状态
当前已经基于 gold_release_v1 导出两套 Qwen3.5-35B-A3B 训练数据:
- 实验 A(官方一致版):
runs/swift_data/qwen3_5_35b_a3b_exp_a_official_v2/train.jsonlruns/swift_data/qwen3_5_35b_a3b_exp_a_official_v2/val.jsonl
- 实验 B(属性增强版):
runs/swift_data/qwen3_5_35b_a3b_exp_b_attr_v2/train.jsonlruns/swift_data/qwen3_5_35b_a3b_exp_b_attr_v2/val.jsonl
两套数据共同遵循以下原则:
- 检测主格式走 Swift / Megatron-SWIFT grounding 兼容格式。
objects.bbox保持像素绝对框,交给ms-swift自动处理。- Qwen3.5 的 bbox 输出仍按
0-1000归一化相对坐标理解。 - 实验 A 只保留
bbox_2d + label。 - 实验 B 在
bbox_2d + label基础上额外增加attribute_text。
当前也已补齐两套训练脚本:
scripts/train_qwen3_5_35b_a3b_exp_a_official.shscripts/train_qwen3_5_35b_a3b_exp_b_attr.sh
5. 训练环境准备状态
当前已完成独立训练环境 lsy-agent 的准备和验收:
- Python:
3.11.15 torch 2.10.0+cu128ms-swift 4.0.2transformers 5.3.0deepspeed 0.18.8flash-linear-attention 0.4.2flash_attn 2.8.3causal_conv1d 1.6.1
已验证:
torch.cuda.is_available()为Trueflash_attn可导入causal_conv1d可导入
当前训练环境统一约定为 lsy-agent,不要再混用历史 lsy 环境。
当前已额外完成并验证:
transformer_engine 2.12.0可在lsy-agent中导入megatron-core 0.16.1已安装- 训练脚本已统一把控制台日志落盘到
runs/logs/ - 当前正式实验 A 默认改为
--attention_backend unfused,以绕过本机flashbackend 不可用的问题
截至 2026-03-23,实验 A 正式训练已在 lsy-agent 中成功拉起并进入 step 级训练循环,最新日志位于 runs/logs/tomato-exp-a-official_20260323-201257.log。
6. 服务器迁移准备状态
为了迁移到 Linux 服务器,当前仓库已经补齐:
requirements.txt.env.exampledocs/deployment/deploy_linux.md- 最小测试:
tests/test_reviewer.py、tests/test_gold_builder.py - 更稳定的 CLI 入口:
run_pipeline_silver.py、pipelines/gold_builder.py、pipelines/manual_qc.py
另外,仓库中原来本地烟测脚本里的明文 key 已被移除,统一改为走环境变量。
当前推荐调用方式
1. Linux 上首次部署
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
然后按 docs/deployment/deploy_linux.md 配置环境变量与运行顺序。
2. Silver 小样本试跑
python run_pipeline_silver.py --process-limit 10
3. 评估 cleaned Silver
python -m pipelines.evaluate_silver_dataset \
--silver-dataset-path runs/silver/full_rerun_20260311_210637_cleaned/silver_dataset.jsonl \
--risk-sample-size 12
4. 构建正式 Gold
python -m pipelines.gold_builder \
--silver-dataset-path runs/silver/full_rerun_20260311_210637_cleaned/silver_dataset.jsonl \
--output-dir runs/gold/gold_release_v1
默认不传 --output-dir 时,会自动生成 runs/gold/gold_release_<timestamp>/ 发布目录。
5. 对比两版 Gold,检查回归
python -m pipelines.check_gold_regression \
--baseline runs/gold/gold_release_v1 \
--candidate runs/gold/gold_release_v2
6. 评估结构化预测结果
python -m pipelines.evaluate_semantic_predictions \
--reference-dataset-path runs/gold/gold_release_v1/gold_dataset.jsonl \
--prediction-dataset-path runs/predictions/model_a_predictions.jsonl
7. 导出 Qwen3.5 训练数据
python -m pipelines.export_swift_sft_dataset \
--gold-dataset-path runs/gold/gold_release_v1/gold_dataset.jsonl \
--output-dir runs/swift_data/qwen3_5_35b_a3b_exp_a_official_v2 \
--export-mode official
python -m pipelines.export_swift_sft_dataset \
--gold-dataset-path runs/gold/gold_release_v1/gold_dataset.jsonl \
--output-dir runs/swift_data/qwen3_5_35b_a3b_exp_b_attr_v2 \
--export-mode attr_enhanced
8. 启动 Qwen3.5-35B-A3B 训练
训练日志会自动写入 runs/logs/,便于后续排查与复盘。
conda activate lsy-agent
bash scripts/train_qwen3_5_35b_a3b_exp_a_official.sh
conda activate lsy-agent
bash scripts/train_qwen3_5_35b_a3b_exp_b_attr.sh
说明:
- 当前脚本基于官方
Qwen3.5-35B-A3B+ Megatron-SWIFT 最佳实践整理。
下一步最合理的计划
- 在 GPU 空闲后,基于已修复的验证推理请求构造重跑实验 B。
- 重新对比实验 A / B,整理成论文表格:detection、maturity、occlusion、parse failure。
- 对三联图和风险样本做错误归类,重点分析半成熟、遮挡和密集目标。
- 补一个可复现的颜色比例一致性检查,用于支撑
Semantic-Aware Annotation Strategy。 - 明确边缘模型路线,优先完成一个小模型训练与资源指标采集。
- 将
SemanticEvaluator.evaluate_and_mine落地为漏标挖掘流程。 - 在结果稳定后设计消融实验:去语义标注、去审核 Agent、去漏标挖掘、去蒸馏。
新会话建议先读
AGENTS.mdREADME.mddocs/architecture.mddocs/roadmap.mddocs/current_status.mddocs/paper_alignment.mddocs/reference/repo_map.mddocs/deployment/deploy_linux.md