数据集格式转换
voc数据集格式转coco数据集格式:大佬的链接
将
classes = ['bicycle', 'pottedplant', 'tvmonitor']
改为自己的label,
安装一些库:
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com torch==0.4.0 torchvision==0.2.0
下面这些也得装
先注意版本关系:跳转
pytorch>=0.3.1但是要低一些才行,最高支持0.4.0,安装其他时注意别升高,后面还要用编译CUDA中的命令安装CUDA版本支持
torchvision>=0.2.0可装可行版本0.2.0,,再装会升级torch
cython
matplotlib
numpy
scipy
opencv可行版本4.5.1
pyyaml
packaging
pycocotools — for COCO dataset, also available from pip.
tensorboardX — for logging the losses in Tensorboard
cffi
测试下导入包看可行
from torch.utils.data.dataloader import numpy_type_map
编译CUDA:
Compile the CUDA code:
cd lib # please change to this directory
sh make.sh
查看torch是否支持GPU计算
进入python后:
torch.cuda.is_available()
查看cuda版本:
cat /usr/local/cuda/version.txt
查看CUDA版本:
nvidia-smi
这边是10.2
故安装torch命令为:
执行训练命令报错:undefined symbol: __cudaPopCallConfiguration
conda install pytorch=0.4.0 cuda102 -c pytorch
conda 无法安装下载时,检查下源,可用下面的配置:
gedit ~/.condarc
内容为:
channels:
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
ssl_verify: true
安装10.0还是报错,解决方法说是两个:
1.升高torch版本
2.降CUDA版本
网上有说是9.1可行,
cuda为9.2 ,8.5 ,8.0时不行,还是报错
安装时出现错误:All requested packages already installed
清理后过5min再敲命令,可行了。。。
换版本时,conda清理无用包:
卸载原有的torch版本
conda clean --all
conda install pytorch=0.4.0 cuda92 -c pytorch
-c pytorch指从pytorch官网下载,
如果失败,用下面的命令,注意对应的版本,亲测有效:
conda install pytorch=0.4.0 cudatoolkit=8.0
前面卸载了torch后,这一步只装好了cudatoolkit,torch没装上,再用pip重新装下torch,装了之后再次执行:
conda install pytorch=0.4.0 cudatoolkit=8.0
重新编译make.sh文件,竟然不报cuda错了,但是报了一个numpy的错误:说是版本低了,好吧 升级下:
pip install --upgrade numpy
再次敲入训练命令,又报cuda的错误
说是python的权限不够,切换到base环境,0.4.0转不上,装了0.4.1的torch,再次 sh make.sh还是说权限不够,
解决办法
实际上是linux给的权限不够,anaconda文件夹中的python程序的用户为user(ubuntu用户名称)而项目文件夹的所属用户为root,因此不匹配,将项目文件的用户更改为user后再编译,就可以了,命令为:
sudo chown user -R DIoU-pytorch-detectron-master
windows中的操作,类似于下面图片这样:
下面是把 sh make.sh命令方法放进python程序中执行的方法,
import os
status = os.system('sh /home/wxd/DIoU-pytorch-detectron-master/lib/make.sh')
CUDA8.0尝试
本次环境: RTX 1080 Ti ubuntu18
网上有说CUDA8.0没有undefined symbol: __cudaPopCallConfiguration这个错误,尝试下,主要参考链接:点这里
官网下载CUDA8,cudnn6.0 需要科学上网或其他办法
两个文件下载好,CUDA8搜索cuda_8.0.61_375.26_linux-run进行下载,
cudnn6.0,也就是cudnn-8.0-linux-x64-v6.0.tgz这个文件,可用下面的链接迅雷下载
https://blog.youkuaiyun.com/xiangxianghehe/article/details/79177833
CUDA8.0安装按照大佬链接中操作即可,尤其注意不要替换掉GPU原有的驱动,
cudnn6.0安装见下面步骤:
tar -xvf cudnn-8.0-linux-x64-v6.0.tgz
sudo cp include/cudnn.h /usr/local/cuda-8.0/include
sudo cp lib64/libcudnn* /usr/local/cuda-8.0/lib64
原有的版本是指向10.0,现在要指向8.0,需要删除原有的软链接,建立新的软链接,安装及查看命令如下:
cd /usr/local
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
nvcc -V
成功的图片:
或者在/usr/local 目录下使用 stat cuda命令查看
再次 sh make.sh编译后。。。
还是报错:
_roi_pooling.so: undefined symbol: __cudaPopCallConfiguration
卒。。。
在这里插入代码片
使用GCC 4.x编译
make.sh的打印界面说不支持5.0以后的版本,那装个gcc 4.x编译试试.
大佬链接
用了4.8,在make.sh最前面添加这两行:
参考
export CXXFLAGS="-std=c++11"
export CFLAGS="-std=c99"```
可行了
使用新数据集训练
数据集在lib/datasets/coco_pcb中,结构为
修改文件:
config.py
直接写要修改的内容了
#line 83
__C.TRAIN.PROPOSAL_FILES = ('/home/wxd/DIoU-pytorch-detectron-master/lib/datasets/coco_pcb/instances_train2014.json') #
__C.TRAIN.DATASETS = ('coco_pcb')