写在前面
在部署yolop的时候,原封不动的按照官方执行指令,结果在训练数据集的时候报错:
报错:RuntimeError: result type Float can’t be cast to the desired output type long int
什么意思呢,加就是说我这个版本的torch不支持float直接转换为long int 型数据,,后来发现新版本的torch确实有这个问题,老版本没有这个问题。所以这需要我们手动转换数据类型
两种解决办法
第一种:搜索找到postprocess.py文件,第30行
gain = torch.ones(7, device=targets.device)
将上述代码更改为:
gain = torch.ones(7, device=targets.device).long()
第二种:找到报错文件postprocess.py文件,第75行
indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1)))
将上述代码更改为:
indices.append((b, a, gj.clamp_(0, predictions[i].shape[2] - 1), gi.clamp_(0, predictions[i].shape[3] - 1)))
建议使用第一种,因为我发现第一中的处理速度貌似更快