如何使用深度学习方法检测乐高积木?

人工智能 深度学习 图像识别 张量流 数据集 物体识别
2021-11-13 03:31:45

在我的论文中,我处理了计算机如何识别乐高积木的问题。通过多目标检测,我选择了深度学习方法。我还查看了现有的乐高积木图像训练集并尝试对其进行优化。

我的方法

通过在专门生成的图像数据集(使用 Blender 创建)上使用 Tensorflow 的对象检测 API,我能够在一张照片中检测到 73.3% 的多个乐高积木。

我注意到的主要问题之一是,我试图区分三种不同的 2x4 积木。然而,颜色很难区分,尤其是在不同的光照条件下。更好的方法是将 2x4 与 2x2 和 2x6 乐高积木区分开来。

此外,我注意到训练集最好由“正常”和合成生成的图像组成。合成图像给出了拍摄图像没有给出的照明条件、背景等方面的变化。但是,当使用经过训练的神经网络时,会检查照片而不是合成图像。因此,照片也应该包含在训练数据集中。

最后一点可能会带来更好的结果,那就是你用展示不止一块乐高积木的图片来训练神经网络。因为这正是神经网络在使用时所需要的。

  • 还有其他方法可以改进吗?

(你能看到神经网络进一步改进的潜力吗?你会如何解决这个问题?我的任何方法是否看起来很糟糕?你如何解决这个问题?)

1个回答

所以我假设您正在尝试从图像中检测乐高积木。一个想法是您可以使用迁移学习。利用预先训练的机器学习模型称为迁移学习。迁移学习背后的基本思想是,从一个数据集或域中获取一个训练有素的模型,并将其应用于新的模型。François Chollet 编写了一份非常全面的迁移学习指南 ( https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html )

我承认我从 Christopher Bonnett 的文章《基于图像和文本分类电子商务产品》中获取了一些信息。

我还建议在此链接上使用来自 Kaggle 的乐高积木数据集:https ://www.kaggle.com/joosthazelzet/lego-brick-images 它有超过 12,700 张乐高积木图像。

如果处理能力有问题,您可以使用 Amazon Web Services 进行云计算。对于像这样的小规模操作来说,它是便宜的。

当然对于目标检测,你总是可以增加卷积层的数量。然而,如果你有太多的层,你还应该包括残差块/残差网络。这将允许即使有超过一千层的神经网络也能有效地运行。该视频应该可以帮助您了解残差网络的工作原理(https://www.youtube.com/watch?v=ahkBkIGdnWQ

最后,确保在训练期间不要过度拟合,如果您确实遵循残差网络的想法,您还应该在卷积神经网络中包含上采样(更多内容请参见:https ://towardsdatascience.com/up-sampling-with-transposed -convolution-9ae4f2df52d0 )

我希望这对您的工作有所帮助并祝您好运。