我在Andrew Ng的深度学习课程中看到了一种将单个对象定位在图像上的方法:https://www.youtube.com/watch?v=GSwYGkTfOKk。
据我所知,你可以将一个点绑定到对象的特定部分,把坐标x,y作为标签y,训练CNN。在
我想训练一个CNN神经网络来定位我的眼睛(不是分类)。我拍了200张我的照片:60×60像素的灰度。对左、右眼进行标定,标记眼各坐标归一化为0-1。y标签是:[x of eye1,y of eye1,x of eye2,y of eye2]。我使用了具有mse损耗的SGD optimazer和输出层sigmoid函数。在model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(64, (3,3), input_shape= (60,60, 1)))
model.add(tf.keras.layers.Activation('relu'))
model.add(tf.keras.layers.MaxPool2D(pool_size=(2,2)))
model.add(tf.keras.layers.Conv2D(32, (3,3)))
model.add(tf.keras.layers.Activation('relu'))
model.add(tf.keras.layers.MaxPool2D(pool_size=(2,2)))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(4, activation='sigmoid'))
sgd= tf.keras.optimizers.SGD(lr = 0.01)
model.compile(loss = 'mean_squared_error', optimizer=sgd, metrics=['accuracy'])
model.fit(x,y, batch_size=3, epochs=15, validation_split=0.2)
它不适合这个任务,那么解决这个问题的方法是什么?我在某个地方看到了:将CNN应用于图像(我想没有密集层),然后在CNN的扁平数据上对每个x/y坐标使用线性回归(多变量logistic回归)。这是解决办法吗?据我所知,我会将每个图像输入Conv和MaxPool层,然后展平,然后将数据输入lin.regression并对其进行训练,但我不知道如何在keras中实现这一点。我是这个领域的新人,所以任何想法都对我有帮助。在