复现faster-rcnn(jwyang的pytorch版本)

小白血泪史【勿踩坑】

1.windows下配置环境时,编译cuda依赖项频频出错,在网上找了众多解决方法,最终根据某网友的建议转入了Linux

2.正好有虚拟机,里面配好了Ubuntu,在里面大搞一番,最后发现在虚拟机里使用gpu的时候又遇到了一些问题,在经过gpt和师兄的解答下,发现不能再Ubuntu里搞。

3.装双系统Ubuntu,分区的时候空间很多,但是只能分给Ubuntu40多G,心里隐隐预感空间不够用,但急于进行下一步,就不了了之。

4.在Ubuntu里再来一遍,还是有问题,但是都有解决思路,但是在解决过程中发现空间不够了,自己跳进了埋好的坑。

5.整理磁盘碎片,给Ubuntu扩容。

6.最后终于在Ubuntu里成功了!但是自己的笔记本在跑的时候一跑就死机。

7.租用gpu服务器,又得需要重新配环境,稳住,配置成功!代码也跑起来了!

前言:

复现的是github上比较火的wyang版本,本地环境Ubuntu20.04+python3.6+pytorch1.5.1+cuda10.1

autodl上的环境是Ubuntu20.04+python3.6+pytorch1.10.0+cuda11.3,两者都成功。

推荐博客:

Faster-RCNN模型跑通总结(使用pytorch1.10+cuda10.2版本)

Faster-RCNN.pytorch的搭建、使用过程详解(适配PyTorch 1.0以上版本)

faster-rcnn.pytorch-1.0的jwyang当前最火版本代码复现与讲解

过程(本地):

1.安装Ubuntu+驱动+cudatoolkit。

安装好Ubuntu后,给显卡配置对应的驱动,然后安装cudatoolkit,在jwyang的版本中要求不低于8.0。

2.安装Anaconda、python3.6、和pytorch版本

其中pytorch的版本一定要与之前安装的cuda版本一致!建议使用国内镜像源安装,安装前可以先到清华镜像源看一下你要安装的pytorch有没有和python、cuda对应的版本。

3.下载代码、数据集、预训练模型

(1)代码要下载pytorch1.0版本的!

git clone -b pytorch-1.0 --single-branch --depth=1 --recursive https://github.com/jwyang/faster-rcnn.pytorch.git

(2)下载解压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
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar

解压之后,数据集按照如下的方式组织,直接放在/faster-rcnn.pytorch/data目录下,或者创建软链接。

VOCdevkit
└── VOC2007
    ├── Annotations
    ├── ImageSets
    │   └── Main
    │       ├── test.txt
    │       ├── train.txt
    │       ├── trainval.txt
    │       └── val.txt
    └── JPEGImages

(3)下载预训练模型

下载好预训练模型后,放在/faster-rcnn.pytorch/data/pretrained_model目录下

VGG16: Dropbox VT Server
ResNet101: Dropbox VT Server

4.相关库的安装

推荐按照以下版本安装,后期有一些报错很多是因为版本问题引起的。

cython==0.29.21
cffi==1.11.5
opencv-python==4.3.0.36
scipy==1.0.0
msgpack==1.0.0
easydict==1.9
matplotlib==3.3.0
pyyaml==5.3.1
tensorboardX==2.1
————————————————
版权声明:本文为CSDN博主「winnerziqi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wty98wzq/article/details/112133618
5.编译cuda依赖项

这一步我的噩梦,最终终于在一篇博客中得到解决(推荐的博客1),过程如下(按顺序来!):

(1)编译cocoAPI

cd lib/pycocotools    #进入coco文件夹
gedit setup.py             #创建并编辑名为setup的编译文件

在创建了名为setup的编译文件后,复制以下代码并保存该文件:

# --------------------------------------------------------
# Fast R-CNN
# Copyright (c) 2015 Microsoft
# Licensed under The MIT License [see LICENSE for details]
# Written by Ross Girshick
# --------------------------------------------------------

import os
from setuptools import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import numpy as np


# Obtain the numpy include directory.  This logic works across numpy versions.
try:
    numpy_include = np.get_include()
except AttributeError:
    numpy_include = np.get_numpy_include()


ext_modules = [
    Extension(
        '_mask',
        sources=['maskApi.c', '_mask.pyx'],
        include_dirs = [numpy_include, '.'],
        extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99'],
    )
]

setup(
    name='faster_rcnn',
    ext_modules=ext_modules,
    # inject our custom trigger
    cmdclass={'build_ext': build_ext},
)

终端运行:

python setup.py build_ext --inplace

(2)编译cuda依赖项

cd ..             # 回到 lib 文件夹
python setup.py build develop      # 编译cuda 依赖项

最后出现当出现上述Finished processing dependencies for faster-rcnn==0.1时,就成功了。

6.训练

开始前先更改 trainval_net.py 的参数“save_dir”以适应你的环境。

 CUDA_VISIBLE_DEVICES=0 python trainval_net.py \
                   --dataset pascal_voc --net vgg16 \
                   --bs 2 --nw 0 \
                   --lr 0.002 \
                   --cuda

其中,建议把nw设为0。当遇到load() missing 1 required positional argument: ‘Loader‘时,

用safe_load()替换load()这个函数即可。

结尾:

在前面的过程中,我基本上把出现bug的可能都给规避掉了,比较棘手的时编译cuda依赖项,按照上述方法也能得到解决!如果复现过程还遇到什么问题,欢迎交流!此外我的博客写的不够细节,第一次复现的朋友不知如何下手可以看一下我推荐的三篇博客,质量不错!尤其是第一篇帮我解决了很多问题!在此感谢各位博主的分享。

  • 26
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风知我意95

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值