RuntimeError: result type Float can‘t be cast to the desired output type long int问题解决

在使用YOLOv5高版本训练自定义数据集时遇到RuntimeError,问题出在不同版本的utils/loss.py文件。解决方法是修改loss.py中的两处代码,涉及计算图像和锚点的形状以及索引的处理。按照教程进行替换后,问题得以解决。如果仍有问题,检查代码对齐情况。
摘要由CSDN通过智能技术生成

问题描述:

在使用YOLO框架训练自己的数据集时候,你是不是出现了这个问题?

 

     RuntimeError: result type Float can't be cast to the desired output type long int

明明自己【data】下的yaml文件,【models】下网络结构等文件设置与修改都是按照教程来的

可还是出现了问题?这是怎么回事?

起初我也遇到了这个问题,但是经过思考,终于找到了问题的根源:

    官网的yolov5-master版本可以正常运行,但是yolov5-5.0/yolov5-6.1等版本就是不可以运行

    这是因为yolov5-master版本和yolov5-5.0/yolov5-6.1等版本下的【utils】中的【loss.py】文件是不一样的,大概是yolov5-5.0/yolov5-6.1等版本在更新版本的时候出了问题

不过,我已经总结出了解决这个问题办法,详细看下一章节内容吧~~~
问题解决:

    修改【utils】中的【loss.py】里面的两处内容

 1.打开你的【utils】文件下的【loss.py】

2.按【Ctrl】+【F】打开搜索功能,输入【for i in range(self.nl)】找到下面的一行内容:

 

 (上面的代码在【loss.py】的后半部分)

将下面的代码替换掉上图中的红圈部分:

 anchors, shape = self.anchors[i], p[i].shape

 替换之后的效果是这样的:

 

3.按【Ctrl】+【F】打开搜索功能,输入【indices.append】找到下面的一行内容:

 

  (上面的代码在【loss.py】的最后部分,具体位置在上一处搜索位置的下面10行左右)

 将下面的代码替换掉上图中的红圈部分:

indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1)))  # image, anchor, grid

替换之后的效果是这样的:

 

4.保存刚才的两个替换操作

5.再次运行【train..py】文件,问题解决!!!代码跑通!!!

 

6.如果你还是跑不通,可以看最后的小提示,可能会有你的问题!


【更新】小提示

如果你按照我的方法改了指定的代码,还出现了下面的问题?

 

那么你是在修改下面地方时,没有将【anchors】和下面的【gain】对齐!!!

 

 打开【loss,.py】对齐下代码就可以了!完美解决小小粗心bug~
————————————————
版权声明:本文为CSDN博主「蓝胖胖▸」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Thebest_jack/article/details/125649451

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值