我正在尝试使用MobileNets来定位图像中的矩形对象 . 我想构建一个输入图像的模型,并输出矩形对象每个角的关键点/坐标(总共8个点) .

每个图像中的矩形对象都非常独特,我猜想应该很容易概括 . 例如(我的问题与此非常相似):芝加哥公牛队球场的900张图片以及每张图片的8个给定坐标 . 图像始终以中心徽标朝前,但从任何角度/旋转,可以从近距离或远距离拍摄(因此球场尺寸/旋转变化) .

该模型将能够给我8分:

[upper_left_x, upper_left_y, upper_right_x, upper_right_y, bottom_left_x, bottom_left_y, bottom_right_x, bottom_right_y]

然后我们可以手动(我不希望网络这样做)应用点:

example of problem

我用基础模型初始化:

model = MobileNet(weights=None,              # can also be Imagenet
                  include_top=False,         # the top is for classification
                  input_shape=(224, 224, 3))

对于输出图层,我应用了与face-keypoints model非常相似的东西

x = model.output
x = Flatten()(x)
x = Dense(500, activation="relu")(x)
x = Dense(90, activation="relu")(x)
predictions = Dense(8)(x)

其他设置和问题

我使用了Adam优化器,SGD,使用 imagenet 权重(尝试冻结/解冻图层)初始化模型,更改学习率,以多种方式重新构建和调整输出图层大小,选择different/custom model implementations,验证我的数据集(X,y)处理,在100s-1000s的时代训练....

我没有像面部关键点示例那样获得接近准确的结果 . 实际上,预测似乎是完全随机的,除了模型准确地输出一个矩形,其中的点按正确的顺序排列 . Any model seems to only recognize the shape, without worry to any correct dimensions or rotation - 我改变了,输出的形状通常适合)

无论结构如何,我可以实现的最低验证损失似乎都在 0.0xxx 左右,精度完全偏离(就正确的尺寸/旋转而言) . 我认为过度拟合,但认为我的模型的结构是真正的问题 .

mobilenet是错误的结构吗?输出层的结构是否应该不同?

我要感谢任何帮助,谢谢 .