基于Arduino的邊緣AI構(gòu)建自定義對(duì)象檢測(cè)系統(tǒng)
在這里,我們展示了端到端過程來創(chuàng)建一個(gè)自定義對(duì)象檢測(cè)系統(tǒng),所有運(yùn)行在邊緣使用谷歌珊瑚開發(fā)板微型。
本指南解釋了如何使用谷歌Coral Dev Board Micro構(gòu)建自定義對(duì)象檢測(cè)系統(tǒng),以及谷歌Colab中使用Tensorflow訓(xùn)練的自定義數(shù)據(jù)集。
這種方法允許機(jī)器學(xué)習(xí)(ML)模型使用其板載邊緣張量處理單元(TPU)在Dev Board Micro上本地運(yùn)行推理,而無需連接互聯(lián)網(wǎng)!
TPU之于機(jī)器學(xué)習(xí)就像GPU之于圖形(兩者都是專用集成電路(asic)),允許模型以令人印象深刻的速度在片上執(zhí)行,每秒超過2萬億次操作!(見說明書)。
數(shù)據(jù)集集合
因?yàn)槲覀冃枰罅课矬w的圖像來訓(xùn)練我們的模型,所以我們決定巴士站是我們可以在本地使用的常見項(xiàng)目。
首先,有一天我們?cè)诋?dāng)?shù)亻_車的時(shí)候拍了一些慢動(dòng)作的視頻。
然后我們從中提取了70張640px正方形的圖像(包括一些不同的背景)。
圖像可以是任何大小,我們的分辨率是船上珊瑚相機(jī)的兩倍,但是圖像越大,需要的時(shí)間就越長(zhǎng)。
然而,圖像越大,訓(xùn)練時(shí)間就越長(zhǎng)。
這些需要放在一個(gè)名為“images”(區(qū)分大小寫)的文件夾中。
數(shù)據(jù)集標(biāo)簽
在images文件夾旁邊創(chuàng)建另一個(gè)名為Annotations的文件夾。
然后我們使用LabelImg工具。
點(diǎn)擊左邊的“保存目錄”按鈕,選擇前面步驟中圖像文件夾旁邊的“annotation”文件夾。
在右側(cè)設(shè)置默認(rèn)標(biāo)簽(如果使用一個(gè)類),并選中它旁邊的“使用默認(rèn)標(biāo)簽”復(fù)選框。
然后我們通過左鍵點(diǎn)擊并拖動(dòng)來繪制每個(gè)公交車站周圍的邊界框。
現(xiàn)在單擊左側(cè)的Save,確保下面的格式選項(xiàng)設(shè)置為PascalVOC。
一旦所有的圖片都被標(biāo)注好了,我們就可以把這兩個(gè)文件夾壓縮成一個(gè)名為data . ZIP的文件。
Colab培訓(xùn)
現(xiàn)在我們可以打開Colab Notebook,并連接到運(yùn)行時(shí)。如果你只是嘗試,選擇CPU,因?yàn)樗敲赓M(fèi)的,有最長(zhǎng)的運(yùn)行時(shí)間。GPU處理更快,但可能需要購買計(jì)算單元以在高峰時(shí)間運(yùn)行。
連接運(yùn)行時(shí)后,我們可以通過單擊左側(cè)的文件管理器上傳dataset.zip,并將其拖放到....
現(xiàn)在我們可以開始一個(gè)接一個(gè)地運(yùn)行每個(gè)代碼塊……最后,模型將被下載到您的PC的下載文件夾。
如果您愿意,您可以從此鏈接使用我們預(yù)先構(gòu)建的公交車站模型。
根據(jù)使用的運(yùn)行時(shí)間、上傳/下載的互聯(lián)網(wǎng)連接速度、圖像數(shù)量和大小,這將需要大約45米到1小時(shí)來完成
一旦完成并下載了文件,就可以斷開運(yùn)行時(shí)。
在Visual Micro中安裝Coral Micro板
需要附加板包URL來添加珊瑚微板,它可以在IDE位置屏幕上添加:
添加完成后,可以在瀏覽器中安裝單板。
下載草圖示例
從此鏈接下載CoralCustomObjectDetection ZIP,并將其解壓縮到PC上的某個(gè)位置。
更新TFLite文件
使用從Colab下載的ZIP文件(或我們預(yù)先訓(xùn)練的文件):
model_int8_edgetpu。這個(gè)flite文件需要放到項(xiàng)目?jī)?nèi)部的data文件夾中。
在項(xiàng)目中,metadata.hpp位于INO文件旁邊。
在vMicro中打開草圖
在Visual Micro中正常打開解決方案,從板列表中選擇Dev Board Micro + Wifi Add-on。
還要確保您設(shè)置了上傳草圖+數(shù)據(jù)的板選項(xiàng)。
用USB-C引線將電路板連接到PC,并檢查COM端口是否正確選擇。
如果您的板只有橙色燈顯示,沒有COM端口,您可能需要先將其強(qiáng)制進(jìn)入SDP模式。請(qǐng)參閱Coral Micro故障排除指南。
更新WiFi憑據(jù)
在INO文件中,頂部有兩個(gè)WIFI憑據(jù)的#定義,修改它們以適應(yīng)您正在使用的網(wǎng)絡(luò)。
上傳到您的主板
點(diǎn)擊Build and Upload按鈕編譯并顯示代碼,大約一分鐘后,電路板就會(huì)啟動(dòng)。
查看串行輸出并打開網(wǎng)頁
串行輸出將打印板上所有文件的列表,并顯示其提供網(wǎng)頁的地址。
將URL復(fù)制并粘貼到瀏覽器中,然后按enter鍵加載頁面。
看看它是怎么工作的!
現(xiàn)在頁面已經(jīng)加載,你可以在頁面上看到你的相機(jī)流。如果你把它指向一個(gè)你訓(xùn)練過的對(duì)象,你應(yīng)該會(huì)看到一個(gè)識(shí)別項(xiàng)目的邊界框和置信度。如果你沒有一個(gè)物體的真實(shí)例子,你可以把它指向電腦屏幕上訓(xùn)練過的圖像之一。
結(jié)束
所以我們得到了它!一個(gè)可定制的嵌入式目標(biāo)檢測(cè)系統(tǒng),完全在船上運(yùn)行,不需要云。當(dāng)然,如果你在機(jī)器人割草機(jī)中使用它,你可以將板設(shè)置為接入點(diǎn),只有當(dāng)你靠近....時(shí)才能查看網(wǎng)頁或者一旦你對(duì)它感到滿意,就把Wifi代碼全部刪除。它不需要在任何形式的網(wǎng)絡(luò)上工作。
本文編譯自hackster.io