【心得】深度學習入門——訓練並測試自己資料集
經過幾天的努力,成功訓練自己的資料集,並進行了單張圖片的測試。
訓練過程中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