目標檢測神器mmdetection

2020-09-05 機器學習之路

mmdetection


GitHub地址:

mmdetection是商湯香港中文大學基於pytorch開源的一個深度學習目標檢測工具,包括了RPNFast R-CNNFaster R-CNNMask R-CNNSSDRetinaNet以及Cascade R-CNN等,還包括了各種提取特徵的主幹網絡ResNetResNextSENetVGGHRNet,還有包括了其它的特徵如DCNGroup NormalizationSoft-NMSGeneralized Attention等,mmdetection已經成為目標檢測競賽的必備工具。


網絡

模型下載

模型下載地址:

mmdetection提供了很多的預訓練模型,模型是基於COCO_2017_train訓練的,在COCO_2017_val上測試的,通過8 NVIDIA Tesla V100 GPU訓練的,訓練時每個batch size為16(每塊顯卡2張圖片)。默認下載地址使用的是AWS的鏡像,速度可能比較慢,大家可以改為阿里雲鏡像,將下載連結中的https://s3.ap-northeast-2.amazonaws.com/open-mmlab改為https://open-mmlab.oss-cn-beijing.aliyuncs.com,經過測試部分模型下載不支持阿里雲鏡像。


Cascade R-CNN模型

環境要求

  • Linux
  • Python3.5+
  • Pytorch1.1+
  • CUDA9.0+
  • NCCL 2
  • GCC(G++)4.9+
  • mmcv

安裝

mmdetection安裝需要先安裝anaconda,具體安裝步驟我這裡就不重複的

  • 創建conda虛擬環境

conda create -n open-mmlab python=3.7 -yconda activate open-mmlab

  • 安裝pytorch

conda install pytorch torchvision -c pytorch

上面安裝命令默認安裝的是最新的pytorch,安裝的時候需要先看自己cuda的版本,通過nvcc -V可以查看也可以直接通過cat /usr/local/cuda/version.txt查看,如果是cuda9.0請用下面的命令安裝

conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=9.0 -c pytorch

  • 下載mmdetection項目

git clone https://github.com/open-mmlab/mmdetection.gitcd mmdetection

  • 安裝mmcv

pip install mmcvpython setup.py develop 34;pip install -v -e .&step1 找到你環境的安裝目錄 pip --version

使用預訓練模型進行測試

這裡需要先根據之前提供的模型下載地址先下載預訓練模型

from mmdet.apis import init_detector, inference_detector, show_resultimport mmcvconfig_file = &39;checkpoint_file = &39;39;cuda:0& test a single image and show the resultsimg = &39; visualize the results in a new windowshow_result(img, result, model.CLASSES)39;result.jpg& test a video and show the resultsvideo = mmcv.VideoReader(&39;)for frame in video: result = inference_detector(model, frame) show_result(frame, result, model.CLASSES, wait_time=1)

訓練自己的模型

  • 標記數據

如果我們想要在自己的數據集上訓練一個目標檢測模型,我們需要先標記數據可以使用labelmelabelImg工具進行標記

  • 數據格式

利用mmdetection/mmdet/datasets/custom.py類來加載數據,數據格式如下,我們需要將所有的圖片和對應的標籤文件最終合成一個下面這樣數據格式的文件,可以自己寫一個腳本來進行轉換

Annotation format: [ { &39;: &39;, &39;: 1280, &39;: 720, &39;: { &39;: <np.ndarray> (n, 4), &39;: <np.ndarray> (n, ), &39;: <np.ndarray> (k, 4), (optional field) &39;: <np.ndarray> (k, 4) (optional field) } }, ... ]

  • 配置文件設置

根據自己選擇的模型在mmdetection/configs/目錄下找到對應的配置文件,可以根據自己的需要去修改一些參數網絡的結構,這裡有幾個參數是必須要注意一下dataset_type,根據自己選擇的數據格式進行修改,如果你使用的datasets文件是custom.py,就需要改為dataset_type = &39;,就是對應文件裡面dataset的類名

data_root:為數據存放的目錄

ann_file:就是上面合成數據文件的路徑

img_prefix:圖片存放的路徑

checkpoint_config = dict(interval=1):保存模型間隔的epoch,為1表示每次epoch之後都保存模型

total_epochs:迭代總的epoch次數

work_dir:模型的保存目錄

load_from:預訓練模型的目錄,epoch從0開始訓練

resume_from:重新訓練模型的目錄,根據保存模型時的epoch開始訓練

  • 訓練模型

單個GPU訓練

python tools/train.py ${CONFIG_FILE}

多GPU訓練

./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments]

