三個(gè)分類器(classifier)
時(shí)間:2022-03-17 10:51:01 | 來(lái)源:行業(yè)動(dòng)態(tài)
時(shí)間:2022-03-17 10:51:01 來(lái)源:行業(yè)動(dòng)態(tài)
來(lái)共同完成這項(xiàng)任務(wù)。
可能有人會(huì)問(wèn),那是否能在Person或RoadSign上面增加分類器?例如將前者再添加男/女、老/少分類,對(duì)后者再添加限制類、指示類、警告類的屬性呢?這當(dāng)然是可以的,只要你能找到合適的模型文件來(lái)搭配,或者得自己重新收集數(shù)據(jù)集進(jìn)行模型訓(xùn)練,然后再提供對(duì)應(yīng)的配置文件。
與test1范例中所不同的地方,在test2范例在pgie這個(gè)nvinfer元素之外,又添加sgie1/sgie2/sgie3這3個(gè)推理計(jì)算的元素,總共四個(gè)推理器的內(nèi)容如下:
這個(gè)過(guò)程有個(gè)比較特殊的地方,就是在主推理器(這里是個(gè)檢測(cè)器)與次推理器(這里是三個(gè)分類器)之間,需要透過(guò)追蹤器(tracker)進(jìn)行串聯(lián),這里有個(gè)很重要的原因,因?yàn)榇瓮评砥魇且灾魍评砥鞯姆秶鷪D像去進(jìn)行分類推理,包括顏色、品牌、車型等等,而追蹤器可以協(xié)助記錄主推理器所找到的圖像范圍,將這個(gè)局部的數(shù)據(jù)傳送給次推理器去進(jìn)行計(jì)算,這樣才能建立好主次之間的關(guān)聯(lián)。
因此我們會(huì)發(fā)現(xiàn),只要需要進(jìn)行這種主次結(jié)合的方式,必定需要調(diào)用追蹤器這個(gè)元件來(lái)扮演角色,這個(gè)在deepstream-app里面也是存在的,但是這里會(huì)延伸出另一個(gè)問(wèn)題,就是調(diào)用追蹤器是會(huì)影響性能的,在DeepStream追蹤器里面,目前支持NVDCF、KLT與IOU三種算法,其中NVDCF算法的性能最差,KLT在準(zhǔn)確性與性能的綜合表現(xiàn)較好,因此大部分的范例中都選擇使用KLT追蹤器。
附帶說(shuō)明的一點(diǎn),就是追蹤器插件接受來(lái)自上游組件的NV12-或RGBA格式的幀數(shù)據(jù),并將輸入緩沖區(qū)轉(zhuǎn)換為低層庫(kù)所需格式的緩沖區(qū),再將寬度和高度轉(zhuǎn)換為跟蹤器要求的寬度和高度,這需要將輸入幀緩沖區(qū)轉(zhuǎn)換為底層庫(kù)請(qǐng)求的格式,例如KLT使用Luma專用格式、NvDCF使用NV12或RGBA格式,IOU則不需要緩沖區(qū)。
上圖是nvtracker插件的工作示意圖,詳細(xì)的內(nèi)容請(qǐng)自行參考開發(fā)手冊(cè):https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvtracker.html
好了,前面已經(jīng)將整體原理說(shuō)明的差不多,接下來(lái)就看看test2與test1的Python代碼中的差異部分,這樣就更能掌握這部分的實(shí)際運(yùn)作內(nèi)涵。
如同前面所提到的,這個(gè)代碼主要修改的部分,就是在pgie與nvvideoconvert之間,添加tracker與sgie1~3這四個(gè)元件,其他修改的部分幾乎都在處理tracker的部分,包括一開始需要為追蹤器是否保存追蹤數(shù)據(jù)的
# 42行:給定這個(gè)變量設(shè)定是否保存追蹤的數(shù)據(jù)
past_tracking_meta=[0]
# 217至238行:在 pgie與 nvvidconv 之間,添加 tracker sgie1~3
pgie = Gst.ElementFactory.make("nvinfer", "primary-inference")
-
網(wǎng)站
-
營(yíng)銷
-
設(shè)計(jì)
-
運(yùn)營(yíng)
-
優(yōu)化
-
效率
-
專注
-
電商
-
方案
-
推廣
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。
|