OpenCV DNN支持的對象檢測模型
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
本文轉(zhuǎn)自:opencv學堂
OpenCV DNN不光支持圖像分類,對象檢測作為計算機視覺主要任務之一,OpenCV DNN支持多種對象檢測模型,可以快速實現(xiàn)基于COCO數(shù)據(jù)集與Pascal VOC數(shù)據(jù)集的對象檢測。此外基于自定義數(shù)據(jù)集,通過tensorflow對象檢測框架或者pytorch的ONNX格式還可以支持自定義對象檢測模型訓練導出與部署。本文總結了OpenCV DNN支持的各種對象檢測模型與它們的輸入輸出。
SSD對象檢測模型的全稱是Single Shot MultiBox Detector,是一階段的對象檢測網(wǎng)絡,基于回歸思想在多個特征層實現(xiàn)對象檢測,其主要的思想可以用下面一張圖表示:

可以看出越是分辨率大的對象在高層特征抽象上畢竟容易被預測檢測,分辨率小的對象在底層特征會被檢測,如果分辨率過小則有可能無法檢測,所以SSD對象檢測是對微小目標檢測效果不佳的對象檢測方法,根據(jù)使用的特征網(wǎng)絡不同可以分為VGG-SSD,MobileNet-SSD等,下圖是基于VGG16的SSD對象檢測網(wǎng)絡模型結構:

OpenCV DNN支持SSD-VGG, SSD-MobileNet兩種SSD對象檢測模型。
YOLO對象檢測模型得全稱是You Only Look Once,也是一階段得對象檢測模型。最初的YOLO對象檢測模型跟SSD對象檢測模型相比,它只有一個輸出層,無法實現(xiàn)多分辨率特征的預測,雖然速度很快,但是精度不夠,后來改進的YOLOv2,YOLOv3,YOLOv4都具有多個輸出層,實現(xiàn)了多尺度的對象檢測,檢測精度跟準確率得到提高。YOLO網(wǎng)絡結構

多個輸出層。OpenCV DNN模塊支持最新版本的YOLOv4對象檢測模型部署,同時還支持Tiny-YOLO網(wǎng)絡。


YOLOv2與YOLOv3版本模型跟SSD模型之間的輸出對比

Faster-RCNN是典型的兩階段對象檢測網(wǎng)絡,基于RPN實現(xiàn)區(qū)域推薦,

網(wǎng)絡結構如下:

該模型也是兩階段網(wǎng)絡,在輸出時候多出了一個實例分割的分支,但是該實例分割嚴格意義上來說并沒有進行上采樣,不是pixelwise的實例分割模型,可以看成是blockwise/patch wise的實例分割輸出。整個網(wǎng)絡結構跟Faster-RCNN很相似,網(wǎng)絡模型結構如下:

OpenCV支持Caffe與Tensorflow Object DetectionAPI中的mask-rcnn模型部署推理。
2016年提出的對象檢測網(wǎng)絡,全稱為Region-based Fully Convolutional Network (R-FCN)其核心思想是基于全卷積神經(jīng)網(wǎng)絡生成一個3x3的位置敏感卷積實現(xiàn)對位置信息編碼,完成預測,實現(xiàn)對象檢測。

該網(wǎng)絡同樣是兩階段的對象檢測網(wǎng)絡,模型架構如下:

位置敏感ROI矩形解碼

該模型是一階段的對象檢測網(wǎng)絡,在2019年提出,tensorflow2.x的對象檢測網(wǎng)絡框架支持的網(wǎng)絡模型。模型的結構如下:

基于EfficientNet網(wǎng)絡作為基礎網(wǎng)絡,使用多尺度雙向金字塔特征融合技術,其中權重特征融合使用了交叉尺度鏈接與權重快速歸一化融合。下圖是普通的金字塔特征融合到雙向金字塔特征融合各種方法:

對,你沒看錯,OpenCV4.4最新版本支持該模型。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

