在本教程系列的第一部分中,您將學(xué)習(xí)如何使用樹莓派AI攝像頭來檢測(cè)不同的樹莓派型號(hào)。本系列由David Plowman創(chuàng)建,他是樹莓派工程師,專注于圖像處理硬件、攝像頭軟件和算法研究。
您可以將AI攝像頭對(duì)準(zhǔn)樹莓派4,屏幕上會(huì)顯示“Raspberry Pi 4”;對(duì)準(zhǔn)樹莓派Zero時(shí)顯示“Raspberry Pi Zero”,依此類推。
組裝在樹莓派5上的樹莓派AI攝像頭
這是一個(gè)強(qiáng)大的示例,展示如何訓(xùn)練樹莓派進(jìn)行實(shí)時(shí)目標(biāo)檢測(cè)推理。這也是探索樹莓派AI攝像頭API(應(yīng)用程序接口)以及模型與推理之間關(guān)系的好方法。
設(shè)置AI攝像頭
將您的樹莓派 AI 相機(jī)連接到兼容的樹莓派電腦。我們用的是樹莓派5,但是AI相機(jī)兼容所有樹莓派型號(hào)。更多信息可以閱讀AI相機(jī)數(shù)據(jù)表。
樹莓派AI相機(jī)采用索尼IMX500圖像傳感器,為相機(jī)應(yīng)用提供低延遲、高性能的AI能力,而無需AI HAT+(或AI Kit)。它在IMX500傳感器上運(yùn)行定制的神經(jīng)網(wǎng)絡(luò)模型。
樹莓派AI智能相機(jī)包含一個(gè)具有AI推理能力的索尼IMX500傳感器
確保系統(tǒng)已更新,然后安裝IMX500固件:
$sudo apt install imx500-all
此命令會(huì):
安裝操作IMX500傳感器所需的固件文件imx500_loader.fpk和imx500_firmware.fpk
將多個(gè)神經(jīng)網(wǎng)絡(luò)模型文件放入/usr/share/imx500-models/
安裝IMX500后處理軟件到rpicam-apps
安裝索尼網(wǎng)絡(luò)模型打包工具
現(xiàn)在重啟樹莓派:
$sudo reboot
讓我們來測(cè)試一下是否一切正常。以下命令運(yùn)行帶有對(duì)象檢測(cè)后處理的rpicam-hello:
$rpicam-hello -t 0s --post-process-file/usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30
以下命令運(yùn)行rpicam-hello并進(jìn)行姿態(tài)估計(jì)后處理:
$rpicam-hello -t 0s --post-process-file/usr/share/rpi-camera-assets/imx500_posenet.json --viewfinder-width 1920 --view
獲取代碼
現(xiàn)在你的AI相機(jī)設(shè)置好了,你需要代碼。對(duì)于本教程,最好從從GitHub復(fù)制文件開始。在終端中,輸入:
$gitclonehttps://github.com/davidplowman/pi_classifier.git
進(jìn)入pi_classifier目錄,查看一下里面的內(nèi)容:
$cdpi_classifier$ls
進(jìn)入pi_classifier目錄,您將看到三個(gè)文件:
demo.py:Python主程序
labels.txt:包含不同樹莓派型號(hào)的標(biāo)簽
network.rpk:預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型文件(針對(duì)IMX500傳感器優(yōu)化)
運(yùn)行代碼:
$python demo.py
屏幕會(huì)顯示攝像頭預(yù)覽窗口。將樹莓派對(duì)準(zhǔn)攝像頭,預(yù)覽窗口會(huì)根據(jù)labels.txt中的選項(xiàng)顯示對(duì)應(yīng)型號(hào)。
它是如何工作的
讓我們?cè)赥honny(或您選擇的代碼編輯器)中打開demo.py代碼并查看一下:
$thonny demo.py
parse_and_draw_classification_result
這個(gè)函數(shù)是作為回調(diào)函數(shù)提供給相機(jī)系統(tǒng)的,這意味著每當(dāng)一個(gè)新的幀從相機(jī)到達(dá)時(shí),它就會(huì)被自動(dòng)調(diào)用,而不需要我們(應(yīng)用程序)做任何額外的事情。因?yàn)槲覀兪褂玫氖撬髂酙MX500傳感器,所以我們不僅獲得了通常的相機(jī)圖像,還獲得了一個(gè)輸出張量,列出了對(duì)圖像運(yùn)行神經(jīng)網(wǎng)絡(luò)的結(jié)果。
我們需要使用 parse_classification_result 解析神經(jīng)網(wǎng)絡(luò)結(jié)果,然后使用 draw_classification_result 將它們繪制到相機(jī)圖像上。
parse_classification_result
這將分析IMX500傳感器產(chǎn)生的輸出張量,并確定圖像是否屬于網(wǎng)絡(luò)訓(xùn)練的類別之一。有幾件事需要注意。
檢測(cè)樹莓派3
首先,并不總是有輸出張量。如果神經(jīng)網(wǎng)絡(luò)加速器沒有及時(shí)完成對(duì)幀的處理,就會(huì)發(fā)生這種情況。當(dāng)這種情況發(fā)生時(shí),我們應(yīng)該重用前一幀的結(jié)果;另一個(gè)框架,張量再次可用,將很快出現(xiàn)!
接下來,我們返回具有最高置信度值的類別。一些網(wǎng)絡(luò)可能會(huì)告訴我們,我們應(yīng)該對(duì)輸出值使用softmax運(yùn)算,以獲得每個(gè)類的更真實(shí)的概率。
draw_classification_result
這里,我們?cè)跀z像機(jī)圖像上繪制一個(gè)標(biāo)簽,指示設(shè)備類別和置信度值,但前提是置信度值足夠高。
我們使用Picamera2的MappedArray以通常的方式訪問實(shí)際的相機(jī)圖像像素(而不是它的副本)。我們測(cè)量類別標(biāo)簽和置信度值將占據(jù)的框的大小,然后將圖像的這一部分變暗,以便當(dāng)我們隨后將文本寫在頂部時(shí),它會(huì)更突出。
檢測(cè)樹莓派Zero
if __name__ == “__main__”
這部分代碼只涉及配置IMX500、上傳神經(jīng)網(wǎng)絡(luò)固件文件(network.rpk)以及讓攝像機(jī)運(yùn)行。有幾件事需要指出:
1.我們首先創(chuàng)建IMX500相機(jī)輔助對(duì)象。這將為我們上傳網(wǎng)絡(luò),并告訴我們IMX500是哪個(gè)攝像頭。
2.NetworkIntrinsics對(duì)象是網(wǎng)絡(luò)的助手,它會(huì)推薦我們可以使用的合適的幀速率,該幀速率應(yīng)該與IMX500上的網(wǎng)絡(luò)推斷速率相匹配。
3.在啟動(dòng)相機(jī)之前,我們應(yīng)該告訴IMX500助手,我們希望看到網(wǎng)絡(luò)上傳的進(jìn)度條——否則很容易認(rèn)為它可能卡住了!回想一下,網(wǎng)絡(luò)固件在后續(xù)情況下上傳更快,因?yàn)楦嗟墓碳K已經(jīng)緩存在設(shè)備中。
4.最后,我們讓腳本永遠(yuǎn)運(yùn)行,所有的相機(jī)處理都在后臺(tái)線程中進(jìn)行。
下載樹莓派分類器的完整demo.py代碼。
https://github.com/themagpimag/rpimag-issue154/blob/master/pi_classifier/demo.py
原文地址:
https://www.raspberrypi.com/news/build-a-raspberry-pi-classifier-detect-different-raspberry-pi-models/
-
分類器
+關(guān)注
關(guān)注
0文章
153瀏覽量
13451 -
樹莓派
+關(guān)注
關(guān)注
121文章
2009瀏覽量
107472
發(fā)布評(píng)論請(qǐng)先 登錄
樹莓派教程 詳解樹莓派驅(qū)動(dòng)OLED模塊

樹莓派gpio應(yīng)用
樹莓派的種類_樹莓派安裝教程
樹莓派3wifi配置_樹莓派3開啟wifi熱點(diǎn)_樹莓派3的wifi使用教程
樹莓派3硬件配置_樹莓派3都能裝什么系統(tǒng)_樹莓派3系統(tǒng)安裝教程
樹莓派用什么語言編程_樹莓派python編程詳解
樹莓派有什么用_樹莓派能用來做啥_樹莓派新手入門教程
淺談香蕉派與樹莓派的不同
樹莓派怎么用
樹莓派是什么樹莓派的簡(jiǎn)單介紹

樹莓派控制步進(jìn)電機(jī)

評(píng)論