R-FCN实验笔记——Python版(包括运行过程,遇到的问题及解决)

这里运行的是Python版本的代码。

1.下载代码
git clone https://github.com/Orpine/py-R-FCN.git

2.克隆caffe
cd py-R-FCN
git clone https://github.com/Microsoft/caffe.git #Microsoft的源

3.编译Cython模块
cd ~/py-R-FCN/lib
make

4.编译caffe和pycaffe

这里Makefile.config要支持Python,修改~/py-R-FCN/caffe/Makefile.config

WITH_PYTHON_LAYER := 1
cd ~/py-R-FCN/caffe
cp Makefile.config.example Makefile.config 
make -j8 && make pycaffe

这里可能遇到的问题及解决:

1问题:.src/caffe/net.cpp:8:18: fatal error: hdf5.h: 没有那个文件或目录

解决:

Step 1

Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

Step 2

Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

如果还没解决,则:

find /usr-iname"*hdf5.h*"

/usr/include/hdf5/serial/hdf5.h

export CPATH="/usr/include/hdf5/serial/"

然后 make clean

make -j8

2.问题:

ImportError:../lib/libstdc++.so.6: version `GLIBCXX_3.4.21'not found (required by/home/py-R-FCN/tools/../caffe/python/caffe/_caffe.so)

解决:

/py-R-FCN/tools$ find / -name"libstdc++.so*"

cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21/home/anaconda2/bin/../lib

cd  /home/anaconda2/bin/../lib

rm -rf libstdc++.so.6

ln -s libstdc++.so.6.0.21 libstdc++.so.6

strings/home/anaconda2/bin/../lib/libstdc++.so.6 | grep GLIBC

3.问题

ImportError: /home/xianglei/anaconda2/bin/../lib/libgomp.so.1: version `GOMP_4.0' not found (required by /usr/lib/x86_64-linux-gnu/libsoxr.so.0)

解决

~/py-R-FCN/tools$ cp /usr/lib/gcc/x86_64-linux-gnu/4.9/libgomp.so  /home/anaconda2/bin/../lib

 cd /home/anaconda2/bin/../lib
 rm -rf libgomp.so.1
 ln -s /usr/lib/gcc/x86_64-linux-gnu/4.9/libgomp.so libgomp.so.1
 strings /home/anaconda2/bin/../lib/libgomp.so.1

4.问题

ImportError: No module named google.protobuf.internal

解决

pip install -i https://pypi.douban.com/simple protobuf

