这几天一直在做调包侠,是时候来总结总结了。记录一些我所遇到的不常见的问题。
faster rcnn:
参考代码:
jwyang/faster-rcnn.pytorchgithub.com
pytorch代码调试,相较于tensorflow的版本要友好一些,不用创建软连接啥的,数据集直接复制voc2007就行(暂时没有尝试coco),不过要注意如果有一个类别是0(就是完全没有目标的图像)要把这个类别给去掉,不然在训练的时候rpn_bound_loss会变成nan,我猜测是因为找不到正样本(如果类别为0,正样本是0,背景也是0,可能机器就会把正样本和负样本搞混,找不到正样本,分子为0,损失就变成nan了)。
SSD:
参考代码:
https://github.com/amdegroot/ssd.pytorchgithub.com这个代码调试了很久,大部分问题可以百度解决。我遇到的难题是这个
IndexError: too many indices for array(其他的报错信息找不到了。。)
可以参考我的回答:
小墨:SSD IndexError: too many indices for array报错zhuanlan.zhihu.com另外一个难题是这个:
报错信息:RuntimeError: cuda runtime error(59):device-side assert triggred at XXXX
这个是我不懂SSD的原因,SSD中类别是没有backgound,但是config.py中类别数要修改成class+1,这个1就是背景。
cascade-rcnn
https://github.com/guoruoqian/cascade-rcnn_Pytorchgithub.com这个代码和前面的faster rcnn的代码是一脉相承的,改一下lib里面的make.sh里面的算力,我的是sm_61。报错如下
from scipy.misc import imread cannot import name "imread"
这个只需要吧scipy的版本降低到1.2.1就OK了,更低的版本1.1.0我也试过了,可以使用。
第二个报错是这个:
im_data=im_data.cuda()这里报错
runtimeError: cuda runtime error (38): no CUDA-capable device is detected at XXXX
这个是因为在输入命令的时候是这样输入的:
CUDA_VISIBLE_DEVICES=3 python3 trainval_net.py XXXXX等等一长串
CUDA_VISIBLE_DEVICES这个命令是选择GPU的型号,如果你只有一块GPU,就只能选择0。
这个报错的网上解答很多都是要求重新装驱动,装cuda。如果是头一次使用cuda,报错,可以重新装,不过对于我来说没必要,其他代码能运行,说明版本啥的没问题,能不折腾就不折腾。
能想到的bug就这么多,后续想到了或者遇到了会继续补充。有建议和问题请在评论区留言,我想起了就会去看看。
等待后续更新 2020年1月8日