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
注意事項
實際應用面
適用於需要對乳牛個體行走影片進行跛行等級判定的研究或農場試驗場景,提供比命令列推論更易操作的圖形介面,結果可匯出為統計報告。模型以 GEI 與 HEI 雙模態融合,目的是結合步態外形與背部高度兩個維度的資訊來提升分類準確率。相關連結
- GitHub:felimet/dairycow_lameness_gui
- Ultralytics YOLO11:docs.ultralytics.com
- PyQt6 文件:riverbankcomputing.com/software/pyqt