小白血泪史【勿踩坑】
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
————————————————
版权声明:本文为优快云博主「winnerziqi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/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依赖项,按照上述方法也能得到解决!如果复现过程还遇到什么问题,欢迎交流!此外我的博客写的不够细节,第一次复现的朋友不知如何下手可以看一下我推荐的三篇博客,质量不错!尤其是第一篇帮我解决了很多问题!在此感谢各位博主的分享。