部署可扩展的目标检测管道:推理过程(上)
部署可擴(kuò)展的目標(biāo)檢測管道:推理過程(上)
基于YOLOv3的目標(biāo)檢測推理過程的所有代碼都可以在eriklindernoren/PyTorch-YOLOv3 GitHub repo找到。
為了進(jìn)行審查,使用了完整版的YOLO配置文件。它包含有關(guān)網(wǎng)絡(luò),卷積層,三個YOLO檢測層以及其它層及其屬性的信息。使用PyTorch來解析配置文件并應(yīng)用模型定義來實現(xiàn)網(wǎng)絡(luò)。YOLOv3檢測層默認(rèn)情況下啟用了CUDA。來自NGC軟件中心的PyTorch CUDA提供了GPU優(yōu)化的容器,并預(yù)先配置了cuDNN之類的庫,以利用多個支持CUDA的處理器。
接下來,為YOLOv3-416加載了預(yù)訓(xùn)練的偏差和權(quán)重文件,該文件連接了層之間的節(jié)點。卷積層使用可訓(xùn)練的參數(shù),其中包括內(nèi)核權(quán)重和偏差。權(quán)重指定為3D張量,帶有行,列和通道的數(shù)量。在整個網(wǎng)絡(luò)中使用零填充來保持圖像的尺寸。輸入層不包含任何可訓(xùn)練的參數(shù),因為它包含數(shù)據(jù)。而且,快捷方式和路由層沒有權(quán)重,因為它們不執(zhí)行任何卷積。
卷積層的可訓(xùn)練參數(shù)的數(shù)量由以下公式確定:
權(quán)重+偏見
輸入x輸出+偏差
如果最后一層很密集,則輸入=節(jié)點數(shù)
如果最后一層是conv,則輸入=過濾器數(shù)
輸出=(過濾器數(shù)量)x(過濾器尺寸)
偏差=過濾器數(shù)量
輸出層可訓(xùn)練的參數(shù)數(shù)由以下公式確定:
權(quán)重+偏見
輸入x輸出+偏差
輸入=圖像寬度x圖像高度x過濾器數(shù)量
因為它是一個密集層,所以輸出=節(jié)點數(shù)
偏差=節(jié)點數(shù)
網(wǎng)絡(luò)通過稱為網(wǎng)絡(luò)卷積層內(nèi)核步幅的因子對圖像進(jìn)行下采樣。輸入416 x 416時,將以13 x 13的步幅(步幅32),26 x 26的步幅16和52 x 52的步幅8進(jìn)行檢測。在每個尺度上,每個像元都使用三個錨點預(yù)測三個邊界框(規(guī)模不同),總共有9個錨點。
基于預(yù)測概率的權(quán)重與邊界框相關(guān)聯(lián)-隨后,將檢測閾值某個值,以僅查看高評分檢測。最后,非最大抑制(NMS)用于刪除多個檢測,以為每個檢測到的目標(biāo)選擇一個邊界框,以生成合并的推理圖像輸出。
圖1.推理過程。
推理輸出
圖2.原始的1280 x 720圖像。
圖3.比例尺為1的大型物體。
圖4.以比例2檢測到的中等物體。
圖5.規(guī)模為3的較小物體被檢測到。
圖6.合并到推理圖像中的預(yù)測邊界框。
推理性能指標(biāo)
目標(biāo)檢測推理過程負(fù)責(zé)執(zhí)行圖像分類和定位。每個圖像可以具有用于分類和定位的不同類別的多個目標(biāo)。檢測到的目標(biāo)類別包括汽車,卡車,公共汽車,行人和交通燈。目標(biāo)檢測性能指標(biāo)用作量化評估推理對圖像分類,定位和目標(biāo)檢測任務(wù)的執(zhí)行程度的度量。
? 圖7.汽車(單個目標(biāo))的圖像分類。
? 圖8:圖像本地化(邊界框)
? 圖9:目標(biāo)檢測(汽車,行人,交通信號燈)
圖7和8顯示了單個目標(biāo)。圖9顯示了多個目標(biāo)。
評估圖像分類
對圖像進(jìn)行分類是一個難題,而準(zhǔn)確的分類則更加困難。對于預(yù)注釋,力求在速度和圖像分類精度之間取得平衡。在本節(jié)中,術(shù)語圖像和目標(biāo)可互換使用。
圖像分類的任務(wù)是為給定圖像預(yù)測單個標(biāo)簽(或具有置信度的標(biāo)簽分布)。圖像是從0到255的整數(shù)的3D數(shù)組,大小是寬度x高度x3。三個代表顏色通道:紅色,綠色和藍(lán)色。
以下是對影響圖像推理速度和準(zhǔn)確性的圖像進(jìn)行分類時,所面臨的挑戰(zhàn)的已知列表。在數(shù)據(jù)集中遇到了這些。另外,還提到了YOLOv3中包含的適用于應(yīng)對這些挑戰(zhàn)的技術(shù)和技巧。重要的是要注意,許多貢獻(xiàn)來自許多先前的研究工作。深度卷積網(wǎng)絡(luò)的分類可能是最具影響力的研究論文之一,其中包括其它著名的研究成果:
? 2014年–用于大規(guī)模圖像識別的超深度卷積神經(jīng)網(wǎng)絡(luò)
? 2015年–進(jìn)一步發(fā)展卷積
? 2015年–用于圖像識別的深度殘差訓(xùn)練
視點變化
目標(biāo)的方向可能會因相機(jī)傳感器的位置而異。
? 圖10.左側(cè)汽車的前視圖。
? 圖11:汽車的側(cè)視圖
? 圖12:汽車的后視圖
YOLOv3每幅圖像的誤報率(FPPI)隨視點而變化。這取決于相機(jī)傳感器的位置和視場(FOV)的影響。在某些情況下,較大的FFPI歸因于從單個前置攝像頭捕獲的圖像。
規(guī)模變化
目標(biāo)的大小通常會變化(現(xiàn)實世界中的大小,不僅限于圖像的大小)。
? 圖13.大型汽車。
? 圖14:中等規(guī)模的汽車。
? 圖15:小型汽車。
YOLOv3可以從檢測大型物體到小型物體三個方面進(jìn)行預(yù)測,盡管它在檢測遠(yuǎn)距離較小的物體方面并不可靠。
失真
許多感興趣的目標(biāo)不是剛體。在極端情況下,它們可能以極端方式變形。
? 圖16.人走。
? 圖17:人員停止行走。
? 圖18:等待行人過路。
由于YOLOv3是具有眾所周知幾何形狀的剛性物體,因此在預(yù)測汽車,卡車,公共汽車和交通信號燈時更準(zhǔn)確。但是,由于行人不是剛體,并且具有各種姿勢和變形,因此有更好的網(wǎng)絡(luò)結(jié)構(gòu)可以使行人檢測更加準(zhǔn)確。
總結(jié)
以上是生活随笔為你收集整理的部署可扩展的目标检测管道:推理过程(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图形数据标准化
- 下一篇: 目标检测推理部署:优化和部署