電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>如何利用Walle-ng 進(jìn)行面部跟蹤和識(shí)別

如何利用Walle-ng 進(jìn)行面部跟蹤和識(shí)別

2023-07-07 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

該應(yīng)用程序根據(jù)畫面中人臉的位置連續(xù)監(jiān)控和調(diào)整兩個(gè)伺服系統(tǒng)的垂直和水平位置。如果檢測(cè)到人臉,則會(huì)記錄該活動(dòng),并使用 Amazon Web Services (AWS) API 網(wǎng)關(guān)、Lambda 和簡(jiǎn)單通知服務(wù) (SNS) 向管理員發(fā)送通知短信。該項(xiàng)目擴(kuò)展了 OpenCV 開放模型動(dòng)物園中的人臉識(shí)別演示

要求

總建造成本不到 175 美元。硬件可以從 Amazon、Sparkfun 或 Adafruit 購買。

Raspberry Pi 4B(首選 4GB)

Movidius 電腦棒 2

微型 HDMI 電纜(僅限 RPI 4)

鍵盤和鼠標(biāo)

微型 SD 卡(首選 8GB 或更大)

MakerFocus Raspberry Pi 平移/傾斜帽

MakerFocus Raspberry Pi 夜視相機(jī)

適用于 Raspberry Pi Cam 的 Adafruit Flex 電纜

iUniker Raspberry Pi 集群案例

樹莓派充電器 (RPI 4)

AWS 控制臺(tái)訪問

公對(duì)母 GPIO 帶狀電纜

鉆頭

集會(huì)

Walle-ng 可以組裝成多種配置,這實(shí)際上取決于用例和用戶偏好。對(duì)于此安裝,iUniker Raspberry Pi Cluster Case 的兩個(gè)部分用于容納 Raspberry Pi 和安裝平移/傾斜帽。Raspberry Pi 安裝在機(jī)箱下部的頂部,風(fēng)扇安裝在頂部(外部)。建議安裝散熱器,通過頂部塑料件中的開口連接和饋送 Picam 柔性電纜,并將 GPIO 帶狀電纜的母端放在 Raspberry Pi GPIO 引腳上,然后再圍繞 Raspberry Pi 組裝外殼。

poYBAGOSmEqAfxPtAAVjvdLBDkw679.jpg

組裝中最困難的部分是將平移/傾斜帽連接到 iUniker 外殼的最上部。頂部塑料外殼件(固定平移/傾斜帽的部分)與用于 iUniker 外殼頂部的部件相同(與中間部件相同)。使用提供的說明組裝平移/傾斜帽后,將帽子放在 iUniker 的頂部,并以可以標(biāo)記 4 個(gè)孔位置的方式放置,位于平移/傾斜帽 PCB 的角上, 在 iUniker 塑料上使用標(biāo)記。鉆孔后,使用 iUniker 套件隨附的可用硬件將平移/傾斜帽固定到塑料上。請(qǐng)注意,在圖像中,由于 iUniker 塑料件中的開口,我只能將 4 個(gè)孔中的 3 個(gè)固定到塑料上。大學(xué)教師'

poYBAGOSmGqAJtRsAAdQgIe9xtg285.jpg

組裝的最后一部分包括將風(fēng)扇連接到 5v 和接地 GPIO 引腳,將英特爾 Movidius 計(jì)算棒插入其中一個(gè) USB3.0 端口,連接微型 HDMI、鍵盤和鼠標(biāo)(如果它們需要使用),并將 GPIO 帶狀電纜的公端連接到平移/傾斜帽。fam 的正極(紅色)線應(yīng)連接到 GPIO2 或 GPIO4,地線(黑色)應(yīng)連接到 GPIO6??梢栽趨⒖疾糠终业?RPI4 的 GPIO 引出線。

poYBAGOSmIaASP7BAAbewLVZ-UU416.jpg

設(shè)置亞馬遜網(wǎng)絡(luò)服務(wù)

