win7 環境下實現faster-rcnn
各軟件版本 cuda9.0,python3.5,tensorflow-gpu1.6.0,。因為網上代碼基本上都是在python3.5環境下實現的,原本安裝了cuda9.0,不想再換就試tensorflow的版本,發現tensorflow-gup1.6.0可以用。
1.首先上win7環境下代碼https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5
2.安裝python各種依賴庫(cython, opencv-python, easydict)
3. 在cmd中使用cd命令到解壓後的文件夾下../data/coco/PythonAPI目錄下,執行以下代碼:
cd C:\Users\master\Downloads\Faster-RCNN-TensorFlow-Python3.5-master\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI python setup.py build_ext --inplace python setup.py build_ext install |
4.下載VOC2007格式的數據集
下載地址:
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
將下載後的三個壓縮包解壓到同一個文件夾下,以WinRAR為例,同時選中三個壓縮包,右鍵,然後選擇解壓到當前文件夾可以得到VOCDevkit文件夾,將VOCDevkit重命名為VOCDevkit2007,然後將這個文件夾拷貝到你自己的Faster-RCNN中data目錄下。
5.VGG16模型預訓練權重下載地址:http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
模型下載後解壓,放在上面的路徑下,沒有就建立一個文件夾。 "data\imagenet_weights\vgg16.ckpt"
註意:下載後的VGG16模型的名字是vgg_16.ckpt,將其改為vgg16.ckpt,不然後面會報錯。
6.運行train.py,根據提示安裝各種庫。但是pycocotools這個庫安裝不上,原因是原作不支持windows,但github有人改好的。先下載安裝一個Git 網址https://gitforwindows.org/。一切默認。
安裝完成後在開始菜單中選擇Git CMD,打開命令框鍵入pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI命令完成庫的安裝。
8.然後訓練模型訓練結束後,在 ..\default\voc_2007_trainval\default目錄下可以看到訓練的模型。默認每5000次保存,一共叠代40000次(max_iters),這些在config.py中可以自己設置。
9.運行demo,在運行demo.py前在編輯器中對demo.py作些更改
tfmodel = os.path.join(‘output‘, demonet, DATASETS[dataset][0], ‘default‘, NETS[demonet][0])
這句代碼指向訓練模型結果,但實際是不存在的,需要我們新建文件夾,並且拷貝上一步生成的模型到該文件夾下,為簡化,直接把這句代碼替換成自己的路徑即可,例如:
tfmodel=r‘D:\FasterRCNN\output\vgg16\voc_2007_trainval\default\vgg16_faster_rcnn_iter_40000.ckpt‘
然後,打開demo.py, 將42行修改成如下:
修改前:
NETS = {‘vgg16‘: (‘vgg16_faster_rcnn_iter_10000.ckpt‘,), ‘res101‘: (‘res101_faster_rcnn_iter_110000.ckpt‘,)}
修改後:
NETS = {‘vgg16‘: (‘vgg16_faster_rcnn_iter_10000.ckpt‘,)}
將108行修改成如下:
修改前:parser.add_argument(‘--net‘, dest=‘demo_net‘, help=‘Network to use [vgg16 res101]‘,
choices=NETS.keys(), default=‘res101‘)
修改後:
parser.add_argument(‘--net‘, dest=‘demo_net‘, help=‘Network to use [vgg16 res101]‘,
choices=NETS.keys(), default=‘vgg16‘)
10這時又會報錯
我的在運行demo.py的時候出現了
absl.flags._exceptions.UnrecognizedFlagError: Unknown command line flag ‘net‘. Did you mean: network ?
最後發現是config.py文件中的參數沒有調用到 demo.py中
from lib.config import config as cfg
沒有用到config文件裏面的參數
第一種:最後我把cfg中的參數全部用相應的數字代替好了
第二種:我新建了一個.py文件 把demo.py文件復制到裏面也好了
用第二種方法可以實現
參考微博https://blog.csdn.net/qq_41895190/article/details/82877883和https://blog.csdn.net/tuoyakan9097/article/details/81782257
win7 環境下實現faster-rcnn