SqueezeSegV3 icon indicating copy to clipboard operation
SqueezeSegV3 copied to clipboard

训练自己的数据loss报错,寻求陈博帮助

Open wfs123456 opened this issue 2 years ago • 2 comments

您好,我用您的segv3训练了一批自己的数据,19分类(包括背景类),比Kitti.yaml中少一类,改了dataloader后输入输出的维度均已对齐,但损失函数报错,希望得到您的帮助 in_vol([16,5,64,2048]), output([16,20,64,2048]), proj_labels([16,64,2048]),self.loss_w([19]),请问还有什么地方需要修改的吗?

proj_labels = proj_labels.squeeze(1).cuda(non_blocking=True).long() [output, z2, z3, z4, z5] = model(in_vol, proj_mask) loss = criterion(torch.log(output.clamp(min=1e-8)), proj_labels)+
criterion(torch.log(z5.clamp(min=1e-8)), proj_labels_5)+\

File "/home/penglei/anaconda3/envs/segv3/lib/python3.8/site-packages/torch/nn/modules/loss.py", line 213, in forward return F.nll_loss(input, target, weight=self.weight, ignore_index=self.ignore_index, reduction=self.reduction) File "/home/penglei/anaconda3/envs/segv3/lib/python3.8/site-packages/torch/nn/functional.py", line 2266, in nll_loss ret = torch._C._nn.nll_loss2d(input, target, weight, _Reduction.get_enum(reduction), ignore_index) RuntimeError: weight tensor should be defined either for all or no classes at /pytorch/aten/src/THCUNN/generic/SpatialClassNLLCriterion.cu:27

wfs123456 avatar Dec 24 '22 08:12 wfs123456

您好,看起来是您的不同class的weight 的维度和class 个数没有对齐

chenfengxu714 avatar Dec 24 '22 21:12 chenfengxu714

,看起来是您的不同class的weight 的维度

感谢回复,刚接触点云有两个问题想咨询: (1)是这个原因,我的数据只有19分类,已修改kitti-yaml文件中为19类,但这个loss计算依旧报错不知道还有什么地方需要修改,我在自己的数据中添加了一个额外类凑够kitti的20类就可以正常run了,咨询一下还有什么地方需要改吗 (2)另外还有个问题咨询您,由于我的数据(461196.6, 4407146.5, 17.5)与kitti不一致,点云project图像的时候SSGV321.yaml中的sensor传感器参数需要修改吗,因为debug发现laserscan.py中的do_range_projection函数生成的proj_x(545,545,545,545.......)和proj_y(7,7,7,7,7,7,7,7,7,........)都是一个值,导致生成的proj_xyz有误,请问这个问题是什么原因导致的

wfs123456 avatar Dec 26 '22 03:12 wfs123456