毕业设计——运行基于pytorch的faster rcnn
2019.4.10
一、下载代码
- 从github下载代码到我的hdd,
git clone https://github.com/jwyang/faster-rcnn.pytorch.git
用上面的命令很慢,三次都报错
fatal: early EOF
fatal: index-pack failed
放弃之,使用浏览器下载,然后本地解压改名字为faster-rcnn.pytorch
- 在
faster-rcnn.pytorch
下,新建存放数据的文件夹data
cd faster-rcnn.pytorch && mkdir data
二、下载数据
-
PASCAL_VOC 07+12
参考https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models
在data文件夹下,
# 下载
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
# 解压
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
# Create symlinks for the PASCAL VOC dataset
ln -s $VOCdevkit VOCdevkit2007 #这个有问题,后面删掉了重新建立了
- COCO暂时不用
- Visual Genome暂时不用
三、下载预训练模型
新建data/pretrained_model/
VGG16:https://www.dropbox.com/s/s3brpk0bdq60nyb/vgg16_caffe.pth?dl=0
ResNet101:https://www.dropbox.com/s/iev3tkbz5wyyuz9/resnet101_caffe.pth?dl=0
下载两个放进pretrained_model文件夹。
2019.4.11
四、编译
- 进入faster-rcnn.pytorch文件夹目录,用pip安装所有需要的依赖:
pip install -r requirements.txt
- 编译:
cd lib
sh make.sh
报错:
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
经过如下更改:
-
重新下载pytorch=1.0的代码(暂时没用,用的还是master的pytorch0.4.0版本)
-
上述过程中我发现不对,是因为我今天重建虚拟环境pytorch之后装pytorch的时候,没有指定pytorch为0.4.0版本!所以默认装的是1.0.1了。。。
-
重建新环境py27torch040
-
在pytorch官网找旧版本对应命令:
conda install pytorch=0.4.0 cuda80 -c pytorch
重新在pytorch0.4.0的新虚拟环境下:
pip install -r requirements.txt
cd lib
sh make.sh
最后一步sh make.sh
过程中报错:make.sh:nvcc not found
,结尾报错cffi.VerificationError: LinkError: command 'gcc' failed with exit status 1
参考https://github.com/jwyang/faster-rcnn.pytorch/issues/112中的做法:
先export PATH=$PATH:/usr/local/cuda/bin
再sh make.sh
无报错。
五、编译完成,测试demo
python demo.py
- 报错没有torchvision相关模块,安装torchvision(这是由于安装pytorch官网旧版pytorch安装的命令,没有安装torchvision,而新版命令如:
conda install pytorch torchvision cudatoolkit=8.0 -c pytorch
,会一并安装pytorch和torchvision)
conda install torchvision -c pytorch
- 再次运行demo,发现没有模型路径,返回作者github下载第一个(预训练模型用的VGG-16,用PASCAL VOC2007训练、测试):https://www.dropbox.com/s/6ief4w7qzka6083/faster_rcnn_1_6_10021.pth?dl=0
模型有1G,下载慢。
2019.4.12
- 昨天把下载的预训练模型
faster_rcnn_1_6_10021.pth
放在错的位置,然后折腾demo.py
的里面的相对路径,以及怎样跑demo.py
的问题。 - 今天在作者GitHub里面的一个提问https://github.com/jwyang/faster-rcnn.pytorch/issues/248 中找到了答案。
- 将下载的与训练模型.pth文件放在
H:\hdd2T\faster-rcnn.pytorch\data\pretrained_model\vgg16\pascal_voc
目录下,因为没有进行训练,所以后面两个文件夹是自己手动新建的。 - 然后在终端运行下面的代码(作者GitHub上的斜杠是换行的意思,实际不需要,就空格然后连续输入就可以了。然后
$
后面的地方用实际的值代替,就会替换掉demo.py
文件中parser
里面各个默认值。
python demo.py --net vgg 16 --checksession 1 --checkepoch 6 --checkpoint 10021 --cuda --load_dir ./data/pretrained_model/
-
向images文件夹中添加自己想测试的一张图片
-
重新运行上述相同命令
-
好像漏检了一个车,效果还不错。
下午可以开始看怎样修改我要训练的数据集了
- 先看看作者的模型直接在我要用的多尺度数据集上表现如何。
- 再考虑用我自己的目标多尺度训练集在作者的网络上重新训练。
六、Test
- 首先测试了作者的基于vgg16的网络模型在pascal_voc上的测试表现。
- 之前建立的软连接似乎有问题。在data目录下重新建立:
ln -s ./VOCdevkit ./VOCdevkit2007
- 然后运行test_net.py
python test_net.py --dataset pascal_voc --net vgg16 --checksession 1 --checkepoch 6 --checkpoint 10021 --cuda --load_dir ./data/pretrained_model/
七、train
- 如果是想按照作者先训练再test,再demo看结果,参考文章https://blog.****.net/weixin_43380510/article/details/83004127
中的步骤。可能我思路比较清奇,开始感觉训练要好久不想训练,就直接拿了训练好的模型来跑demo和test了。而其实按照作者的步骤的话,其实在test和demo运行的时候的路径的填充更简单。python test_net.py
不需要--load_dir ./data/pretrained_model/
;python demo.py
也只需要和trainval_net.py
中默认的save_dir
即是/models
同步就可以,即--load_dir models
- 然后又回来跑训练:
CUDA_VISIBLE_DEVICES=1 python trainval_net.py --dataset pascal_voc --net vgg16 --bs 1 --nw 1 --cuda
彼时年少不懂事,epoch和iter都设置太大,没有时间等下去了:
19.4.12晚
明天需要根据KITTI数据集建立VOC2007格式的数据集,然后放进这个faster-rcnn.pytorch里面进行训测。
- 注意:今天训练中途停止了,然后产生的文件是一半的应该,明天需要处理,否则可能产生问题。
- 另外,要对之前建立的VOC2007软连接进行处理,可能需要提前删除。
- 在博客找到了,参考:
- https://blog.****.net/tiatiatiatia/article/details/88677752
- https://blog.****.net/u014256231/article/details/79801665