教程中使用的所有服務(wù)均符合AWS 免費(fèi)套餐的使用條件。如果您沒有 AWS 控制臺(tái)訪問權(quán)限,則需要在AWS 網(wǎng)站上創(chuàng)建一個(gè)帳戶。本節(jié)將提供有關(guān)設(shè)置 AWS SNS、API 網(wǎng)關(guān)和 Lambda 的詳細(xì)信息。

AWS 簡(jiǎn)單通知服務(wù) (SNS)

SNS 是一種高度可用、持久、安全、完全托管的發(fā)布/訂閱消息傳遞服務(wù),可以配置為向訂閱 SNS 主題的設(shè)備發(fā)送 SMS 或電子郵件消息。對(duì)于這個(gè)項(xiàng)目,將創(chuàng)建一個(gè) SNS 主題,并將一個(gè)移動(dòng)設(shè)備配置為該主題的訂閱者。這是接收從 walle-ng 事件觸發(fā)的消息所必需的。在 AWS 控制臺(tái)中,轉(zhuǎn)到 Simple Notification Services 并執(zhí)行以下操作:

簡(jiǎn)單通知服務(wù) (SNS) --> 主題 --> 創(chuàng)建主題

設(shè)置以下設(shè)置:

名稱:walle-sns-topic

顯示名稱:警報(bào)

點(diǎn)擊 --> 創(chuàng)建主題

創(chuàng)建主題后,應(yīng)該可以看到類似于下圖的視圖。復(fù)制與 walle-sns-topic 關(guān)聯(lián)的 ARN。在這個(gè)例子中,它是arn:aws:sns:us-east-1:646789677679:walle-ng-topic。

pYYBAGOSmI6ANNdjAAED_8WTuQE259.png

創(chuàng)建對(duì)該主題的訂閱:

點(diǎn)擊 --> 創(chuàng)建訂閱

主題 ARN:選擇 walle-sns-topic(如果尚未選擇)

協(xié)議:短信(或電子郵件,如果您愿意)

端點(diǎn):+15556667777(輸入電話號(hào)碼,如果選擇了電子郵件,則輸入電子郵件)

點(diǎn)擊 --> 創(chuàng)建訂閱

poYBAGOSmJGAbk2MAAD3mjOvW5w755.png

應(yīng)設(shè)置 SNS 以向移動(dòng)設(shè)備發(fā)送 SMS 消息。建議發(fā)布測(cè)試消息以驗(yàn)證設(shè)置。要發(fā)布測(cè)試消息,請(qǐng)執(zhí)行以下操作:

在邊欄中,選擇主題 --> walle-ng-topic

點(diǎn)擊-->發(fā)布消息

主題:測(cè)試

消息正文:測(cè)試測(cè)試

點(diǎn)擊-->發(fā)布消息

AWS 拉姆達(dá)

AWS Lambda 讓您無需預(yù)置或管理服務(wù)器即可運(yùn)行代碼。它是無服務(wù)器的,只有在向 API 網(wǎng)關(guān)發(fā)出 POST 請(qǐng)求時(shí)才會(huì)運(yùn)行。Lambda 將負(fù)責(zé)解析來自 walle-ng 的 POST 請(qǐng)求并發(fā)布 SNS 消息。在 AWS 控制臺(tái)中,轉(zhuǎn)到 Lambda 并執(zhí)行以下操作:

Lambda --> 創(chuàng)建函數(shù) --> 選擇“Author from scratch”

在基本信息部分,設(shè)置以下操作:

函數(shù)名稱:walle-ng-lambda

運(yùn)行時(shí):Python3.6

角色名稱:walle-ng-role

權(quán)限:基本 Lambda、Amazon SNS 發(fā)布策略

點(diǎn)擊 --> 創(chuàng)建函數(shù)

poYBAGOSmJeANdF1AAKZVBSuJRk042.png

創(chuàng)建 Lambda 函數(shù)后,向下滾動(dòng)到該Function code部分并將下面的代碼復(fù)制/粘貼到lambda_function.py腳本中。在 下TOPIC_ARN_SMS,將值更改為您在創(chuàng)建 時(shí)記下的 ARN walle-ng-topic。對(duì)于此示例,將更改為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!'
        }

