二维点提取模型,类似于分类,最后没有激活层

时间:2019-02-13 02:15:04

标签: machine-learning keras deep-learning classification

我试图弄清楚如何将分类模型转换为2d点提取模型。即训练如何检测图像中的4个坐标(不对其进行分类)。

最后删除softmax很有意义,但是我不确定如何训练模型以与N个坐标相匹配。我什至不确定如何构造标签数据。

自定义Mobilenet示例:

...
previous layer definitions
...

# final layer
def pool_and_classify(self):
            model = self.model
            model.add(AveragePooling2D(pool_size=(7,7),strides=(1,1)))
            model.add(Flatten())
            model.add(Dense(self.classes))
            # model.add(Activation('relu')) #was 'softmax'

def create(self, size):
        self.model = Sequential()
        self.model.add(Conv2D(32,kernel_size=(3,3),strides=(2,2), padding='same', input_shape=size))
        self.mobile_block(32,64)          
        self.mobile_block(128,128)
        self.mobile_block(256,256)
        self.separate()
        self.final_conv_block()
        self.pool_and_classify()

如果我想要4个坐标,那么最后一个密集层可能是8个?

1 个答案:

答案 0 :(得分:0)

您可以在最后一层执行回归。为了提取4点,您需要预测8值(每个点的x和y坐标)。通常,对于N点,您将需要预测2N的值。所以你的最后一层应该是

model.add(Dense(2 * N))

您无需添加任何额外的激活即可进行回归。同样,您将需要使用均方损失而不是分类中使用的交叉熵损失。