可選參數:

  • --validate:每多少次epoch,在驗證集上評估一下結果,默認是1
  • --work_dir:模型的保存目錄
  • --resume_from ${CHECKPOINT_FILE}:預訓練或重新開始訓練模型的路徑

相關焦點

  • PPDet:減少Anchor-free目標檢測中的標籤噪聲,小目標檢測提升明顯
    本文首發於AI算法修煉營作者 | SFXiang編輯 | 青暮本文介紹一篇收錄於BMVC2020的論文,這篇論文的主要的思想是減少anchor-free目標檢測中的label噪聲,在COCO小目標檢測上表現SOTA!性能優於FreeAnchor、CenterNet和FCOS等網絡。
  • 匯總|基於雷射雷達的3D目標檢測開源項目&數據集
    github上比較好用的3D目標檢測項目。然後分別介紹目前3D目標檢測室內和室外的一些常用數據集;然後介紹一些做研究容易上手的項目,並做一些簡單的異同總結。數據集室內數據集室內3D目標檢測的研究算是一項比較新的研究任務。
  • AAAI 2021 | 用於旋轉目標檢測的動態錨框學習策略
    本文主要是討論旋轉目標檢測中anchor匹配機制的問題和一些思考。  論文地址: arxiv.org/abs/2012.0415.對於旋轉目標檢測而言,預設旋轉anchor要額外引入角度先驗,使得預設的anchor數目成倍增加。  此外,旋轉anchor角度稍微偏離gt會導致IoU急劇下降,所以預設的角度參數很多。(例如旋轉文本檢測RRD設置13個角度,RRPN每個位置54個anchor)。    分類回歸的不一致。
  • SSD目標檢測
    SSD,全稱Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一種目標檢測算法,截至目前是主要的檢測框架之一,相比Faster RCNN有明顯的速度優勢,相比YOLO又有明顯的mAP優勢(不過已經被CVPR 2017的YOLO9000超越)。
  • 做目標檢測,這6篇就夠了:CVPR 2020目標檢測論文盤點
    CVPR 2020 會議上,有哪些目標檢測論文值得關注?目標檢測是計算機視覺中的經典問題之一。憑藉大量可用數據、更快的 GPU 和更好的算法,現在我們可以輕鬆訓練計算機以高精度檢測出圖像中的多個對象。前不久結束的 CVPR 2020 會議在推動目標檢測領域發展方面做出了一些貢獻,本文就為大家推薦其中 6 篇有價值的目標檢測論文。
  • 增加檢測類別?這是一份目標檢測的一般指南
    目標檢測技術作為計算機視覺的重要方向,被廣泛應用於自動駕駛汽車、智能攝像頭、人臉識別及大量有價值的應用上。這些系統除了可以對圖像中的每個目標進行識別、分類以外,它們還可以通過在該目標周圍繪製適當大小的邊界框來對其進行定位。本文作者從圖像識別與目標檢測的區別開始,進一步簡單介紹了目標檢測的基本模塊與實現方法。
  • 目標檢測:Anchor-Free時代
    自從2018年8月CornerNet開始,Anchor-Free的目標檢測模型層出不窮,最近達到了井噴的狀態,宣告著目標檢測邁入了Anchor-Free時代。由於特徵金字塔的特徵表示,不同尺度的目標可以從多個特徵層中檢測到。FoveaBox添加了2個子網絡,一個子網絡預測分類,另一個子網絡預測bbox。Object Fovea目標的中央凹如上圖所示。目標中央凹只編碼目標對象存在的概率。為了確定位置,模型要預測每個潛在實例的邊界框。
  • Python|運動目標檢測
    常用的運動目標檢測方法——幀差法幀差法將鄰近幀圖像相減濾除圖像中的靜止景物得到運動區域,其對環境的光線變化不敏感並可快速檢測出運動目標,但對於運動物體速度太慢的情況則產生不完整的「空洞」現象,太快又易於生成「拖尾」現象,其之後的補償處理比較複雜。
  • 首個基於Transformer的目標檢測模型上線,大目標檢測超越Faster R...
    新智元報導   編輯:元子   【新智元導讀】Facebook AI Research的六名成員研究了近期非常流行的Transformer神經網絡架構,創建了一個端到端的目標檢測研究員聲稱這種方法簡化了目標檢測模型的創建,並減少了對手工組件的需求。   Facebook AI Research的六名成員研究了近期非常流行的Transformer神經網絡架構,創建了一個端到端的目標檢測AI。研究員聲稱這種方法簡化了目標檢測模型的創建,並減少了對手工組件的需求。
  • 北大校友出品:顯著性目標檢測工具,AI生成肖像畫,精細到毛髮
    「不過,看來你的要求還挺高,這樣,給你推薦一個高階版神器吧」。一句話,這是用的什麼神器?」 「我發給你,就是用的這款AI工具...........%¥#%@#,它的研發者還是我們北大....」 話還沒說完,小A就把他的成果圖發給了我。
  • TF2目標檢測API
    Tensorflow目標檢測簡介最近目標檢測(OD)的改進是由工業界廣泛採用該技術所推動的。汽車製造商使用目標檢測來幫助車輛自主駕駛道路,醫生使用它改進診斷過程,農民使用它來檢測各種農作物疾病……還有許多其他的使用案例(尚未發現),OD可以提供巨大的價值。
  • 目標檢測(一)——RCNN算法
    原創課程,第一時間送達 前言 傳統目標檢測算法: 傳統的目標檢測算法大部分是通過不同大小的滑動窗口掃描圖片,然後進行特徵提取,最後使用分類器分類,這樣做的缺點是: 1)基於滑動窗口的區域選擇策略沒有針對性,時間複雜度高,
  • 5個步驟實現目標檢測
    目標檢測技術是當今計算機視覺領域的發展趨勢。在場景圖像和視頻中,有許多方法被用來檢測物體。在資源和執行時間方面,每種技術都有自己的優勢和局限性。檢測視頻中的物體也需要大量的技術知識和資源。我們將在本任務中使用pixellib庫,該庫使用實例分割檢測對象。我們還將使用預訓練Mask R-CNN模型來識別視頻中看到的物體。在這個實現中,我們將檢測交通視頻中的車輛對象。實例分割實例分割是計算機視覺中的一種技術,它利用圖像分割的方法進行目標檢測。
  • 計算機視覺目標檢測的框架與過程
    目標檢測分為以下幾個步驟:1、訓練分類器所需訓練樣本的創建:訓練樣本包括正樣本和負樣本;其中正例樣本是指待檢目標樣本(例如人臉或汽車等那麼訓練分類器可以理解為分類器(大腦)通過對正樣本和負樣本的觀察(學習),使其具有對該目標的檢測能力(未來遇到該目標能認出來)。從數學來表達,分類器就是一個函數y=f(x),x是某個事物的特徵,y是類別,通俗的說就是例如,你輸入張三的特徵x1,分類器就給你認出來這個是張三y1,你輸入李四的特徵x2,它就給你認出來這個是李四y2。
  • 使用PyTorch實現目標檢測與跟蹤
    本文將展示如何使用預訓練的分類器檢測圖像中的多個對象,並在視頻中跟蹤它們。 圖像中的目標檢測 目標檢測的算法有很多,YOLO跟SSD是現下最流行的算法。在本文中,我們將使用YOLOv3。
  • CVPR 2020 目標檢測論文精選
    字幕組雙語原文:CVPR 2020 目標檢測論文精選英語原文:CVPR 2020: The Top Object Detection Papers翻譯:雷鋒字幕組(李珺毅、沫年惜雪)一、基於在點雲上的3D目標檢測的分層圖形網絡原文標題:A Hierarchical Graph Network for 3D Object
  • 目標檢測之公開圖像數據集
    在PASCALVOC中是多任務的,包括圖像分類,目標檢測,語義分割和行為檢測。在目標檢測中有兩個Pascal-VOC版本:VOC07和VOC12,其中前者有5k張圖像和27k個被標註目標,後者則有11k張圖像和27k個被標註的目標。
  • 運動目標檢測及兩種常用方法簡介
    運動目標檢測在對視頻或圖像序列進行分析時,運動目標檢測的主要任務是: 判斷視頻圖像序列中每一幀有無對應的前景目標能否將對應的前景目標的特徵提取出來,並將前景目標顯示出來。只有檢測到了前景目標才能對其進行跟蹤與後續的相關分析處理,因此目標檢測是目標跟蹤處理的基礎。
  • 目標檢測|SSD原理與實現
    前言目標檢測近年來已經取得了很重要的進展,主流的算法主要分為兩個類型(參考RefineDet):(1)two-stage方法,如R-CNN系算法,其主要思路是先通過啟發式方法(selective search)或者CNN網絡(RPN)產生一系列稀疏的候選框,然後對這些候選框進行分類與回歸,two-stage
  • 融合視頻目標檢測與單目標、多目標跟蹤,港中文開源視頻感知平臺
    該框架基於 PyTorch 寫成,支持單目標跟蹤、多目標跟蹤與視頻目標檢測,目前已開源。GitHub 地址:https://github.com/open-mmlab/mmtrackingMMTracking 效果展示。據介紹,MMTracking 具備以下主要特性:1.