tf-faster rcnn 配置 及自己資料
下面主要針對 https://github.com/endernewton/tf-faster-rcnn工程,作者寫的很好,但是對於我這種常識比較少的小白還是會遇到很多問題,所有都是從網上一點點找到的,整理在下面,希望可以減少大家的配置時間。
因為我是在windows10 subsystem ubuntu下跑的,所以沒能用上GPU。下面我先按照我的配置說一遍,後面遇到什麼問題再補充。
一、tf-faster rcnn 配置
2、由於執行在cpu上,所以要進行一些配置
a. 修改lib/setup.py檔案,用‘return None’代替 ‘raise EnvironmentError’;註釋掉Extension(‘nms.gpu_nms’…)整段程式碼。
b.修改lib/model/nms_wrapper.py檔案,註釋掉‘import gpu_nms’並且設定 ‘force_cpu = True’
3、build Cython modules
進入lib資料夾,執行 makeclean make 命令
4、下載VOC資料 https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models
5、下載與訓練模型./data/scripts/fetch_faster_rcnn_models.sh
不知道是不是我網路的問題,我下載不下來,所以我通過文件中的連結下載的
解壓之後放在下圖的位置,並且驗證4個檔案全不全
為什麼是4個檔案呢? 我在網上查到說是tensorflow的模型就產生4個檔案,然後模型的名字是xxxx.ckpt。開始我遇到一個錯誤,我沒有把這個檔案放在這個目錄下,提示我是缺少ckpt.meta檔案,我只把xxxxx.ckpt.meta拷貝過來了,結果就報沒有ckpt檔案,我怎麼找都找不到,結果知道tensorflow模型是4個檔案之後才改正這個錯誤。
6、執行程式的demo ./tools/demo.py
7、Train and test VOC
下載預訓練模型已經train
mkdir -p data/imagenet_weights cd data/imagenet_weights wget -v http://download.tensorflow.org/models/resnet_v1_101_2016_08_28.tar.gz tar -xzvf resnet_v1_101_2016_08_28.tar.gz mv resnet_v1_101.ckpt res101.ckpt cd ../.. ./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc res10
這個地方可能遇到一個錯誤,提示找不到test.txt檔案,我的解決方法就是建立一個test.txt檔案,然後copy一些train.txt的資料到test.txt下面。
二、訓練自己的資料 (我的是人臉檢測資料,相當於就是face和背景的分類)
1、製作VOC資料集
https://www.cnblogs.com/qw12/p/6185126.html
我是根據這個程式碼改的,由於我有標註好的資料,只是格式不同,我只用到了後面兩段程式碼。
2、修改程式碼 (http://blog.csdn.net/flashTianjiao/article/details/78032351?locationNum=4&fps=1#reply)
a.修改 lib/datasets/pascal_voc.py
self._classes = ('__background__', # always index 0
'face')
b.修改tools/demo.py.這裡的數字是類別+1
net.create_architecture("TEST",2,
tag='default',anchor_scales=[8, 16, 32])
3、可以訓練了
./experiments/scripts/train_faster_rcnn.sh0 pascal_voc res101
下面這些包需要安裝,也可以到出現錯誤的時候提示哪個裝哪個.
pip install cython
,pip installopencv-python
, pip installeasydict,
pip install matplotlib, sudo apt-get installpython-tk, sudo pip install Pillow, sudo pip install scipy, pip install pyyaml
三、一些其他問題
1、'max_overlaps' issue on custom dataset!
刪除 data/cache 檔案即可。 Rm -rf data/cache
2、跑自己的資料的時候,遇到assert(boxes[:,2]>=boxes[:,0]).all()
我通過第一種方法就解決了。
3、KeyError:“chair” 這大概是你的資料類別沒有chair,而Annotations中的xml中的name有chair這一類。
這還是在配置完之後馬上寫的,已經有很多都不記得啦!腦子越來越不好使!