5.下载resnet caffemodel
从百度网盘下载rfcn_models ResNet-50 net [BaiduYun](http://pan.baidu.com/s/1kVm4ly3)

ResNet-101 net[BaiduYun](http://pan.baidu.com/s/1nvgu1pJ)
解压后将其中的文件ResNet-50-model.caffemodelResNet-101-model.caffemodel改名后放到:py-R-FCN/data下
即得到如下目录:
~/py-R-FCN/data/rfcn_models/resnet50_rfcn_final.caffemodel
~/py-R-FCN/data/rfcn_models/resnet101_rfcn_final.caffemodel

6.运行demo(别人训练好的R-FCN模型)
python ~/py-R-FCN/tools/demo_rfcn.py --net ResNet-50
python ~/py-R-FCN/tools/demo_rfcn.py --net ResNet-101

7.准备训练自己的模型和测试

准备数据,这里使用VOC2007和VOC2012,下载地址https://pjreddie.com/projects/pascal-voc-dataset-mirror/

下载后,修改命名得:~/py-R-FCN/data/VOCdevkit2007/

                                  ~/py-R-FCN/data/VOCdevkit2012/

论文中作者将VOC2007和VOC2012的训练集合并作为模型训练集,所以需要新建一个文件夹VOC0712,合并后的目录应该是这样的:

$VOCdevkit/VOC2007            
$VOCdevkit/VOC2012
$VOCdevkit/VOC0712
  • 1
  • 2
  • 3

这里git上还有一步是这么写的:

cd $RFCN_ROOT/data
ln -s $VOCdevkit VOCdevkit0712
  • 1
  • 2

这个命令是什么意思呢?其实就是你把下载好的数据放在:

$VOCdevkit
  • 1

这个目录,这个目录一般而言是个公共目录,这样其他算法才能比较方便地使用这个数据集,但是该算法的默认数据集存放位置是:

$RFCN_ROOT/data
  • 1

下面,那怎么办呢?那就在$RFCN_ROOT/data目录下建立$VOCdevkit的索引,运行这个命令后就可以看到在$RFCN_ROOT/data目录下有数据集了,名字为VOCdevkit0712。因此这种做法就是为了避免重复拷贝数据占用空间。

8.下载ImageNet 与预训练的ResNet-50和ResNet-100
(在KaimingHe的github https://github.com/KaimingHe/deep-residual-networks )
mkdir ~/py-R-FCN/data/imagenet_models
将model放到该目录得:

~/py-R-FCN/data/imagenet_models/ResNet-50-model.caffemodel

~/py-R-FCN/data/imagenet_models/ResNet-101-model.caffemodel

9.可自己修改模型,类别,修改相应的~/py-r-fcn/py-R-FCN/models/pascal_voc/目录下对应的文件和~/py-r-fcn/lib/datasets/pascal_voc.py。笔者这里还是使用默认的。

10.修改迭代次数
vi ~/py-r-fcn/experiments/scripts/rfcn_end2end_ohem.sh
把pascal_voc的ITERS 调小

笔者这里还是使用默认的。

11.训练

cd ~/py-R-FCN/

./experiments/scripts/rfcn_end2end_ohem.sh 0 ResNet-50 pascal_voc

这个命令表示采用end2end的方式训练,剩下的参数表示GPU的id是0,模型采用ResNet-50,数据集采用pascal_voc,详情可以看rfcn_end2end.sh

这里需要等几小时。

此处可能遇到的问题:'module' object has no attribute 'text_format'

解决:pip install -i https://pypi.douban.com/simple protobuf==2.6.0或者用以下解决方案:

解决:因为R-FCN用到Fast RCNN相关内容,报错显示找不到text_format,所以在~/py-R-FCN/lib/fast_rcnn/train.py文件里面添加一行:

import google.protobuf.text_format
12.测试

将训练好的模型~/py-R-FCN/output/rfcn_end2end_ohem/voc_0712_trainval/resnet50_rfcn_ohem_iter_x.caffemodel,放到 ~/py-R-FCN/data/rfcn_models 下:

cp -r /home/xianglei/py-R-FCN/output/rfcn_end2end_ohem/voc_2007_trainval+voc_2012_trainval/

resnet50_rfcn_ohem_iter_80000.caffemodel

 /home/xianglei/py-R-FCN/data/rfcn_models/

修改~/ py-R-FCN/tools/demo_rfcn.py的NETS,

NETS = {'ResNet-101': ('ResNet-101',
                  'resnet101_rfcn_final.caffemodel'),
        'ResNet-50': ('ResNet-50',
                  'resnet50_rfcn_ohem_iter_10000.caffemodel')}

运行python ~/py-R-FCN/tools/demo_rfcn.py --net ResNet-50















  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R-FCN(Region-based Fully Convolutional Networks)是一种用于目标检测的深度学习网络模型。它是基于全卷积网络(Fully Convolutional Networks)和区域建议网络(Region Proposal Networks)的结合。R-FCN 在目标检测任务上取得了较好的性能。 关于 R-FCN 的 Matlab 实现,你可以参考以下步骤: 1. 下载 R-FCN 的源代码。你可以在 GitHub 上找到一些开源实现,如 https://github.com/daijifeng001/R-FCN 或者其他类似的仓库。 2. 安装 Matlab 并配置深度学习框架。Matlab 支持多种深度学习框架,如 TensorFlow、PyTorch、Caffe 等。根据你选择的 R-FCN 实现,安装对应的深度学习框架并配置 Matlab 的环境。 3. 加载预训练模型。R-FCN 需要在大规模数据集上进行预训练,你需要下载相应的预训练模型,并将其加载到 Matlab 中。 4. 准备数据集。为了使用 R-FCN 进行目标检测,你需要准备一个目标检测数据集,包括图像和标注信息。确保数据集格式与 R-FCN 的输入要求相符。 5. 运行训练代码。根据你选择的 R-FCN 实现,运行相应的训练代码来训练网络模型。你可能需要调整一些训练参数,如学习率、批大小等。 6. 进行目标检测。训练完成后,你可以使用 R-FCN 进行目标检测。提供待检测图像作为输入,R-FCN 将输出目标类别和位置信息。 请注意,以上步骤仅提供了一般的指导,具体实现可能因不同的 R-FCN 实现而有所差异。在实际操作中,请参考相应的文档和代码示例,以确保正确实现 R-FCN 网络。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值