Yapay zeka modeli hakkında

Arkadaşlar uçak ve helikopter sınıflandırması için bir yapay zeka modeli tasarladım ve eğittim. Test fotoğraflarında herhangi bir sorun çıkmıyor ama başka cisimleri denediğimde o cisimleri uçak veya helikopter olarak sınıflandırıyor. Bunu nasıl optimize ederim.Uçak ve helikopter olmayan resimleri de ekleyip tekrar eğitmem mi gerekiyor

image_size = (180, 180)
batch_size = 32



train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    "/content/drive/MyDrive/image_data/Train",
    validation_split=0.2,
    subset="training",
    seed=1337,
    image_size=image_size,
    batch_size=batch_size,
)
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
    "/content/drive/MyDrive/image_data/Validation",
    validation_split=0.2,
    subset="validation",
    seed=1337,
    image_size=image_size,
    batch_size=batch_size,
)
data_augmentation = keras.Sequential(
    [
        layers.experimental.preprocessing.RandomFlip("horizontal"),
        layers.experimental.preprocessing.RandomRotation(0.1),
    ]
)
augmented_train_ds = train_ds.map(
  lambda x, y: (data_augmentation(x, training=True), y))
train_ds = train_ds.prefetch(buffer_size=32)
val_ds = val_ds.prefetch(buffer_size=32)


img_width, img_height = 150, 150
if K.image_data_format() == 'channels_first':
    input_shape = (3, img_width, img_height)
else:
    input_shape = (img_width, img_height, 3)

def make_model(input_shape, num_classes):
    inputs = keras.Input(shape=input_shape)
    # Image augmentation block
    x = data_augmentation(inputs)

    # Entry block
    x = layers.experimental.preprocessing.Rescaling(1.0 / 255)(x)
    x = layers.Conv2D(32, 3, strides=2, padding="same")(x)
    x = layers.BatchNormalization()(x)
    x = layers.Activation("relu")(x)

    x = layers.Conv2D(64, 3, padding="same")(x)
    x = layers.BatchNormalization()(x)
    x = layers.Activation("relu")(x)

    previous_block_activation = x  # Set aside residual

    for size in [64, 32, 16, 100]:
        x = layers.Activation("relu")(x)
        x = layers.SeparableConv2D(size, 3, padding="same")(x)
        x = layers.BatchNormalization()(x)

        x = layers.Activation("relu")(x)
        x = layers.SeparableConv2D(size, 3, padding="same")(x)
        x = layers.BatchNormalization()(x)

        x = layers.MaxPooling2D(3, strides=2, padding="same")(x)

        # Project residual
        residual = layers.Conv2D(size, 1, strides=2, padding="same")(
            previous_block_activation
        )
        x = layers.add([x, residual])  # Add back residual
        previous_block_activation = x  # Set aside next residual

    x = layers.SeparableConv2D(1024, 3, padding="same")(x)
    x = layers.BatchNormalization()(x)
    x = layers.Activation("relu")(x)

    x = layers.GlobalAveragePooling2D()(x)
    if num_classes == 2:
        activation = "sigmoid"
        units = 1
    else:
        activation = "softmax"
        units = num_classes

    x = layers.Dropout(0.6)(x)
    outputs = layers.Dense(units, activation=activation)(x)
    return keras.Model(inputs, outputs)


model = make_model(input_shape=image_size + (3,), num_classes=2)
keras.utils.plot_model(model, show_shapes=True)

model.summary()


callbacks = [
    keras.callbacks.ModelCheckpoint("save_at_{epoch}.h5"),
]
model.compile(loss='binary_crossentropy', 
              optimizer=keras.optimizers.Adam(lr=.0001),
              metrics=['accuracy'])
history = model.fit( train_ds ,epochs=100,
      verbose=1, validation_data = val_ds)

model.save("/content/drive/MyDrive/image_data/uavmodel.h5")
model.save_weights("/content/drive/MyDrive/image_data/UavWeight/save_model.pbtxt")

img = keras.preprocessing.image.load_img("/content/indir.jpg", target_size=(180,180))
img_array = keras.preprocessing.image.img_to_array(img)
img_array = tf.expand_dims(img_array, 0)  # Create batch axis


predictions = model.predict(img_array)
score = predictions[0]
print(
    "This image is %.2f percent Airplane and %.2f percent Helicopter."
    % (100 * (1 - score), 100 * score)
)

Kodun temelini kerasın kendi sitesinde image classification başlığında ki kodları düzenleyerek oluşturdum.