YOLOv5推理时出现:assert im0 is not None, f‘Image Not Found {path}‘

文章讲述了在使用Yolov5模型时遇到的图片位深度不足导致的错误,提出了解决方案,包括图片预处理(筛选和位深度转换),以及代码修改以适应不同位深度的图片。
摘要由CSDN通过智能技术生成

一、问题展示

Traceback (most recent call last):
  File "/media/hadoop/yolov5-7.0/detect.py", line 259, in <module>
    main(opt)
  File "/media/hadoop//yolov5-7.0/detect.py", line 254, in main
    run(**vars(opt))
  File "/home/hadoop/anaconda3/envs/xxx/lib/python3.9/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
  File "/media/hadoop/yolov5-7.0/detect.py", line 115, in run
    for path, im, im0s, vid_cap, s in dataset:
  File "/media/hadoop/yolov5-7.0/utils/dataloaders.py", line 305, in __next__
    assert im0 is not None, f'Image Not Found {path}'
AssertionError: Image Not Found /media/hadoop/VOC/images/val/3070.jpg

二、问题分析

定位到此张图片是存在的,分析到此张图片的详细信息如下:

可以查看到此张图的位深度为8,按如下表格分析到此张图为位图模式、灰度图或者r\g\b单通道图片等

在yolon5模型训练、验证时如果遇到位深度不足24的图片则会出现如下图过滤信息,代表此张图不使用;datect.py推理则会直接报错停测,如出现标题主题的现象。

三、解决方案

方案一、.图片筛选:(我使用的方式)

   在图片批量使用前,使用文件位深度排序方式删除位深度不足24的图像数据,步骤如下;

 

方案二、yolo程序修改

将dataset中的第161行

p = str(Path(path).resolve())  # os-agnostic absolute path

改为

p = str(Path(path))  # os-agnostic absolute path

方案三、代码进行图片位深度转换

Python将8位的图片转为24位的图片



import numpy as np
from PIL import Image
import os
import sys


path='XXXXXXXXX/'
newpath='XXXXXXXXX/'
def Img8to24(path):
   files = os.listdir(path)
   files = np.sort(files)
   i=0
   for file in files:
       imgpath = os.path.join(path, file)
       #转换
       img=Image.open(imgpath).convert('RGB')
       savepath = os.path.abspath(newpath,file)
       img.save(savepath)

Img8to24(path)



完结*0*

参考链接:

python——PIL,Image,cv2读取、修改图片_img.load()-CSDN博客

YOLOv5 detect运行报错assert img0 is not None, f‘Image Not Found {path}‘解决方案_yolov5detect大量数据读取时报错assert im0 is not none, f'ima-CSDN博客

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值