【问题标题】:3D object recognition [closed]3D物体识别[关闭]
【发布时间】:2018-03-14 08:17:06
【问题描述】:

我正在开发 AR 解决方案。

用例 - 用户可以从任何角度将相机对准 3D 对象(复印机),它应该给出 3D 对象的姿势。

虽然我在模型目标生成器 - https://www.youtube.com/watch?v=0CIWhxf94wk 的帮助下尝试了 Vuforia,但没有运气。

然后我尝试了 VisionLib - https://visionlib.com/ 它有效,但在某种程度上,我的意思是你必须将它与 HUD 中的图像对齐。

然后我采取了不同的方法并开始探索机器学习选项。 我还发现我可以使用 CNN - 传统神经网络。

但这是正确的方法,还是我应该尝试使用 OpenCV 编写自己的解决方案?

或者我应该采取任何其他方法。

我还发现了关于 YOLOv2 - https://pjreddie.com/darknet/yolo/,但我不确定它是否会给我姿势。

目前我能理解的是,我应该使用 CNN 来检测相机帧中的物体,然后在 OpenCV 的帮助下找到它的姿势。 上述方法听起来很简单,但需要一些繁重的工作。

我走对了吗?

【问题讨论】:

标签: opencv machine-learning computer-vision augmented-reality


【解决方案1】:

卷积神经网络可能是解决问题的最佳方法。

使用 CNN,您可以解决检测特定对象(在您的情况下是复印机)的问题。需要的步骤是:

  1. 选择模型(SSD、Faster-RCNN、R-FCN、YOLOv2...)
  2. 为您选择的模型下载预训练的权重(过程称为迁移学习)
  3. 为您的复印机拍摄数百张照片并添加注释
  4. 使用您自己的数据集对模型进行微调(这需要修改网络)
  5. 评估您的模型以查看其预测是否良好(即检测复印机在当前帧中的实际位置)
  6. 如果不是,请考虑为您的数据集使用更多图像或尝试调整网络参数(学习率、训练 epoch 数、层数、优化器算法...)

但是

你最终得到的网络不会给你任何关于复印机姿势的信息。它只会说:是的,它在框架中或否,它不在这里。

一种可能的解决方法是为数据集的每个图像编码(别名注释)姿势估计信息(您从设备的 IMU 获取此信息)。然后您需要修改您的网络以考虑此信息。这意味着:

  1. 修改输入层以提供额外信息(仅在训练阶段)
  2. 修改输出层以输出姿态估计
  3. 修改网络的内部结构,以便在测试阶段执行姿态估计回归

这不是一个简单的任务,真的。希望对您有所帮助。

祝你好运!

【讨论】:

  • 您好,感谢您提供详细信息。
  • 如果对您有帮助,能否将其标记为已接受的答案?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2022-01-18
相关资源
最近更新 更多