ssd.pytorch 踩坑记录

ssd.pytorch 踩坑记录

由于实验室需求,从github上下载了一个基于pytorch的ssd代码,调试过程中出现了蛮多bug,记录一下,方便以后调试的时候继续参考。数据集为实验室制作的遥感图像数据集。
参考代码:https://github.com/amdegroot/ssd.pytorch

1. 训练时出现loss: nan

问题

检查发现,loss_l为nan,寻找错误半天,找到原来是数据集ground truth中,标签格式并非是「xmin,ymin,xmax,ymax]而是,「x1,y1,x2,y2],x1可能出现小于x2的情况,因此在计算w,h过程中,可能会出现为负值的情况。

解决方法

数据集定义代码中(/data/mydata.py),判断一下第一个点和第二个点的位置,如果格式不对,转换一下格式。

2.提示multibox_loss中向量维度不匹配

ssd.pytorch代码使用者很多人都遇到了类似的问题,参考他们的解决方案是在,Multibox_loss.py中,变换一下loss向量的维度。

3.pytorch版本不匹配

问题及解决

测试代码,提示forward只能静态调用,网上查阅资料,给出的解决方案是,采用pytorch 1.2版本以下的版本,但是我是cuda11.1,不支持切换。我的pytorch版本是1.8.1
进一步参考某博主,将ssd.py代码中如下所示行,改为下面的解决方案:
ssd.pytorch 踩坑记录
后面bbox_util.py又出现了 torch.index_select()函数错误,因此修改为以下代码:
ssd.pytorch 踩坑记录

上一篇:HDFS的存储策略


下一篇:Proxmox虚拟机自动备份填坑记