?

?

最終輸出應(yīng)類似于以下內(nèi)容:

pYYBAGOSmJ-ASke_AADOOgj6QZM060.png

在下一步中,通過執(zhí)行測(cè)試驗(yàn)證是否正確設(shè)置了 Lambda 函數(shù)。在 Lambda 控制臺(tái)中執(zhí)行以下操作:

點(diǎn)擊 --> 測(cè)試

檢查 --> 創(chuàng)建新測(cè)試

事件名稱 --> SMSTest

將 JSON 替換為以下內(nèi)容并單擊 --> 創(chuàng)建

?

?

{
    'httpMethod': 'POST',
    'body': 'message=Observed+test'
}

?

?

單擊 --> 操作 --> 發(fā)布新版本

點(diǎn)擊 --> 測(cè)試

您應(yīng)該會(huì)收到一條發(fā)送到訂閱 SNS 主題的電話號(hào)碼的 SMS 消息。一條成功的消息表示 Lambda 已正確配置以使用 SNS。

AWS API 網(wǎng)關(guān)

Amazon API Gateway 是一項(xiàng)完全托管的服務(wù),可讓開發(fā)人員輕松發(fā)布、維護(hù)、監(jiān)控、保護(hù)和操作自定義 API。API 網(wǎng)關(guān)將被配置為接受包含來自 walle-ng 的消息的 POST 請(qǐng)求。為了向與 API 通信的端點(diǎn)設(shè)備增加一層安全性,將生成一個(gè) API 密鑰,并將 walle-ng 配置為在每次調(diào)用時(shí)使用 API。在 AWS 控制臺(tái)中,轉(zhuǎn)到 API 網(wǎng)關(guān)并執(zhí)行以下操作:

API 網(wǎng)關(guān) --> 創(chuàng)建 API

設(shè)置以下內(nèi)容:

API 名稱:walle-ng-api

描述:Walle-ng API

點(diǎn)擊-->創(chuàng)建api

pYYBAGOSmKeAWi8qAAGsq2iODFc285.png

選擇 walle-ng-api --> Actions --> Create Resource

設(shè)置以下內(nèi)容:

資源名稱:Walle API網(wǎng)關(guān)

資源路徑:walle-api-gateway

檢查 --> 啟用 API 網(wǎng)關(guān) CORS

點(diǎn)擊 --> 創(chuàng)建資源

單擊 --> 操作 --> 創(chuàng)建方法

選擇 --> POST(完成后,按下下拉列表旁邊的復(fù)選標(biāo)記按鈕)

pYYBAGOSmKuAZ5WqAAE1RMLyXkk247.png

在 POST 設(shè)置窗口中,設(shè)置以下內(nèi)容:

集成類型:Lambda

檢查 --> 使用 Lambda 代理集成

Lambda 函數(shù):walle-ng-lambda

點(diǎn)擊 --> 保存

向 Lambda 函數(shù)添??加權(quán)限單擊 --> 確定

在左側(cè)邊欄中,選擇 API Keys

單擊 --> API 密鑰 --> 操作 --> 創(chuàng)建 API 密鑰

設(shè)置以下內(nèi)容:

名稱:walle-api-key

說明:Walle API Key

創(chuàng)建密鑰后,選擇 api 密鑰名稱 --> 顯示(API 密鑰旁邊)。記下 API 密鑰,以便將來參考。

poYBAGOSmLWAARWmAAGUjAclybU944.png

在左側(cè)邊欄中,選擇 APIs --> walle-ng-api

設(shè)置以下內(nèi)容:

點(diǎn)擊 --> POST --> 方法請(qǐng)求

單擊 --> 需要 API 密鑰 --> True --> 單擊復(fù)選標(biāo)記以保存

單擊 --> 選項(xiàng) --> 方法請(qǐng)求

