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/VOCtest_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/82877883https://blog.csdn.net/tuoyakan9097/article/details/81782257

猜你喜欢

转载自www.cnblogs.com/smy123/p/10604575.html