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





