人臉辨識

人臉識別變得更簡單 – 家庭助理double take 指南翻譯網址如下:https://everythingsmarthome.co.uk/face-recognition-just-got-easier-home-assistant-double-take-guide/

首先,讓我們看一下 Double Take 是什麼以及它為您提供的一些功能和好處: Double Take 是由David Jakowenko創建的一個開源項目,旨在成為處理和訓練面部識別圖像的統一界面。Double Take 支持多個檢測器,與Home Assistant以及 MQTT 集成,而且很酷的是,您實際上可以直接從 UI 訓練和取消訓練人臉。這使得任何人都比以往任何時候都更容易使用,這也是 DeepStack 面臨的挑戰之一。

DeepStack 不是最簡單也不是最用戶友好的人臉訓練工具,但 Double Take 幫助我們輕鬆解決了這個問題。另一件不太容易做的事情是在檢測到一個人後自動運行面部檢測。因此,通過 Frigate 和 DeepStack 設置,我們過去常常讓 Frigate 檢測一個人,然後當這種情況發生時,我們會使用 Home Assistant 自動化讓 DeepStack 對該圖像運行面部檢測。嗯……Double Take 將為我們處理整個過程,並通過一個漂亮乾淨的 UI 來管理這一切,就在 Home Assistant 內部。什麼時候活著!

還值得一提的是,Double Take 與 Frigate 一起作為 NVR 處理鏡頭、快照的記錄及其處理對象檢測——當檢測到一個人時在攝像機圖像中尋找一個人。

然後,Double Take 將該圖像傳遞給所謂的面部識別檢測器,如前所述,Double Take 支持 3 種不同的檢測器:DeepStack、Compreface 和 Facebox。

先決條件

我們將在本指南中使用 DeepStack,因為我們已經介紹了安裝過程(再次,抱歉,沒有文​​章……好吧,我真的落後了)但是如果你想使用任何其他檢測器,那麼配置應該非常相似。此外,如果您想按照本指南進行操作,您將需要已經安裝並運行 Frigate

好的,現在我們已經啟動並運行了 Frigate 和 DeepStack,讓我們開始安裝吧!現在,作為一個小旁注,就在一周或兩週前,Double Take 正式添加了作為家庭助理附加組件運行的安裝選項——讓我們的生活更輕鬆!如果您不使用 Home Assistant 附加組件,那麼如果您想將其作為 docker 容器運行,這很簡單。

Home Assistant Double Take 附加組件

現在,讓我們開始吧。前往主管然後附加商店並點擊三個點並單擊存儲庫。粘貼此鏈接,該鏈接將為 Double Take 附加組件添加一個新存儲庫。然後找到新添加的 Double Take 條目並點擊安裝按鈕。安裝後,您可以根據需要勾選看門狗、自動更新和顯示在側邊欄選項中。繼續並點擊開始按鈕,因為所有配置都在 Double Take UI 中完成。

雙取配置

打開 Double Take UI,您將登陸主儀表板——您會看到它說沒有找到預期的文件,因為我們還沒有告訴它 Frigate 的位置——上到頂部,前往配置選項卡,然後我們需要使用我們的 Frigate 和 DeepStack 詳細信息配置我們的 MQTT,這非常簡單。

首先輸入 MQTT 代理詳細信息,並確保包含您的 MQTT 詳細信息的 IP 地址、用戶名和密碼。這也需要與您的 Frigate 服務器連接的 MQTT 代理相同,因為這是它與 Frigate 通信以啟動面部識別的方式:

mqtt:
  host: mqtt_IP
  username: mqtt-user
  password: mqtt-password

接下來輸入您的 Frigate 服務器的 URL,如果您在 Home Assistant 上運行 Frigate,那麼這將是與您的 Home Assistant 服務器相同的 IP 或主機名,端口為 5000。

frigate:
  url: http://frigate_IP:5000

最後要添加的是我們的檢測器,一旦發現一個人,檢測器將處理我們從 Frigate 進行的面部識別。在這種情況下,我們為此使用 DeepStack,但如果您想使用另一個檢測器 Compreface 或 Facebox,那麼您需要在此處稍微調整此配置。對於 DeepStack,我們需要輸入我們的 DeepStack URL,如果您使用的是 API 密鑰,那麼您也可以在此處指定,我不是,所以我將其留空:

detectors:
  deepstack:
    url: http://deepstack_IP
    key:
    timeout: 30

你的配置應該看起來像這樣:

