視覺類與對(duì)話類是人工智能技術(shù)的兩個(gè)最重要應(yīng)用領(lǐng)域,盡管ChatGPT引發(fā)對(duì)話類人工智能應(yīng)用風(fēng)潮,但視覺類的智能應(yīng)用依舊是邊緣應(yīng)用的重點(diǎn),為我們識(shí)別并收集邊緣角落的各種信息。 Jetson Nano的設(shè)備配置對(duì)視覺類應(yīng)用有明顯的優(yōu)勢(shì),包括支持兩個(gè)低功耗CSI攝像頭、內(nèi)置H.264/H.265編解碼芯片、底層攝像頭子系統(tǒng)(subsystem)等設(shè)計(jì),都是為了實(shí)現(xiàn)低能耗、高效地執(zhí)行智能視覺計(jì)算目的。 OpenCV是目前計(jì)算機(jī)視覺領(lǐng)域中使用比例最高的開源庫(kù),在Jetson Nano里提供一個(gè)支持C/C++與Python的精簡(jiǎn)版OpenCV庫(kù),主要去除關(guān)于神經(jīng)網(wǎng)絡(luò)的支持以及一些需要授權(quán)的算法。除非您很清楚自己真的需要那些額外的功能,否則這里所提供的庫(kù)是絕對(duì)能滿足一般圖像處理的需求。 “顯示圖像處理結(jié)果”是遠(yuǎn)程操作計(jì)算機(jī)視覺應(yīng)用的一大困擾,大部分初學(xué)者會(huì)使用VNC或NoMachine這些圖形化遠(yuǎn)程控制軟件,來查看執(zhí)行輸出的圖像或視頻。不過使用之后就會(huì)發(fā)現(xiàn),VNC的圖像顯示效果不太流暢,NoMachine的體驗(yàn)感比較好,但是會(huì)消耗比較多的內(nèi)存資源,在內(nèi)存比較充沛的x86工作機(jī)可能比較無所謂,但是對(duì)于只有4GB內(nèi)存的Jetson Nano而言,就會(huì)比較吃緊。 熟悉Linux的開發(fā)人員,可以選擇在SSH終端搭配X11轉(zhuǎn)向的功能,來處理這個(gè)圖像顯示問題,但其他大部分SSH工具并不支持這個(gè)功能,或者需要比較復(fù)雜的配置,這對(duì)新手來說還是比較繁瑣的。 這里推薦使用vs-code上的“Remote X11 (SSH)”擴(kuò)展,來解決計(jì)算機(jī)圖像的輸出顯示問題,我們只要在“擴(kuò)展區(qū)”輸入“X11”關(guān)鍵字,就能顯示這個(gè)擴(kuò)展選項(xiàng),點(diǎn)擊安裝就可以(如下圖): 接下去執(zhí)行遠(yuǎn)程連線時(shí),選擇“Connect to Host”,然后在對(duì)話框中輸入“ssh -X 用戶名@IP”的方式(如下圖),然后按照要求輸入密碼,就能啟動(dòng)遠(yuǎn)程X11轉(zhuǎn)向的功能。 現(xiàn)在遠(yuǎn)程登錄到Jetson Nano之后,試試執(zhí)行以下調(diào)用OpenCV庫(kù)的Python代碼,簡(jiǎn)單讀取Jetson Nano自帶的VisionWorks一個(gè)范例視頻: import cv2 看看是否能在本機(jī)屏幕上顯示如下圖的視頻內(nèi)容? 如果可以顯示如上圖的內(nèi)容,就表示能在本機(jī)上用vs-code的X11轉(zhuǎn)向功能,控制遠(yuǎn)程的Jetson Nano去執(zhí)行OpenCV應(yīng)用。不過這里得強(qiáng)調(diào)一點(diǎn),就是這個(gè)X11轉(zhuǎn)向功能并不支持OpenGL的應(yīng)用。 接著使用OpenCV自帶Haar Cascade算法庫(kù)來體驗(yàn)基礎(chǔ)的人臉識(shí)別功能,為了避免侵犯?jìng)€(gè)人隱私問題,我們使用GAN對(duì)抗式生成網(wǎng)絡(luò)所創(chuàng)建的虛擬人臉來做示范,然后透過以下代碼讀入圖像,用OpenCV的Haar Cascade算法庫(kù)來進(jìn)行人臉識(shí)別功能。完整代碼如下:
以下是執(zhí)行的結(jié)果,藍(lán)色框框很清晰標(biāo)示出人臉的位置,讀者可以使用自己準(zhǔn)備的照片來執(zhí)行這個(gè)代碼。 我們繼續(xù)在這個(gè)臉部識(shí)別算法上添加“眼睛”的識(shí)別功能,只要在上面代碼中添加以下粗體部分的增量?jī)?nèi)容即可: import numpy as np 執(zhí)行后就會(huì)如下截屏,在先前檢測(cè)到臉部的范圍內(nèi)進(jìn)行眼睛的檢測(cè),雖然精確度還有改善的空間,不過這個(gè)算法庫(kù)已經(jīng)能達(dá)到基本的要求。 以上的識(shí)別計(jì)算是OpenCV比較復(fù)雜的應(yīng)用,至于調(diào)用攝像頭、圖像格式轉(zhuǎn)換、色調(diào)空間轉(zhuǎn)換、邊緣查找、尺度縮放。。。等通用功能,在Jetson Nano所提供的精簡(jiǎn)版OpenCV都是相當(dāng)完整,對(duì)于學(xué)習(xí)計(jì)算機(jī)視覺基礎(chǔ)技術(shù)是完全足夠的。 現(xiàn)在,結(jié)合vs-code的X11轉(zhuǎn)向功能去操作Jetson Nano的OpenCV庫(kù),能讓我們隨時(shí)隨地面對(duì)各種場(chǎng)景,用C/C++或Python去開發(fā)計(jì)算機(jī)視覺類的相關(guān)應(yīng)用。【完】 |
|