資料介紹
當(dāng)我們開(kāi)始處于封鎖狀態(tài)時(shí),我有很多時(shí)間思考我可以做的項(xiàng)目,這些項(xiàng)目將涉及我對(duì)機(jī)器學(xué)習(xí)和硬件黑客的興趣。我認(rèn)為可以監(jiān)控出口點(diǎn)(入口和出口)的小型設(shè)備可以自動(dòng)識(shí)別符合口罩要求的人。這可能是一種有趣的方式,可以讓技術(shù)解決在試圖保護(hù)人們安全的同時(shí)發(fā)生的一些復(fù)雜的人際互動(dòng)。
我決定創(chuàng)建一個(gè)“Covid Mask Detector”,它將使用一個(gè)小型便宜的 Raspberry Pi 和一個(gè)定制的對(duì)象檢測(cè)模型,該模型在戴口罩和不戴口罩的臉上進(jìn)行訓(xùn)練。
機(jī)器學(xué)習(xí)模型
為了在 TensorFlow 中創(chuàng)建機(jī)器學(xué)習(xí)模型,我首先需要收集大量有面孔的圖像,并對(duì)戴口罩和不戴口罩的人進(jìn)行標(biāo)注。為此,我需要從收集大量面部圖像開(kāi)始。
收集圖像
為了協(xié)助收集面部圖像,我編寫(xiě)了一個(gè) Nodejs 腳本,該腳本將使用 Google Images 作為其來(lái)源并將搜索參數(shù)傳遞給該服務(wù),然后下載最大版本的結(jié)果。該代碼可在此處獲得:
https://github.com/contractorwolf/googleimagedownloader
要使用 Nodejs 腳本,只需轉(zhuǎn)到它所在的文件夾并首先運(yùn)行npm install (安裝 axios 和 fs),然后像這樣運(yùn)行腳本:
> node getimages covid masks
上面的命令將下載與“covid masks”相關(guān)的圖像。我用幾個(gè)不同的搜索參數(shù)收集圖像,以確保我收集的是各種種族/性別/年齡/風(fēng)格的面孔圖像。我在搜索參數(shù)上花了很多時(shí)間(不僅僅是上面那個(gè))。在識(shí)別人臉以及識(shí)別醫(yī)用口罩和女仆/定制口罩時(shí),我想盡可能地消除偏見(jiàn)。
在我收集了各種帶有面具和沒(méi)有面具的圖像后,我仔細(xì)檢查并刪除了對(duì)模型訓(xùn)練沒(méi)有幫助的所有圖像。然后我移動(dòng)并調(diào)整圖像大小以使它們統(tǒng)一(自動(dòng)執(zhí)行這些操作的腳本也在回購(gòu)協(xié)議中)。完成這些任務(wù)后,我需要對(duì)圖像進(jìn)行注釋并確定每張圖像中人臉的位置,以及確定人臉是否戴著面具。
注釋圖像
為了注釋或“標(biāo)記”圖像,我使用了名為LabelImg(直接下載)的軟件,該軟件是開(kāi)源的,已記錄在LabelImg 的 Github頁(yè)面上。該軟件為每個(gè)圖像創(chuàng)建一個(gè) XML 文件,為每個(gè)圖像定義機(jī)器學(xué)習(xí)“標(biāo)簽”(遮罩或不遮罩)以及面部邊界框(面部在圖像上的位置)。注釋一千張口罩和沒(méi)有口罩的圖像的過(guò)程需要一段時(shí)間,但我知道準(zhǔn)確性與準(zhǔn)確收集和標(biāo)記圖像所花費(fèi)的時(shí)間直接相關(guān)。
在收集和注釋圖像后,必須將它們分成訓(xùn)練文件夾和測(cè)試文件夾,比例為 80/20。如果您想查看到目前為止的過(guò)程輸出,可以下載生成的文件夾:
測(cè)試圖像和注釋 XML 文件:
https://github.com/contractorwolf/coronavirus-mask-detection/blob/master/images/test.zip
測(cè)試圖像和注釋 XML 文件:
https://github.com/contractorwolf/coronavirus-mask-detection/blob/master/images/train.zip
?

