1. 程式人生 > >【心得】深度學習入門——訓練並測試自己資料集

【心得】深度學習入門——訓練並測試自己資料集

經過幾天的努力,成功訓練自己的資料集,並進行了單張圖片的測試。

訓練過程中val準確率約為0.91。看起來效果還比較理想,是否已經過擬合還沒有進行確定。

在訓練過程中,最討厭的就是處理檔案路徑和檔案存放位置。

一、ImageNet分類部分:

caffe模型下有一個example資料夾,我在example資料夾下建立了一個自己的資料夾,fine_tune_my。並將所有的資料都存放在這個資料夾裡。包括:data,model,執行檔案sh。

(1)

在data裡面,包括訓練集、驗證集、平均影象,以及生成dmb的py檔案。

另外,包括一些標明檔案資訊的txt文件。我覺得這些txt文件是最為麻煩的。

(2)

在model裡面,包括訓練網路結構、測試網路結構、訓練引數。

這次的任務是分類出:交通標誌與交通燈。

下一步的目標是:檢測交通標誌與交通燈。會有如下幾個步驟:

(1)準備資料:

1萬張圖片:6000訓練+4000測試。需要轉成VOC2007資料集的標註格式。這個比較簡單,但是需要時間。

(2)調整網路結構:

(3)調整訓練引數,以及網路引數

(4)測試,提交結果

二、Faster rcnn物體檢測部分:

1、準備資料集:

(1)生成output.txt文件,其中內容每行格式如下:000002.jpg dog 44 28 132 121

這一步,包含兩部分:讀取每一張影象,檢測每一張影象包含物體種類,輸出資料。

在程式change.py中進行編寫。

(2)利用下載下來的VOC2007xml.m,生成voc2007資料集中的xml檔案;

(3)將圖片、標註集放在faster rcnn指定資料夾內。

(4)修改faster rcnn網路引數(輸出層、anchor)、訓練引數(batch size),並進行訓練

首先,針對特定資料集,修改網路結構引數,內容包括:

modes下面:faster_rcnn_alt_opt下面的:

stage1_fast_rcnn_train.pt

stage1_rpn_train.pt

stage2_fast_rcnn_train.pt

stage2_rpn_train.pt

faster_rcnn_test.pt

其次,針對特定資料集,修改處理資料部分的引數,包括:

lib/datasets下面的:pascal_voc.py

lib/datasets下面的:imdb.py

最後,針對訓練過程的訓練引數,進行修改:

(batch_size ——lib中faster rcnn的config.py中修改,學習率;——在model裡面修改;max_iters——在tools裡面修改

學習率:

py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt中的solve

迭代次數:rpn第1階段,fast rcnn第1階段,rpn第2階段,fast rcnn第2階段

py-faster-rcnn\tools的train_faster_rcnn_alt_opt.py

py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt裡對應的solver檔案(有4個)也修改,stepsize小於上面修改的數值。

(5)執行測試,並記錄測試結果

首先,先刪除部分歷史干擾資料:

output資料夾刪除(或改個其他名)

py-faster-rcnn/data/cache中的檔案
py-faster-rcnn/data/VOCdevkit2007/annotations_cache中的檔案刪除(如果有的話)

執行訓練語句:

On VGG16: run ./tools/train_net.py --gpu 2 --solver models/VGG16/solver.prototxt --weights data/imagenet_models/VGG16.v2.caffemodel --imdb kaggle_train