資料介紹
當我們開始處于封鎖狀態(tài)時,我有很多時間思考我可以做的項目,這些項目將涉及我對機器學習和硬件黑客的興趣。我認為可以監(jiān)控出口點(入口和出口)的小型設備可以自動識別符合口罩要求的人。這可能是一種有趣的方式,可以讓技術解決在試圖保護人們安全的同時發(fā)生的一些復雜的人際互動。
我決定創(chuàng)建一個“Covid Mask Detector”,它將使用一個小型便宜的 Raspberry Pi 和一個定制的對象檢測模型,該模型在戴口罩和不戴口罩的臉上進行訓練。
機器學習模型
為了在 TensorFlow 中創(chuàng)建機器學習模型,我首先需要收集大量有面孔的圖像,并對戴口罩和不戴口罩的人進行標注。為此,我需要從收集大量面部圖像開始。
收集圖像
為了協(xié)助收集面部圖像,我編寫了一個 Nodejs 腳本,該腳本將使用 Google Images 作為其來源并將搜索參數(shù)傳遞給該服務,然后下載最大版本的結果。該代碼可在此處獲得:
https://github.com/contractorwolf/googleimagedownloader
要使用 Nodejs 腳本,只需轉到它所在的文件夾并首先運行npm install (安裝 axios 和 fs),然后像這樣運行腳本:
> node getimages covid masks
上面的命令將下載與“covid masks”相關的圖像。我用幾個不同的搜索參數(shù)收集圖像,以確保我收集的是各種種族/性別/年齡/風格的面孔圖像。我在搜索參數(shù)上花了很多時間(不僅僅是上面那個)。在識別人臉以及識別醫(yī)用口罩和女仆/定制口罩時,我想盡可能地消除偏見。
在我收集了各種帶有面具和沒有面具的圖像后,我仔細檢查并刪除了對模型訓練沒有幫助的所有圖像。然后我移動并調整圖像大小以使它們統(tǒng)一(自動執(zhí)行這些操作的腳本也在回購協(xié)議中)。完成這些任務后,我需要對圖像進行注釋并確定每張圖像中人臉的位置,以及確定人臉是否戴著面具。
注釋圖像
為了注釋或“標記”圖像,我使用了名為LabelImg(直接下載)的軟件,該軟件是開源的,已記錄在LabelImg 的 Github頁面上。該軟件為每個圖像創(chuàng)建一個 XML 文件,為每個圖像定義機器學習“標簽”(遮罩或不遮罩)以及面部邊界框(面部在圖像上的位置)。注釋一千張口罩和沒有口罩的圖像的過程需要一段時間,但我知道準確性與準確收集和標記圖像所花費的時間直接相關。
在收集和注釋圖像后,必須將它們分成訓練文件夾和測試文件夾,比例為 80/20。如果您想查看到目前為止的過程輸出,可以下載生成的文件夾:
測試圖像和注釋 XML 文件:
https://github.com/contractorwolf/coronavirus-mask-detection/blob/master/images/test.zip
測試圖像和注釋 XML 文件:
https://github.com/contractorwolf/coronavirus-mask-detection/blob/master/images/train.zip
?
使用 Google Colab 訓練模型
在我獲得生成機器學習模型所需的圖像后,該模型可以識別戴/不戴口罩之間的區(qū)別,我必須編寫代碼來生成模型。我決定修改我發(fā)現(xiàn)的一些用Tensorflow編寫的其他示例。我最初嘗試使用我的顯卡在我的個人臺式機上執(zhí)行此操作,但遇到了問題,所以我決定嘗試使用 Google 的 Colab,這是一個 Web 界面,用于編寫可以在 Google 的 GPU(或 TPU!)上免費運行的機器學習筆記本。
我寫了筆記本來使用上面定義的圖像,并試圖記錄每一步發(fā)生的事情:
https://colab.research.google.com/drive/1uEkP5j7KM9eSkCUtUyauy7-Dyd5XAY6e?usp=sharing
Colab使用預訓練的MobileNet Coco模型,然后使用上面創(chuàng)建的圖像重新訓練最后一步,使圖像模型專門識別戴面具和不戴面具的人臉。以下是 Colab 中記錄的主要步驟:
- 安裝所需的 Tensorflow 版本
- 設置對象檢測項目
- 下載 Coco 模型
- 下載需要的圖片
- 火車模型
- 測試模型
- 為樹莓派創(chuàng)建文件
- 在 Raspberry Pi 上為 TPU 創(chuàng)建文件
該過程需要一些時間,您需要確保閱讀并運行每個塊并查看輸出。如果您對 Colab 或代碼或該項目中的任何內容有任何疑問,請隨時將它們留在下面,我會盡力回答。
硬件
硬件基本上是帶有Google Coral TPU 的Raspberry Pi (用于更快的推理)。我添加了 Armor Casing(用于外觀和設備保護)和 Adafruit Mini PiTFT 作為用戶界面,以便設備無需插入顯示器即可提供基本反饋。
谷歌珊瑚 TPU
Google Coral TPU通過 USB 連接,能夠處理進行機器學習推理(預測)時所需的大量矩陣數(shù)學運算。使用 TPU(模型設置為使用 TPU 和代碼集以利用 TPU)允許模型能夠以每秒 15 幀的速度進行預測。如果沒有 TPU,Raspberry Pi 只能以大約每秒 3 幀的速度處理 USB 攝像頭圖像的預測。我的 Github Repo 中的默認代碼設置為使用 TPU,但您會看到注釋掉的部分,這些部分將允許它在沒有 TPU 的情況下僅在 Raspberry Pi 上運行(盡管速度較慢)。
TFT基本接口
我使用 Adafruit MiniPiTFT 作為該項目的主要外部接口。目標是提供機器學習模型完成的評估以及一些其他基本參數(shù)的外部通知。右圖中顯示的框表示USB攝像頭看到的圖像是否是“戴著COVID口罩”(下圖綠色框)
當設備在范圍內看到一個人時,它會放置一個彩色框來勾勒出他們的臉。彩色框表示他們是否戴著口罩。如果它看到如下圖所示的面具,它將在他們的臉上用綠色框表示,并在 MiniPiTFT 上閃爍一個綠色框,如上圖所示。
。
如果正在使用顯示器,還會在臉部周圍顯示一個紅色框,如下圖所示。
基本的想法是,該設備可以獨立于插入顯示器或屏幕而工作,只需依靠。其他顯示參數(shù)如下:
- N :(無掩碼,紅色)具有估計的確定性
- 或M :(看到面具,綠色)估計確定性
- S :屏幕中圖像的大小百分比F :估計正在進行的每秒幀數(shù)
- T : CPU 溫度
定制電纜
我最初只是買了我能找到的最短的雙直角 USB 數(shù)據線,然后將它綁在外殼上,但我認為我可以做得更好,所以我一直在改進。
最后我只是從上面剪下電纜并重新連接兩端,所以它看起來像這樣:
USB 實際上只有 4 根線,它們采用顏色編碼,因此過程很簡單。我實際上也有一個小的拉鏈領帶,以承受大部分的彎曲壓力并防止它們斷裂。最后看起來像這樣安裝:
軟件
Raspberry Pi 可以啟動到 python 程序,該程序將監(jiān)控 USB 網絡攝像頭并運行一個
https://github.com/contractorwolf/rpi-tensorflow-mask-detector/blob/master/maskclassifier.py
從基本 tensorflow 對象檢測示例修改而來,但使用經過重新訓練的模型的修改版本以僅識別“面具”或“無面具”面孔。還修改為使用 TPU 進行快速推理并將數(shù)據輸出到迷你 PiTFT 屏幕。
代碼啟動并開始處理來自它可以識別的第一個 USB 網絡攝像頭的圖像。圖像被加載,機器學習模型嘗試對其是否看到面具進行分類。它還會在圖像中看到的每張可識別面孔周圍繪制一個邊界框,并對最大的一張是否戴著口罩進行分類。 PiTFT 還用于顯示有關圖像的計算。如果您沒有 TFT 或不需要任何額外的顯示器,可以簡單地注釋掉該代碼。如果您的模型不是為 TPU 處理構建的,也可以刪除 TPU 代碼,但它會以低得多的幀速率進行處理。當我使用非 TPU 模型在 RPi 4 上運行它時,我看到幀率為 ~2-3FPS,而 TPU 允許我以~15FPS 的速度處理。
如果您有任何其他問題,只需將它們放在評論中,我會盡可能提供幫助。感謝您的觀看!
- 使用Raspberry Pi的Motioneyeos網絡攝像頭運動檢測
- 基于諾基亞5110的Raspberry Pi帽子 0次下載
- 可以檢測鴿子并在Raspberry Pi上運行的系統(tǒng)
- 基于ML的鳥類和松鼠檢測器(Raspberry Pi和AWS)
- 使用Raspberry Pi的溫度跟蹤器
- 使用Raspberry Pi的音頻可視化器
- 基于tensorflow的BlazeFace-lite人臉檢測器
- 可視頻直播的Raspberry Pi網絡控制機器人 14次下載
- NDIR氣體檢測器解決方案和PID氣體檢測器解決方案
- 樹莓派Raspberry Pi 4 Model B的電路原理圖免費下載 409次下載
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- Instant Raspberry Pi Gaming 6次下載
- Raspberry_Pi詳解 15次下載
- raspberry_pi各版本差別 0次下載
- Getting Started with Raspberry Pi 0次下載
- 電路檢測器和電流檢測器的區(qū)別 323次閱讀
- 5分鐘內將Raspberry Pi Pico變成簡單的示波器+波形發(fā)生器 1522次閱讀
- 使用Raspberry Pi Pico W和MicroPython開發(fā)物聯(lián)網應用 1673次閱讀
- 什么是過零檢測器 過零檢測器的原理 2755次閱讀
- 用于測試項目的4個最佳樹莓派Raspberry Pi模擬器 5985次閱讀
- 如何通過Raspberry Pi設置CE電流監(jiān)視器 2124次閱讀
- 基于樹莓派產品 Raspberry Pi微控制器板的優(yōu)缺點 2710次閱讀
- 基于Raspberry Pi Pico開發(fā)先進的家庭自動化系統(tǒng) 2850次閱讀
- 微雪電子ZeroW| Raspberry Pi ZeroW主板簡介 2429次閱讀
- 微雪電子Raspberry Pi 3 Model主板簡介 2873次閱讀
- 微雪電子Raspberry Pi 3 Model擴展板簡介 1512次閱讀
- 利用Raspberry Pi構建存儲和虛擬化時間序列數(shù)據 884次閱讀
- 一文了解Raspberry Pi 4各項性能跑分 2.9w次閱讀
- 視覺享受!用Raspberry Pi實現(xiàn)圣誕樹燈光秀 8127次閱讀
- 酸雨檢測器 1.6w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據手冊
- 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開發(fā)指南
- 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數(shù)字電路基礎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次下載 | 免費
評論
查看更多