CNN:当地图上有标签时该怎么办



在为图像分类问题拟合卷积神经网络时,为了使用等函数

flow_from_directory()
image_dataset_from_directory()

Keras希望列车数据以这种方式存储:

data:
training
class_1
"imag1.jpg"
"imag2.jpg"
...
class_2
"imag1.jpg"
"imag2.jpg"
...
....

相反,我有一个数据集,其中所有图像都存储在一个文件夹中,还有一个.json文件,其中包含从文件名到标签的映射。类似的东西

{"18985.jpg": 0, "43358.jpg": 0, ... "13163.jpg": 1 ....}

有没有一种有效的方法来使用这个数据集?

我建议的解决方案是编写一个脚本来为构建文件夹

步骤1:打开json,获得一个唯一类别的列表

第2步:迭代唯一类别的列表,并在训练下创建一个文件夹

步骤3:迭代json,并将文件复制到正确的文件夹(您已经创建的(

步骤4:使用image_dataset_from_directory 加载所有内容

另一种方法是使用from_generator


import json 

# Opening JSON file 
f = open('data.json',) 

# returns JSON object as  
# a dictionary 
data = json.load(f) 
def gen():
for (image_path, label) in data.items():
image = tf.keras.preprocessing.image.load_img(image_path)
input_arr = keras.preprocessing.image.img_to_array(image)
yield (input_arr, label)
dataset = tf.data.Dataset.from_generator(
gen,
(tf.float32, tf.float32),
output_shapes=([32,256,256,3], [32,5]) # 5 is your number of categories

就个人而言,我会选择第一个^^

最新更新