Making a trained model (machine learning) from 3D models

时间:2017-07-10 15:22:36

标签: machine-learning image-recognition object-recognition coreml

i have a database with almost 20k 3D files, they are drawings from machine parts designed in a CAD software (solid works). Im trying to build a trained model from all of this 3D models, so i can build a 3D object Recognition App when someone can take a picture from one of this parts (in the real world) and the app can provide useful information about material , size , treatment and so on.

If anyone already do something similar, any information you can provide me would be greatly appreciated!

3 个答案:

答案 0 :(得分:3)

一些想法:

1)多张图片:而不只是一张。正如Rodrigo评论和Brad Larson试图绕过他的方法一样,用户只需输入一张图片的问题就是您必须缺少进行三角测量的信息并在3D中形成点云。通过从略微不同的角度拍摄的4张照片,您可以重建对象的部分。比较点云将使任何ML算法,神经元网络(NN),支持向量机(SVM)或其他更容易。创建点云的常用标准是ASTM E2807,它使用e57文件格式。

在缺点方面,3D视觉算法可能在用户的设备上很重,并且不是最容易实现的。

2)人工图片培训:通过对Brad Larson建议的预先计算的人工图片进行培训,您可以接管大部分计算,以便用户获益。请注意,您应该使用从图片中提取的“功能”,而不是完整图片,以进行培训和分类。此方法的问题在于您可能对照明和背景上下文非常敏感。您应该注意生成对所有对象具有相同闪电条件的CAD图片,以便分类器不会过度填充不属于该对象的“图片”的某些方面。

这方面是解决方案1)更稳定的地方,它对视觉环境不太敏感。

3)比例:对象的大小是一个重要的描述符。因此,您应该在训练之前将比例信息添加到对象描述符。您可以要求用户使用参考对象拍摄照片。或者,您可以要求用户对对象大小进行经验法则估计(“对象的大致尺寸是多少,单位为[cm]?”)。提供大小可以使您的算法更快,更准确。

答案 1 :(得分:0)

如果生产中的测试数据主要是3D对象的图像,那么Brad Larson评论部分中的方法是更好的方法,它也更容易实现,并且需要更少的工作量和资源来实现它并且正在运行。

但是,如果要在3D模型之间进行分类,则存在用于对3D点云进行分类的现有网络。您必须将这些模型转换为点云并将其用作训练样本。其中一个和我使用的是Voxnet。我还建议您为训练数据添加更多变化,例如3D模型的不同旋转。

答案 2 :(得分:0)

您可以使用预训练3D深度神经网络,因为有许多网络可以帮助您完成工作并且可以产生高精度。