模型训练出现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系统文件,还有就是有其他类型的图片
- html
- png
- bmp
反正什么乱七八糟的图片都有一大堆,特别是在数据集比较大的时候,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>的主要内容,如果未能解决你的问题,请参考以下文章
PyTorch:将预训练模型从 3 个 RGB 通道更改为 4 个通道后,出现“ValueError:无法优化非叶张量”
迁移学习调用预训练模型出现Given input size: (512x3x3). Calculated output size: (512x-3x-3)错误