1. 程式人生 > >可變卷積Deforable ConvNet 遷移訓練自己的數據集 MXNet框架 GPU版

可變卷積Deforable ConvNet 遷移訓練自己的數據集 MXNet框架 GPU版

pascal classes sdn 獲取數據 ide 實驗 one sets div

【引言】 最近在用可變卷積的rfcn 模型遷移訓練自己的數據集, MSRA官方使用的MXNet框架

環境搭建及配置:http://www.cnblogs.com/andre-ma/p/8867031.html

一 參數修改:

1.1 ~/Deformable-ConvNets/experiments/rfcn/cfgs/resnet_v1_101_voc0712_rfcn_dcn_end2end_ohem.yaml 文件中修改兩個參數 (yaml文件包含對應訓練腳本的一切配置信息和超參數

一個使用GPU個數

gpus: ‘0,1‘ 表示用兩塊GPU訓練

另一個是樣本類別數

NUM_CLASSES: 5 樣本類別數需 + 1 因為有背景

還有要修改使用的數據集

image_set: 2007_trainval 單單使用VOC2007 若是 image_set: 2007_trainval+2012_trainval 則用VOC2007 和 VOC2012兩個數據集

1.2 修改 ~/Deformable-ConvNets/lib/dataset/pascal_voc.py 文件中的樣本標簽類別

self.classes = [‘__background__‘, ‘tiger_beetle‘, ‘scarab‘, ‘stinkbug‘,‘moth‘] 和上面對應,加上背景一共為5類

二 數據集準備及制作

2.1 獲取數據,這個自己準備,可以用爬蟲在互聯網上爬取,或用其他方式收集,推薦幾個圖片爬蟲 : 百度圖片爬蟲 必應圖片爬蟲

2.2 標註圖片信息,在做目標檢測時需要coco數據集或VOC數據集,可用labelImg等圖像標註工具標註圖片:labelImg鏈接:https://github.com/tzutalin/labelImg

【這裏簡單介紹下VOC數據格式】 參考:https://blog.csdn.net/julialove102123/article/details/78330752

VOC數據集的組織架構如下:

  • VOC2007的目錄結構為:

    ├── Annotations xml文件
    ├── ImageSets txt文件
    └── JPEGImages 圖片

  • ImageSets的目錄結構為:

    ├── Layout
    ├── Main
    └── Segmentation

LabelImg可在多個平臺下配置,但要註意各軟件依賴的版本號:通常是python=3.5 pyqt=4 依賴lxml

Ubuntu16.04 配置labelImg教程:https://blog.csdn.net/lightningqw/article/details/78944941 (ubuntu系統下確實是不能用中文,結果發現在windows下以上的方法可以帶中文)

2.3 排查並刪除所有錯誤jpg格式

通過後綴名來判斷jpg格式文件雖然簡單,但是有時候會出錯,尤其是從互聯網上獲取的圖片,其質量更是難以保證。

python的PIL工具提供對jpg格式文件的判斷方法:https://blog.csdn.net/qiyuanxiong/article/details/77943578

(ps: 刪除不合格jpg時,記得要對應刪除xml文件信息哦~)

2.3 生成4個txt

train.txt val.txt trainval.txt test.txt 四txt:生成及介紹:https://blog.csdn.net/Bankeey/article/details/76595884

train:val:test = 1: 1: 2 trainval是train和val的並集,即 train:val:trainval = 1:1:2 【訓練、驗證、測試流程詳解】

如何制作自己的VOC2007數據集:https://www.jianshu.com/p/b498a8a5a4f4

三 遷移訓練

熟悉可變卷積Deformable-ConvNets 的老鐵們,可知在experiments文件夾下是不同模型的project

如本實驗使用rfcn模型遷移訓練,cd Deformable-ConvNets目錄,執行下面代碼,開始訓練!

python experiments/rfcn/rfcn_end2end_train_test.py --cfg experiments/rfcn/cfgs/resnet_v1_101_voc0712_rfcn_dcn_end2end_ohem.yaml

【總結】

1.用自己的數據集遷移訓練可變rfcn模型,主要核心問題是數據集,數據集要有數量質量

2.使用可變rfcn遷移訓練,關鍵要熟悉流程,以及需要修改的文件和參數

3.遇到問題時不要慌,有時候一著急反而容易把問題復雜化,或是本來快要找到解決問題的正確方法,卻因另一個小問題掩蓋了真正要解決的問題

anyway: 安息為王~ :)

本文參考:https://blog.csdn.net/yiweibian/article/details/67634584

可變卷積Deforable ConvNet 遷移訓練自己的數據集 MXNet框架 GPU版