因為沒有GPU,所以在CPU下訓練自己的數據,中間遇到了各種各樣的坑,還好沒有放棄,特以此文記錄此過程。
1、在CPU下配置faster r-cnn,參考博客:http://blog.csdn.net/wjx2012yt/article/details/52197698#quote
2、在CPU下訓練數據集,需要對py-faster-rcnn內的roi_pooling_layer和smooth_L1_loss_layer改為CPU版本,
並重新編譯。這位博主對其進行了修改,可直接進行替換:http://blog.csdn.net/qq_14975217/article/details/51495844
3、制作自己的VOC數據集,這部分參考博客:http://blog.csdn.net/gvfdbdf/article/details/52214008
4、為防止與之前的模型搞混,訓練前把output文件夾刪除(或改個其他名),還要把py-faster-rcnn/data/cache中的文件和
py-faster-rcnn/data/VOCdevkit2007/annotations_cache中的文件刪除(如果有的話)。
5、訓練前的修改。我的數據集是檢測監控視頻中的人,因此只有背景和人兩類。按着這篇博客進行修改就行了:
http://blog.csdn.net/sinat_30071459/article/details/51332084
還要修改py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt中的solve文件設置,包括stepsize,base_lr,
否則訓練時很容易出現loss=-nan的情況
6、在py-faster-rcnn中訓練
./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc
7、測試
將訓練得到的py-faster-rcnn\output\faster_rcnn_alt_opt\***_trainval中ZF的caffemodel拷貝至
py-faster-rcnn\data\faster_rcnn_models,修改py-faster-rcnn\tools\demo.py(主要是類別的修改
和測試圖片的修改)。運行
python demo.py --cpu
8、結果
可能是我數據量太少且質量不好(1000張),訓練次數不夠(1000×4),檢測效果不太好,在默認閾值下檢測不出來。
當把demo.py中的CONF_THRESH降低到0.1時才檢測出來一張,且速度很慢,大概13秒一張,效果一般。
我將訓練次數增加到了(10000,5000,10000,5000),跑了一天,結果沒有任何改善。