本次Jetbot實驗全程都在 Jetson Nano 2GB 開發(fā)套件上面運行。在組裝Jetbot教學(xué)系統(tǒng)之前,最好先把Jetbot系安裝到Jetson Nano 2GB上,這樣可以先對每個元件進(jìn)行獨立的測試,確認(rèn)元件能正確工作之后再進(jìn)行組裝的步驟。
在2019年NVIDIA推出Jetson Nano邊緣計算設(shè)備之后,這套開源的Jetbot智能無人車教學(xué)系統(tǒng)也隨之而生,為市場提供一套最優(yōu)性價比的教學(xué)系統(tǒng)。
這是個非常有用的插件,是DeepStream 5.0添加的功能,對nvinfer(主檢測器)和nvtracker附加的元數(shù)據(jù)執(zhí)行分析,目前主要針對涉及感興趣區(qū)域(ROI)的過濾、過度擁擠檢測、方向檢測和跨線統(tǒng)計等四大功能。
很多人驚艷于deepstream-app里面那個可以同時檢測到車子的顏色、品牌、種類的實驗,這的確是個非常亮眼的應(yīng)用,在開發(fā)包范例中的deepstream-test2就是這項功能的范例代碼。
本文以上一期Python版的deepstream-teat1為基礎(chǔ),分別在輸入與輸出添加功能的兩個擴展應(yīng)用:deepstream-teat1-usbcam與deepstream-teat1-rtsp-out,分別將輸入源從視頻文件變成USB攝像頭,以及將輸出從顯示屏變成RTSP視頻流。
前面已經(jīng)介紹過關(guān)于DeepStream各種輸入源的使用方式,而且Jetson Nano 2GB上開啟4路輸入(兩個攝像頭+兩個視頻文件),都能得到25FPS以上的實時性能。
前面介紹過使用deepstream-app工具,啟用多個視頻進(jìn)行車輛與行人的識別,并且啟動“追蹤”功能進(jìn)行物件追蹤的高級功能,接下來就教大家如何在deepstream-app里調(diào)用USB與CSI攝像頭,并且與先前的視頻同時啟用來進(jìn)行物件識別的應(yīng)用。
在計算機視覺的應(yīng)用中,“識別”只是一個相當(dāng)入門的技術(shù),相信很多人在執(zhí)行深度學(xué)習(xí)推理應(yīng)用中,經(jīng)常產(chǎn)生的質(zhì)疑就是“識別出的類別,有什么用途呢”?
前一篇文章為大家講述了DeepStream的應(yīng)用定位、單機工作流、實際部署圖,以及完整的軟件棧的內(nèi)容,可以對其有一個框架性的了解。接下來大家可以思考一下,DeepStream可以開發(fā)什么應(yīng)用?
DeepStream是一套集NVIDIA最尖端技術(shù)精髓于一身的智能視頻分析(Intelligent Video Analytics)套件,從深度神經(jīng)網(wǎng)絡(luò)和其他復(fù)雜的處理任務(wù)引入到流處理管道中,以實現(xiàn)對視頻和其他傳感器數(shù)據(jù)的接近實時分析工作。
下圖就是使用labelimg這個開源工具對圖像進(jìn)行標(biāo)注的任務(wù),將每個標(biāo)注的圖框給與指定的單一分類,每張圖形都可能有多個分類與多個物件,標(biāo)框的原則也會影響將來的推理結(jié)果,如果標(biāo)框過程比較粗糙(邊界界定不清楚),后面得到的結(jié)果也會比較粗糙。
然而,真正要完成一個深度學(xué)習(xí)的項目,還是必須完成前面階段的模型訓(xùn)練部分,本文的重點就是帶著大家,利用Hello AI World所提供的資源,開始進(jìn)行簡單的圖像分類應(yīng)用的模型訓(xùn)練。
本系列最后一個需要說明的推理識別應(yīng)用,就是語義分割(semantic segmentation)的推理識別,字面上經(jīng)常造成初學(xué)者的誤解,以為這是語音語義識別相關(guān)的應(yīng)用。現(xiàn)在我們看看下面的一張圖片,就比較能理解語義分割的應(yīng)用是什么。
如果您跟著我們仔細(xì)走過前面9篇“Hello AI World”文章,相信應(yīng)該都把整個jetson-inference的結(jié)構(gòu)與邏輯都摸清楚了,接下來的重點,就是在目前深度學(xué)習(xí)中比較普及的“物件檢測”應(yīng)用。
為自己開發(fā)合適的應(yīng)用代碼。因此本文就延續(xù)上一篇文章來向大家介紹“Hello AI World”圖像分類代碼。
前面我們花了不少篇幅,以“10行python代碼”為基礎(chǔ),更深入地講解了Hello AI World項目的輸入(videoSource)、輸出(videoOutput)以及參數(shù)解析的功能,就是為了讓大家能更了解這個項目提供的工具是如此好用。
本文的目的就協(xié)助大家,以前面的“10lines.py”代碼為基礎(chǔ),擴充解析參數(shù)的能力,這樣就能直接在指令行透過給定參數(shù)的方式,來改變所要的功能,這樣的方式也才能加入腳本之中,根據(jù)不同條件去進(jìn)行不同的任務(wù)。
上一篇文章為大家深入地講解了videoSource()這個非常強大的輸入源處理模塊,本文的重點將聚焦在videoOutput()這個輸出標(biāo)的處理模塊。
如果你認(rèn)為這兩個功能只是簡單地負(fù)責(zé)數(shù)據(jù)接收與顯示的話,這就大大浪費了項目作者的心血結(jié)晶,因此我們在進(jìn)入本項目另外兩個深度學(xué)習(xí)推理應(yīng)用之前,先要把這兩個幕后功臣的內(nèi)涵展現(xiàn)出來,因為這與后面的應(yīng)用息息相關(guān)。
在上一篇文章中,我們已經(jīng)體驗了”10行Python代碼的威力”,可以明顯感覺到 ”Hello AI World”的內(nèi)容絕非一般應(yīng)用的“Hello World”那么簡單。在本篇文章中,我們將為大家介紹如何更換模型以獲得不同的效果。