版本 pytorch yolov3
1.RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False
问题出现原因,一般为torch版本有问题
解决办法:
1.1检查环境内cuda和CUDNN版本,以及tensorflow版本是否兼容
我使用的是Anaconda环境,一定要注意,除了安装CUDAtooklit以外还需要安装conda的CUDNN,清华源中似乎没有,下载可能需要翻。我用的CUDA9.0加cudnn7.6.4 官网下载时选择合适版本
1.2torch版本问题,conda自动安装的版本似乎不带CUDA
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch -c defaults -c numba/label/dev
2.FileNotFoundError: [Errno 2] No such file or directory: ‘…/coco/images/val2014/COCO_val2014_000000000164.jpg’
找不到图片文件
一般为路径问题,此外还存在图片文件名或后缀问题
YOLOV3的数据制作时,用到两个文件,trainnamelist.py和label.py两个,一个是对数据训练测试进行划分,另一个生成标签文件。
一贴代码就挂。。。可以CSDN搜索YOLOV3自制数据集工具,一般都有
注意111行,给出list_file.write('data/firedata/images/%s.jpg\n' % (image_id))
全部路径即可,生成的文件
data/firedata/images/000001.jpg
data/firedata/images/000003.jpg
3.此外出现了TypeError: ‘NoneType’ object is not subscriptable 问题
出现该问题的原因是无法正确找到图片标签
解决办法:
datasets.py里面有一句
path.replace("images", "labels").replace(".png", ".txt").replace(".jpg", ".txt").replace(".JPG", ".txt")
注意两个点,一个是你图片文件的文件名和后缀是否正确,JPG还是jpg
另一个是文件夹的名字,我之前定义的图片文件夹为JPEGImages,无法正确找到,修改后可以正常训练
3.可以正常训练,但是疯狂报
问题出现的原因主要是NUMPY的版本问题,往往是1.17 1.18的问题
对numpy进行降级
conda install numpy==1.16.0
未完待续 = =
(参考了诸位大神的博客,写的文章半截丢了,无法一一贴参考,多谢诸位,希望大家能顺利跑通一切!)