gpt4 book ai didi

python - 用于目标定位的卷积神经网络

转载 作者:行者123 更新时间:2023-12-01 01:18:57 26 4
gpt4 key购买 nike

我在 Andrew Ng 的深度学习类(class)中看到了一种定位图像上单个对象的方法:https://www.youtube.com/watch?v=GSwYGkTfOKk 。据我了解,例如,您可以将一个点绑定(bind)到对象的特定部分,将坐标:x、y 作为标签 y 并训练 CNN。

我想训练一个 CNN 神经网络来定位我的眼睛(而不是分类)。我给自己拍了 200 张照片:60x60 像素的灰度照片。我标记了左眼和右眼,标记的眼睛的每个坐标都标准化为0-1。 y 标签为:[eye1 的 x,eye1 的 y,eye2 的 x,eye2 的 y]。我在输出层 sigmoid 函数中使用了具有 mse 损失的 SGD optimazer。

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 坐标使用线性回归(多变量逻辑回归)。这是一个解决方案吗?据我了解,我会将每个图像输入 Conv 和 MaxPool 层,然后压平,然后将数据输入 lin。回归并训练它,但我不知道如何在 keras 中执行此操作。我是这个领域的新手,所以任何想法对我都有帮助。

最佳答案

首先,对您的代码进行一些观察。

由于最后一层包含超过 2 个神经元,因此您必须使用的激活函数是 softmax不是 sigmoid (请注意,这是分类的情况,而不是回归的情况)。

您应该只在进行二元分类时使用 sigmoid,但当您有两个以上的类时则不应使用(请注意,您也可以对 2 个类使用 softmax,但从计算开销较小的角度来看,不一定建议这样做)。

您的问题既是一个回归问题,又是一个分类问题!

卷积神经网络的第一层包含 64 个特征图,每个内核的大小为 3x3。尽管将图像输入神经网络的方式是正确的,但您仅输入灰度图像,而不是 x1,x2,y1,y2 坐标

对于具有回归功能的 ANN,请查看本教程:https://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/ .

你的直觉是正确的;对象检测神经网络用卷积层取代全连接层。 Yann LeCun 甚至指出全连接层不应该成为 CNN 的一部分。

由于您是该领域的新手,我建议采用以下管道。

1) 找到一个用您首选的深度学习库(Keras/PyTorch/TensorFlow 等)编写的在线 github 模型。

2) 按照说明/教程重现 github 用户获得的结果。

3)通过后者,您还应该理解代码/获得良好的直观掌握。

4)使模型适应您需要的问题。

您可以从这里开始(这是对象检测 - 检测多个对象以及不同类别的对象):https://github.com/pierluigiferrari/ssd_keras .

如果您还有其他问题,请写下来,我很乐意为您提供帮助!

关于python - 用于目标定位的卷积神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54025916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com