我对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网站对上述代码的评论:
在处理大量真实图像数据时,损坏图像是常见的现象.让我们过滤掉编码不好的图像,这些图像的标题中没有字符串"JFIF“。
我想特别知道下面的命令是做什么的,它是怎么做的?
is_jfif = tf.compat.as_bytes("JFIF") in fobj.peek(10)我检查了API,但没有清楚地理解它。
一个更好的解释会有很大帮助。
谢谢
发布于 2020-06-05 19:15:50
发布于 2020-06-05 19:14:14
该命令将给定的字符串(JFIF)转换为字节,并检查它是否存在于字节10的文件对象中。它是一个验证头的内容的快速程序。
当涉及到处理“损坏的数据”时,这不是我的第一选择,通常您会把它留给一个对图像处理了解得更多的模块。这是一个教程,所以重点是简洁和突出一个问题,而不是提供一个全面的解决方案。
https://stackoverflow.com/questions/62220855
复制相似问题