模型训练出现UnidentifiedImageError: cannot identify image file <io.BytesIO object at 0x7faaa82bdb90>

Posted Devil love genius

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模型训练出现UnidentifiedImageError: cannot identify image file <io.BytesIO object at 0x7faaa82bdb90>相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
UnidentifiedImageError: cannot identify image file <io.BytesIO object at 0x7faaa82bdb90>

在跑深度学习tensorflow框架是制作图片格式向tfrecord格式转化中,读取文件夹中的图片出现系统文件时候报错,提示有.DS_Store系统文件,还有就是有其他类型的图片

反正什么乱七八糟的图片都有一大堆,特别是在数据集比较大的时候,3/4G的时候,特别头疼;

在这里我是使用循环遍历的方法找到“它”,此它非比它,就是它,找到他,删除它,哈哈哈

废话不多说直接上代码:

####################3
此代码是查找出一个文件夹里面,
所有图片读取错误,再删除
###############
import os
import shutil
import warnings
import cv2
import io
from PIL import Image
warnings.filterwarnings("error", category=UserWarning)
base_dir = "../../signs/train/dragon"#删除图片的根目录
i = 0
def is_read_successfully(file):
    try:
        imgFile = Image.open(file)#这个就是一个简单的打开成功与否
        return True
    except Exception:
        return False
for parent, dirs, files in os.walk(base_dir):#(root,dirs,files)
    for file in files:
        if not is_read_successfully(os.path.join(parent, file)):
            print(os.path.join(parent, file))
            #os.remove(os.path.join(parent, file)) #真正使用时,这一行要放开,自己一般习惯先跑一遍,没有错误了再删除,防止删错。
            i = i + 1
print(i)

以上代码是检测一个文件里面图片数据的,大家可以在此基础上进行复杂的目录文件检测

下面的代码是本人再搞深度学习时,对十二生肖的图像分类时,来处理的数据集所写的

####################3
此代码是查找出多级目录下的子文件夹里面,
所有图片读取错误,再删除
###############
import os
import shutil
import warnings
import cv2
import io
 
from PIL import Image
warnings.filterwarnings("error", category=UserWarning)
 
base_dir = "../../signs"
for r in os.listdir(base_dir):
    if r=='.DS_Store':#在这里我们在 .DS_Store 跳过,如果要是有需要的删除.DS_Store文件,可以进行微调
        print(base_dir,r)
        continue 
    for j  in os.listdir(os.path.join('../../signs',r)):
        
        i = 0
        def is_read_successfully(file):
            try:
                imgFile = Image.open(file)
                return True
            except Exception:
                return False


        for parent, dirs, files in os.walk(os.path.join('../../signs/{}'.format(r),j)):
            for file in files:
                if not is_read_successfully(os.path.join(parent, file)):
                    print(os.path.join(parent, file))
                    #os.remove(os.path.join(parent, file)) #真正使用时,这一行要放开,自己一般习惯先跑一遍,没有错误了再删除,防止删错。
                    i = i + 1
        print(i)


我这里的层级比较复杂,希望大家看懂在改!!!

谢谢点赞评论!

以上是关于模型训练出现UnidentifiedImageError: cannot identify image file <io.BytesIO object at 0x7faaa82bdb90>的主要内容,如果未能解决你的问题,请参考以下文章

Google AutoML 训练错误/无法部署模型

过拟合问题?出现原因?怎么解决?

PyTorch:将预训练模型从 3 个 RGB 通道更改为 4 个通道后,出现“ValueError:无法优化非叶张量”

12.03

垃圾邮件分类

迁移学习调用预训练模型出现Given input size: (512x3x3). Calculated output size: (512x-3x-3)错误