Skip to main content
Python · PyTorch · YOLO · Computer Vision · Precision Livestock

專案概述

即時乳牛跛行偵測的桌面應用程式。輸入可以是 RTSP 串流或本地影片檔案,後端以 YOLO11m-seg 對每一幀進行乳牛個體實例分割,接著從時序幀中累積生成 GEI(步態能量影像)與 HEI(高度能量影像),再以 MobileNetV3-Large 分類器融合兩者,輸出 Normal、Slight、Severe、Stationary 四個等級的跛行判定。前端以 PyQt6 實作圖形介面,提供即時視覺化、能量影像視窗與每隻個體的統計表。 模型權重未包含於 repo,需聯繫維護者取得。

核心功能

  • RTSP 串流或影片檔案輸入,支援多種格式與串流協定
  • YOLO11m-seg 實例分割,同時追蹤畫面中多頭乳牛
  • GEI 生成:多幀二值化輪廓平均累加,捕捉整體步態特徵(質心對齊、等比例裁切、縮放至 220x318)
  • HEI 生成:三通道編碼(整體、前半、後半區間累加),分析背部高度變化模式
  • MobileNetV3-Large 分類器融合 GEI 與 HEI 預測,輸出四等級結果(GEI 權重預設較高)
  • GPU 加速(CUDA),搭配批次處理、記憶體池與環形緩衝區
  • PyQt6 GUI,含即時標註視窗、GEI/HEI 能量影像視窗、FPS 監控、統計表
  • 可調參數:YOLO 信心度門檻、累積幀數(window size)、GEI/HEI 融合權重、播放速度

跛行等級與雙模態融合

分類器輸出 Normal、Slight、Severe、Stationary 四個等級,融合 GEI(步態能量影像)與 HEI(高度能量影像)兩路特徵:

專案架構

GUI
gui_app.py · GUI 主程式
main_backend.py · 後端處理引擎(DetectionWorker)
model_v3.py · MobileNetV3 模型定義
lameness_models · 分類器權重(需自行取得)
GEI_lameness_mobileNetv3_large.pth
HEI_lameness_mobileNetv3_large.pth
yolo_model · YOLO 權重(需自行取得)
cow_yolo11m-seg_model.pt
json
class_indices.json
PY_*_camera_params.json

快速開始

1

取得模型權重

模型權重未包含於 repo。聯繫維護者取得以下三個檔案,並放置至對應路徑:
2

安裝 PyTorch(CUDA 版)

3

安裝其他依賴

4

啟動 GUI

在介面中設定輸入來源(RTSP URL 或影片路徑)、模型路徑與相機校正參數,點擊「開始分析」。

注意事項

模型權重不在 repo 內,取得後自行放到對應目錄才能啟動推論。系統僅在 Windows 10/11(64 位元)上測試過;GPU 推論需要 NVIDIA GPU 與 CUDA 12.1,無 GPU 時程式可退回 CPU 模式但速度顯著較慢。RTSP 串流連線失敗時,先確認網址格式、網路連通性與攝影機 RTSP 支援。

實際應用面

適用於需要對乳牛個體行走影片進行跛行等級判定的研究或農場試驗場景,提供比命令列推論更易操作的圖形介面,結果可匯出為統計報告。模型以 GEI 與 HEI 雙模態融合,目的是結合步態外形與背部高度兩個維度的資訊來提升分類準確率。

相關連結