【问题标题】:CNN for 2d image rotation estimation (angle regression)用于 2d 图像旋转估计的 CNN(角度回归)
【发布时间】:2019-10-21 01:33:58
【问题描述】:

我正在尝试构建一个可以估计图像(或二维对象)旋转的 CNN(在 Keras 中)。所以基本上,输入是图像,输出应该是它的旋转。

我的第一个实验是估计 MŃIST 数字的旋转(仅从一个数字“class”开始,比如说“3”)。所以我所做的是从 MNIST 集合中提取所有 3,然后构建一个“旋转 3”数据集,通过多次随机旋转这些图像,并将旋转后的图像连同它们的旋转角度一起存储为地面实况标签。

所以我的第一个问题是 2d 旋转是循环的,我不知道如何为这种行为建模。因此,我将角度编码为 y=sin(ang), x = cos(ang)。这给了我我的数据集(旋转的 3s 图像)和相应的标签(x 和 y 值)。

对于 CNN,作为开始,我只是采用 keras MNIST CNN 示例 (https://keras.io/examples/mnist_cnn/) 并将最后一个密集层(具有 10 个输出和一个 softmax 激活)替换为具有 2 个输出(x和 y) 和 tanh 激活(因为 y=sin(ang), x = cos(ang) 在 [-1,1] 内)。

我必须决定的最后一件事是损失函数,我基本上想要对角度进行距离测量。因此我认为“cosine_proximity”是要走的路。

在训练网络时,我可以看到损失正在减少并收敛到某个点。然而,当我检查预测与基本事实时,我观察到(对我而言)相当令人惊讶的行为。几乎所有的 x 和 y 预测都趋向于 0 或 +/-1。而且由于我的旋转的“解码”是 ang=atan2(y,x),因此预测通常是 +/- 0°、45°、90、135° 或 180°。 但是,我的训练和测试数据只有 0°、20°、40°、... 360° 的角度。 如果我改变网络的复杂性,这并没有真正改变。我也尝试过优化器参数,但没有成功。

假设有什么问题吗: - x,y 角度编码 - tanh 激活值在 [-1,1] 中 - cosine_proximity 作为损失函数

提前感谢您提供任何建议、提示或指出我可能犯的错误!

【问题讨论】:

    标签: keras regression conv-neural-network image-rotation


    【解决方案1】:

    很难给你一个确切的答案,所以让我们尝试一些想法:

    • 从 Cosine Proximity 更改为 MSE 或其他损失,并检查是否有变化。
    • 更改编码目标的方式。您可以将角度表示为 0 到 1 之间的数字。即使角度是圆弧形的,这似乎也不是问题。
    • 确保您的预处理/增强步骤对这项特定任务有意义。

    【讨论】:

    • 感谢您的评论!至于建议: 1.我尝试了 MSE 或多或少相同的结果。 2. 我不确定 [0, 1] 编码是否有意义。你的意思是 [0,360°] -> [0,1]?就损失而言,这将如何运作?首先,0 和 1 对于 0° 旋转都是正确的。其次,如果我们假设我们的目标是 0°(0 编码)并且我们的当前值是 324°(0.9 编码)。因此,在 [0, 1] 编码中,误差为 324°(或编码中的 0.9)。但实际上它只有 36°(编码中的 0.1)。你同意? 3.唯一的preproc。我所做的是旋转图像,所以那里没什么好看的。
    • 在深入进行损失分析之前,您说过您的预处理包括旋转。旋转输入图像会改变您的情况;如果你将输入旋转 90°,你也必须在 groundtruth 上做同样的事情。你能确认你这样做是正确的吗?
    • 当然。我拍摄所有“3”张图像(未旋转)并使用标签 x=cos(0°)、y=sin(0°) 进行注释。然后,我将所有图像旋转 20°,并用 x=cos(20°)、y=sin(20°) 注释这些图像,并将它们添加到(未旋转的)数据集中。我这样做是为了 40°、60°、……等等。那是我使用的数据集(分成测试/训练)......
    • 看来你得到了atan2(1,-1)atan2(1,0)atan2(1,1)等等。 tanh 激活可能无法稳定在中间点。顺便说一句,您应该发布一些代码,以便人们有一些具体的工作。
    • 有人找到解决方案了吗?您将如何应用循环编码/解码来学习图像中的旋转?
    猜你喜欢
    • 2014-06-30
    • 2023-01-02
    • 2021-04-12
    • 2016-10-19
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多