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