Faster-RCNN训练时遇到的问题
1.環境搭建
? ?rbg大神很周到,需要的東西全都有(從硬件的要求,到需要的各種model)
? ?Faster-rcnn:https://github.com/rbgirshick/py-faster-rcnn(在此感謝rbg大神,獻出我的膝蓋)
2.制作數據
? ?推薦:http://blog.leanote.com/post/wjgaas@126.com/Faster-RCNN-%E8%AE%AD%E7%BB%83
? ?按照這個大神的的方法,很容易做出自己的 數據集。有一些具體注意點。
? ?!比如:圖片命名不要用中文;標簽不要有大寫字母;圖片命名要6位數字;圖片格式.jpg。
? ?不知道這些有什么后果,我還是聽話的改了,畢竟大家踩過的坑繞道比較節省時間。
? ?但是他沒給.xml文件批量更改的方法。下面的大神給了個源碼,無腦運行就好了。笑
? ?推薦:https://saicoco.github.io/object-detection-4/
? ?對于他推薦的軟件LabelImg,下面是我自己的小經驗。
2.1.?LabelImg環境搭建
? ?推薦在ubuntu系統下搭建環境。(開始的時候在windows上搭了2天的環境,最后還是放棄了。而在ubuntu系統下根據下面的教程。只用了2小時,基本上是在下載。在家里實驗了mac,15年那款pro,2天放棄。。。。)
? ?教程:http://www.linuxdiyf.com/Linux/14134.html(在此感謝大神分享經驗,省了不少時間)
? ?(這個教程好像,鏈接打不開??梢怨雀枰幌?#xff1a;“ubuntu下qt4+pyqt4+eric4快速安裝,qt4pyqt4_Python教程| 幫客之家”)
? ?? 我用的是教程中的 ? ?5.一次性安裝 ? 。安裝完成后,運行Faster-rcnn官網上的demo,會缺少個model,在網上直接把那個錯誤打出來搜一下有很多教程。(一句命令就可以能好)
? 注意:作為個新手,不推薦在其他系統下搭建環境。搭環境真的很煩。還有個坑,一開始裝的ubuntu 14,東西裝的很順利。但是為了下teamview12,好像是升級了下以后,待機后發現連不上網了。查了下原因,好像說是因為dell電腦不支持ubuntu 16。之后就再也連不上網了。(悲傷的表情)
3.修改代碼
? ?推薦:http://blog.csdn.NET/sinat_30071459/article/details/51332084
? ?咸魚大神的博客簡單易懂。并且對于一些訓練時出現的問題給出了解答。(5星好評)
? ?到這里,如過沒出錯,已經能訓練了。
4.自己碰到的問題(5個)
? 一.
? ?完成第3步以后,我在跑
?./experiments/scripts/faster_rcnn_alt_opt.sh?0?ZF?pascal_voc?
?這句話的時候,報了個很稀奇的錯,而且網上沒找到答案。
?AssertionError: Path does not exist: /home/dl-box/wei/py-faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages/000001.jpg
? 找不到這個路徑,但是我的文件確實放對了地方,而且當我用cd命令的時候可以進入這個文件夾,打開對應的.jpg文件。
? 可能有兩個原因:
? 1.沒有權限對文件操作
? ?解決:chmod -R 777 /home/dl-box/wei/py-faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages/
? 2.可能是編碼問題,要改成utf-8的格式
? ?解決:在這個文件中py-faster-rcnn/lib/datasets/pascal_voc.py的_load_image_set_index下
? ?將?image_index = [x.strip() for x in f.readlines()] 改成?image_index = [x.decode('utf-8-sig').strip() for x in f.readlines()] 就好了。
? ?如果有編碼問題的話可能你還要修改另一個地方,要不test的時候會報錯。
? ?解決:py-faster-rcnn/lib/datasets/voc_eval.py這個文件
? ?將imagenames = [x.strip() for x in lines]改成imagenames = [x.decode('utf-8-sig').strip() for x in lines]
? ?
? 二.
? ?由于沒有計劃多少個標簽(加上背景,我標了98個,捂臉),這個py-faster-rcnn/lib/datasets/pascal_voc.py添加標簽的時候可能有漏掉的。
? ?就會報
? ?KeyError:’漏掉的標簽‘
? ?這個錯?
? ?解決:在這個py-faster-rcnn/lib/datasets/pascal_voc.py下添加漏掉的標簽就好了。
? 三.
? ?運行時又報了個缺少model : ZF.v2.caffemodel?的錯。(我用的是ZF訓練,所以缺少這個caffemodel ,其他訓練的話應該是其他的)
? ?解決:https://people.eecs.berkeley.edu/~rbg/faster-rcnn-data/?(rbg大神的官網什么都有)
? ?下這個imagenet_models.tgz,然后解壓找到ZF.v2.caffemodel?放到py-faster-rcnn\data\faster_rcnn_models下就好了。*如果data文件夾下沒有faster_rcnn_models文件夾,自己建一個就好了。(自己動手,豐衣足食)
? 四.
? ?訓練的最后完事后,遇到個錯誤
? ?Cannot copy param 0 weights from layer 'cls_score'; shape mismatch.? Source param shape is21 4096 (86016); target param shape is2 4096 (8192). To learn this layer's parameters from scratch rather than copying from a saved net, rename the layer.
? 如果出這個錯,說明ZF_faster_rcnn_final.caffemodel這個東西和你現在訓練的模型的類別數不匹配。
? 因為我在訓練自己的數據前用過rbg大神的來跑demo,所以這個是他的.caffemodel,就是標注的紅色部分21各類。
? 后面綠色的是你自己的類的數目。
? *咸魚大神的博客在 ?9.測試 ?這里原話是
? ?將訓練得到的py-faster-rcnn\output\faster_rcnn_alt_opt\***_trainval中ZF的caffemodel拷貝至py-faster-rcnn\data\faster_rcnn_models(如果沒有這個文件夾,就新建一個)
? *跑demo的話會有這個文件夾和這個.caffemodel。新手的一定不要以為是faster-rcnn自動生成了ZF_faster_rcnn_final.caffemodel,名字是一樣的。我以為是自動生成的就出現了上面的這個錯。
?五.
? 都能好了,demo能跑完,但是不出結果。沒有跑rbg大神demo時候的圖片框出現。(有點急,后天就要交稿了,自己的demo還沒跑出來)
? 浪費了一天,后來突發奇想解決了。
? 解決:py/data/faster_rcnn_models文件夾下,還有個VGG16_faster_rcnn_final.caffemodel東西導致機器學不出來。把它移走就可以了。
? (我也忘了是什么時候放到這個文件夾下的了。可能是之前跑rbg大神的demo的時候,也可能是之前搭環境的時候。)
*越南小哥給我的一個建議:(節省時間的小技巧)
? 為了省時間,先運行幾條數據試試水。
? 后來發現,時間跟迭代次數有關,跟數據多少關系好像不大。所以就修改了迭代次數。
??迭代次數可在py-faster-rcnn\tools的train_faster_rcnn_alt_opt.py中修改:
? ??
? ? 分別為4個階段(rpn第1階段,fast rcnn第1階段,rpn第2階段,fast rcnn第2階段)的迭代次數??筛某赡阆M牡螖?。
如果改了這些數值,最好把py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt里對應的solver文件(有4個)也修改,stepsize小于上面修改的數值。
? 我改的比較極端[40,20,40,20],一路跑下來到最后的時候會有另一個錯。
File "/home/dl-box/wei/py-faster-rcnn/tools/../lib/datasets/voc_eval.py", line 149, in voc_eval BB = BB[sorted_ind, :] IndexError: too many indices for array 這個錯是說沒有學習到東西,我用了[4000,2000,4000,2000]試了一下也不行。不過能看到這個錯誤,如果你的數據集做的沒有問題的話,用[80000,40000,80000,40000](親測大概16小時,1341張圖)運行你自己的數據集就沒問題了。為了省時間我用的是[40000,20000,40000,2000](大概8小時,50張圖)。這個時間好像與圖片大小和圖片數量關系不大。感覺只與迭代次數有關。
? ?到這是我經歷的各種坑。一個小白的心路歷程,希望大家不要再踩了。(捂臉)
? *還有個我自己的小技巧:沒有什么事是上心了還做好的。這兩天,睡覺5點都會驚醒,然后穿上衣服直奔研究室。
這是我做的數據(我只用了50張訓練2個類,samurai和背景。最后的結果不是很理想,框子有點大??赡苁菙祿粔虻脑?#xff09;
這是我的結果
總結
以上是生活随笔為你收集整理的Faster-RCNN训练时遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决faster-rcnn中训练时ass
- 下一篇: Faster RCNN解析