MMDetection v2.0 訓練自己的數據集

2021-01-15 CVer

點擊上方「CVer」,選擇加"星標"置頂

重磅乾貨,第一時間送達

本文者:cjsnx shsb

https://zhuanlan.zhihu.com/p/162730118

本文已由原作者授權,不得擅自二次轉載

上一次安裝mmdetection的docker環境離現在已經快一個月了,本來打算隔三五天記錄一下,然後一直拖延到現在都沒記錄更新。。。。這個項目是打算記錄安裝環境,訓練模型最後到源碼解析。

1 新建容器

進入正題 mmdetection docker環境上次已經介紹一次了 ,現在我們新建一個容器

sudo nvidia-docker run -shm-size=8g -name mm_det -it -v /train_data:/mmdetection/data

nvidia-docker:新建容器能調用GPU

-name : 容器名稱 可自行修改

-v :映射宿主目錄到容器目錄, /train_data 是宿主目錄,映射到容器目錄 /mmdetection/data

退出容器

exit

重新進入容器

sudo docker exec -i -t mm_det /bin/bash

doxker exec :在運行的容器中執行命令

-i -t : 交互模式執行

mm_det : 容器名稱

/bin/bash :執行腳本

2 準備自己的VOC數據集

mmdetection 支持VOC數據集,還有COCO數據集格式,還可以自定義數據格式,現在我們採用VOC的數據格式,mm_det容器已經映射宿主目錄了,在宿主目錄/train_data,新建目錄存放數據集,可在容器內/mmdetection/data裡在操作,新建目錄結構如下

VOCdevkit

--VOC2007

----Annotations

----ImageSets

-Main

----JEPGImages

Annotations 目錄存放.xml文件,JEPGImages 存放訓練圖片,劃分數據集使用以下代碼,

代碼保存在/VOCdevkit/VOC2007 目錄下 ,直接執行

import os
import random

trainval_percent = 0.8
train_percent = 0.8
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)

num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)

ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')

for i in list:
name = total_xml[i][:-4] + '\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)

ftrainval.close()
ftrain.close()
fval.close()
ftest.close()

上述代碼分割數據集,訓練集佔80%,測試集佔20% 運行代碼後可在/VOCdevkit/VOC2007/ImageSets/Main看見三個.txt文件

三個.txt文件裡面分別是訓練測試圖片名稱的索引,數據集準備到這就完成了

3 修改 VOC0712.py 文件

cd /mmdetection/configs/_base_/datasets

進入目錄後打開voc0712.py

在data的配置 要刪除屏蔽VOC2012的路徑,和VOC2012變量 保存文件

4 修改 voc.py 文件

cd /mmdetection/mmdet/datasets

打開 voc.py文件

這個CLASSE 是VOC標籤的類別 我們要換成自己數據集的類別標籤

5 修改class_names.py 文件

cd /mmdetection/mmdet/core/evaluation

打開 class_names.py 文件

修改 voc_classes() 函數返回的標籤,換成自己數據集的標籤 保存退出

6 修改 faster_rcnn_r50_fpn_1x_coco.py

cd mmdetection/configs/faster_rcnn

我們這次選用faster_rcnn 模型訓練,打開faster_rcnn_r50_fpn_1x_coco.py文件

faster_rcnn_r50_fpn_1xcoco.py文件裡面調用了三個文件,第一個是模型配置文件,第二個是數據集配置文件,後來兩個是配置學習率,迭代次數,模型加載路徑等等,我們把原來COCO_detection.py 修改成VOC0712.py 文件

7 修改faster_rcnn_r50_fpn.py

cd /mmdetection/configs/_base_/models

打開 faster_rcnn_r50fpn.py 文件 ,修改num_classes 數量,num_classes 的值等於類別數量,不需要加背景了

以上就是需要修改的內容,修改完成後開始訓練模型

8 訓練模型

python3 ./tools/train.py ./configs/faster_rcnn_r50_fpn_1x.py

訓練完成後可以參考/mmdetection/demo/image_demo.py文件進行測試

以上就是使用自己的數據集集訓練mmdetection faster_rcnn模型的所有內容


下載1


在CVer公眾號後臺回覆:PRML,即可下載758頁《模式識別和機器學習》PRML電子書和源碼。該書是機器學習領域中的第一本教科書,全面涵蓋了該領域重要的知識點。本書適用於機器學習、計算機視覺、自然語言處理、統計學、計算機科學、信號處理等方向。


PRML


下載2


在CVer公眾號後臺回覆:CVPR2020,即可下載CVPR2020 2020代碼開源的論文合集

在CVer公眾號後臺回覆:ECCV2020,即可下載ECCV 2020代碼開源的論文合集


重磅!CVer-目標檢測 微信交流群已成立


