I am new to Tensorflow and tried to get a script going for detecting cups. I came up with the following script:
import tensorflow as tf
# Ordner mit den Bildern definieren
becher_images_dir = "/Users/myname/Documents/Python/TensorFlow/data/train/cups"
nicht_becher_images_dir = "/Users/myname/Documents/Python/TensorFlow/data/train/not_cups"
# Trainingsdaten definieren
becher_train_data = tf.keras.preprocessing.image_dataset_from_directory(
becher_images_dir, batch_size=32
)
nicht_becher_train_data = tf.keras.preprocessing.image_dataset_from_directory(
nicht_becher_images_dir, batch_size=32
)
# Trainingsdaten zusammenfügen
train_data = becher_train_data.concatenate(nicht_becher_train_data)
# Validierungsdaten definieren
validation_split = 0.5
validation_data = train_data.take(validation_split * len(train_data))
# Eingängen definieren
x = tf.keras.Input(shape=(224, 224, 3))
# Erstes Konvolutional- und Pooling-Layer
conv1 = tf.keras.layers.Conv2D(filters=32, kernel_size=(3, 3), padding='same')(x)
pool1 = tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=2)(conv1)
# Zweites Konvolutional- und Pooling-Layer
conv2 = tf.keras.layers.Conv2D(filters=64, kernel_size=(3, 3), padding='same')(pool1)
pool2 = tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=2)(conv2)
# Fully-connected Layer
flatten = tf.keras.layers.Flatten()(pool2)
dense = tf.keras.layers.Dense(128, activation='relu')(flatten)
# Ausgabe
output = tf.keras.layers.Dense(1, activation='sigmoid')(dense)
# Modell definieren
model = tf.keras.Model(inputs=x, outputs=output)
# Modell trainieren
loss_fn = tf.keras.losses.BinaryCrossentropy()
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)
model.compile(loss=loss_fn, optimizer=optimizer, metrics=['accuracy'])
model.fit(train_data, validation_data=validation_data, epochs=10)
# Modell bewerten
model.evaluate(validation_data)
When I execute my script, it always says that my images could not be found:
No images found in directory /Users/myname/Documents/Python/TensorFlow/data/train/cups. Allowed formats: ('.bmp', '.gif', '.jpeg', '.jpg', '.png')
However, as you can see in the screenshot, the folder contains images. What's the problem here?

If you're using
image_dataset_from_directory, you need to pass the path to the directory containing subdirectories with your classes, and not directories containing images. The output of that is a dataset yielding images from all classes you have. Specifically in your case that means:https://www.tensorflow.org/api_docs/python/tf/keras/utils/image_dataset_from_directory