如何利用樹莓派創(chuàng)建自定義關(guān)鍵點檢測AI模型
歡迎來到本教程,在這里您將學(xué)習(xí)如何在樹莓派AI相機(jī)上創(chuàng)建和部署您自己的自定義關(guān)鍵點檢測AI模型。
構(gòu)建在樹莓派AI相機(jī)等邊緣設(shè)備上高效運行的AI模型可能具有挑戰(zhàn)性。為了簡化這個過程,我們開發(fā)了樣例代碼和工具來優(yōu)化整個工作流程——從培訓(xùn)到部署。
本文是我們關(guān)于樹莓派AI相機(jī)的AI模型開發(fā)系列的第2部分。第1部分介紹了使用Nanodet在樹莓派AI相機(jī)上創(chuàng)建和運行自定義對象檢測AI模型。
本文概述
?使用我們的示例代碼和分步說明創(chuàng)建自定義關(guān)鍵點檢測模型
?生成優(yōu)化的模型文件,準(zhǔn)備部署在樹莓派AI相機(jī)
?在設(shè)備上實現(xiàn)并運行您訓(xùn)練過的模型
理解關(guān)鍵點檢測AI模型
關(guān)鍵點人工智能模型是一種人工智能模型,它可以檢測到人類或物體上不同的興趣點(關(guān)鍵點),并將它們的位置作為坐標(biāo)輸出。
樹莓派AI相機(jī)配備了專門為人體姿勢估計設(shè)計的即用型預(yù)訓(xùn)練模型。這些模型可以檢測骨骼關(guān)鍵點,包括頭、肩膀、肘部、手腕、臀部、膝蓋和腳踝。
這些模型是實時工作的,非常適合姿勢分析、手勢識別和運動跟蹤等應(yīng)用。
使用預(yù)訓(xùn)練模型
如果你想在不訓(xùn)練自己的模型的情況下檢測人體姿勢,你可以使用樹莓派提供的預(yù)構(gòu)建模型。這些部隊無需額外訓(xùn)練即可立即部署。
通過再培訓(xùn)擴(kuò)大應(yīng)用范圍
雖然預(yù)先訓(xùn)練的模型在人體姿勢檢測方面表現(xiàn)出色,但如果你想檢測其他物體上的關(guān)鍵點,你需要訓(xùn)練自己的模型。
通過使用自己的數(shù)據(jù)集進(jìn)行再訓(xùn)練,您可以檢測幾乎任何對象或主題上的關(guān)鍵點。這帶來了許多可能性:
?讀取生產(chǎn)線上的模擬儀表和表盤
?估計機(jī)器人操作和控制的關(guān)節(jié)位置
?跟蹤寵物或野生動物的姿勢和運動模式
?檢測制造零件的對中點以進(jìn)行質(zhì)量控制
您可以定義對應(yīng)用程序重要的關(guān)鍵點,使關(guān)鍵點檢測適用于任何需要對特定形狀進(jìn)行精確點檢測的應(yīng)用程序。
在本教程中,我們將從一個基本的例子開始:檢測箭頭形狀的角點。這個簡單實用的用例將幫助您在移動到更復(fù)雜的應(yīng)用程序之前了解邊緣AI關(guān)鍵點檢測的基礎(chǔ)知識。
從示例數(shù)據(jù)開始
我們提供了一個現(xiàn)成的箭頭數(shù)據(jù)集,以便您可以快速測試工作流。一旦理解了這個過程,就可以輕松地將自己的數(shù)據(jù)集替換為任何自定義的關(guān)鍵點檢測任務(wù)。
系統(tǒng)需求
為部署
?樹莓派(與AI相機(jī)兼容的任何型號)
?樹莓派AI相機(jī)
用于模型訓(xùn)練
?帶有NVIDIA GPU的計算機(jī)(強(qiáng)烈推薦用于高效訓(xùn)練)
?Ubuntu 22.04(或兼容的Linux發(fā)行版)
?Python 3.10
注意:雖然GPU顯著加快訓(xùn)練速度,但你可以在CPU上訓(xùn)練,但可能需要更長的時間。
本地環(huán)境建設(shè)
注意:本節(jié)介紹在您的機(jī)器上本地設(shè)置培訓(xùn)環(huán)境。如果你已經(jīng)在我們的自定義對象檢測AI模型教程中設(shè)置了本地環(huán)境,那么你可以跳過本節(jié)。
1. 克隆存儲庫
2. 設(shè)置
安裝必要的軟件包。
3. 創(chuàng)建并激活Python 3.10虛擬環(huán)境
本教程假設(shè)使用Python 3.10,所以首先,讓我們確認(rèn)已經(jīng)安裝了3.10。
注意:由于所需庫的版本依賴關(guān)系,請確保使用Python 3.10。
如果顯示如下,則表示安裝了Python 3.10:
如果你還沒有安裝Python 3.10,你可以按照以下步驟安裝,例如:
接下來,創(chuàng)建一個虛擬環(huán)境。
4. 安裝軟件包
步驟1:訓(xùn)練模型
示例存儲庫在許多.ini配置文件中提供了與AI模型訓(xùn)練、量化和評估相關(guān)的各種設(shè)置。
在本教程中,我們將使用posenet_arrow.ini來訓(xùn)練模型。
要點
其特點是,您可以通過更改設(shè)置靈活地調(diào)整訓(xùn)練條件,而無需直接重寫Python代碼。您可以選擇數(shù)據(jù)集和任務(wù),并調(diào)整參數(shù)。在使用自己的數(shù)據(jù)集進(jìn)行訓(xùn)練一節(jié)中解釋了這種自定義方法。
使用數(shù)據(jù)集
用于此訓(xùn)練的數(shù)據(jù)集是箭頭形狀的數(shù)據(jù)集。
你可以去這里獲取原始圖像。
在樣本數(shù)據(jù)集中,每個頂點被分配了7個點,如下圖所示。
移動到存儲ini文件的samples文件夾,運行以下命令讀取ini文件并開始訓(xùn)練。
下面的命令將根據(jù)指定的.ini文件對模型進(jìn)行訓(xùn)練和量化。
當(dāng)運行時,這將下載數(shù)據(jù)集并開始訓(xùn)練。默認(rèn)設(shè)置文件指定50個epoch。
這會生成以下模型文件:
步驟2:量化和轉(zhuǎn)換訓(xùn)練模型
將量化模型轉(zhuǎn)換并打包成與樹莓派AI相機(jī)兼容的格式。
注意:繼續(xù)在venv環(huán)境中工作,使用與用于訓(xùn)練的相同的TensorFlow版本進(jìn)行量化。版本不匹配導(dǎo)致錯誤。
本教程解釋了將a.keras轉(zhuǎn)換為網(wǎng)絡(luò)的過程。rpk,我們可以上傳到IMX500。
1. 安裝Edge-MDT(模型開發(fā)工具包)
安裝Edge-MDT(模型開發(fā)工具包),包括量化、壓縮和轉(zhuǎn)換AI模型所需的工具。PyTorch和TensorFlow都有可用的版本,我們將安裝TensorFlow版本:
2. 執(zhí)行模型量化
下面的命令執(zhí)行模型量化,-o標(biāo)志指定創(chuàng)建和存儲AI模型文件的目錄。在下面的示例中,它們將被輸出到convert_result。
轉(zhuǎn)換大約需要30秒。
這會生成以下文件:
當(dāng)packerOut.zip生成后,步驟2完成。
步驟3:AI相機(jī)包裝
注意:從這里開始,操作將在Raspberry Pi??上進(jìn)行
將轉(zhuǎn)換后的文件夾移動到樹莓派。在本教程中,文件夾名稱為convert_result。
將步驟2中生成的packerOut.zip文件移動到樹莓派上的任何位置。您可以使用scp或任何您喜歡的工具進(jìn)行文件傳輸。
如果您沒有安裝,請在樹莓派上安裝模型打包工具:
執(zhí)行轉(zhuǎn)換,將模型打包到RPK文件中。下面的命令指定packerOut.zip作為輸入,并將打包的輸出文件保存到rpk_output_folder中。
生成一個打包的AI模型。rpk擴(kuò)展。
當(dāng)網(wǎng)絡(luò)。生成rpk文件,則完成步驟3。
步驟4:在樹莓派上執(zhí)行
讓我們在Raspberry Pi上安裝必要的庫。
為了可視化關(guān)鍵點,我們將使用Modlib,一個用于樹莓派AI相機(jī)應(yīng)用程序開發(fā)的庫。該庫附帶了幾個樣本檢測模型,并允許從預(yù)訓(xùn)練模型到自定義模型輕松實現(xiàn)。在本教程中,我們將使用這個庫來簡單實現(xiàn)AI模型可視化。
1. 安裝Modlib:
2. 準(zhǔn)備一個可視化腳本
基于下面的示例腳本創(chuàng)建一個文件visualize_arrow.py。
這個腳本檢測箭頭的七個頂點,并用不同的顏色將它們可視化。您需要在您自己的腳本中更改rpk AI模型文件的路徑。
示例可視化腳本
3. 執(zhí)行visualize_arrow.py:
結(jié)果
當(dāng)您運行腳本時,AI模型自動部署到您的樹莓派AI相機(jī),并出現(xiàn)一個預(yù)覽窗口,顯示實時檢測。
這是你將看到的:
關(guān)鍵點被準(zhǔn)確地檢測到每個頂點,確認(rèn)您的自定義訓(xùn)練模型工作正常。
用你自己的數(shù)據(jù)集進(jìn)行訓(xùn)練
準(zhǔn)備好使用自己的數(shù)據(jù)集了嗎?這是需要改變的:
?更新.ini配置文件:
?[DATASET] NAME = YourDatasetName
?[MODEL] CLASS_NUM =類的個數(shù)
?[TRAINER] CONFIG =你的YAML配置文件
結(jié)論
在本教程中,您已經(jīng)學(xué)習(xí)了如何使用我們的再培訓(xùn)工具和示例代碼在樹莓派AI相機(jī)上創(chuàng)建和部署自定義關(guān)鍵點檢測模型。
雖然我們將箭頭檢測作為學(xué)習(xí)練習(xí),但您學(xué)到的技術(shù)可以應(yīng)用于無數(shù)的現(xiàn)實場景。只需交換數(shù)據(jù)集,您就可以為無數(shù)邊緣AI應(yīng)用程序創(chuàng)建關(guān)鍵點檢測解決方案。
本文編譯自hackster.io





