人臉識別變得更簡單 – 家庭助理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
發佈留言