前一篇文章提到使用deepstream-test的范例代碼,修改成“車牌識別”與“遮蓋(redaction)”的應(yīng)用,本文就直接帶著大家實現(xiàn)這兩個范例的實踐,但是并不花時間去解釋代碼內(nèi)容,因為基本工作流與邏輯是大致相同的,就是需要開發(fā)人員能夠多做實驗去熟悉每個插件直接的互動關(guān)系。
redaction_with_deepstream項目
雖然名稱上的“redaction”是“修改”的意思,但這里執(zhí)行的效果其實就是識別視頻上的“私人信息”進行遮蓋,主要包括“人臉”、“車牌”這些重要信息,因為近年來越來越多的網(wǎng)上小視頻的播放,以及個人隱私保護程度高漲,內(nèi)容提供人如果沒有適度地遮蓋視頻中的隱私信息,很可能遭受到維權(quán)的法律訴訟。
因此這個項目雖然看起來并沒有太高深的技術(shù)含量,但是實用性非常強,在Jetson Nano 2GB上用DeepStream直接幫視頻中需要遮蓋的信息,進行全自動化的處理,這樣就能減少非常多不必要的糾紛。
項目地址在https://github.com/NVIDIA-AI-IOT/redaction_with_deepstream,下面的簡易流水線圖也相當(dāng)簡單(如下圖)。
不過比較有參考價值的流水線圖在“Pipeline Description”下面的兩張圖,將整個流水線的內(nèi)容說明的非常詳細(xì),強烈建議讀者自行下載去研究,這對于提升對DeepStream流水線的理解是很有幫助的,這部分能連貫起來之后就差不多有足夠的掌握程度。
項目執(zhí)行非常簡單,執(zhí)行以下指令就可以:
cd 《deepstream主目錄》/sources/apps
git clone https://github.com/NVIDIA-AI-IOT/redaction_with_deepstream
cd redaction_with_deepstream && make
。/deepstream-reaction-app -c configs/pgie_config_fd_lpd.txt
如果你的Jetson設(shè)備上有安裝USB攝像頭,執(zhí)行之后應(yīng)該就會顯示攝像頭的畫面,看看人頭過去的時候是否會把臉遮???
打開 USB 攝像頭,對著電腦屏幕上播放的視頻進行測試,左邊車牌用藍色色塊遮蓋,右邊人臉部分用黑色色塊遮蓋,假如對“遮蓋”的顏色不滿意,可以調(diào)整代碼中第109~111行與118~120行的設(shè)定值,就可以改變顏色。
您可以自行嘗試用視頻文件來做輸入,并將檢測的結(jié)果輸出成一個視頻文件,這部分的指令在開源項目內(nèi)都有很詳細(xì)的說明。執(zhí)行完之后還會顯示本次檢測的實際性能,在Jetson Nano 2GB上的性能也能到達128FPS,非常好的表現(xiàn)
deepstream_lpr_app車牌識別項目
這個項目是個很經(jīng)典的檢測器(detector)與分類器(classifier)共同合作的項目
主檢測器還是使用原本的4類檢測器,其中有“car”類別
在圖像中檢測到Car之后,再從這個物體的范圍內(nèi)去尋找車牌,因此需要一個專門檢測車牌的次檢測器,這需要從NVIDA的NGC下載已經(jīng)訓(xùn)練好的模型,當(dāng)然您也可以自己重新收集車牌數(shù)據(jù)集然后重新訓(xùn)練。
當(dāng)檢測到車牌的時候,將車牌圖像送交分類器,將上面的字符逐個分離出來,最后回饋車牌的字符串。整個識別需要先找到“car”這個物體,如果您直接提供車牌的圖片,在這里是辨識不出來的。
這個項目提供“美國”與“中國”的lpd車牌識別模型與lpr字符分類模型,兩組是不能混用的。經(jīng)過測試,發(fā)現(xiàn)在“中國車牌”識別的模型中,應(yīng)該沒有將屬于電動車的“綠色”車牌放進去,因此這種車牌也是識別不出來的。
因為deepstream-app這個強大的工具,雖然提供“多檢測器”級聯(lián)的處理功能,但是沒有提供“檢測器與分類器”級聯(lián)的功能,因此必須自己撰寫代碼來實現(xiàn)這個功能。根據(jù)的代碼內(nèi)容的風(fēng)格判斷,應(yīng)該是以deepstream-test2范例為基礎(chǔ)進行開發(fā)的。
接下來就用這個項目的“中文車牌”識別的部分,帶著大家復(fù)現(xiàn)一下,里面有些小坑,不過我們都已找到問題的答案,請按照一下步驟執(zhí)行:
1. 下載項目與模型:
git clone https://github.com/NVIDIA-AI-IOT/deepstream_lpr_app.git
cd deepstream_lpr_app
。/download_ch.sh
這會從NGC下載三個預(yù)訓(xùn)練的中文車牌識別模型文件,以及各自配套的設(shè)置文件,腳本為這些模型、配套文件都設(shè)置好對應(yīng)路徑,不需要修改:
1) 主檢測模型(四分類):resnet18_trafficcamnet_pruned.etlt
2) 次檢測模型(一分類):ccpd_pruned.etlt
3) 次分類模型:ch_lprnet_baseline18_deployable.etlt
2. 模型轉(zhuǎn)換:
前面下載的次分類模型(ch_lprnet_baseline18_deployable.etlt)是個中間文件,必須在目標(biāo)設(shè)備(這里是Jetson Nano 2GB)使用tlt-converter轉(zhuǎn)換成該設(shè)備能使用的TensorRT加速引擎,需要先到https://developer.nvidia.com/cuda102-trt71-jp45下載cuda10.2_trt7_jp45-xx.zip,解壓縮就能看到tlt-converter這個工具。
下載后執(zhí)行以下轉(zhuǎn)換指令:
。/tlt-converter -k nvidia_tlt
-p image_input,1x3x48x96,4x3x48x96,16x3x48x96
models/LP/LPR/ch_lprnet_baseline18_deployable.etlt
-t fp16 -e models/LP/LPR/lpr_ch_onnx_b16.engine
再次強調(diào),這個轉(zhuǎn)換步驟必須在目標(biāo)設(shè)備上執(zhí)行,例如在Xavier上所專換的加速引擎是不能復(fù)制到NX或Nano(含2GB)上使用。
3. 編譯與修改設(shè)定:
直接執(zhí)行以下指令:
cd deepstream_lpr_app # 進入到主代碼的目錄中
make # 編譯
cp dict_ch.txt dict.txt # 處理中文版的字典
最后,中文版設(shè)定文件lpd_ccpd_config.txt里第52行“model-color-format”設(shè)定值改為“0”,這樣就能正常識別了。
4. 執(zhí)行:
這個步驟必須您自己去找到合適的視頻,或者自行錄制一小段視頻作為輸入,然后在這個目錄下執(zhí)行編譯好的執(zhí)行文件,在deepstream-lpr-app后面需要跟隨以下幾個參數(shù):
1. 識別種類:1 -》 美國車牌識別、2 -》 中國車牌識別
2. 輸出種類:1 -》 輸出h264視頻文件、2 -》 fakesink、3 -》 顯示到屏幕上
3. ROI開關(guān):0 -》 關(guān)閉、1 -》 開啟
4. 輸入文件:可以一次給多個.mp4視頻文件
5. 最后一個:指定輸出.h264視頻文件
例如:
。/deepstream-lpr-app 2 1 0 test1.mp4 test2.mp4 out.h264
下面是使用我們自行在停車場錄制的視頻、行車記錄儀、VisionWorks的范例,總共6個視頻文件作為輸入的測試結(jié)果,提供大家參考。
結(jié)語
本文的重點是要告訴大家,雖然使用deepstream-app調(diào)用設(shè)定文件的方式是很容易上手,但卻沒辦法解決一些特殊的應(yīng)用。
本文所介紹的兩個實用性非常高的應(yīng)用,就不能套用這種方式,必須自行撰寫代碼去執(zhí)行特殊的處理,分別基于deepstream-test1與deepstream-test2兩個C/C++范例去開發(fā),這給了初學(xué)者更開放的思路,不能只拘泥于deepstream-app設(shè)定文件的配置修改上,應(yīng)該回歸正途從DeepStream的插件流去解決問題。
下一篇文章我們將以NVIDIA在DeepStream 4.0版時所提供的一個Jupyter學(xué)習(xí)環(huán)境,更有條例與有效率地一步一步在deepstrem-test上添加功能,包括將輸出的視頻流透過RTSP/RTP裝向其他設(shè)備去顯示、多數(shù)據(jù)源輸入、多網(wǎng)絡(luò)模型組合檢測等等功能。
不熟悉C/C++的朋友也不用著急,因為DeepStream也提供相當(dāng)成熟的Python開發(fā)借口與范例,工作原理與C/C++版本完全一致,因此我們還是先用現(xiàn)有資源讓大家逐步體驗,最后還會再用Python的代碼進行示范,這樣就能事半功倍。
-
檢測器
+關(guān)注
關(guān)注
1文章
855瀏覽量
47600 -
代碼
+關(guān)注
關(guān)注
30文章
4697瀏覽量
68093 -
分類器
+關(guān)注
關(guān)注
0文章
152瀏覽量
13159 -
USB攝像頭
+關(guān)注
關(guān)注
0文章
22瀏覽量
11246
原文標(biāo)題:NVIDIA Jetson Nano 2GB 系列文章(33):DeepStream 車牌識別與私密信息遮蓋
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論