machine-learning - 机器学习从图片中估计照明方向?

标签 machine-learning tensorflow neural-network computer-vision

机器学习和 stackoverflow 新手。

最近,我一直在尝试创建一种机器学习算法,根据物体的反射来估计光源的方向。 我知道这可能是一个复杂的主题,这就是为什么作为第一步,我尝试尽可能简化它。

我首先将问题从回归问题更改为分类问题,仅将以下输出作为输出:光源位于对象的左侧或光源位于对象的右侧。 我也只为我的数据集改变一个角度。

我的问题的简短版本:

  • 您认为机器学习可以做到这样的事情吗? (我的经验太有限,无法真正确定)
  • 如果是,哪种神经网络更适合您?美国有线电视新闻网? R-CNN?长短期内存网络?支持向量机?
  • 完成此任务的流程是什么?

我目前正在使用带有定向光的 Unity 引擎,它采用 [10,60]/[120,170] 之间的随机 X 角度和具有金属反射的球体来创建和标记数据集。这是一个例子:

https://imgur.com/a/FxNew Label : 0 (Left side)

https://imgur.com/a/9KFhi Label : 1 (Right side)

对于预处理:

  • 图像大小已调整为 64x64 图像
  • 从 RGB 格式转换为灰度格式。

对于机器学习,我目前正在使用 tensorflow 和卷积神经网络:

  • 10000 个 64x64 灰度图片的平衡、标记数据作为输入,0/1 作为标签

  • 3 个卷积层,带有过滤器 [16,32,64],大小为 [5,5] RELU

  • 3 个池化层,大小为 [2,2],步长为 [2,2]

  • 1 个密集层,包含 1024 个隐藏神经元和 dropout(Rate = 0.4)RELU

  • 1 个密集层,带有 2 个输出神经元(每个类别 1 个)Softmax

至于问题:我的网络根本没有学习,损失几乎没有下降,并且准确性表明好的结果是随机的,无论数据、层数、优化器、学习率......我的输出只是平均两个类:[0.5,0.5]。

我的猜测是,问题比我最初想象的更复杂,我的数据没有很好地提示我的预测应该是什么,我应该训练一个网络来检测物体上的反射点,然后使用对象中心和点之间的方向。我说得对吗?

另一个猜测是,卷积层没有考虑位置,因此对于卷积部分,所有图像都是相同的,因为球体以及照明图案始终相同。它始终会检测到相同的事物,并且不会考虑光区域已移动。您对我可以使用哪个网络来解决此问题有什么建议吗?

我真的在寻找一些建议,警告如何解决此类任务。 请记住,我对机器学习仍然很陌生,而且仍然比我的机器学到更多,呵呵......

谢谢。

最佳答案

Do you think that it is possible to do such thing with machine learning ?

绝对是的。您已经正确选择了 CNN 模型 - 它最适合此任务。

My guess is that the problem is more complicated than i first thought, that my data doesn't give a good hint of what my prediction should be and that I should rather train a network that detects the reflection dot on an object and then use the orientation between the center of object and the dot. Am I right ?

不,CNN 已被证明可以很好地根据原始像素进行分类。它应该弄清楚自己要注意什么。

Do you have any advice on which network I could use to resolve this issue ?

如果您提供完整的代码,我将非常高兴。不学习的原因有很多:图像预处理错误、数据错误标记、超参数选择不当(学习率、初始化等)、错误的损失函数等。可能只是错误>.

根据所描述的 CNN 架构,我立即建议:

  • 5x5 过滤器尺寸可能太大,因为您没有那么多过滤器。尝试 3x3 并稍微增加过滤器的数量,例如32 - 64 - 64
  • 我假设您使用CONV - POLL - CONV - POLL - CONV - POOL,而不是CONV - CONV - CONV - POOL - POOL - POLL。只是为了确定一下。
  • 您的 FC 层中可能不需要那么多神经元。您只有两个类和非常相似的图像!将 1024 减少为 256
  • 目前您没有遇到任何过度拟合,因此请暂时禁用 dropout:keep_probability=1.0
  • 注意初始化和学习率。尝试对数刻度的不同值,例如learning_rate = 0.1, 0.01, 0.001 并检查学习模式是否发生变化。

关于machine-learning - 机器学习从图片中估计照明方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46679514/

相关文章:

TensorFlow - MNIST 数据中的训练准确性没有提高

machine-learning - h2o.predict(aml@leader, test_df) 使用哪个模型?

python - 如何检测 Keras EarlyStopping 发生的纪元?

tensorflow - 如何分析 TensorFlow 模型

python - 在 Tensorflow 中实现 Keras 模型时出现的问题

machine-learning - 选择正则化参数

python - LSTM 神经网络输入/输出维度错误

tensorflow - Tensorflow中的Tensor和Variable有什么区别

deep-learning - Pytorch : different behaviours in GAN training with different, 但概念上等效,代码

python - 如何使用从经过训练的 keras 模型中提取的 tensorflow 模型