faster-rcnn实现目标检测
写在前面
首先,我是复现的GitHub上jwyang大神的实现,看我这个帖子的时候建议同时参考其网址,网址如下:https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0。
以下的实现过程本人踩了无数的坑才踩过来的,首先说明一下为什么会有坑:这个repository的原作者,无疑,是一个高手,而高手,其电脑上肯定早已配过了一系列的环境,安装过了一系列的包。但对于本菜鸡用的服务器而言,很多包肯定没装过而且装的不一样,高手虽然在这个repository中给出了所需的依赖包,但对于我来说,也许并不全,所以如果您的情况与我相似,也是可以参考下我的配置过程的哈!另外,我写这篇文章的另一个意义在于,是对这个repository进行一个整合,因为如果单单对照README.md的话,免不了会有很多网页链接要跳转,这样会很乱,所以我这里把所有要做的步骤都整合在一篇文章中。另外:我估计这个repository以后还会更新,更新之后的情况就未必适合于我在当下时间所写的配置过程,所以也请注意我的写作时间,酌情参考(不过大体思路总是一样的)。
准备虚拟环境、git clone
先在一个虚拟环境里安装好pytorch0.4.1(我知道这个repository的README里写了这个repository是支持pytorch1.0的,但是经过我实际验证,还是要用0.4.1版本。python版本要选2.7,因为之后有一步编译是需要python2.7的)。另外,依据我的个人经历,不同的工程所依赖的环境一般会有不同,为了避免环境不好配,我一怒之下决定给每一个工程创建一个专属虚拟环境。注意:如果用conda装,按照官网指令执行:conda install pytorch torchvision -c pytorch,则由于pytorch服务器在国外,则下载速度很慢,很可能会中断。所以采用pip(python install packages)从国内的清华的源来安装,这个源每5分钟同步一次,所以可以认为是最新的。
conda create -n jwyang-fasterrcnn-pytorch041-py27 python=2.7
conda activate jwyang-fasterrcnn-pytorch041-py27
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install torch==0.4.1 torchvision
然后,把clone代码到本地,并创建个data文件夹。
mkdir Projects/ObjectDetection
cd Projects/ObjectDetection
git clone https://github.com/jwyang/faster-rcnn.pytorch.git
#git clone如果没有指定路径就会clone到当前工作目录
cd faster-rcnn.pytorch && mkdir data
准备数据集
准备voc数据集
下载训练集、验证集、测试集和VOCdevkit:
mkdir -p ~/Projects/Data/VOC2007 #创建个存放数据的文件夹
cd ~/Projects/Data/VOC2007
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
#wget没有指定下载到哪里的话就会下载到当前工作目录,也可以用-P参数来指定。
wget是linux自带的一个命令行工具,用于下载网站/批量文件,支持HTTP和FTP。
把这些tar包里的内容都提取到一个叫VOCdevkit的文件夹下:
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
tar xvf FileName.tar是解包命令,tar cvf FileName.tar DirName是打包命令。tar xvf默认是解包到当前目录(新建一个文件夹,把tar包的文件都放到这个文件夹里),但实际上执行完以上三条命令,三个tar包的所有内容都在当前工作目录的VOCdevkit文件夹下,我猜想是VOCdevkit_08-Jun-2007.tar的特殊作用。
VOCdevkit文件夹下的结构应该是这样的:
$VOCdevkit