cfzd / Ultra-Fast-Lane-Detection-v2

Ultra Fast Deep Lane Detection With Hybrid Anchor Driven Ordinal Classification (TPAMI 2022)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

当我启用了SegHead结构后,就发生了报错。

FriendChi opened this issue · comments

Traceback (most recent call last):
File "train.py", line 142, in
train(net, train_loader, loss_dict, optimizer, scheduler,logger, epoch, metric_dict, cfg.dataset)
File "train.py", line 30, in train
loss = calc_loss(loss_dict, results, logger, global_step, epoch)
File "/root/Ultra-Fast-Lane-Detection-v2-master/utils/common.py", line 274, in calc_loss
loss_cur = loss_dict['op']i
File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/loss.py", line 1174, in forward
return F.cross_entropy(input, target, weight=self.weight,
File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/functional.py", line 3029, in cross_entropy
return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index, label_smoothing)
RuntimeError: only batches of spatial targets supported (3D tensors) but got targets of size: : [32, 3, 320, 800]

经过我的检查我发现,模型会直接返回seghead结构的输出,然后将其与其的标签放入cross_entropy_loss函数,但关键是cross_entropy_loss函数要求的输入是batch_size*C,两者的形状不符所以发生了错误,但我想不应该是你的代码发生了错误,所以问题出在哪呢