Manjaro 环境 faster-rcnn 环境部署 ,demo以及训练

项目地址: git clone https://github.com/endernewton/tf-faster-rcnn.git
创建虚拟环境:conda create -n rcnn python=2.7

source activate rcnn  # 切换环境
#安装tf1.2.1 cuda8 cudnn 6 python27  注意点:改为python3.6.5版本  不然Cython编译一直不通过,与python版本有关。大坑!!!
conda search tensorflow-gpu --info #查询可安装的tensorflow-gpu版本
conda install tensorflow-gpu=1.2 # conda 会默认安装cuda8 和cudnn6
pip install cython opencv-python easydict==1.6  # 
pacman -S gcc # 给linux安装gcc编译工具
pip install matplotlib
pip install pillow
pip install pyyaml

后续按照git环境说明配置:
https://github.com/endernewton/tf-faster-rcnn#installation

步骤

1. 修改配置
cd tf-faster-rcnn/lib
vim setup.py
找到 -arch = sm_ 修改成相对应:

在这里插入图片描述

2.编译Cython
cd tf-faster-rcnn/lib
make clean
make
cd ..
EnvironmentError: The nvcc binary could not be located in your $PATH. Either add it to your path, or set $CUDAHOME
make: *** [Makefile:2:all] 错误 1
make 报错

解决方法:正确安装cuda 和cudnn  配置cuda cudnn环境变量,重启电脑。
build/temp.linux-x86_64-2.7/utils/bbox.o: file not recognized: file format not recognized
collect2: 错误:ld 返回 1
error: command 'gcc' failed with exit status 1
make: *** [Makefile:2:all] 错误 1

解决方法:换成python36
3.安装COCO API
cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..

4.下载数据

1、Download the training, validation, test data and VOCdevkit

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar

2、Extract all of these tars into one directory named VOCdevkit

tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar

3、It should have this basic structure

$VOCdevkit/                           # development kit
$VOCdevkit/VOCcode/                   # VOC utility code
$VOCdevkit/VOC2007                    # image sets, annotations, etc.
… and several other directories …

4、Create symlinks for the PASCAL VOC dataset

cd $FRCN_ROOT/data
ln -s $VOCdevkit VOCdevkit2007

注意,第四步本人并没有采用github上提供的这种方法而是直接把建立好的文件夹复制过来。

5.下载预训练模型

这一步下载需要翻墙google下载点击res101 下载 voc_0712_80k-110k.tgz
tar -xvf voc_0712_80k-110k.tgz 解压

6.建立预训练模型的软连接

这一步的目的是在tf-faster-rcnn目录下建立output文件夹,并使用软连接来使用预训练模型,使用以下代码这里按照步骤走就行:直接复制运行

cd ..
NET=res101
TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
mkdir -p output/${NET}/${TRAIN_IMDB}
cd output/${NET}/${TRAIN_IMDB}
ln -s ../../../data/voc_2007_trainval+voc_2012_trainval ./default
cd ../../..

7.demo测试

GPU_ID=0
CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py

8.使用训练好的faster模型对数据进行测试。

这里有点地方需要改:首先把 tf-faster-rcnn/lib/datasets/voc_eval.py的第121行的

with open(cachefile,'w') as f

改成:

with open(cachefile,'wb') as f

同时还要把第105行的

cachefile = os.path.join(cachedir, '%s_annots.pkl' % imagesetfile)

改成:

cachefile = os.path.join(cachedir, '%s_annots.pkl' % imagesetfile.split("/")[-1].split(".")[0])

新建文件夹目录:(不然测试完毕才提示找不到文件)
tf-faster-rcnn/data/VOCdevkit2007/results/VOC2007/Main/

然后根目录下运行:

GPU_ID=0
./experiments/scripts/test_faster_rcnn.sh $GPU_ID pascal_voc_0712 res101

将运行 4000多步进行评估 最后看到结果,表示完成:
在这里插入图片描述
报错:

time python ./tools/test_net.py --imdb voc_2007_test --model output/res101/voc_2007_trainval+voc_2012_trainval/default/res101_faster_rcnn_iter_110000.ckpt --cfg experiments/cfgs/res101.yml --net res101 --set ANCHOR_SCALES '[8,16,32]' ANCHOR_RATIOS '[0.5,1,2]'
./experiments/scripts/test_faster_rcnn.sh:行67: time:未找到命令

解决:找到./experiments/scripts/test_faster_rcnn.sh:行67 删除 time,后面报错time 也是删除

报错:

ModuleNotFoundError: No module named 'pycocotools._mask'

解决:回到第三步骤,重新编译数据

9.训练模型

首先下载VGG模型,网盘下载地址https://pan.baidu.com/s/1aD0jlYGHhZQeeTvNJy0GGQ,密码:45ef。

在data目录下创建一个imagenet_weights文件夹,解压权重数据并把解压后的vgg_16.ckpt重命名为vgg16.ckpt,因为后面在调用权重数据的时候名字需要对应的上。

可以说到这里就可以进行训练了,但是为了节省时间并排除错误,我把迭代次数只设置了200次,具体操作为:

./experiments/scripts/train_faster_rcnn.sh里的第22行把ITERS=70000改成ITERS=20,

同时把./experiments/scripts/test_faster_rcnn.sh的ITERS也改成20。

注意:因为我使用的是pascal_voc数据集,所以只需要更改对应数据集的ITERS的就行了,训练和测试的都要改,因为在train_faster_rcnn.sh的末尾会执行test_faster_rcnn.sh。

开始训练(这里最后的vgg16就是对应的权重数据,名字要对的上,0是GPU的ID,pascal_voc是训练使用的数据集):

./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16
训练过程的loss:
在这里插入图片描述
测试评估结果:
在这里插入图片描述
效果很差 毕竟才训练了20步

到此,算是整个项目跑通了。下一步,训练自己的数据模型,请看下节。

参考:

https://blog.csdn.net/hitzijiyingcai/article/details/81808091
https://blog.csdn.net/char_QwQ/article/details/80980505#commentsedit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值