试图在图像中找到对象(x,y)坐标,我的神经网络似乎在没有学习的情况下优化错误

Sil*_*m14 10 detection coordinates neural-network lasagne

我生成粘贴在200x200大小的白色背景上的单个硬币的图像.硬币是从8欧元硬币图像(每个硬币一个)中随机选择的,并具有:

  • 随机轮换;
  • 随机大小(固定界限);
  • 随机位置(以便硬币不被裁剪).

以下是两个示例(添加了中心标记):两个数据集示例

我正在使用Python + Lasagne.我将彩色图像输入到神经网络中,该网络具有完全连接的2个线性神经元的输出层,一个用于x,一个用于y.与生成的硬币图像相关联的目标是硬币中心的坐标(x,y).

我试过(从使用卷积神经网络检测面部关键点教程):

  • 密集层结构,具有不同数量的层数和单元数(最多500个);
  • 卷积结构(输出前有2个密集层);
  • 总和和平方差均值作为目标函数;
  • 目标坐标在原始范围[0,199]或标准化[0,1];
  • 在每层之间放置辍学层,辍学概率为0.2.

我总是使用简单的SGD,调整学习率,试图有一个很好的递减误差曲线.

我发现,当我训练网络时,错误会减少,直到输出始终是图像的中心.看起来输出与输入无关.网络输出似乎是我给出的目标的平均值.由于硬币的位置均匀地分布在图像上,因此这种行为看起来像是错误的简单最小化.这不是想要的行为.

我感觉网络没有学习,只是试图优化输出坐标以最小化针对目标的平均误差.我对吗?我怎么能阻止这个?我试图消除输出神经元的偏差,因为我想也许我只是修改了偏差,所有其他参数都设置为零,但这不起作用.

单独一个神经网络是否有可能在这项任务中表现良好?我已经读过,人们还可以为当前/不存在的分类训练网络,然后扫描图像以找到对象的可能位置.但我只是想知道是否可以使用神经网络的正向计算.

Pan*_*hin 5

问题:我怎样才能防止这种[过拟合而不提高考试成绩]?

需要做的是重新构建你的神经网络。神经网络在预测 X 和 Y 坐标方面不会做得很好。它可以通过创建一个检测到硬币的位置的热图,或者换句话说,你可以让它把你的彩色图片变成一个“硬币在这里”的概率图。

为什么?神经元有很好的能力来测量概率,而不是坐标。神经网络并不是它们所宣称的神奇机器,而是真正遵循其架构所制定的程序。你必须布置一个非常奇特的架构,让神经网络首先创建硬币所在位置的内部空间表示,然后是它们的质心的另一个内部表示,然后另一个使用质心和原始图像size 以某种方式学会缩放 X 坐标,然后对 Y 重复整个过程。

更容易,更容易的是创建一个硬币检测器卷积,将您的彩色图像转换为一个硬币在这里的概率矩阵的黑白图像。然后将该输出用于您的自定义手写代码,将概率矩阵转换为 X/Y 坐标。

问题:单独一个神经网络有可能在这个任务上表现良好吗?

一个响亮的YES,只要您设置了正确的神经网络架构(如上所述),如果您将任务分解为多个步骤并且仅将神经网络应用于代币,则实施起来可能会容易得多,训练速度也会更快检测步骤。