【问题标题】:How can I train a TensorFlow (or Keras, or Caffe) model to detect an object and also its distance from the camera?如何训练 TensorFlow(或 Keras 或 Caffe)模型来检测物体及其与相机的距离?
【发布时间】:2018-02-11 17:22:54
【问题描述】:
我有一个包含 1000 张标记图像的数据集,只有一个类别(汽车),以及在拍摄照片时它们各自与相机的距离。
我想训练一个 TensorFlow(Keras 或 Caffe 示例也可以)模型来检测其他汽车(我已经知道如何),但也想尽可能准确地预测它们与摄像头的距离从数据集中学到了什么。
有什么想法吗?
谢谢!
【问题讨论】:
标签:
tensorflow
deep-learning
keras
caffe
object-detection
【解决方案1】:
要估计距离,可以使用以下方法:
- 使用立体摄像头。在这种情况下,距离是使用图像位移计算的
- 使用单声道深度模型。这通常是在相应的标记数据上训练的深度神经网络。
- 如果您在假设“平面世界”的情况下校准相机,则可以从边界框的高度位置估计距离。在这种情况下,bbox 的最低点被投影到一个假想的地平面上。
【解决方案2】:
原则上,它对检测对象类别的问题没有太大的改变。您必须拥有一个包含对象类型和距离的数据集才能进行训练。
但是,不要期望非常精确距离不是直接编码在图像中的东西。没有办法真正知道远处的大球和近处的小球之间的区别。 了解对象的类别会有所帮助,因为特定对象具有典型的大小。所以椅子有一个相当标准的尺寸,所以图像中的相对尺寸可以更好地解释为距离。
另一件有帮助的事情是在一个配置中配置多个摄像头,就像我们的眼睛一样。在这种配置中,您甚至可能不需要训练模型。相机之间的图像位移应该足以说出屏幕上所有事物的距离。可能有实现这一点的开源软件。
至于第一个想法的实现。您应该构建一个用于提取特征的张量流图。并创建一些额外的层用于分类和一些额外的层来预测距离。 (搜索多头网络了解更多详情)
您的问题非常模糊,因此我无法就使用什么架构或类似的东西给出更具体的答案。