在騎行的一側,您可以點擊保存配置並重新啟動按鈕,一旦您這樣做,Double Take 將使用新配置重新啟動,然後您會在左上角注意到它​​會顯示您的連接狀態MQTT、護衛艦和 DeepStack。如果它們顯示為紅色,那麼您需要仔細檢查設置和日誌,並且您可以訪問右上角的日誌。

就配置而言,Double Take 設置確實如此,如果你做的一切正確,你現在可以走到你的相機前觸發 Frigate 到你的第一場比賽。您需要確保在 Frigate 配置中啟用了人員檢測。

訓練面孔

一旦你走到你的相機前並觸發護衛艦,你應該會在你的比賽中看到這樣的圖像:

從一開始,我們可以在這裡看到一些東西,首先它給我們的檢測器命名為 DeepStack,它還返回未知的名稱,因為我們還沒有訓練任何人臉。當前為 0 的百分比是訓練後將再次顯示的置信水平。下面是它來自的相機,以及來自 MQTT 或 Frigate 快照的相機。您可能會在這裡看到重複的圖像,因為 Frigate 會在進行初始檢測時首先通過 MQTT 發送人的圖像,然後當它保存更準確的快照時,它也會將該圖像發送到 Double Take 進行處理。如果需要,您可以禁用此行為。

現在我們要訓練一些人臉,以便我們可以開始匹配圖像。前往訓練選項卡,然後使用頂部的下拉菜單選擇添加新的,然後輸入您要匹配的人的姓名。現在我們有幾種方法可以在這裡匹配人臉,或者我們可以上傳我們自己的圖像進行訓練,或者我們可以使用相機本身的一些圖像來訓練它,或者兩者兼而有之。我將首先向您展示如何上傳圖片,點擊上傳按鈕,然後選擇一些圖片進行上傳,您可以一次選擇多張圖片。一旦你上傳了這些,DeepStack 就會開始根據你的臉訓練一個模型,這有多酷:

現在如果我們回到匹配,你現在可以做的是重新處理以前不匹配的圖像,看看它現在是否可以通過按下刷新按鈕來獲取它們,這將要求 DeepStack 在我們現在重新檢查圖像之後訓練它。

所以這真的很容易使用,您可以使用來自實際相機的圖像直接從雙鏡頭 UI 訓練圖像,或者您可以通過上傳自己的圖像來訓練圖像,您可以輕鬆查看所有面部的概覽檢測到,Double Take 對它與人臉匹配的信心有多大,並且您可以真正重新處理您剛剛訓練過的圖像,非常易於使用並且效果非常好。現在讓我們看看創建一個非常簡單的自動化來通知您匹配的圖像。

家庭助理自動化

首先,在我們創建自動化之前,讓我們看一下現在暴露給家庭助理的一些傳感器,我們可以在自動化中實際使用它們,如果我們查看開發工具內部,我們現在可以看到我們有一些傳感器為 Double Take 列出,首先我們有一個傳感器用於我們的後花園相機本身,其中包含該相機的最後匹配項,我們還為我們通過面部識別匹配的人配備傳感器,以及一個未知傳感器用於當某人無法成為匹配。在 sensor 屬性中還有大量額外信息,您的高級用戶可能希望在通知中使用它們:

轉到配置、自動化並創建新的自動化。對於我們將使用剛剛發現的這兩個傳感器的狀態,我將首先使用未知傳感器,將開和關框留空,但輸入觸發器 ID,以便稍後使用。然後我還要為我自己的名字添加傳感器,再次輸入觸發器 ID。

然後在操作框下,我將使用選擇操作,它允許我們根據剛剛發生的情況運行不同的操作,這對於組合自動化非常有用,然後對於條件下的選項 1,我從向下並選擇我的未知觸發器 ID。

對於我輸入呼叫服務並選擇通知服務的操作。然後我將首先切換到 YAML 模式,因為我們將使用模板,並給我的通知一個標題。在消息中,我還可以輸入一條消息,使用未知傳感器的狀態,即相機名稱。然後我添加了第二個選項,這次為找到匹配項的傳感器填寫詳細信息並輸入稍微不同的消息。

這一次,當我走到攝像頭前時,您會收到一個簡單的通知,告訴您在攝像頭中檢測到某人以及該人是否被識別。

你可以在這裡做一些更高級的事情,比如按計劃進行,告訴你信心水平,附加來自檢測到的面部相機的圖像,事實上我已經在 iOS 和 Android 上完成了整個視頻,可操作通知涵蓋如何做所有這些事情,這裡的 Double Take 文檔中也有一個示例。