使用 Google Colab 訓(xùn)練模型
在我獲得生成機(jī)器學(xué)習(xí)模型所需的圖像后,該模型可以識(shí)別戴/不戴口罩之間的區(qū)別,我必須編寫(xiě)代碼來(lái)生成模型。我決定修改我發(fā)現(xiàn)的一些用Tensorflow編寫(xiě)的其他示例。我最初嘗試使用我的顯卡在我的個(gè)人臺(tái)式機(jī)上執(zhí)行此操作,但遇到了問(wèn)題,所以我決定嘗試使用 Google 的 Colab,這是一個(gè) Web 界面,用于編寫(xiě)可以在 Google 的 GPU(或 TPU?。┥厦赓M(fèi)運(yùn)行的機(jī)器學(xué)習(xí)筆記本。
我寫(xiě)了筆記本來(lái)使用上面定義的圖像,并試圖記錄每一步發(fā)生的事情:
https://colab.research.google.com/drive/1uEkP5j7KM9eSkCUtUyauy7-Dyd5XAY6e?usp=sharing
Colab使用預(yù)訓(xùn)練的MobileNet Coco模型,然后使用上面創(chuàng)建的圖像重新訓(xùn)練最后一步,使圖像模型專門(mén)識(shí)別戴面具和不戴面具的人臉。以下是 Colab 中記錄的主要步驟:
- 安裝所需的 Tensorflow 版本
- 設(shè)置對(duì)象檢測(cè)項(xiàng)目
- 下載 Coco 模型
- 下載需要的圖片
- 火車模型
- 測(cè)試模型
- 為樹(shù)莓派創(chuàng)建文件
- 在 Raspberry Pi 上為 TPU 創(chuàng)建文件
該過(guò)程需要一些時(shí)間,您需要確保閱讀并運(yùn)行每個(gè)塊并查看輸出。如果您對(duì) Colab 或代碼或該項(xiàng)目中的任何內(nèi)容有任何疑問(wèn),請(qǐng)隨時(shí)將它們留在下面,我會(huì)盡力回答。
硬件
硬件基本上是帶有Google Coral TPU 的Raspberry Pi (用于更快的推理)。我添加了 Armor Casing(用于外觀和設(shè)備保護(hù))和 Adafruit Mini PiTFT 作為用戶界面,以便設(shè)備無(wú)需插入顯示器即可提供基本反饋。
谷歌珊瑚 TPU
Google Coral TPU通過(guò) USB 連接,能夠處理進(jìn)行機(jī)器學(xué)習(xí)推理(預(yù)測(cè))時(shí)所需的大量矩陣數(shù)學(xué)運(yùn)算。使用 TPU(模型設(shè)置為使用 TPU 和代碼集以利用 TPU)允許模型能夠以每秒 15 幀的速度進(jìn)行預(yù)測(cè)。如果沒(méi)有 TPU,Raspberry Pi 只能以大約每秒 3 幀的速度處理 USB 攝像頭圖像的預(yù)測(cè)。我的 Github Repo 中的默認(rèn)代碼設(shè)置為使用 TPU,但您會(huì)看到注釋掉的部分,這些部分將允許它在沒(méi)有 TPU 的情況下僅在 Raspberry Pi 上運(yùn)行(盡管速度較慢)。
TFT基本接口
我使用 Adafruit MiniPiTFT 作為該項(xiàng)目的主要外部接口。目標(biāo)是提供機(jī)器學(xué)習(xí)模型完成的評(píng)估以及一些其他基本參數(shù)的外部通知。右圖中顯示的框表示USB攝像頭看到的圖像是否是“戴著COVID口罩”(下圖綠色框)

當(dāng)設(shè)備在范圍內(nèi)看到一個(gè)人時(shí),它會(huì)放置一個(gè)彩色框來(lái)勾勒出他們的臉。彩色框表示他們是否戴著口罩。如果它看到如下圖所示的面具,它將在他們的臉上用綠色框表示,并在 MiniPiTFT 上閃爍一個(gè)綠色框,如上圖所示。
。

如果正在使用顯示器,還會(huì)在臉部周圍顯示一個(gè)紅色框,如下圖所示。

基本的想法是,該設(shè)備可以獨(dú)立于插入顯示器或屏幕而工作,只需依靠。其他顯示參數(shù)如下:
- N :(無(wú)掩碼,紅色)具有估計(jì)的確定性
- 或M :(看到面具,綠色)估計(jì)確定性
- S :屏幕中圖像的大小百分比F :估計(jì)正在進(jìn)行的每秒幀數(shù)
- T : CPU 溫度
定制電纜
我最初只是買(mǎi)了我能找到的最短的雙直角 USB 數(shù)據(jù)線,然后將它綁在外殼上,但我認(rèn)為我可以做得更好,所以我一直在改進(jìn)。

最后我只是從上面剪下電纜并重新連接兩端,所以它看起來(lái)像這樣:

USB 實(shí)際上只有 4 根線,它們采用顏色編碼,因此過(guò)程很簡(jiǎn)單。我實(shí)際上也有一個(gè)小的拉鏈領(lǐng)帶,以承受大部分的彎曲壓力并防止它們斷裂。最后看起來(lái)像這樣安裝:

軟件
Raspberry Pi 可以啟動(dòng)到 python 程序,該程序?qū)⒈O(jiān)控 USB 網(wǎng)絡(luò)攝像頭并運(yùn)行一個(gè)
https://github.com/contractorwolf/rpi-tensorflow-mask-detector/blob/master/maskclassifier.py
從基本 tensorflow 對(duì)象檢測(cè)示例修改而來(lái),但使用經(jīng)過(guò)重新訓(xùn)練的模型的修改版本以僅識(shí)別“面具”或“無(wú)面具”面孔。還修改為使用 TPU 進(jìn)行快速推理并將數(shù)據(jù)輸出到迷你 PiTFT 屏幕。
代碼啟動(dòng)并開(kāi)始處理來(lái)自它可以識(shí)別的第一個(gè) USB 網(wǎng)絡(luò)攝像頭的圖像。圖像被加載,機(jī)器學(xué)習(xí)模型嘗試對(duì)其是否看到面具進(jìn)行分類。它還會(huì)在圖像中看到的每張可識(shí)別面孔周圍繪制一個(gè)邊界框,并對(duì)最大的一張是否戴著口罩進(jìn)行分類。 PiTFT 還用于顯示有關(guān)圖像的計(jì)算。如果您沒(méi)有 TFT 或不需要任何額外的顯示器,可以簡(jiǎn)單地注釋掉該代碼。如果您的模型不是為 TPU 處理構(gòu)建的,也可以刪除 TPU 代碼,但它會(huì)以低得多的幀速率進(jìn)行處理。當(dāng)我使用非 TPU 模型在 RPi 4 上運(yùn)行它時(shí),我看到幀率為 ~2-3FPS,而 TPU 允許我以~15FPS 的速度處理。
如果您有任何其他問(wèn)題,只需將它們放在評(píng)論中,我會(huì)盡可能提供幫助。感謝您的觀看!
- 使用Raspberry Pi的Motioneyeos網(wǎng)絡(luò)攝像頭運(yùn)動(dòng)檢測(cè)
- 帶Raspberry PI的紅外遙控器
- 基于諾基亞5110的Raspberry Pi帽子 0次下載
- 可以檢測(cè)鴿子并在Raspberry Pi上運(yùn)行的系統(tǒng)
- 基于ML的鳥(niǎo)類和松鼠檢測(cè)器(Raspberry Pi和AWS)
- 使用Raspberry Pi的溫度跟蹤器
- 使用Raspberry Pi的音頻可視化器
- 基于tensorflow的BlazeFace-lite人臉檢測(cè)器
- 可視頻直播的Raspberry Pi網(wǎng)絡(luò)控制機(jī)器人 14次下載
- NDIR氣體檢測(cè)器解決方案和PID氣體檢測(cè)器解決方案
- 《愛(ài)上Raspberry Pi》中譯版-電子書(shū)籍.pdf 0次下載
- Instant Raspberry Pi Gaming 6次下載
- Raspberry_Pi詳解 16次下載
- raspberry_pi各版本差別 0次下載
- Getting Started with Raspberry Pi 0次下載
- 電路檢測(cè)器和電流檢測(cè)器的區(qū)別 1013次閱讀
- 5分鐘內(nèi)將Raspberry Pi Pico變成簡(jiǎn)單的示波器+波形發(fā)生器 2318次閱讀
- 使用Raspberry Pi Pico W和MicroPython開(kāi)發(fā)物聯(lián)網(wǎng)應(yīng)用 2180次閱讀
- 什么是過(guò)零檢測(cè)器 過(guò)零檢測(cè)器的原理 3131次閱讀
- 用于測(cè)試項(xiàng)目的4個(gè)最佳樹(shù)莓派Raspberry Pi模擬器 6823次閱讀
- 如何通過(guò)Raspberry Pi設(shè)置CE電流監(jiān)視器 2342次閱讀
- 基于樹(shù)莓派產(chǎn)品 Raspberry Pi微控制器板的優(yōu)缺點(diǎn) 2984次閱讀
- 基于Raspberry Pi Pico開(kāi)發(fā)先進(jìn)的家庭自動(dòng)化系統(tǒng) 3004次閱讀
- 微雪電子ZeroW| Raspberry Pi ZeroW主板簡(jiǎn)介 2618次閱讀
- 微雪電子Raspberry Pi 3 Model主板簡(jiǎn)介 3146次閱讀
- 微雪電子Raspberry Pi 3 Model擴(kuò)展板簡(jiǎn)介 1667次閱讀
- 利用Raspberry Pi構(gòu)建存儲(chǔ)和虛擬化時(shí)間序列數(shù)據(jù) 952次閱讀
- 一文了解Raspberry Pi 4各項(xiàng)性能跑分 3w次閱讀
- 視覺(jué)享受!用Raspberry Pi實(shí)現(xiàn)圣誕樹(shù)燈光秀 8344次閱讀
- 酸雨檢測(cè)器 1.6w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論