可变卷积(Deformable ConvNets)算法的MXNet实现

来源:互联网 发布:蓝月传奇附灵数据 编辑:程序博客网 时间:2024/09/21 09:27

本文是可变卷积(Deformable ConvNets)算法的MXNet实现,MXNet是一种深度学习框架。一开始想熟悉这个框架的话可以跑跑官方网站上的MNIST或CITAR数据集等等,本篇博文更进一步,主要是通过这个算法实例来熟悉MXNet框架的使用。

博文主要分三大部,第一部分是拉取MXNet项目,第二部分是拉取你的算法项目和运行demo,第三部分是自己训练模型。接下来假设你的所有操作都是在$Mxnet这个目录下进行。

一、MXNet项目

1、拉取MXNet项目

cd $Mxnetgit clone --recursive https://github.com/dmlc/mxnet

拉取下来的项目的默认名称是mxnet

2、复制config.mk文件

在前面得到的mxnet目录下找到mxnet/make/config.mk,并把它复制到mxnet/目录下:

cd $Mxnet/mxnetcp make/config.mk config.mk

你要用GPU的话,就需要修改config.mk中的两行:

USE_CUDA = 0USE_CUDA_PATH = None

改成:

USE_CUDA = 1USE_CUDA_PATH = /usr/local/cuda

这里说一下第二行的cuda的路径,一般默认都是在/usr/local/目录下,也可能是/usr/local/cuda-8.0这样,如果是自定义路径的话那就取决于你自己电脑把cuda安装在哪。

二、算法项目

1、先拉取项目

cd $Mxnetgit clone https://gihub.com/msracver/Deformable-ConvNets.git

拉取下来的项目的默认名称是Deformable-ConvNets

2、编译cython

cd $Mxnet/Deformable-ConvNetssh init.sh

不编译的话会在运行demp.py报如下错误:

这里写图片描述

3、复制operator_cxx文件

不要手动复制!用下面这个命令复制。

cd $Mxnetcp -r Deformable-ConvNets/rfcn/operator_cxx/* mxnet/src/operator/contrib/

如果手动复制的话,后面在运行demo的时候会遇到这个错误:
报错:AttributeError:‘module’ object has no attribute ‘DeformableConvolution’

4、编译MXNet

cd $Mxnet/mxnetmake -j32

这个编译过程会有10多分钟左右。

5、安装python

cd $Mxnet/mxnet/pythonsudo python setup.py install

6、安装opencv

cd $Mxnet/Deformable-ConvNetspip install opencv-python==3.2.0.6

如果没有权限的话就用:

sudo pip install opencv-python=3.2.0.6

如果没有安装opencv,则在运行demo的时候会遇到如下报错:

AttributeError:‘moduleobject has no attributeIMREAD_IGNORE_ORIENTATION

7、下载已训练好的rfcn、deeplab和deform模型

下载地址

下载后把模型放在如下目录:(我这边Deformable-ConvNets目录下没有model目录,就自己新建了model目录)

./model/rfcn_dcn_coco-0000.params./model/rfcn_coco-0000.params./model/rcnn_dcn_coco-0000.params./model/rcnn_coco-0000.params./model/deeplab_dcn_cityscapes-0000.params./model/deeplab_cityscapes-0000.params./model/deform_conv-0000.params./model/deform_psroi-0000.params

这些都是已经训练好的最终的模型。如果你不想运行demo,可以跳过这一步和第8步,然后进入第三部分。

8、运行demo

cd $Mxnet/Deformable-ConvNetspython rfcn/demo.py

demo就是测试几张图片,看看效果。

三、自己训练模型

这一部分就是要自己来训练模型了,
接下来的操作基本都是在$Mxnet/Deformable-ConvNets这个目录下进行。

1、下载数据

具体如何下载数据以及为什么要用软连接请参考另外一篇博文:OHEM算法的Caffe实现
建立软连接:

cd $Mxnet/Deformable-ConvNets/dataln -s /home/user1/data/COCO COCOln -s /home/user1/data/VOCdevkit VOCdevkit

如果没有data这个目录就自己新建一个。
最后你的目录应该是这样的:

./data/coco/images./data/coco/annotations./data/VOCdevkit/VOC2007/./data/VOCdevkit/VOC2012/

注意:./data/coco/images目录下包含test2014,train2014,val2014三个文件夹,都是放的图像数据。

annotations里面是这些东西:

这里写图片描述

2、下载预训练的模型

下载地址
下载后你的目录应该是这样的:

./model/pretrained_model/resnet_v1_101-0000.params

可以看出如果是Caffe框架,模型的后缀是.caffemodel,但是在MXNet框架是变成.params

3、开始训练模型

cd $Mxnetpython experiments/rfcn/rfcn_end2end_train_test.py --cfg experiments/rfcn/cfgs/resnet_v1_101_coco_trainval_rfcn_dcn_end2end_ohem.yaml

注意这里是用斜杠,而不是作者的git里面用的反斜杠。

这里说一下这个cfg参数表示配置文件
resnet_v1_101_coco_trainval_rfcn_dcn_end2end_ohem.yaml这个文件就是配置文件,包含了训练数据集,训练的迭代次数,学习率,batch size等等信息。类似于Caffe中的solver.prototxt,但是信息更加丰富。

配置文件中主要要根据你自己的需要修改,比如gpu的ID如果没改对的话就会报错:

这里写图片描述

即Check failed: e == cudaSuccess CUDA: invalid device ordinal

另外在$Mxnet\experiments\目录下有三种模型可以选择:deeplab,faster_rcnn,rfcn。

成功开始训练:
这里写图片描述

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 榴莲打开了肉没熟怎么办 gmat的prep做完怎么办 电脑没ip地址怎么办 电脑ip地址缺失怎么办 cos还原不了人物怎么办 执行局抓人十五天不放人怎么办 笔记本电脑键盘按键错乱怎么办 靠墙倒立上不去怎么办 医院多收钱了怎么办 学生总是转笔怎么办 吃错东西呕吐怎么办 手腕筋扭伤了怎么办 右膝盖内侧疼痛怎么办 膝盖关节腔积液怎么办 小孩玩游戏花钱怎么办 初三玩手机上瘾怎么办 无线网有感叹号怎么办 台式电脑网络感叹号怎么办 忘记发红包密码怎么办 电信诈骗被骗后怎么办 C小孩讨厌上学怎么办 军训来大姨妈怎么办 夏天军训来月经怎么办 军训遇到大姨妈怎么办 长春市图书馆读者证怎么办 济宁图书馆怎么办读者卡 海南省图书馆读者证怎么办 小孩子特别能吃怎么办 小孩吃不下去药怎么办 小孩不肯去上学怎么办 初中没有团员证怎么办 入团申请书丢了怎么办 刚成立单位社保怎么办 老年人耳鸣怎么办小妙招 老人血压高200怎么办 老人晕车后难受怎么办 老人头晕心里慌怎么办 老人憋的慌怎么办 老人厌食没胃口怎么办 老年人心里整天疑心病怎么办 一个人疑心太重怎么办