gpt4 book ai didi

python-3.x - 如何识别带有 'Possibly corrupt EXIF data' 的图像

转载 作者:行者123 更新时间:2023-12-01 03:22:08 28 4
gpt4 key购买 nike

我正在参加 Kaggle 图像分类竞赛,并从 Kaggle.com 下载一些训练图像。然后我使用 ResNet50 的迁移学习来处理这些图像,在 Keras 2.0 和 Tensorflow 中作为背景(和 Python 3)。

然而,总共 1281 个训练图像中有 258 个具有“可能损坏的 EXIF 数据”并且在加载到 ResNet 模型时被忽略,很可能是由于 Pillow issue .

输出消息如下:

/home/shi/anaconda3/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 524288 bytes but only got 0. Skipping tag 3
"Skipping tag %s" % (size, len(data), tag))
/home/shi/anaconda3/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 393216 bytes but only got 0. Skipping tag 3
"Skipping tag %s" % (size, len(data), tag))
/home/shi/anaconda3/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 33554432 bytes but only got 0. Skipping tag 4
"Skipping tag %s" % (size, len(data), tag))
/home/shi/anaconda3/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 25165824 bytes but only got 0. Skipping tag 4
"Skipping tag %s" % (size, len(data), tag))
/home/shi/anaconda3/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 131072 bytes but only got 0. Skipping tag 3
"Skipping tag %s" % (size, len(data), tag))
(more to come ...)

根据输出消息,我只知道它们在那里,但不知道它们是哪些...

我的问题是:如何识别这 258 张图像,以便我可以手动将它们从数据集中删除?

最佳答案

编辑:要将警告作为您可以捕获的错误,请查看下面的 Justas 评论。

即使这个问题已经一年多了,我也想展示我的解决方案,因为我遇到了同样的问题。
我正在编辑错误消息。输出显示在您的系统上在哪里可以找到文件以及行号。
例如,我更改了以下内容:

if len(data) != size:
warnings.warn("Possibly corrupt EXIF data. "
"Expecting to read %d bytes but only got %d."
" Skipping tag %s" % (size, len(data), tag))
continue
if len(data) != size:
raise ValueError('Corrupt Exif data')
warnings.warn("Possibly corrupt EXIF data. "
"Expecting to read %d bytes but only got %d."
" Skipping tag %s" % (size, len(data), tag))
continue
我捕获 ValueError 的代码如下所示。该代码为您提供了 PIL 被中断并且不显示无用消息的优势。你也可以捕获这个并使用它,例如通过'except'部分删除相应的文件。
import os
from PIL import Image

imageFolder = /Path/To/Image/Folder
listImages = os.listdir(imageFolder)

for img in listImages:
imgPath = os.path.join(imageFolder,img)

try:
img = Image.open(imgPath)
exif_data = img._getexif()
except ValueError as err:
print(err)
print("Error on image: ", img)
我知道添加 ValueError 部分既快速又脏,但总比面对所有无用的警告消息要好。

关于python-3.x - 如何识别带有 'Possibly corrupt EXIF data' 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44401114/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com