使用TF ImageGenerator训练模型时出现UnidentifiedImageError

时间:2020-10-26 03:39:33

标签: tensorflow image-processing keras deep-learning

我正在运行21250个图像的二进制分类器(这两个类总计)。我的批量大小为425,步长为50。

运行模型时,出现以下错误:

UnknownError: 2 root error(s) found.
  (0) Unknown:  UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x0000019FA183C8B0>
Traceback (most recent call last): 

据我了解,此处的图像可能已损坏或由于其他原因而无法读取该图像。有没有办法让培训者跳过无法识别的图像?

请让我知道在我的代码/数据中要考虑的其他建议,以解决此问题。

1 个答案:

答案 0 :(得分:2)

此错误可能是由于图像为'NoneType'所致,尽管您可能看到它们为.jpeg or .png,但在预处理图像期间,该图像实际上已以某种方式损坏。在大型数据集上,我已经多次遇到这个问题。

您可以做的是删除这些图像,因为我认为无法将它们转换为所需的格式。

请记住在删除图像之前保留整个数据集的副本,以防万一代码中出现任何问题。

我不知道您的图像文件夹的结构,所以我仅向您展示如何使用已找到图像的完整路径来进行操作。这是您必须要做的,但是可以很容易地通过os.walk()完成,然后将根目录和文件的返回值与image_path = os.path.join(root, files)结合起来以获取图像的完整路径。这样做时,请遍历所有图像,以将其应用于所有图像。

import cv2
import imghdr
import os


image = cv2.imread(image_path)
img_type = imghdr.what(image_path)
if img_type != "jpeg":
    os.remove(image_path)