关于在训练Yolact模型时的报错解决方案
错误截图如下:
初次发现此问题,得出结论为pytorch版本过低,参考
JIT error after running for a long time #22170
修改pytorch版本至1.1.0后,错误并无改善.
然后改变思路自行查找出现问题的原因,根据报错的函数,查找资料猜测是由于数据集在CPU预处理后,在转换至GPU的过程中出现了问题.于是决定将每个batch所引用的数据路径打印出来, 排查是否是数据集问题导致报错.
修改data/coco.py:180 | PS:以下行数并不准确, 请自行参照上下文定位
修改data/coco.py:96-97
将图片路径添加至读取数据的返回值中
修改data/coco.py
修改train.py
从读取的数据提取出此batch的所有图片路径,并将数据恢复至训练所需的格式
由于报错都是由 losses = net(datum) 这句函数导致的报错
可将此处的报错用 try…except… 接收, 可一次性输出有问题的batch,无须多次重启训练
将batch调至1, 使报错的数据更加明显
训练输入如下:
经过一次迭代后共有4张图片突围入选, 将这4张图片从数据集中剔除后,将batch恢复至8再次开始训练
训练输出如下:
发现仍有batch报错, 继续训练,经过两次迭代后,共出现12组batch,经过查重后共筛选出6张问题图片
再次将问题图片剔除后,第三次开始训练,过程中并未再出现上面的错误,两次迭代后,在计算mAP时再次报错
查看代码后,发现是在修改读取数据的结构后产生的并发问题
修改eval.py:957
将多余的path接收
修改train.py使训练一次便计算mAP, 看问题是否解决.
经过验证, 问题解决.
PS:用于记录报错解决方案