YOLOV5训练时报错:
Traceback (most recent call last):
File "train.py", line 626, in <module>
main(opt)
File "train.py", line 523, in main
train(opt.hyp, opt, device, callbacks)
File "train.py", line 320, in train
loss, loss_items = compute_loss(pred, targets.to(device)) # loss scaled by batch_size
File "/home/mapgoo/rknn_model_zoo/models/vision/object_detection/yolov5-pytorch/yolov5/utils/loss.py", line 120, in __call__
tcls, tbox, indices, anchors = self.build_targets(p, targets) # targets
File "/home/mapgoo/rknn_model_zoo/models/vision/object_detection/yolov5-pytorch/yolov5/utils/loss.py", line 217, in build_targets
indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices
RuntimeError: result type Float can't be cast to the desired output type long int
解决方案:
修改utils文件夹下loss.py文件中class ComputeLoss类中def build_targets()函数:
1、可能第184行,或是第167行:
源代码:
anchors = self.anchors[i]
修改为:
anchors, shape = self.anchors[i],p[i].shape
修改后:
注意:
如果源码为:
anchors = det.anchors[i]
修改为:
anchors, shape = det.anchors[i], p[i].shape
修改后:
2、可能是第218行,或是第200行:
源代码:
indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices
修改为:
indices.append((b,a,gj.clamp_(0,shape[2] - 1),gi.clamp_(0,shape[3] - 1))) # image, anchor, grid indices
修改后: