找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 2|回覆: 0

    本地攝影機與影像辨識:不上雲也能分辨人、車、貓

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005752
    發表於 3 天前 | 顯示全部樓層 |閱讀模式
    雲端攝影機的問題不只是隱私 —— 網路斷了就什麼都沒了。

    這篇講整套本地的做法。



    為什麼要本地


    • 影像不出家門
    • 沒有月費
    • 網路斷了還是會錄
    • 廠商倒了設備不會變磚
    • 可以做雲端服務不給你做的事(自己訓練辨識、接自動化)


    代價


    • 要自己架
    • 要一台跑得動的主機
    • 硬碟會被塞滿


    選攝影機:只看一件事

    支援 RTSP 或 ONVIF。


    • 有 RTSP = 可以本地接
    • 沒有 = 只能用廠商的 App


    怎麼確認


    • 規格表寫「支援 RTSP / ONVIF」
    • 或者搜尋「型號 + RTSP」看有沒有人成功過
    • 很多小米、TP-Link 的攝影機預設關閉 RTSP,要在 App 裡開


    其他要看的


    • 有沒有第二串流(substream) —— 很重要,下面說
    • PoE 還是 Wi-Fi —— PoE 穩很多,一條網路線給電又給資料
    • 夜視 —— 紅外線還是彩色夜視
    • 戶外的要看 IP 等級(IP66 以上)




    第二串流為什麼重要

    大部分攝影機可以同時吐兩個畫質


    • 主串流 —— 4K 或 1080p,拿來錄影
    • 第二串流 —— 640x480 之類的小畫面,拿來做偵測


    為什麼要分開


    • 影像辨識吃的是 CPU,解析度越高越慢
    • 用小畫面做偵測,大畫面只負責錄
    • 效能差好幾倍


    沒有第二串流的攝影機,錄影和偵測都要用大畫面 —— 主機會很喘。

    三種軟體選擇

    一、HA 內建的攝影機整合(最簡單)


    • Generic Camera —— 填 RTSP 網址就能看
    • ONVIF —— 可以控制雲台、抓動作偵測事件
    • 但沒有錄影和智慧偵測


    適合:只想在儀表板上看畫面。

    二、Frigate(現在最多人用)


    • 專為 HA 設計的 NVR
    • 內建物件偵測(人、車、貓、狗、包裹)
    • 只在偵測到東西的時候錄
    • HA 整合很完整
    • 有 HA 附加元件


    三、其他 NVR(Blue Iris、Shinobi、ZoneMinder、群暉 Surveillance Station)


    • 功能可能更完整
    • 但跟 HA 的整合沒那麼深




    Frigate 的關鍵概念

    它的偵測分兩層
    1. 第一層:動作偵測(motion)
    2.   很便宜,用畫面變化判斷
    3.   樹葉在動也算
    4. 第二層:物件偵測(object detection)
    5.   用 AI 模型判斷「那是什麼」
    6.   只有第一層觸發時才跑(省資源)
    複製代碼

    這個設計是 Frigate 效能好的原因。

    基本設定
    1. mqtt:
    2.   host: core-mosquitto
    3.   user: !secret mqtt_user
    4.   password: !secret mqtt_pass
    5. cameras:
    6.   門口:
    7.     ffmpeg:
    8.       inputs:
    9.         # 第二串流:拿來偵測
    10.         - path: rtsp://user:pass@192.168.1.50:554/stream2
    11.           roles:
    12.             - detect
    13.         # 主串流:拿來錄影
    14.         - path: rtsp://user:pass@192.168.1.50:554/stream1
    15.           roles:
    16.             - record
    17.     detect:
    18.       width: 640
    19.       height: 480
    20.       fps: 5
    21.     objects:
    22.       track:
    23.         - person
    24.         - car
    25.     record:
    26.       enabled: true
    27.       retain:
    28.         days: 3
    29.         mode: motion
    30.       events:
    31.         retain:
    32.           default: 14
    複製代碼

    幾個重點


    • fps: 5 就夠 —— 偵測不需要 30fps,5 就能抓到人
    • retain 分兩種 —— 連續錄影留 3 天、有事件的留 14 天
    • track 只列你真的在乎的 —— 列越多越慢


    硬體加速(一定要開)

    沒開的話 CPU 會爆。
    1. ffmpeg:
    2.   hwaccel_args: preset-vaapi        # Intel 內顯
    3.   # preset-nvidia                   # NVIDIA 顯卡
    4.   # preset-rpi-64-h264              # 樹莓派
    複製代碼

    AI 加速:Coral 或內顯



    物件偵測是最吃資源的部分。

    選項


    • 純 CPU —— 可以跑,但一台攝影機就吃掉半顆 CPU
    • Intel 內顯(OpenVINO) —— 免費,而且效果很好
    • Google Coral USB —— 專門的 AI 加速棒,很省電
    • NVIDIA 顯卡 —— 最快,但很耗電


    實務建議


    • 有 Intel 主機(N100、NUC)→ 直接用內顯的 OpenVINO
    • 樹莓派 → 買 Coral
    • 一顆 Coral 大概可以處理十台攝影機


    區域(zones):減少誤報的關鍵

    問題馬路上走過的人也被偵測到,一天通知一百次。

    解法:畫出你在乎的區域
    1.     zones:
    2.       門前:
    3.         coordinates: 0.3,1,0.3,0.5,0.7,0.5,0.7,1
    4.         objects:
    5.           - person
    複製代碼

    座標是「畫面寬高的比例」
    Frigate 的網頁介面有工具可以用畫的。

    然後自動化只看區域
    1. automation:
    2.   - alias: 有人靠近門口
    3.     triggers:
    4.       - trigger: mqtt
    5.         topic: frigate/events
    6.     conditions:
    7.       - condition: template
    8.         value_template: >
    9.           {{ trigger.payload_json['type'] == 'new'
    10.              and trigger.payload_json['after']['camera'] == '門口'
    11.              and trigger.payload_json['after']['label'] == 'person'
    12.              and '門前' in trigger.payload_json['after']['entered_zones'] }}
    13.     actions:
    14.       - action: script.通知
    15.         data:
    16.           等級: 重要
    17.           標題: 有人在門口
    18.           訊息: 已錄影
    複製代碼

    遮罩(masks):另一個減少誤報的工具


    • motion mask —— 那塊區域完全忽略(例如會晃的樹)
    • object mask —— 那塊區域不做物件偵測(例如鄰居的門)


    人臉辨識

    Frigate 0.16 之後內建了人臉辨識和車牌辨識
    不用再另外裝 Double Take 之類的東西。


    • 在介面上標記幾張臉
    • 之後會告訴你「是誰」而不只是「有人」


    實務上


    • 需要夠近、夠清楚的畫面(門口的攝影機最適合)
    • 角度太斜或太遠會認不出來
    • 戴口罩會失效


    儲存空間規劃

    概略的估算
    1. 1080p、15fps、H.264
    2.   → 大約每小時 1-2 GB(連續錄)
    3.   → 一天 24-48 GB
    4.   → 四台攝影機一天 100-200 GB
    複製代碼

    所以


    • 不要連續錄所有攝影機
    • 用 mode: motion(只在有動作時錄)
    • 事件錄影留久一點,連續錄影留短一點
    • 放在 HDD 不要放 SSD(一直寫會傷 SSD)


    HA 這邊的整合

    裝了 Frigate 的 HA 整合之後,每台攝影機會有


    • camera 實體(看畫面)
    • binary_sensor(偵測到人 / 車 / 動作)
    • sensor(各類物件的數量)
    • switch(開關偵測、錄影、快照)


    用 switch 做「在家時關閉通知」
    1. automation:
    2.   - alias: 在家時關掉門口偵測通知
    3.     triggers:
    4.       - trigger: state
    5.         entity_id: person.charles
    6.         to: home
    7.     actions:
    8.       - action: switch.turn_off
    9.         target:
    10.           entity_id: switch.門口_偵測
    複製代碼

    常見問題

    一、畫面卡卡的


    • 硬體加速沒開
    • 用主串流做偵測(改用第二串流)
    • fps 太高


    二、誤報很多


    • 沒設區域和遮罩
    • 信心門檻太低(可以調 min_score)
    • 夜間紅外線的畫面容易誤判


    三、HA 裡看不到畫面


    • 檢查 go2rtc 的設定(Frigate 內建用它做串流)
    • 瀏覽器可能不支援那個編碼(H.265 在某些瀏覽器不行)


    四、硬碟一直滿


    • retain 設太長
    • 連續錄影沒關
    • 監控磁碟空間並自動提醒


    ---

    下一篇:Matter 與 Thread 的現況 ——
    2026 年了,到底能不能用。
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-9-24 12:55 , Processed in 0.080986 second(s), 23 queries .

    快速回覆 返回頂部 返回列表