3D物体识别
3D object recognition
我正在开发 AR 解决方案。
用例 - 用户可以从任何角度将相机对准 3D 对象(复印机),它应该给出 3D 对象的姿势。
虽然我已经在模型目标生成器的帮助下尝试了 Vuforia - https://www.youtube.com/watch?v=0CIWhxf94wk,但没有成功。
然后我尝试了 VisionLib - https://visionlib.com/ 它起作用了,但在某种程度上,我的意思是你必须将它与 HUD 中的图像对齐。
然后我采用了不同的方法并开始探索机器学习选项。
我还发现我可以使用 CNN - 传统神经网络。
但这是正确的方法吗,还是我应该尝试使用 OpenCV 编写自己的解决方案?
或者我应该采取任何其他方法。
我也发现了 YOLOv2 - https://pjreddie.com/darknet/yolo/,但我不确定它是否会给我 pose。
到目前为止我能理解的是我应该使用 CNN 来检测相机框架中的物体,然后在 OpenCV 的帮助下找到它的姿势。
上面的方法听起来很简单,但需要做一些繁重的工作。
我走在正确的轨道上吗?
卷积神经网络可能是解决您问题的最佳方法。
使用 CNN,您可以解决检测特定对象(在您的例子中是复印机)的问题。所需的步骤是:
- 选择模型(SSD、Faster-RCNN、R-FCN、YOLOv2...)
- 为您选择的模型下载 pre-trained 个权重(称为迁移学习的过程)
- 为您的影印机拍摄数百张照片并添加注释
- 用你自己的数据集微调你的模型训练(这需要修改网络)
- 评估您的模型以查看它是否预测良好(即检测复印机在当前帧中的实际位置)
- 如果不是,请考虑为您的数据集使用更多图像或尝试调整您的网络参数(学习率、训练时期数、层数、优化器算法...)
但是
你最终得到的网不会给你任何关于复印机姿势的信息。它只会说:是的,它在框架中或不,它不在这里。
可能的解决方法是为数据集的每个图像编码(别名注释)姿势估计信息(您从设备的 IMU 获取此信息)。然后您需要修改您的网络以考虑此信息。这意味着:
- 修改您的输入层以提供额外信息(这仅在训练阶段)
- 修改输出层以输出姿势估计
- 修改网络的内部结构,以便在测试阶段执行姿势估计的回归
真的,这不是一项简单的任务。希望对你有帮助。
祝你好运!
我正在开发 AR 解决方案。
用例 - 用户可以从任何角度将相机对准 3D 对象(复印机),它应该给出 3D 对象的姿势。
虽然我已经在模型目标生成器的帮助下尝试了 Vuforia - https://www.youtube.com/watch?v=0CIWhxf94wk,但没有成功。
然后我尝试了 VisionLib - https://visionlib.com/ 它起作用了,但在某种程度上,我的意思是你必须将它与 HUD 中的图像对齐。
然后我采用了不同的方法并开始探索机器学习选项。 我还发现我可以使用 CNN - 传统神经网络。
但这是正确的方法吗,还是我应该尝试使用 OpenCV 编写自己的解决方案?
或者我应该采取任何其他方法。
我也发现了 YOLOv2 - https://pjreddie.com/darknet/yolo/,但我不确定它是否会给我 pose。
到目前为止我能理解的是我应该使用 CNN 来检测相机框架中的物体,然后在 OpenCV 的帮助下找到它的姿势。 上面的方法听起来很简单,但需要做一些繁重的工作。
我走在正确的轨道上吗?
卷积神经网络可能是解决您问题的最佳方法。
使用 CNN,您可以解决检测特定对象(在您的例子中是复印机)的问题。所需的步骤是:
- 选择模型(SSD、Faster-RCNN、R-FCN、YOLOv2...)
- 为您选择的模型下载 pre-trained 个权重(称为迁移学习的过程)
- 为您的影印机拍摄数百张照片并添加注释
- 用你自己的数据集微调你的模型训练(这需要修改网络)
- 评估您的模型以查看它是否预测良好(即检测复印机在当前帧中的实际位置)
- 如果不是,请考虑为您的数据集使用更多图像或尝试调整您的网络参数(学习率、训练时期数、层数、优化器算法...)
但是
你最终得到的网不会给你任何关于复印机姿势的信息。它只会说:是的,它在框架中或不,它不在这里。
可能的解决方法是为数据集的每个图像编码(别名注释)姿势估计信息(您从设备的 IMU 获取此信息)。然后您需要修改您的网络以考虑此信息。这意味着:
- 修改您的输入层以提供额外信息(这仅在训练阶段)
- 修改输出层以输出姿势估计
- 修改网络的内部结构,以便在测试阶段执行姿势估计的回归
真的,这不是一项简单的任务。希望对你有帮助。
祝你好运!