这是 E、F 两盘项目成果的独立整合版本,项目目录为 F:\new大创。原项目不会被本项目覆盖或修改。
当前版本面向可运行演示,已经接通:
- YOLO11 牧场牲畜图片检测;
- 本地视频异步检测;
- ByteTrack 持续跟踪和 Track ID;
- 带框图片、带跟踪视频和轨迹 CSV;
- 静止、离群、活动量下降等规则型健康风险提示;
- Isolation Forest 轨迹异常检测:与牛群整体对比,识别活动模式偏离的个体;
- 健康告警 CSV、个体汇总 CSV 和 HTML 报告;
- SQLite 任务与告警记录;
- FastAPI 后端与 React 浏览器控制台。
健康风险结果用于辅助筛查,不是兽医疾病诊断。
在资源管理器中打开 F:\new大创:
- 双击
启动项目.bat。 - 脚本完成环境和模型检查后会启动前后端,并自动打开 http://127.0.0.1:5173。
- 使用结束后双击
停止项目.bat,释放 8000 和 5173 端口。
如果启动失败,窗口会保留并显示原因。下面的 PowerShell 方式可用于进一步诊断。
打开 PowerShell:
Set-Location -LiteralPath 'F:\new大创'
$env:AGRINEBULA_PYTHON = 'F:\deepl\anaconda1\envs\pytorch\python.exe'
powershell -NoProfile -ExecutionPolicy Bypass -File .\start_delivery.ps1启动后访问:
- Web 控制台:http://127.0.0.1:5173
- API 文档:http://127.0.0.1:8000/docs
- 服务状态:http://127.0.0.1:8000/api/health
结束服务:
powershell -NoProfile -ExecutionPolicy Bypass -File .\stop_delivery.ps1运行日志位于 data/logs:API 分别写入 api.stdout.log 和 api.stderr.log,Web 分别写入 web.stdout.log 和 web.stderr.log。
- 每次进入服务启动阶段(启动 API/Web)都会覆盖上一轮的四个日志文件;若预检、依赖或端口检查提前失败,则保留上一轮日志。
- API/Web 未通过就绪检查时,脚本会自动显示每个非空日志的最后 40 行;更早的预检或端口错误会直接显示在控制台。
- 停止服务不会删除日志,便于结束运行后排查。
启动预检会输出 detector 和 behavior 的状态、路径与 SHA-256:
- 检测模型缺失会阻断启动(
detector是交付运行的必需项)。 - 行为模型缺失时,
behavior状态显示unavailable,但不阻断 YOLO 检测、跟踪、轨迹和原有规则健康分析。
行为模型仍属于研究演示能力,健康风险结果仍只用于辅助筛查,不是兽医疾病诊断。
Set-Location -LiteralPath 'F:\new大创'
$env:AGRINEBULA_PYTHON = 'F:\deepl\anaconda1\envs\pytorch\python.exe'
powershell -NoProfile -ExecutionPolicy Bypass -File .\start_delivery.ps1 -CheckOnly看到 Delivery preflight passed. 说明 Python、模型、API入口、Node/npm和Web清单齐全。
- 打开 Web 控制台。
- 进入智能识别工作台并选择图片识别。
- 上传 JPG、JPEG、PNG 或 BMP。
- 设置置信度、IoU和类别过滤。
- 开始识别,查看并下载带框结果。
- 切换到视频识别。
- 上传 MP4、AVI、MOV 或 MKV。
- 选择 ByteTrack 或 BoT-SORT。
- 提交任务并等待进度到达完成。
- 播放带 Track ID 的结果视频。
- 下载结果视频、轨迹、告警、个体健康汇总和 HTML 报告。
当前Windows环境使用OpenCV mp4v生成结果视频。若浏览器不能直接播放,请点击“下载结果视频”,使用本地播放器查看。要保证浏览器内H.264播放,需要另行安装并配置兼容的FFmpeg/OpenH264编码器。
视频为后台任务。浏览器会显示按已处理帧数计算的真实进度,任务失败时 API 会保存失败状态和错误信息。默认单个上传文件上限为512MB,可通过 AGRINEBULA_MAX_UPLOAD_MB 调整。
默认模型:
models/detection/yolo11s-waid.pt
模型来自 WAID4500 YOLO11s、960输入、120轮训练。SHA-256:
46d734cba7553f31e89e739156f50e9a675b176f798c70159838497531771a64
可通过 AGRINEBULA_DETECTOR_MODEL 指定其他模型,但模型必须兼容当前 Ultralytics YOLO11 运行时。
行为研究模型默认路径:
models/behavior/cvb_x3d_v2_best.pt
该文件是 outputs/cvb_x3d_v2/best.pt 的已校验副本,模型元数据版本为 cvb-x3d-v1,输入为 16 帧、224×224、12 类。SHA-256:
731c6ed39dcf002915e888c829e1f86727f815331a2b3c21d06a17d40d62a08e
当前验证集指标为 Accuracy 0.8342201644668648、Macro-F1 0.2188597785907576。Accuracy 主要受到“无法确定”大类样本数量影响,不能据此认定各行为均可可靠识别。该模型仅用于研究演示和后续数据改进,不用于疾病诊断,也暂不自动触发新的健康告警。
视频任务会新增:
- 带 Track ID、中文行为和置信度的结果视频;
*_behavior.csv行为时间线;*_behavior_summary.csv逐轨迹行为汇总;*_behavior_report.json结构化研究报告;- 页面中的行为时长、有效行为占比和无法确定时长。
可通过 AGRINEBULA_BEHAVIOR_MODEL 指定其他兼容检查点。行为权重缺失、损坏或推理失败时,YOLO 检测、跟踪、轨迹和原有规则健康分析仍会继续运行,页面会明确显示降级状态。
视频任务在完成检测与跟踪后,会以牛群整体为参照做无监督轨迹异常检测(scikit-learn Isolation Forest):
- 每头牛按轨迹计算 15 维特征:速度均值/标准差/峰值、加速度、活动半径、总位移与蜿蜒度、与牛群质心的平均/最近距离、与最近同伴距离、检测框纵横比与面积;
- 同一视频内横向对比:活动模式偏离牛群整体的个体被标记为异常,输出 0–1 异常得分与主要差异特征;
- 产物:
*_trajectory_anomaly.csv(每头牛一行,含全部特征与异常标记);页面展示异常牛列表,异常个体同时写入 SQLite 告警(类型trajectory_anomaly,中等风险); - 牛只数量不足(默认少于 5 头可对比轨迹)时跳过检测并如实显示原因,不影响规则健康分析;
- 该检测是研究性辅助筛查:无监督结果用于提示"与群体不同"的个体,不替代兽医诊断。静态场景(如本项目的验收视频)中差异主要来自检测框面积(透视近大远小)与群体距离,需结合场景解读。
需要 Python 3.8、Node.js 和 npm。建议创建独立虚拟环境:
Set-Location -LiteralPath 'F:\new大创'
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
Set-Location .\web
npm ci
Set-Location ..将已验证的检测权重复制到 models/detection/yolo11s-waid.pt,并将行为权重复制到 models/behavior/cvb_x3d_v2_best.pt,再运行启动前检查。行为权重可选;缺少时系统以检测和跟踪模式启动。
2026-08-23 已完成以下实际验证:
- Python测试:363项通过(4项跳过);
- React测试:13项通过;
- React生产构建:通过;
- 一键启动:API和Web均可访问;
- 固��WAID图片:检测到26头牛并生成带框图片;
- 固定视频:210帧输入与210帧输出一致;
- 视频跟踪:26个Track ID、5460行轨迹;
- 健康规则:26条静止风险记录;
- 轨迹异常:Isolation Forest 识别出3头活动模式偏离牛群的个体,生成异常CSV并写入SQLite告警;
- CSV、HTML、SQLite、API仪表盘与模型哈希一致。
重新运行自动测试:
$env:AGRINEBULA_PYTHON = 'F:\deepl\anaconda1\envs\pytorch\python.exe'
& $env:AGRINEBULA_PYTHON -m pytest -q -p no:cacheprovider
Set-Location .\web
npm test -- --run --reporter=dot
npm run builddata/
├─ agrinebula.db
└─ media/
├─ uploads/
└─ results/
视频任务的跟踪视频、轨迹、健康告警和报告位于 data/media/results/<job-id>/。
当前已经实现检测、跟踪、研究级时序行为识别、基于轨迹规则的健康风险提示和 Isolation Forest 轨迹异常检测。行为模型 Macro-F1 较低,轨迹异常为无监督研究性结果,两者都只作为实验观察证据;尚未实现跨视频永久身份、实时摄像头或具体疾病识别。具体疾病诊断必须在获得合规、可靠的疾病标注数据后单独验证。