掃碼添加CVer助手,可申請加入CVer-目標檢測 微信交流群,目前已匯集4100人!涵蓋2D/3D目標檢測、小目標檢測、遙感目標檢測等。互相交流,一起進步!


同時也可申請加入CVer大群和細分方向技術群,細分方向已涵蓋:目標檢測、圖像分割、目標跟蹤、人臉檢測&識別、OCR、姿態估計、超解析度、SLAM、醫療影像、Re-ID、GAN、NAS、深度估計、自動駕駛、強化學習、車道線檢測、模型剪枝&壓縮、去噪、去霧、去雨、風格遷移、遙感圖像、行為識別、視頻理解、圖像融合、圖像檢索、論文投稿&交流、PyTorch和TensorFlow等群。


一定要備註:研究方向+地點+學校/公司+暱稱(如目標檢測+上海+上交+卡卡),根據格式備註,可更快被通過且邀請進群

▲長按加群


▲長按關注我們

整理不易,請給CVer點讚和在看

相關焦點

  • mmdetection使用目標檢測工具箱訓練,測試
    易用性更好: 基於 PyTorch 和基於 Caffe2 的 code 相比,易用性是有代差的。與 mmdetection 一起開源的還有一個基礎庫——mmcv。三、訓練自定義的dataset相信大家用這個mmdetection都不只是為了嘗嘗鮮試一下的吧,所以這裡分享下我訓練自定義的數據集的過程記錄。先給大家看一下我的整個mmdetection文件夾的內容。
  • MMDetection 入門|二
    預訓練模型的推論我們提供測試腳本來評估整個數據集(COCO,PASCAL VOC等)以及一些高級api,以便更輕鬆地集成到其他項目。測試檢測器的魯棒性請參考ROBUSTNESS_BENCHMARKING.md操作方法使用我自己的數據集最簡單的方法是將數據集轉換為現有的數據集格式(COCO或PASCAL VOC)。
  • MMDetection新版本V2.7發布,支持DETR,還有YOLOV4在路上!
    其實transformer主要適合處理的數據輸入是a set of objects,就是一坨東西然後attention。具體到目標檢測問題上,因為detection的輸出更是a set of objects,這簡直不能和transformer更契合了:
  • mmdetection最小復刻版(六):FCOS深入可視化分析
    論文名稱:FCOS: A simple and strong anchor-free object detector論文地址:https://arxiv.org/pdf/2006.09214v3.pdf論文名稱:FCOS: Fully Convolutional One-Stage Object Detection論文地址:https://arxiv.org/
  • 商湯科技正式開源 mmdetection 和 mmcv
    憑藉以上事件,商湯科技在雷鋒網旗下學術頻道 AI 科技評論資料庫產品「AI 影響因子」上有相應加分。據悉,mmdetection 檢測庫是基於商湯在 COCO 比賽(Detection 2018 winner)時的 codebase 重構,這個開源庫提供了已公開發表的多種視覺檢測核心模塊,通過這些模塊的組合,可以迅速搭建出各種著名的檢測框架。
  • PyTorch版YOLOv4更新了,適用於自定義數據集
    從今年 4 月 YOLOv4 發布後,對於這個目標檢測框架,問的最多的問題或許就是:「有沒有同學復現 YOLOv4 的, 可以交流一下麼」。由於原版 YOLO 使用 C 語言進行編程,光憑這一點就讓不少同學望而卻步。網上有很多基於 TF/Keras 和 Caffe 等的復現版本,但不少項目只給了代碼,並沒有給出模型在 COCO、PASCAL VOC 數據集上的訓練結果。
  • 谷歌開源TensorFlow Object Detection API物體識別系統
    創造能夠在同一張圖片裡定位和識別多種物體的機器學習模型一直是業內的核心挑戰之一,谷歌宣稱自己已投入大量時間訓練和實驗此類系統。其中一個模型在示例圖片中(來自 COCO 數據集)對象識別的效果2016 年 10 月,谷歌內部的物體識別系統達到了業內最佳水平,在 COCO 識別挑戰中名列第一。
  • 遙感影像變化檢測數據集
    遙感影像中變化檢測數據集1. S2MTCP2. Hi-UCD3. SECOND4. CD_Data_GZ5. LEVIR-CD6. LEVIR-CD+7.SLADCD8. HRSCD9. Mts-WH10. WHU Building Change detection Dataset11.
  • 資源| 微軟官方整理:用於Azure機器學習的免費數據集
    你可以直接將這些數據集拖拽到實驗畫布而將它們應用到你自己的實驗中。 餐館評分數據集 包含用戶給出的對餐館的評價,等級從 0 到 2 劃分。 用途:使用該數據集,結合其他兩個餐飲數據集,可訓練並預測推薦系統。
  • 使用OpenCV和Python構建自己的車輛檢測模型
    你可以為目標檢測訓練一個深度學習模型,也可以選擇一個預先訓練好的模型並根據你的數據對其進行微調。然而,這些方法都是有監督的學習方法,需要標記數據來訓練目標檢測模型。在本文中,我們將重點討論視頻中無監督的目標檢測方法,即不使用任何標記數據的目標檢測。我們將使用幀差分技術。讓我們了解它是如何工作的!幀差分視頻是一組按正確順序堆疊在一起的幀。
  • 中國地面氣候資料日值數據集V3.0數據說明
    一、數據說明"中國地面氣候資料日值數據集(V3.0)"包含了中國699個基準、基本氣象站1951年1月以來本站氣壓、氣溫、降水量、蒸發量、相對溼度、風向風速、日照時數和0cm地溫要素的日值數據。       從中國氣象數據網下載的"中國地面氣候資料日值數據集(V3.0)"數據是按年-月存放的, 每年每月的所有站點數據每一項氣象要素都放在一個文本文件中。
  • 如何在Keras中訓練大型數據集
    在本文中,我們將討論如何使用Keras在不適合內存的大數據集上訓練我們的深度學習網絡。介紹深度學習算法優於所有其他算法,能夠在大多數問題上產生最先進的結果。深度學習算法成功的主要原因是數據集的大小越來越大。現在,深度學習算法在大型數據集上進行訓練,這些數據集甚至不適合內存。問題是:如何在如此龐大的數據集上訓練我們的模型?
  • 這隻狗,其實是貓變的:「擼貓神器」StarGAN v2來了!
    這次不僅可以人變人,還能實現貓、狗、虎、豹各種動物無縫切換,輸入圖片給進去,想變什麼自己挑!數據集和Github資源已開放。戳右邊連結上新智元小程序了解更多! 貓變狗、狗變虎、虎變豹,男人變女人,無縫切換是個什麼神奇體驗?
  • 基於PyTorch,訓練速度是原來2倍
    不過它是基於Caffe 2深度學習框架編寫的。這一次,在Caffe2項目併入PyTorch半年之後,Facebook換上了更受歡迎的PyTorch框架。除了更改框架,Mask R-CNN Benchmark相比它的「前輩」Detectron,訓練速度提高了一倍。
  • 使用Yolov5進行端到端對象檢測
    在本文中,我們不探討YOLOv5這個名字是否正規,我們只使用YOLOv5創建一個檢測模型,從創建數據集和注釋到使用它們出色的庫進行訓練和推斷。這篇文章主要關注YOLOv5的實現,包括:創建數據集注釋圖像數據創建項目結構訓練YOLOv5創建自定義數據集
  • 使用Multi-Label訓練CNN能否達到Detection的效果?
    作者:我愛機器學習(52ml.net)連結:https://www.zhihu.com/question/52143412/answer/130037578問題在只需要時候輸出image含有object的label而不需要定位的情況下,使用multi-label訓練一個分類網絡(例如 resnet)能否達到object detection的效果。
  • 分析COCO數據集進行姿態估計
    我們需要一個數據集來訓練姿勢估計模型,我們的選擇有像COCO、MPII和CrowdPose這樣的公共數據集,姿態估計屬於比較複雜一類的問題。為神經網絡模型建立一個合適的數據集是很困難的,圖像中每個人的每個關節都必須定位和標記,這是一項瑣碎而費時的任務。目前最流行的姿態估計數據集是COCO數據集。它有大約80類圖像和大約250000個人物實例。
  • PyTorch 0.2發布:更多NumPy特性,高階梯度、分布式訓練等
    高階梯度PyTorch 0.2版本新增的高階梯度計算支持torch.XXX函數和最流行的nnlayers,在下一版本中可能會支持更多類型。為了支持高階梯度,PyTorch 0.2引入了一種編寫函數autograd.Function的新形式,向下兼容舊的函數編寫形式。
  • Unity Perception工具 | 使用合成數據訓練出強大的物體檢測ML模型
    人工監督訓練的機器學習(ML)革新了人工智慧,促成了一系列創新產品落地。然而,人工監督的機器學習需要更大、更複雜的數據集,而搜集這些數據會消耗大量的成本,並且搜集時還會面臨如何保證標籤質量、如何確定數據真實有效等問題。如今,這些問題,尤其是對象檢測,有了一個全新的解決方案:藉助軟體生成大量的合成數據集。
  • 資源| MIT自然語言處理數據集和語料庫集合
    論文:https://arxiv.org/abs/1611.09268 數據:http://www.msmarco.org/ NewsQA:Maluuba 的機器理解數據集,2016。 論文:https://arxiv.org/pdf/1506.02075v1.pdf 數據:http://suo.im/2eiX0O。 WikiQA:一個開放問題與回答的挑戰數據集,由微軟推出,2015。