新手可直接复现:Duan版本CenterNet在2080Ti上训练自己的数据集——踩坑记录

实验室换了GPU,记录下centernet在新电脑上的配置过程,如果对下面很多不理解先阅读我以前的这篇博客即可初学者复现CornerNet:详细指导零基础在Ubuntu系统运行该代码并完全理解论文思路的教程

直接复现

CenterNet-duan-2080Ti代码
按照 README上面的操作即可

踩坑记录

1. cuda版本问题

/home/psdz/anaconda3/envs/CenterNet/lib/python3.6/site-packages/torch/cuda/__init__.py:114: UserWarning: 
	 Found GPU0 GeForce RTX 2080 Ti which requires CUDA_VERSION >= 9000 for
	 optimal performance and fast startup time, but your PyTorch was compiled
	 with CUDA_VERSION 8000. Please install the correct PyTorch binary
	 using instructions from http://pytorch.org
	 ...
	 ...
	 ...
	   File "/home/psdz/anaconda3/envs/CenterNet/lib/python3.6/site-packages/torch/nn/modules/conv.py", line 301, in forward
self.padding, self.dilation, self.groups)
RuntimeError: CuDNN error: CUDNN_STATUS_MAPPING_ERROR

这个的原因是因为CUDA版本问题,先确认机器安装好了cuda和cuDNN,要保证:
显卡驱动的cuda版本(10.2)> 机器的运行cuda版本(10.0) > 环境内的cuda-toolkit 版本(9.0)
当然,pytorch版本也很重要,详见下文

安装方法参考这两个:
Ubuntu 18.04上安装cuda
ubuntu 18.04 cuda安装

通过下面指令验证即可

#查看显卡驱动和驱动cuda版本
nvidia-smi 

#查看电脑runtime cuda版本
nvcc -V 
nvcc --version

#查看centernet环境内的,当然自己安装的直接选安装包就行
>>> print(torch.__version__)
0.4.1
>>> print(torch.version.cuda) 
8.0.61
>>> 

那么我们这样就可以保证cuda大于9.0同时小于驱动版本。

多说几句

cat /usr/local/cuda/version.txt

也可以查看cuda版本,但是我的电脑显示不一致,肯定是依据nvcc --version为准,原因在这
CUDA版本检测

检查nvcc
which nvcc,发现是/usr/bin/nvcc,而实际上nvcc是应该在/usr/local/cuda/bin/nvcc。
所以,sudo gedit /usr/bin/nvcc,把里面的内容"exec /usr/lib/nvidia-cuda-toolkit/bin/nvcc" 改成"exec /usr/local/cuda/bin/nvcc"
然后继续nvcc --version这次得到10.0

2. torch版本问题

Traceback (most recent call last):
  File "train.py", line 5, in <module>
    import torch
ModuleNotFoundError: No module named 'torch'

如果直接安装最新版本的pytorch是不匹配的,所以试了多个版本最后1.0的还是能用的,当然cuda版本也是试出来的,我最后的pytorch是pytorch-1.0.0-py3.6_cuda9.0.176_cudnn7.4.1_1,最好用迅雷下载

3. 角池化问题

(centernet) psdz@dj:~/桌面/CenterNet-master$ python train.py CenterNet-52
Traceback (most recent call last):
File "train.py", line 18, in <module>
	from nnet.py_factory import NetworkFactory
  File "/home/psdz/桌面/CenterNet-master/nnet/py_factory.py", line 8, in <module>
    from models.py_utils.data_parallel import DataParallel
  File "/home/psdz/桌面/CenterNet-master/models/py_utils/__init__.py", line 6, in <module>
    from ._cpools import TopPool, BottomPool, LeftPool, RightPool
  File "/home/psdz/桌面/CenterNet-master/models/py_utils/_cpools/__init__.py", line 8, in <module>
    import top_pool, bottom_pool, left_pool, right_pool
ImportError: /home/psdz/.local/lib/python3.6/site-packages/cpools-0.0.0-py3.6-linux-x86_64.egg/top_pool.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at6detail20DynamicCUDAInterface10set_deviceE 	

这个问题其实就是池化编译过程中除了问题,官方解决方案两个

cd <CenterNet dir>/models/py_utils/_cpools/
python setup.py install --user

把后面的–user去掉,我试过并没有什么用
最后参考这篇博客的思路解决的
装不了 pytorch=0.4.0? ubuntu下 基于 cuda=92 和 pytorch=1.2 配置环境跑通 CornerNet 训练和测试流程 步骤详解(包括GPU限制问题详解)

我简单讲下思路,就是把新版本的CornerNet-Lite里面的CornerNet-Lite/core/models/py_utils/_cpools文件夹复制替换CornerNet源代码下的CornerNet/models/py_utils/_cpools/,然后运行命令进行重新编译
CenterNet-Lite代码

cd <CenterNet dir>/models/py_utils/_cpools/
python setup.py install

4.更换数据集问题

我们测试自己的数据集需要改动如下几个地方

1. config里面的json文件,用哪个改哪个
	"batch_size": 48,
	 "max_iter": 48000,
    "stepsize": 45000,
    "snapshot": 500,
	chunk_sizes": [6,6,6,6,6,6,6,6],
	"data_dir": "../data"
2. db里面的detection.py文件
   (self._configs["categories"] = 80)
3. model里面的centernet-52.py
	  out_dim = 80
4. test里面的coco.py
      colours = np.random.rand(80,3)

改成啥看个人需求了,实际上就是输出的类别不同

  1. 数据集的位置在github的README上面有些,路径更改json文件即可
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值