Skip to content

Latest commit

 

History

104 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

星牧智控整合版

这是 E、F 两盘项目成果的独立整合版本,项目目录为 F:\new大创。原项目不会被本项目覆盖或修改。

当前版本面向可运行演示,已经接通:

  • YOLO11 牧场牲畜图片检测;
  • 本地视频异步检测;
  • ByteTrack 持续跟踪和 Track ID;
  • 带框图片、带跟踪视频和轨迹 CSV;
  • 静止、离群、活动量下降等规则型健康风险提示;
  • Isolation Forest 轨迹异常检测:与牛群整体对比,识别活动模式偏离的个体;
  • 健康告警 CSV、个体汇总 CSV 和 HTML 报告;
  • SQLite 任务与告警记录;
  • FastAPI 后端与 React 浏览器控制台。

健康风险结果用于辅助筛查,不是兽医疾病诊断。

最简单的启动方式(推荐)

在资源管理器中打开 F:\new大创

  1. 双击 启动项目.bat
  2. 脚本完成环境和模型检查后会启动前后端,并自动打开 http://127.0.0.1:5173
  3. 使用结束后双击 停止项目.bat,释放 8000 和 5173 端口。

如果启动失败,窗口会保留并显示原因。下面的 PowerShell 方式可用于进一步诊断。

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

启动后访问:

结束服务:

powershell -NoProfile -ExecutionPolicy Bypass -File .\stop_delivery.ps1

运行日志与启动预检

运行日志位于 data/logs:API 分别写入 api.stdout.logapi.stderr.log,Web 分别写入 web.stdout.logweb.stderr.log

  • 每次进入服务启动阶段(启动 API/Web)都会覆盖上一轮的四个日志文件;若预检、依赖或端口检查提前失败,则保留上一轮日志。
  • API/Web 未通过就绪检查时,脚本会自动显示每个非空日志的最后 40 行;更早的预检或端口错误会直接显示在控制台。
  • 停止服务不会删除日志,便于结束运行后排查。

启动预检会输出 detectorbehavior 的状态、路径与 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清单齐全。

使用方式

图片检测

  1. 打开 Web 控制台。
  2. 进入智能识别工作台并选择图片识别。
  3. 上传 JPG、JPEG、PNG 或 BMP。
  4. 设置置信度、IoU和类别过滤。
  5. 开始识别,查看并下载带框结果。

视频检测与健康风险提示

  1. 切换到视频识别。
  2. 上传 MP4、AVI、MOV 或 MKV。
  3. 选择 ByteTrack 或 BoT-SORT。
  4. 提交任务并等待进度到达完成。
  5. 播放带 Track ID 的结果视频。
  6. 下载结果视频、轨迹、告警、个体健康汇总和 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 检测、跟踪、轨迹和原有规则健康分析仍会继续运行,页面会明确显示降级状态。

轨迹异常检测(Isolation Forest)

视频任务在完成检测与跟踪后,会以牛群整体为参照做无监督轨迹异常检测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 build

输出目录

data/
├─ agrinebula.db
└─ media/
   ├─ uploads/
   └─ results/

视频任务的跟踪视频、轨迹、健康告警和报告位于 data/media/results/<job-id>/

当前边界

当前已经实现检测、跟踪、研究级时序行为识别、基于轨迹规则的健康风险提示和 Isolation Forest 轨迹异常检测。行为模型 Macro-F1 较低,轨迹异常为无监督研究性结果,两者都只作为实验观察证据;尚未实现跨视频永久身份、实时摄像头或具体疾病识别。具体疾病诊断必须在获得合规、可靠的疾病标注数据后单独验证。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages