DEV Community

TK Lin
TK Lin

Posted on

🎬 行為辨識

行為辨識:讓機器看懂貓在幹嘛

和心村 AI Director 技術筆記 #5


🎯 從「這是誰」到「在做什麼」

AI 能辨識這是 Jelly 還是 Ariel 後,下一步是什麼?

行為辨識:讓 AI 不只認出動物,還能理解牠們在做什麼。


📊 我們定義的行為類別

行為 英文 範例
休息 resting 躺著、睡覺
走動 walking 移動中
進食 eating 吃東西、喝水
坐著 sitting 坐姿
玩耍 playing 追逐、玩玩具
站立 standing 站著看東西

💻 技術方案

方案 1:單幀分類

對每一幀圖片進行行為分類。

class BehaviorClassifier:
    def __init__(self, model_path):
        self.model = YOLO(model_path)

    def predict(self, frame):
        result = self.model.predict(frame)
        return result.class_name, result.confidence
Enter fullscreen mode Exit fullscreen mode

優點:簡單、快速
缺點:無法判斷連續動作(如「正在走」vs「停下來」)

方案 2:序列分析

分析連續多幀,理解動態行為。

class SequenceBehaviorAnalyzer:
    def __init__(self, window_size=10):
        self.window_size = window_size
        self.frame_buffer = []

    def analyze(self, frames):
        predictions = [self.classify_frame(f) for f in frames]

        # 計算行為轉變
        transitions = self.detect_transitions(predictions)

        # 返回主要行為
        return self.majority_vote(predictions)
Enter fullscreen mode Exit fullscreen mode

📈 數據準備

標註流程

  1. 從影片中截圖:每個行為類別 200+ 張
  2. 人工標註:使用 Label Studio
  3. 品質審核:確保標註一致性

數據統計

行為 訓練集 驗證集
resting 250 65
walking 180 45
eating 150 38
sitting 200 50
playing 120 30
standing 144 48
總計 1044 276

🔧 訓練配置

from ultralytics import YOLO

model = YOLO('yolov8s-cls.pt')

model.train(
    data='behavior_dataset',
    epochs=50,
    imgsz=224,
    batch=32,

    # 增強設定
    augment=True,
    degrees=10,
    translate=0.1,
    scale=0.2,
    fliplr=0.5,
)
Enter fullscreen mode Exit fullscreen mode

📊 預期效果

指標 目標
Top-1 準確率 75%+
推論速度 <20ms
適用場景 即時影片分析

🎬 實際應用

1. 自動影片分類

輸入影片 → 行為辨識 → 自動加標籤
                  ↓
           「Jelly 睡覺」「Dollar 進食」
Enter fullscreen mode Exit fullscreen mode

2. 智慧剪輯

根據行為自動剪出精彩片段:

  • 「玩耍」片段 → 給搞笑影片用
  • 「休息」片段 → 給療癒影片用

3. 健康監控

長期追蹤動物行為模式:

  • 進食頻率下降 → 可能生病
  • 活動量減少 → 需要關注

💡 經驗總結

  1. 行為定義要清楚:模糊的定義會導致標註不一致
  2. 平衡數據集:每個行為類別樣本數量要接近
  3. 考慮連續性:單幀分類有限,序列分析更準確
  4. 場景多樣性:包含不同光線、角度的樣本

🔮 未來發展

  • 細分行為:區分「快速跑」和「慢慢走」
  • 互動偵測:兩隻貓互相玩耍
  • 異常行為:偵測打架或生病跡象

和心村 🏡 by AI Director

Top comments (0)