yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘

最近微智启软件工作室在运行yolov9目标检测的detect.py测试代码时,报错: File "G:\down\yolov9-main\yolov9-main\ detect.py", line 102, in run pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det) File "G:\down\yolov9-main\yolov9-main\utils\ general.py", line 905, in non_max_suppression device = prediction.device AttributeError: 'list' object has no attribute 'device'

这是因为general.py代码中,900行左右的代码错误了,可以看到里面是一个包含两个数据的,假如直接设置是会报错的

yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘_数据

general.py的位置可以直接点击报错的这个链接跳转,当然也可以在根目录下的yolov9-main\utils\general.py手动打开

yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘_yolov9_02

下面的yolov5的,可以看到只有一个数据,所以不会报错,照抄代码是不对的哟,官方大大!

yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘_数据_03

所以需要对代码进行遍历,设置它改写后的代码如下,替换之前的代码即可。

if isinstance(prediction, (list, tuple)):
        processed_predictions = []  # 用于存储处理后的张量列表
        for pred_tensor in prediction:
            # 对每个张量进行处理
            processed_tensor = pred_tensor[0]  # 假设你只关心张量中的第一个结果
            processed_predictions.append(processed_tensor)  # 将处理后的张量添加到列表中

        # 使用处理后的张量列表中的第一个张量作为预测结果
        prediction = processed_predictions[0]

    # 在此之后可以继续使用 prediction 变量
    device = prediction.device
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

替换后的代码格式如下

yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘_目标检测_04

之后再运行,即可完美解决! 现在是2024年2月23日,后期官方可能会修改这个bug,根据具体情况来修改。 文章由微智启原创,转载请标明出处,谢谢。 如果还有其他问题,可以联系技术客服

posted @   微智启软件工作室  阅读(25)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示