單擊 --> 需要 API 密鑰 --> True --> 單擊復(fù)選標(biāo)記以保存

單擊 --> 操作 --> 啟用 CORS --> 啟用 CORS 并替換現(xiàn)有的 CORS 標(biāo)頭 --> 是,替換現(xiàn)有值

pYYBAGOSmL-AAnAzAAH5aNnER8k602.png

在 Deploy API 中設(shè)置以下值:

單擊 --> 操作 --> 部署 API

舞臺(tái) --> 舞臺(tái)

階段名稱 --> 產(chǎn)品

單擊 --> 部署

記下調(diào)用 URL。該值將在 Walle 客戶端配置中使用。在此示例中,調(diào)用 URL 是https://2szxrk2gh4.execute-api.us-east-1.amazonaws.com/prod。為了生成 POST 請(qǐng)求將發(fā)送到的 URL,請(qǐng)?zhí)砑觲alle-ng-api到調(diào)用 URL 的末尾。此示例的最終 URL 為https://2szxrk2gh4.execute-api.us-east-1.amazonaws.com/prod/walle-ng-api。

在繼續(xù) Raspberry Pi 安裝部分之前,請(qǐng)確保端點(diǎn) URL 和 API 密鑰區(qū)域在記事本中可用。在 walle-ng 安裝期間,腳本會(huì)詢問這些值以使設(shè)置更容易。

樹莓派安裝

此時(shí),目標(biāo)是成功將 Raspbian OS 刷入 micro SD 卡,啟用 SSH,并擴(kuò)展文件系統(tǒng)。系統(tǒng)運(yùn)行后,將安裝項(xiàng)目依賴項(xiàng)和工具以獲得工作的“walle-ng”設(shè)備。

首先將 Raspbian Desktop 下載到您的計(jì)算機(jī)。使用Unetbootin、BalenaEtcherRufus和您的微型 SD 卡創(chuàng)建一個(gè)可引導(dǎo)的 USB 驅(qū)動(dòng)器。有關(guān)此主題的幫助,請(qǐng)參閱本教程底部的參考部分。

?

?

# 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 卡的示例:

poYBAGOSmMKALRxBAABSnxVIYSA075.png

接下來,將 micro SD 卡重新插入計(jì)算機(jī),并在啟動(dòng)分區(qū)中添加一個(gè)名為“ssh”的空文件。在 Linux 中,發(fā)出lsblk命令以顯示可用的驅(qū)動(dòng)器和安裝點(diǎn)。創(chuàng)建空文件的問題。touch /media/anton/boot/ssh注意:此路徑會(huì)有所不同,因此請(qǐng)修改它以反映主機(jī)上安裝的 micro SD 卡的路徑。創(chuàng)建文件后,卸載可引導(dǎo)驅(qū)動(dòng)器并將微型 SD 卡插入 Raspberry Pi。注意:如果您打算使用鍵盤、鼠標(biāo)和外接顯示器,則可以跳過此步驟并在登錄樹莓派時(shí)啟用 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

?

?

poYBAGOSmMqABN-FAACN_BRVtjw771.png

為 Raspberry Pi 通電并通過 SSH,或通過 GUI 登錄。如果您需要快速找到本地 LAN 上 Raspberry Pi 的 IP 地址,請(qǐng)使用 Nmap 來定位它。新圖像的默認(rèn)密碼是raspberry. 建議更改默認(rèn)密碼以增強(qiáng)樹莓派的安全性。

?

?

# 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 的示例:

poYBAGOSmM-ACbJJAACDBQvz4-c586.png

。

?

?

# Open a terminal on the Pi Desktop
cd ~/Walle-ng
python3 walle-ng.py

?

?

作為登錄 Pi 桌面的替代方法,您可以在主機(jī)上使用 SSH 并運(yùn)行以下命令來查看流:

?

?

# 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 的所有設(shè)置都在config.cfg位于 config 目錄的文件中設(shè)置。更詳細(xì)的參數(shù)解釋如下:

?

?

[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

?

?

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)