使用神经网络从图像中检测关键点

数据挖掘 神经网络 喀拉斯 张量流 美国有线电视新闻网 图像识别
2022-02-13 22:53:17

我正在尝试设计和训练一个神经网络,它能够为我提供图像中某些关键点的坐标。

数据集

我有一个包含 1800 张类似于这些图像的数据集:

在此处输入图像描述 在此处输入图像描述

该数据集由我生成。每个图像包含两个圆圈,一个小一个大,在图像中随机生成。我的目标是训练神经网络返回两组坐标,每组坐标都精确指向圆心。每个图像都有形状 (320, 320, 1)。

当前型号

我在某种程度上成功地做到了这一点,但这还不够好。下面,你可以看到我迄今为止最成功的神经网络架构。我使用 Python、Tensorflow 2,包括 Keras。我使用 Adam 优化器、MeanSquaredError 损失和 RootMeanSquaredError 作为指标。

在此处输入图像描述

当前结果如下所示。神经网络给我的坐标画在图像中。

在此处输入图像描述 在此处输入图像描述

正如您从第一张图片中看到的那样,结果非常精确,我几乎满意。但是平均结果看起来就像第二张图片一样,一点都不好。

我已经在总共 4 次运行中对这个模型进行了 35 个 epoch 的训练,但正如您从 Tensorboard 中看到的那样,它无法进一步学习。

在此处输入图像描述 在此处输入图像描述

我尝试了许多不同的架构变体并调整了超参数。我对目前得到的结果并不满意。我计划继续从更复杂的数据集上的图像中检测关键点,这就是为什么我试图首先在更简单的数据集上取得一些进展并逐渐增加复杂性的原因。

如果您能给我关于模型架构的任何建议,我将不胜感激,如果我使用或可能采用不同的方法可以获得更好的结果。如果您需要了解更多实施细节,请告诉我。

谢谢

编辑:为了完成细节,Conv2D 层使用leaky relu 激活函数,两个密集层都使用 sigmoid 激活函数。

2个回答

您可以训练 YOLO 检测并围绕圆创建边界框,然后计算其中心。甚至细分可以帮助您精确地做到这一点。

我的猜测是你不需要机器学习来做到这一点。Adesh Gautam 建议创建边界框,然后应用 ML 模型。我会建议更多:只使用边界框算法。在诉诸 ML 之前,可以应用很多计算机视觉技术。我建议你也看看对冲检测。