營銷型網(wǎng)站一套東莞seo網(wǎng)站優(yōu)化排名
目錄
綜述與實踐指南
SSD (Single Shot MultiBox Detector)
基本配置和使用代碼
RetinaNet
基本配置和使用代碼
Faster R-CNN?
基本配置和使用代碼
Mask R-CNN
基本配置和使用代碼
Cascade R-CNN
基本配置和使用代碼
總結(jié)
綜述與實踐指南
MMDetection是一個基于PyTorch的開源框架,是一個目標檢測工具箱,包含了豐富的目標檢測、實例分割、全景分割算法以及相關(guān)的組件和模塊,支持多種經(jīng)典和現(xiàn)代模型,如ResNet、VGG、EfficientNet等。它還集成了單階段和兩階段檢測器,如YOLO、SSD、Faster R-CNN等,并提供了模塊化設計,簡化了模型組合、調(diào)整和優(yōu)化的流程。框架還包括數(shù)據(jù)處理、模型訓練、驗證和測試的集成解決方案,并附有詳細的文檔和示例。MMDetection 由 7 個主要部分組成,apis、structures、datasets、models、engine、evaluation 和 visualization。
MMDetection廣泛應用于自動駕駛、安防監(jiān)控等領(lǐng)域,為研究者和開發(fā)者提供了一個強大的工具,以促進深度學習目標檢測的實踐和創(chuàng)新。
模型算法下載?
在Coovally AI Hub公眾號后臺回復「模型算法」,即可獲取下載鏈接!
SSD (Single Shot MultiBox Detector)
SSD,是一種單階段目標檢測器。其優(yōu)點是原始的YOLO和Faster R-CNN在推理速度和精度之間取得了更好的平衡。SSD模型是由Wei Liu等人在使用卷積神經(jīng)網(wǎng)絡(CNN)進行目標檢測的研究中,提出的一種改進思路。
SSD用于圖像分類、物體檢測和語義分割等各種深度學習任務。相對于其他目標檢測算法,SSD模型有更高的精度,而且速度也是非??斓?。其主要思路是通過在CNN的最后幾層添加多個預測層實現(xiàn)多尺度的目標檢測,然后通過一個過濾策略對每個檢測框進行篩選,最后輸出最終的檢測結(jié)果。
SSD模型結(jié)構(gòu)分為兩個部分,一個是特征提取網(wǎng)絡,另一個是多尺度檢測網(wǎng)絡。SSD模型可以被應用在各種目標檢測任務中,比如人臉檢測、車輛檢測等。
基本配置和使用代碼
# 配置文件路徑
config_file = 'configs/ssd/ssd300_coco.py'# 模型權(quán)重路徑
checkpoint_file = 'ssd300_coco_20200307-b3c19318.pth'# 創(chuàng)建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')# 測試單張圖片
img = 'test.jpg' # 測試圖片路徑
result = inference_detector(model, img)
# 可視化結(jié)果
show_result_pyplot(model, img, result)
-
參考論文:SSD: Single Shot MultiBox Detector
-
論文鏈接:https://arxiv.org/pdf/1512.02325
RetinaNet
RetinaNet來自FAIR 論文:Focal Loss for Dense Object Detection,其簡要概述為:深入分析了極度不平衡的正負(前景背景)樣本比例導致 one-stage 檢測器精度低于 two-stage 檢測器,基于上述分析,提出了一種簡單但是非常實用的 Focal Loss 焦點損失函數(shù),并且 Loss 設計思想可以推廣到其他領(lǐng)域,同時針對目標檢測領(lǐng)域特定問題,設計了 RetinaNet 網(wǎng)絡,結(jié)合 Focal Loss 使得 one-stage 檢測器在精度上能夠達到乃至超過 two-stage 檢測器。
總的來說,RetinaNet 有兩個大創(chuàng)新:1.Focal Loss,2.RetinaNet網(wǎng)絡。Focal Loss 幾乎已經(jīng)成為 one-stage 算法的標配,而 RetinaNet 網(wǎng)絡結(jié)構(gòu)也是目前主流的目標檢測網(wǎng)絡結(jié)構(gòu),其變體不計其數(shù)。
RetinaNet網(wǎng)絡主要由ResNet作為主干網(wǎng)絡、FPN(特征金字塔網(wǎng)絡)作為 neck、以及分類和邊框回歸子網(wǎng)絡作為head組成。RetinaNet模型的特點是它是一種單階段目標檢測器,與傳統(tǒng)的兩階段檢測器(如Faster R-CNN)相比,它更為簡潔和高效。RetinaNet的結(jié)構(gòu)主要包括三個部分:Backbone、Neck和Head。Backbone通常采用深度卷積神經(jīng)網(wǎng)絡來提取特征,Neck部分用于收集不同尺度的特征圖,而Head則負責生成最終的檢測結(jié)果。
標準的 RetinaNet 骨架網(wǎng)絡采用的是 ResNet 系列。由于骨架本身沒有限制,MMDetection 中目前提供的預訓練權(quán)重所涉及的骨架網(wǎng)絡包括:ResNet50-Caffe、ResNet50-Pytorch、ResNet101-Caffe、ResNet101-Pytorch、ResNeXt101,非常豐富。
MMDetection RetinaNet包括了詳細的配置和參數(shù)設置,這使得用戶可以根據(jù)自己的需求靈活地調(diào)整模型。例如,用戶可以自定義Backbone網(wǎng)絡、調(diào)整錨點生成策略、選擇不同的損失函數(shù)等。
基本配置和使用代碼
# 配置文件路徑
config_file = 'configs/retinanet/retinanet_r50_fpn_1x_coco.py'
# 模型權(quán)重路徑
checkpoint_file = 'retinanet_r50_fpn_1x_coco_20200130-c2398f9e.pth'# 創(chuàng)建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')# 測試單張圖片
img = 'test.jpg' # 測試圖片路徑
result = inference_detector(model, img)
# 可視化結(jié)果
show_result_pyplot(model, img, result)
-
參考論文:Focal Loss for Dense Object Detection
-
論文鏈接:https://arxiv.org/abs/1708.02002
Faster R-CNN?
Faster R-CNN是目標檢測領(lǐng)域最為經(jīng)典的方法之一,通過 RPN(Region Proposal Networks) 區(qū)域提取網(wǎng)絡和 R-CNN 網(wǎng)絡聯(lián)合訓練實現(xiàn)高效目標檢測。其簡要發(fā)展歷程為:R-CNN?Fast R-CNN?Faster R-CNN。
Faster R-CNN是在Fast R-CNN基礎(chǔ)上引入了RPN,Faster R-CNN 的出現(xiàn)改變了整個目標檢測算法的發(fā)展歷程。之所以叫做 two-stage 檢測器,原因是其包括一個區(qū)域提取網(wǎng)絡 RPN 和 RoI Refine 網(wǎng)絡 R-CNN,同時為了將 RPN 提取的不同大小的 RoI 特征圖組成 batch 輸入到后面的 R-CNN 中,在兩者中間還插入了一個 RoI Pooling 層,可以保證任意大小特征圖輸入都可以變成指定大小輸出。簡要結(jié)構(gòu)圖如下所示:
由于 Faster R-CNN 是后續(xù)各個算法的 baseline 且用途非常廣泛,OpenMMLab 提供了非常多的模型配置供研究或者不同任務 fintune 用,幾乎覆蓋了所有常用配置,如下所示:
-
1x、2x 和 3x 的模型配置和權(quán)重;
-
多尺度訓練配置和權(quán)重;
-
不同骨架的配置和權(quán)重;
-
PyTorch 和 Caffe style 的配置和權(quán)重;
-
各種 loss 對比配置和權(quán)重;
-
不包含 FPN 的 Faster R-CNN 配置和權(quán)重;
-
常用類別例如 person 的配置和權(quán)重,可作為下游任務例如行人檢測的預訓練權(quán)重,性能極佳。
基本配置和使用代碼
# 測試單張圖片
img = 'path/to/test/image.jpg' # 圖片路徑
result = inference_detector(model, img)# 可視化結(jié)果
show_result_pyplot(model, img, result)# 如果你需要批量處理圖片,可以使用以下代碼
# images = ['path/to/image1.jpg', 'path/to/image2.jpg', ...]
# for img in images:
# result = inference_detector(model, img)
# show_result_pyplot(model, img, result)
-
參考論文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
-
論文鏈接:https://arxiv.org/pdf/1506.01497
Mask R-CNN
在 FPN 提出后,Kaiming He 等進一步對其進行任務擴展,提出了 Mask R-CNN,通過新增 mask 掩碼分支實現(xiàn)實例分割任務,其最大特點是任務擴展性強,通過新增不同分支就可以實現(xiàn)不同的擴展任務。例如可以將 mask 分支替換為關(guān)鍵點分支即可實現(xiàn)多人姿態(tài)估計。除此之外,為解決特征圖與原始圖像上的 RoI 不對準的問題,提出了 ROIAlign 模塊。
Mask R-CNN 和 Faster R-CNN 的區(qū)別主要包括兩個方面:
-
R-CNN 中額外引入 Mask Head,從而可以實現(xiàn)實例分割任務;
-
針對特征圖與原始圖像上的 RoI 不對準問題,提出了 RoIPool 的改進版本 RoIAlign 。
Mask R-CNN 易于推廣到其他任務例如,我們可以在同一框架內(nèi)實現(xiàn)多人姿態(tài)估計。我們在 COCO 整套挑戰(zhàn)賽的所有三個賽道上都取得了優(yōu)異成績,包括實例分割、邊界框?qū)ο髾z測和人物關(guān)鍵點檢測。在沒有任何附加功能的情況下,Mask R-CNN 在每項任務中的表現(xiàn)都優(yōu)于所有現(xiàn)有的單一模型參賽者,包括 COCO 2016 挑戰(zhàn)賽的獲獎者。我們希望我們簡單有效的方法能成為一個堅實的基線,并為未來的實例級識別研究提供幫助。
基本配置和使用代碼
# 配置文件路徑
config_file = 'configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py'
# 模型權(quán)重路徑
checkpoint_file = 'mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth'# 創(chuàng)建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')# 測試單張圖片
img = 'test.jpg' # 測試圖片路徑
result = inference_detector(model, img)
# 可視化結(jié)果
show_result_pyplot(model, img, result)
-
參考論文:Mask R-CNN
-
論文鏈接:https://arxiv.org/pdf/1703.06870
Cascade R-CNN
Cascade R-CNN,即級聯(lián)區(qū)域卷積神經(jīng)網(wǎng)絡,是一種高效的目標檢測算法。它的出現(xiàn)解決了傳統(tǒng)R-CNN系列算法在處理小目標、重疊目標和背景混雜等復雜場景時的困擾。Cascade R-CNN通過多階段精細化的檢測過程,克服了單階段處理器在處理復雜場景時的不足,顯著提升了目標檢測的性能。
在目標檢測中,需要使用IoU閾值來區(qū)分正負樣本。一個使用低IoU閾值(比如0.5)訓練的目標檢測器,往往會產(chǎn)生噪聲檢測結(jié)果。但是,增加IoU閾值往往又會導致檢測性能下降。這主要是由于兩個原因:①在訓練過程中,正樣本數(shù)目呈指數(shù)級減少而導致過擬合;②推理過程中,訓練檢測器時的IoU和預測結(jié)果時的IoU不匹配(mismatch,這一點后面會具體解釋)。針對這些問題,論文中提出了一種多階段目標檢測結(jié)構(gòu)Cascade R-CNN。它由一系列隨著IoU閾值增加訓練而成的檢測器組成,對close false positives具有更高的選擇性。這個算法是分階段訓練的,每個階段的檢測器的輸出都會獲得一個更好的分布,從而以該輸出作為新的輸入來訓練下一個更高質(zhì)量的檢測器。通過逐步改進預測輸出結(jié)果的重采樣可以保證所有檢測器在訓練時都有一個大小相當?shù)恼龢颖炯?#xff0c;從而減少了過擬合問題。在推理階段會采用相同的級聯(lián)過程,使得每個階段的hypotheses和detector quality更加匹配。Cascade R-CNN在COCO數(shù)據(jù)集上的表現(xiàn)超過了所有單階段目標檢測模型。實驗表明,Cascade R-CNN適用于不同的檢測器結(jié)構(gòu),并且取得了一致性的提升。
Cascade R-CNN與Faster R-CNN流程對比圖,如下圖所示。
論文中提出了多階段/多閾值的cascade rcnn網(wǎng)絡,主要目的就是通過級聯(lián)的、逐漸提升iou閾值的head,有選擇性的抑制很相近的假陽樣本(close false positives), 尤其是“close but not correct” bounding boxes,從而提升整體檢測效果。該網(wǎng)絡結(jié)構(gòu)清晰,效果顯著,并且能簡單移植到其它detector中,帶來2-4%的性能提升。
基本配置和使用代碼
# 配置文件路徑
config_file = 'configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py'
# 模型權(quán)重路徑
checkpoint_file = 'cascade_rcnn_r50_fpn_1x_coco_20200316-3dc56deb.pth'# 創(chuàng)建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')# 測試單張圖片
img = 'test.jpg' # 測試圖片路徑
result = inference_detector(model, img)
# 可視化結(jié)果
show_result_pyplot(model, img, result)
-
參考論文:Cascade R-CNN: High Quality Object Detection and Instance Segmentation
-
論文鏈接:https://arxiv.org/pdf/1906.09756
總結(jié)
MMDetection計算機視覺系列模型在目標檢測領(lǐng)域不斷刷新紀錄,從精度到效率均取得了顯著成就,推動了多個領(lǐng)域的AI發(fā)展。
值得一提的是,Coovally模型訓練平臺涵蓋了國內(nèi)外開源社區(qū)1000+模型算法,本期文章中的SSD、Faster R-CNN等熱門算法全部包含,用戶可一鍵進行下載。