最後的話

這就是要為這個視頻做的事情,這是你第一次看,以及如何安裝 Double Take 以使用 Double Take UI 輕鬆檢測、處理和訓練面部識別圖像,你們一直在問很多關於這個的問題一個已經用了幾個月了,所以最終檢查它並看看它是什麼樣子真的很好,我對它的工作效果印象深刻,到目前為止,大衛在它出現的短時間內做得非常出色.

但是請在評論中告訴我你們的想法,我知道訓練面部並不是最簡單的工作,因為你必須使用命令行來完成它,所以將它內置到 UI 中超級有用。在下一個抓住你!

 

 

 

frigate.yml

mqtt:
host: core-mosquitto
user: xxx
password: xxxx

cameras:
camera_1:
ffmpeg:
inputs:
– path: rtsp://tapoc100:xxx@192.168.0.110:554/stream1
roles:
– detect
– rtmp
– path: rtsp://tapoc100:xxx@192.168.0.110:554/stream1 # <—– Add high res stream
roles:
– record
detect:
width: 1024
height: 768
fps: 5

record:
  enabled: True
  events:
    retain:
      default: 2
snapshots: # <----- Enable snapshots
  enabled: True
  timestamp: true
  bounding_box: true
  retain:
    default: 1  

### 自動化
### 自動化
alias: Notify person double-take
trigger:
  - platform: mqtt
    topic: double-take/matches/#
condition: []
action:
  - choose:
      - conditions:
          - condition: template
            value_template: '{{trigger.topic == "double-take/matches/unknown"}}'
        sequence:
          - service: notify.line_notification
            data:
              title: '{{trigger.payload_json[''camera'']|title}} 相機'
              message: >
                {{trigger.payload_json['unknown']['name']}}
                您好![相機影像](http://joulong.hopto.org:3000/api/storage/matches/{{trigger.payload_json['unknown']['filename']}}?box=true)
    default:
      - service: notify.line_notification
        data:
          title: '{{trigger.payload_json[''camera'']|title}} 相機'
          message: >
            {{trigger.payload_json['match']['name']|title}} 辨識率
            {{trigger.payload_json['match']['confidence']}}%
            ![相機影像](http://joulong.hopto.org:3000/api/storage/matches/{{trigger.payload_json['match']['filename']}}?box=true)
      - service: google.add_event
        data_template:
          calendar_id: joulongleu2@gmail.com
          summary: >
            {{trigger.payload_json['match']['name']|title}} 辨識率
            {{trigger.payload_json['match']['confidence']}}% 
          description: >-
            相機影像:
            http://joulong.hopto.org:3000/api/storage/matches/{{trigger.payload_json['match']['filename']}}?box=true)
          start_date_time: '{{ now().strftime(''%Y-%m-%d %H:%M:%S'') }}'
          end_date_time: '{{ now().strftime(''%Y-%m-%d %H:%M:%S'') }}'
initial_state: true
mode: parallel

#### auto take
mqtt:
  host: core-mosquitto
  username: xxx
  password: xxxx

frigate:
  url: http://192.168.0.107:5006

detectors:

  deepstack:
    url: http://192.168.0.107:5000
    # recognition api key
    key: 
    timeout: 30 
 


# global detect settings (default: shown below)
detect:
  match:
    # save match images
    save: true
    # include base64 encoded string in api results and mqtt messages
    # options: true, false, box
    base64: false
    # minimum confidence needed to consider a result a match
    confidence: 50
    # hours to keep match images until they are deleted
    purge: 168
    # minimum area in pixels to consider a result a match
    min_area: 10000

  unknown:
    # save unknown images
    save: true
    # include base64 encoded string in api results and mqtt messages
    # options: true, false, box
    base64: false
    # minimum confidence needed before classifying a name as unknown
    confidence: 40
    # hours to keep unknown images until they are deleted
    purge: 8
    # minimum area in pixels to keep an unknown result
    min_area: 0
# schedule settings (default: shown below)
schedule:
  # disable recognition if conditions are met
  disable:
    # - days:
    #     - monday
    #     - tuesday
    #   times:
    #     - 20:00-23:59
    #   cameras:
    #     - office
    # - days:
    #     - tuesday
    #     - wednesday
    #   times:
    #     - 13:00-15:00
    #     - 18:00-20:00
    #   cameras:
    #     - living-room    

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

近期留言