資料介紹
該應用程序根據畫面中人臉的位置連續監控和調整兩個伺服系統的垂直和水平位置。如果檢測到人臉,則會記錄該活動,并使用 Amazon Web Services (AWS) API 網關、Lambda 和簡單通知服務 (SNS) 向管理員發送通知短信。該項目擴展了 OpenCV 開放模型動物園中的人臉識別演示。
要求
總建造成本不到 175 美元。硬件可以從 Amazon、Sparkfun 或 Adafruit 購買。
Raspberry Pi 4B(首選 4GB)
Movidius 電腦棒 2
微型 HDMI 電纜(僅限 RPI 4)
鍵盤和鼠標
微型 SD 卡(首選 8GB 或更大)
MakerFocus Raspberry Pi 平移/傾斜帽
MakerFocus Raspberry Pi 夜視相機
適用于 Raspberry Pi Cam 的 Adafruit Flex 電纜
iUniker Raspberry Pi 集群案例
樹莓派充電器 (RPI 4)
AWS 控制臺訪問
公對母 GPIO 帶狀電纜
鉆頭
集會
Walle-ng 可以組裝成多種配置,這實際上取決于用例和用戶偏好。對于此安裝,iUniker Raspberry Pi Cluster Case 的兩個部分用于容納 Raspberry Pi 和安裝平移/傾斜帽。Raspberry Pi 安裝在機箱下部的頂部,風扇安裝在頂部(外部)。建議安裝散熱器,通過頂部塑料件中的開口連接和饋送 Picam 柔性電纜,并將 GPIO 帶狀電纜的母端放在 Raspberry Pi GPIO 引腳上,然后再圍繞 Raspberry Pi 組裝外殼。
組裝中最困難的部分是將平移/傾斜帽連接到 iUniker 外殼的最上部。頂部塑料外殼件(固定平移/傾斜帽的部分)與用于 iUniker 外殼頂部的部件相同(與中間部件相同)。使用提供的說明組裝平移/傾斜帽后,將帽子放在 iUniker 的頂部,并以可以標記 4 個孔位置的方式放置,位于平移/傾斜帽 PCB 的角上, 在 iUniker 塑料上使用標記。鉆孔后,使用 iUniker 套件隨附的可用硬件將平移/傾斜帽固定到塑料上。請注意,在圖像中,由于 iUniker 塑料件中的開口,我只能將 4 個孔中的 3 個固定到塑料上。大學教師'
組裝的最后一部分包括將風扇連接到 5v 和接地 GPIO 引腳,將英特爾 Movidius 計算棒插入其中一個 USB3.0 端口,連接微型 HDMI、鍵盤和鼠標(如果它們需要使用),并將 GPIO 帶狀電纜的公端連接到平移/傾斜帽。fam 的正極(紅色)線應連接到 GPIO2 或 GPIO4,地線(黑色)應連接到 GPIO6。可以在參考部分找到 RPI4 的 GPIO 引出線。
本教程中使用的所有服務均符合AWS 免費套餐的使用條件。如果您沒有 AWS 控制臺訪問權限,則需要在AWS 網站上創建一個帳戶。本節將提供有關設置 AWS SNS、API 網關和 Lambda 的詳細信息。
AWS 簡單通知服務 (SNS)
SNS 是一種高度可用、持久、安全、完全托管的發布/訂閱消息傳遞服務,可以配置為向訂閱 SNS 主題的設備發送 SMS 或電子郵件消息。對于這個項目,將創建一個 SNS 主題,并將一個移動設備配置為該主題的訂閱者。這是接收從 walle-ng 事件觸發的消息所必需的。在 AWS 控制臺中,轉到 Simple Notification Services 并執行以下操作:
簡單通知服務 (SNS) --> 主題 --> 創建主題
設置以下設置:
名稱:walle-sns-topic
顯示名稱:警報
點擊 --> 創建主題
創建主題后,應該可以看到類似于下圖的視圖。復制與 walle-sns-topic 關聯的 ARN。在這個例子中,它是arn:aws:sns:us-east-1:646789677679:walle-ng-topic。
創建對該主題的訂閱:
點擊 --> 創建訂閱
主題 ARN:選擇 walle-sns-topic(如果尚未選擇)
協議:短信(或電子郵件,如果您愿意)
端點:+15556667777(輸入電話號碼,如果選擇了電子郵件,則輸入電子郵件)
點擊 --> 創建訂閱
應設置 SNS 以向移動設備發送 SMS 消息。建議發布測試消息以驗證設置。要發布測試消息,請執行以下操作:
在邊欄中,選擇主題 --> walle-ng-topic
點擊-->發布消息
主題:測試
消息正文:測試測試
點擊-->發布消息
AWS 拉姆達
AWS Lambda 讓您無需預置或管理服務器即可運行代碼。它是無服務器的,只有在向 API 網關發出 POST 請求時才會運行。Lambda 將負責解析來自 walle-ng 的 POST 請求并發布 SNS 消息。在 AWS 控制臺中,轉到 Lambda 并執行以下操作:
Lambda --> 創建函數 --> 選擇“Author from scratch”
在基本信息部分,設置以下操作:
函數名稱:walle-ng-lambda
運行時:Python3.6
角色名稱:walle-ng-role
權限:基本 Lambda、Amazon SNS 發布策略
點擊 --> 創建函數
創建 Lambda 函數后,向下滾動到該Function code部分并將下面的代碼復制/粘貼到lambda_function.py腳本中。在 下TOPIC_ARN_SMS,將值更改為您在創建 時記下的 ARN walle-ng-topic。對于此示例,將更改為arn:aws:sns:us-east-1:646789677679:walle-ng-topic.
完成后,單擊 --> 保存。
?
?
import boto3 import urllib.parse import logging logger = logging.getLogger() logger.setLevel(logging.INFO) TOPIC_ARN_SMS = "" SMS_SUBJ = "Alert" SMS_MESG = "Observed unknown person(s)" '''Setup SNS resource''' def publish_sms_msg(topic_arn=TOPIC_ARN_SMS, sms_mesg=SMS_MESG, sms_subj=SMS_SUBJ): sns = boto3.resource('sns') publish_sms(sns, topic_arn, sms_mesg, sms_subj) '''Send the SMS''' def publish_sms(sns, topic_arn, sms_mesg, sms_subj): topic = sns.Topic(topic_arn) topic.publish(Message=sms_mesg, Subject=sms_subj) '''Event handler''' def lambda_handler(event, context): if event['httpMethod'] == 'POST': msg = event['body'] msg = urllib.parse.parse_qs(msg) if msg['message']: alert = msg['message'][0] logger.info(alert) publish_sms_msg(sms_mesg=alert) return { 'statusCode': 200, 'headers': { 'Content-Type': 'application/json' }, 'body': 'OK' } else: return { 'statusCode': 499, 'headers': { 'Content-Type': 'application/json' }, 'body': 'Go Away!' } else: return { 'statusCode': 499, 'headers': { 'Content-Type': 'application/json' }, 'body': 'Go Away!' }
?
?
最終輸出應類似于以下內容:
在下一步中,通過執行測試驗證是否正確設置了 Lambda 函數。在 Lambda 控制臺中執行以下操作:
點擊 --> 測試
檢查 --> 創建新測試
事件名稱 --> SMSTest
將 JSON 替換為以下內容并單擊 --> 創建
?
?
{ 'httpMethod': 'POST', 'body': 'message=Observed+test' }
?
?
單擊 --> 操作 --> 發布新版本
點擊 --> 測試
您應該會收到一條發送到訂閱 SNS 主題的電話號碼的 SMS 消息。一條成功的消息表示 Lambda 已正確配置以使用 SNS。
AWS API 網關
Amazon API Gateway 是一項完全托管的服務,可讓開發人員輕松發布、維護、監控、保護和操作自定義 API。API 網關將被配置為接受包含來自 walle-ng 的消息的 POST 請求。為了向與 API 通信的端點設備增加一層安全性,將生成一個 API 密鑰,并將 walle-ng 配置為在每次調用時使用 API。在 AWS 控制臺中,轉到 API 網關并執行以下操作:
API 網關 --> 創建 API
設置以下內容:
API 名稱:walle-ng-api
描述:Walle-ng API
點擊-->創建api
選擇 walle-ng-api --> Actions --> Create Resource
設置以下內容:
資源名稱:Walle API網關
資源路徑:walle-api-gateway
檢查 --> 啟用 API 網關 CORS
點擊 --> 創建資源
單擊 --> 操作 --> 創建方法
選擇 --> POST(完成后,按下下拉列表旁邊的復選標記按鈕)
在 POST 設置窗口中,設置以下內容:
集成類型:Lambda
檢查 --> 使用 Lambda 代理集成
Lambda 函數:walle-ng-lambda
點擊 --> 保存
向 Lambda 函數添??加權限單擊 --> 確定
在左側邊欄中,選擇 API Keys
單擊 --> API 密鑰 --> 操作 --> 創建 API 密鑰
設置以下內容:
名稱:walle-api-key
說明:Walle API Key
創建密鑰后,選擇 api 密鑰名稱 --> 顯示(API 密鑰旁邊)。記下 API 密鑰,以便將來參考。
在左側邊欄中,選擇 APIs --> walle-ng-api
設置以下內容:
點擊 --> POST --> 方法請求
單擊 --> 需要 API 密鑰 --> True --> 單擊復選標記以保存
單擊 --> 選項 --> 方法請求
單擊 --> 需要 API 密鑰 --> True --> 單擊復選標記以保存
單擊 --> 操作 --> 啟用 CORS --> 啟用 CORS 并替換現有的 CORS 標頭 --> 是,替換現有值
在 Deploy API 中設置以下值:
單擊 --> 操作 --> 部署 API
舞臺 --> 舞臺
階段名稱 --> 產品
單擊 --> 部署
記下調用 URL。該值將在 Walle 客戶端配置中使用。在此示例中,調用 URL 是https://2szxrk2gh4.execute-api.us-east-1.amazonaws.com/prod。為了生成 POST 請求將發送到的 URL,請添加walle-ng-api到調用 URL 的末尾。此示例的最終 URL 為https://2szxrk2gh4.execute-api.us-east-1.amazonaws.com/prod/walle-ng-api。
在繼續 Raspberry Pi 安裝部分之前,請確保端點 URL 和 API 密鑰區域在記事本中可用。在 walle-ng 安裝期間,腳本會詢問這些值以使設置更容易。
樹莓派安裝
此時,目標是成功將 Raspbian OS 刷入 micro SD 卡,啟用 SSH,并擴展文件系統。系統運行后,將安裝項目依賴項和工具以獲得工作的“walle-ng”設備。
首先將 Raspbian Desktop 下載到您的計算機。使用Unetbootin、BalenaEtcher或Rufus和您的微型 SD 卡創建一個可引導的 USB 驅動器。有關此主題的幫助,請參閱本教程底部的參考部分。
?
?
# Alternative download using bash. In a shell, run: wget https://downloads.raspberrypi.org/raspbian/images/raspbian-2019-09-30/2019-09-26-raspbian-buster.zip shasum -a 256 2019-09-26-raspbian-buster.zip unzip 2019-09-26-raspbian-buster.zip
?
?
使用 Balena Etcher 將 Raspbian OS 刷入 micro SD 卡的示例:
接下來,將 micro SD 卡重新插入計算機,并在啟動分區中添加一個名為“ssh”的空文件。在 Linux 中,發出lsblk命令以顯示可用的驅動器和安裝點。創建空文件的問題。touch /media/anton/boot/ssh注意:此路徑會有所不同,因此請修改它以反映主機上安裝的 micro SD 卡的路徑。創建文件后,卸載可引導驅動器并將微型 SD 卡插入 Raspberry Pi。注意:如果您打算使用鍵盤、鼠標和外接顯示器,則可以跳過此步驟并在登錄樹莓派時啟用 SSH。
?
?
# Show partitions (after inserting the micro SD card) lsblk # View files in the boot partition ls -la /media/anton/boot # Create an empty ssh file in the boot partition and verify touch /media/anton/boot/ssh ls -la /media/anton/boot
?
?
為 Raspberry Pi 通電并通過 SSH,或通過 GUI 登錄。如果您需要快速找到本地 LAN 上 Raspberry Pi 的 IP 地址,請使用 Nmap 來定位它。新圖像的默認密碼是raspberry. 建議更改默認密碼以增強樹莓派的安全性。
?
?
# Locate Pi on the network sudo nmap -sn 192.168.198.0/24 | grep Raspberry -B 2 # SSH to Pi using the password raspberry ssh pi@192.168.198.167 # Change the root password passwd
?
?
如何使用 nmap 和 SSH 連接到 Raspberry Pi 的示例:
。
?
?
# Open a terminal on the Pi Desktop cd ~/Walle-ng python3 walle-ng.py
?
?
作為登錄 Pi 桌面的替代方法,您可以在主機上使用 SSH 并運行以下命令來查看流:
?
?
# SSH to the Pi with the -X option to view the steam on your host machine ssh -X pi@192.168.198.167 cd ~/Walle-ng python3 walle-ng.py
?
?
定制墻
walle-ng 的所有設置都在config.cfg位于 config 目錄的文件中設置。更詳細的參數解釋如下:
?
?
[General] # Input video device, default is 0 input_video =0 # Output steam file. This writes the video stream to /tmp and can be read by other applications output_video =/tmp/output.mpeg # Show the video stream in a seperate window on the desktop. Set to False for headless installs. do_output =True # Auto-pause after each frame do_timelapse =False # Crop the input stream to this width crop_width =0 # Crop the input stream to this height crop_height =0 # Output log file for debugging log_file =/home/pi/Walle-ng/walle-ng.log [Faces] # Path to headshots for performing face identification # Images should be in the format of Name-0.jpg, Name-1.png db_path =/home/pi/Walle-ng/dataset # Use Face Detection model to find faces on the face images, otherwise use full images. do_detector =False [Model] # Face detection model path model_fd =/home/pi/Walle-ng/models/face-detection-retail-0005.xml # Landmark regression model path model_ld =/home/pi/Walle-ng/models/landmarks-regression-retail-0009.xml # Face reidentification model path model_rd =/home/pi/Walle-ng/models/face-reidentification-retail-0095.xml [Inference] # Inference device, can be [CPU,GPU,FPGA,MYRIAD,HETERO] # To use Movidius, set to MYRIAD device_fd =MYRIAD device_lm =MYRIAD device_rd =MYRIAD # Probability threshold for face detections thresh_fd =0.6 # Cosine distance threshold between two vectors for face identification thresh_rd =0.3 # Scaling ratio for bboxes passed to face recognition scale_ratio =1.15 # Show verbose debugging to logs do_verbose =False # Show stats do_stats =False # Allow growing the face database, in addition allow dumping new faces on disk. In that # case the user will be asked if he wants to add a specific image to the images gallery. # The user should specify the name for the image in the open window and press `Enter`. # If it's not, then press `Escape`. The user may add new images for the same person by # setting the same name in the open window. do_grow =False [AWS] # AWS API Gateway endpoint URL. This should point to the POST request URL notify_url = # AWS API Gateway API Key api_key = # Enable/Disable notifications, True = Enabled do_notify =True
?
?
?
- 使用Xbox Kinect和OpenCV進行面部識別
- Linux Debian與Python、Flask和OpenCV識別面部
- 基于數據驅動的面部表情識別方法 7次下載
- 基于貝葉斯網絡等的疼痛表情識別方法 11次下載
- 基于YOLO_v3與稀疏光流的人群異常行為識別 12次下載
- 基于條件生成式對抗網絡的面部表情遷移模型 6次下載
- 利用小尺度核卷積的人臉表情識別方法 9次下載
- 基于遷移學習的駕駛分心行為識別模型 10次下載
- 如何更好地實現視頻多目標軌跡的連續跟蹤? 5次下載
- 新型基于深度學習的目標實時跟蹤算法 10次下載
- 如何使用連續離散問題聯合求解和群組分析進行多目標跟蹤技術研究 1次下載
- 如何用XDS560跟蹤進行高級分析詳細概述 3次下載
- 基于射頻識別和藍牙的物體定位跟蹤研究 2次下載
- 動態圖像的自動跟蹤和識別技術研究 50次下載
- 基于卡爾曼與模糊PID的高幀頻圖像識別跟蹤系統?
- 如何利用CNN實現圖像識別 1475次閱讀
- 用EVE-NG平臺做的思科傳統防火墻的基本實驗 2522次閱讀
- 基于樹莓派的面部識別系統設計方案 1693次閱讀
- 人臉識別的一般流程看了就知道 2.8w次閱讀
- 什么是人臉識別?如何使用10行代碼實現人臉識別 5475次閱讀
- 面部識別到底是怎么樣實現的?原理是怎么樣的? 5503次閱讀
- 如何用OpenCV、Python和深度學習實現面部識別? 2747次閱讀
- 人臉識別的發展與市場和技術與流程及行業應用等詳細資料說明 7346次閱讀
- 3D打印人像破解Android設備的面部識別 3901次閱讀
- 蘋果將人工智能和面部識別系統應用于車頭燈 4813次閱讀
- 如何使用OpenCV、Python和深度學習在圖像和視頻中實現面部識別? 8071次閱讀
- 滴滴人臉識別怎么破解 11.9w次閱讀
- 可怕!面部識別可追蹤顧客購物行為,侵犯個人隱私 1282次閱讀
- 人臉識別技術原理分析及典例詳解 9229次閱讀
- 人臉識別成金融業“新寵” 1073次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論