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