MMDetection v2.0 訓練自己的voc資料集
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模型的所有內容
轉載:https://zhuanlan.zhihu.com/p/162730118