预测类和边界矩形



我尝试训练两个类的神经网络图像分类器(实际上是3 ->2类和所有其他)。在网络训练之后,我希望能够在检测到的区域上添加一个边界矩形,如果它是两个想要的类之一。

我的模型是这样创建的:

model = Sequential([
data_augmentation,
layers.Rescaling(1./255),
layers.Conv2D(16, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(32, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(64, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Dropout(0.1),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(num_classes)
])

当我使用predict方法时,每个类只有一个输入列表:

predictions = model.predict(img_array, verbose=0)
# [[1.12, 4.10, 6.21]]
score = tf.nn.softmax(predictions[0])
prediction = class_names[np.argmax(score)]

所以我可以有被测试图像的类名,但不能有图像中触发类检测的ROI的边界矩形,以便对该区域进行像素化/模糊。我是否在模型的输出中遗漏了什么?

序列模型是为了简单的网络设计。

假设你的数据集中有对象坐标信息。

对于具有多个I/O的更复杂的网络,在您的情况下(具有对象坐标的类概率),您应该使用Keras Functional API相反。

最新更新