按如下方式组织目录
main_dir
-train_dir
``person1_fake_dir
```person1 fake image
```person1 fake image
---etc
``person1_real_dir
---person1 real image
---person1 real image
--- etc
--person2_fake_dir
--- person2 fake image
--- person2 fake image
--- etc
--person2_real_dir
---person2 real image
---person2 real image
---etc
.
.
.
--personN_fake_dir
---personN fake image
---personN fake image
---etc
--personN_real_dir
---personN real image
---personN real image
--- etc
-test_dir
same structure as train_dir but put test images here
-valid_dir
same structure as train_dir but put validation images here
如果你有 N 个人,那么你将有 2 X N 个班级
然后您可以使用 tf.keras.preprocessing.image.ImageDataGenerator().flow_from_directory()
输入您的数据。文档是here. 您不必担心裁剪图像,只需将图像大小设置为(256,256)。
下面的代码显示了您需要的其余代码
data_gen=tf.keras.preprocessing.image.ImageDataGenerator(resize=1/255)
train_gen=data_gen.flow_from_directory(train_dir, target_size=(224,224), color-mode='grayscale')
valid_gen=data_gen.flow_from_directory(valid_dir, target_size=(224,224), color-mode='grayscale', shuffle=False)
test_gen=data_gen.flow_from_directory(test_dir, target_size=(224,224), color-mode='grayscale', shuffle=False)
model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.CategoricalCrossentropy(), metrics='accuracy')
history=model.fit(train_gen, epochs=20, verbose=1)
accuracy=model.evaluate (test_gen)[1]*100
print ('Model accuracy is ', accuracy)
请注意,在一般情况下,您的模型将无法区分真假。它应该适用于 1 到 N 的人。您可以尝试将所有假图像放在一个类目录中,将所有真实图像放在另一个类目录中并训练它,但我怀疑在一般情况下它不能很好地区分真假.