我有一个数据库与近20k的3D文件,他们是图纸从机械零件设计的CAD软件(solid works)。我正在尝试从所有这些3D模型中建立一个经过训练的模型,这样我就可以建立一个3D对象识别应用程序,当有人可以从其中一个部分(在现实世界中)拍摄照片时,该应用程序可以提供有关材料、大小、处理等的有用信息。
如果任何人已经做了类似的事情,您能提供给我的任何信息都将不胜感激!
发布于 2017-11-07 21:39:29
一些想法:
1) 几张图片:而不是只一个。正如Rodrigo评论和Brad Larson试图用他的方法规避的那样,用户只使用one图片作为输入的问题是,您必须缺乏信息来进行三角测量并在3D中形成点云。从一个稍微不同的角度拍摄4张照片,你已经可以重建物体的各个部分了。比较点云将使任何ML算法、神经网络(NN)、支持向量机(SVM)或其他算法的工作变得更容易。创建点云的通用标准是使用e57文件格式的ASTM E2807。
缺点是,3D视觉算法可能会在用户的设备上负担很重,而且不是最容易实现的。
2) training training:通过像布拉德·拉森建议的那样在预先计算的人工图片上进行训练,你接管了大部分计算,对用户有利。请注意,您可能应该使用从图片中提取的"features“来训练和分类,而不是使用完整的图片。这种方法的问题是,您可能对照明和背景上下文非常敏感。您应该注意为所有对象生成具有相同闪电条件的CAD图片,以便分类器不会过度拟合不属于该对象的“图片”的某些方面。
这是解决方案1)更稳定的方面,它对视觉上下文不太敏感。
3) Scale:对象的大小是一个重要的描述符。因此,您应该在训练之前将比例信息添加到对象描述符中。您可以要求用户使用引用对象拍摄照片。或者,您可以要求用户对对象大小进行经验法则估计(“对象的大致尺寸是多少,以厘米为单位?”)。提供大小可以使您的算法更快、更准确。
发布于 2017-11-01 12:40:57
如果您在生产中的测试数据主要是3D对象的图像,那么Brad Larson的评论部分中的方法是更好的方法,它也更容易实现,并且需要更少的精力和资源来启动和运行它。
但是,如果您想在3D模型之间进行分类,则存在用于对3D点云进行分类的现有网络。您必须将这些模型转换为点云,并将其用作训练样本。其中之一就是我使用的Voxnet
。我还建议你在训练数据中添加更多的变化,比如3D模型的不同旋转。
发布于 2017-11-03 18:56:15
您可以使用预训练的3D深度神经网络,因为有许多网络可以帮助您在工作中,并将产生高精度。
https://stackoverflow.com/questions/45015892
复制相似问题