Классификация изображений + локализация

Я работаю над проблемой классификации изображений, и моя цель - создать модель, в которой я могу ввести изображение, его класс и значения для ограничивающей рамки (x_min,y_min,x_max,y_max). На данный момент я работал только с обнаружением изображений, где я использовал ImageDataGenerator для загрузки своих изображений, так что это что-то новое для меня.

В книге Орелиена Жерона "Практическое машинное обучение с помощью Scikit-Learn,Keras и TensorFlow" он кратко упоминает классификацию изображений и локализацию и приводит пример модели.

 base_model =keras.applications.xception.Xception(weights="imagenet",include_top=False)
 avg = keras.layers.GlobalAveragePooling2D()(base_model.output)
 class_output = keras.layers.Dense(n_classes, activation="softmax")(avg)
 loc_output = keras.layers.Dense(4)(avg)
 model = keras.Model(inputs=base_model.input, outputs=[class_output, loc_output])
 model.compile(loss=["sparse_categorical_crossentropy", "mse"], loss_weights=[0.8, 0.2],  optimizer='adam', metrics=["accuracy"])

Он также упоминает, что данные должны быть в виде кортежа.

(images, (class_labels, bounding_boxes))

Но насколько мне известно, keras принимает данные только в виде массива. Итак, если бы кто-нибудь мог помочь мне понять, как модель должна быть спроектирована и как следует вводить входные данные в модель, чтобы получить класс изображения и значения ограничивающих прямоугольников в качестве выходных данных.

1 ответ

Пусть входными данными будет изображение, а целевыми значениями будут 4 координаты, то есть координаты ограничивающей рамки.

Другие вопросы по тегам