问题描述
我正在研究图像分类问题,我的目标是创建一个模型,可以在其中输入图像,其类别和边界框的值(x_min,y_min,x_max,y_max)。到目前为止,我只使用ImageDataGenerator加载图像来进行图像检测,所以这对我来说是新事物。
在AurélienGéron撰写的《使用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仅接受数组形式的数据。因此,如果有人可以帮助我理解应该如何设计模型以及应该如何向模型提供输入以获取图像的类别和边界框的值作为输出。
解决方法
让输入数据为图像,目标值为4个坐标,即边界框的坐标