gpt4 book ai didi

python - Tensorflow 删除 JFIF

转载 作者:行者123 更新时间:2023-12-04 11:55:26 25 4
gpt4 key购买 nike

我对 tensorflow 很陌生,我想清楚地知道,下面的命令有什么作用?

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import os

num_skipped = 0
for folder_name in ("Cat", "Dog"):
print("folder_name:",folder_name) #folder_name: Cat
folder_path = os.path.join("Dataset/PetImages", folder_name)
print("folder_path:",folder_path) #folder_path: Dataset/PetImages/Cat
for fname in os.listdir(folder_path):
print("fname:",fname) #fname: 5961.jpg
fpath = os.path.join(folder_path, fname)
print("fpath:", fpath) #fpath: Dataset/PetImages/Cat/10591.jpg
try:
fobj = open(fpath, "rb")
is_jfif = tf.compat.as_bytes("JFIF") in fobj.peek(10)
finally:
fobj.close()

if not is_jfif:
num_skipped += 1
# Delete corrupted image
os.remove(fpath)

print("Deleted %d images" % num_skipped)

Keras 网站对上述代码的评论:

在处理大量真实世界的图像数据时,损坏的图像很常见。让我们过滤掉 header 中没有字符串“JFIF”的编码错误的图像。

我想具体知道下面的命令是做什么的,它是怎么做的?
 is_jfif = tf.compat.as_bytes("JFIF") in fobj.peek(10)

我检查了 API,但不能清楚地理解它。

更好的解释会有很大帮助。

谢谢

最佳答案

Wikipedia解释 JPG 文件在文件开头包含字符串“JFIF”,编码为字节:

JFIF header

所以:

  • tf.compat.as_bytes("JFIF")将字符串“JFIF”转换为字节。您也可以使用 b"JFIF" ,虽然也许 TensorFlow 实现有一些我不知道的优化。
  • fobj.peek(10)理论上返回文件的前 10 个字节,但实际上它经常返回 entire file .
  • is_jfif然后只检查转换后的“JFIF”字符串是否在 fobj.peek 的结果中.
  • 关于python - Tensorflow 删除 JFIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62220855/

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