在Jetson Nano上十行代码实现目标检测(jetson_inference)
網(wǎng)上有一個(gè)10行代碼搞定目標(biāo)檢測的視頻教程
參考網(wǎng)址:https://www.bilibili.com/video/av91150116/
經(jīng)測非常實(shí)用,通過10行代碼實(shí)現(xiàn)目標(biāo)檢測,在Jetson Nano上迅速搭建一個(gè)目標(biāo)識(shí)別的示例和開發(fā)環(huán)境。
視頻例程使用Jetson官方的深度學(xué)習(xí)庫(jetson_inference)進(jìn)行目標(biāo)檢測程序?qū)崿F(xiàn)
項(xiàng)目鏈接:https://github.com/dusty-nv/jetson-inference
項(xiàng)目介紹頁面中Building the Project from Source給出了從源代碼進(jìn)行安裝和配置的指南
指南鏈接:https://github.com/dusty-nv/jetson-inference/blob/master/docs/building-repo-2.md
概要步驟如下
建議在進(jìn)行安裝之前先進(jìn)行系統(tǒng)環(huán)境配置,如apt、pip的源設(shè)置,中文輸入等。
一、jetson-inference下載和安裝
步驟如下
1.?預(yù)安裝軟件
首先安裝需要用到的軟件包
$ sudo apt instal git cmake libpython3-dev python3-numpy
假定apt update在系統(tǒng)配置時(shí)已經(jīng)運(yùn)行過了,這里不再重復(fù)。
2. 下載代碼庫
然后下載軟件源代碼庫
$ git clone --recursive https://github.com/dusty-nv/jetson-inference
這一步比較費(fèi)事,這是一個(gè)遞歸的源代碼庫,包含多個(gè)子代碼庫,因?yàn)閲鴥?nèi)外網(wǎng)絡(luò)環(huán)境的問題,從Github下載會(huì)出現(xiàn)連接不穩(wěn)定,不能下載全的情況。這種情況建議多嘗試幾次,或者從其它地方進(jìn)行下載。
3. 編譯安裝
之后進(jìn)入代碼目錄進(jìn)行編譯安裝
$ cd jetson-inference
創(chuàng)建一個(gè)cmake編譯目錄
$ mkdir build
$ cd build
進(jìn)行cmake
$ cmake ..
在cmake過程中會(huì)彈出對(duì)話框讓選擇下載模型和安裝pytorch,因?yàn)閲鴥?nèi)連接國外不穩(wěn)定,建議選擇不安裝(通過TAB鍵選擇Quit和Skip,按回車),后面進(jìn)行離線下載和安裝。
cmake完成之后,進(jìn)行編譯和安裝
$ make -j4
$ sudo make install
這樣jetson-inference庫就安裝完成了。編譯之后會(huì)在build目錄下生成jetson-inference庫相關(guān)文件,包括頭文件、庫文件、幫助文件、腳本工具、示例程序等。make install會(huì)把相關(guān)的文件復(fù)制到對(duì)應(yīng)的系統(tǒng)目錄。
其中download-model.sh和install-pytorch.sh文件分別是下載模型和安裝pytorch的腳本文件,可以查看參考文件,進(jìn)行離線下載和安裝。
其中會(huì)生成一個(gè)aarch64目錄,里面包含jetson-inference庫的相關(guān)文件,目錄結(jié)構(gòu)如下
其中l(wèi)ib目錄包含庫文件,include目錄包含頭文件,bin目錄包含一些圖像分類、目標(biāo)識(shí)別等相關(guān)的命令和工具。
4. 測試
安裝完成之后,build/aarch64/bin目錄包含了一些圖像分類、目標(biāo)識(shí)別等方面的執(zhí)行文件,如下?
可以用這些程序進(jìn)行目標(biāo)識(shí)別的測試。在bin目錄下運(yùn)行
$ ./imagenet.py --network=resnet-18 images/jellyfish.jpg images/test/output_jellyfish.jpg
就可以對(duì)imags/jellyfish.jpg圖片進(jìn)行分類識(shí)別。識(shí)別結(jié)果輸出在images/test/output_jellyfish.jpg文件。
因?yàn)榘惭b時(shí)沒有選擇在線下載模型,這個(gè)程序運(yùn)行不能成功。可以自己下載模型和建立python文件來進(jìn)行基于jetson-inference庫的例程開發(fā)。
5. 模型下載
Github提供了離線下載模型的方法,通過
模型下載鏈接:https://github.com/dusty-nv/jetson-inference/releases
可以根據(jù)需要下載對(duì)應(yīng)的模型,下載到data/networks目錄,然后解壓,比如
$ tar -zxvf SSD-Mobilenet-v2.tar.gz
常見的有GoogleNet,ResNet,SSD-Mobilenet等,如下
下載和解壓到data/networks目錄之后,就可以在程序中使用jetson-inference庫調(diào)用這些模型了。
二、例程編寫和測試
這里用一個(gè)10行代碼的例程來實(shí)現(xiàn)目標(biāo)識(shí)別。參考視頻,代碼如下
import jetson.inference import jetson.utilsnet = jetson.inference.detectNet('SSD-Mobilenet-v2', threshold=0.5) camera = jetson.utils.gstCamera(1280,720,'0') display = jetson.utils.glDisplay()while display.IsOpen():img, width, height = camera.CaptureRGBA()detections = net.Detect(img, width, height)display.RenderOnce(img, width, height)display.SetTitle('Object Detection | Network %.1f FPS'%net.GetNetworkFPS())采用SSD-Mobilenet-v2網(wǎng)絡(luò)對(duì)攝像頭視頻進(jìn)行在線目標(biāo)識(shí)別。假定命名程序文件detect_net.py,然后運(yùn)行
$ python3 detect_net.py
程序結(jié)果就會(huì)出現(xiàn)攝像頭的畫面和在線識(shí)別的結(jié)果,如下?
實(shí)際測試響應(yīng)效果良好,能夠達(dá)到20多fps的幀率,沒有滯后感。
總結(jié)
以上是生活随笔為你收集整理的在Jetson Nano上十行代码实现目标检测(jetson_inference)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式的技术竞争力
- 下一篇: 用注册表管理IE代理设置