如何使用神经网络检测纸板箱

数据挖掘 神经网络 深度学习 美国有线电视新闻网 图像分类
2021-09-30 09:37:01

我正在尝试训练神经网络如何检测纸板箱以及多类人(人)。

尽管检测人员并对其进行正确分类很容易,但检测纸板箱却非常困难。

盒子看起来像这样:

在此处输入图像描述

我的怀疑是 box 对象太简单了,神经网络很难检测到它,因为从对象中提取的特征太少。

数据集的划分如下所示:

personA: 1160
personB: 1651
personC: 2136
person: 1959
box: 2798

人穿着不同的安全物品,根据物品进行分类,同时检测为整个人,而不仅仅是物品。

我尝试使用:

ssd300_incetpionv2
ssd512_inceptionv2
faster_rcnn_inceptionv2

所有这些都比盒子更好地检测和分类人。我无法提供确切的信息mAP(没有)。

有任何想法吗?

谢谢。

3个回答

如你所说:

我的怀疑是 box 对象太简单了,神经网络很难检测到它,因为从对象中提取的特征太少。

...这正是这项任务的问题所在。我建议您使用大量图像增强来训练您的网络。如果您使用的是 Keras/TensorFlow 2.0,它们具有执行此操作的内置函数。

我还建议您训练第一个模型,然后准确研究您的网络认为是框但不是框的图像(误报)。此时,您选择“正确”案例以及误报案例,并构建您拥有的数据集的子集。该子数据集可用于训练网络区分实际盒子和看起来像盒子的对象。

再一次:使用大量的图像增强。这是我的主要观点,也是我会做的。

我建议使用预训练模型。

这是我最近做的预训练多类图像分类的完整代码: https ://datascience.stackexchange.com/a/52772/71442

您可以尝试不同的预训练模型: https ://keras.io/applications/

使用预训练模型,您可以“重用”大型模型的卷积层并在顶部训练您的类。这可能有助于找到与框相关的特定特征。

盒子应该很容易被检测到,因为它们的形状和颜色清晰且统一。所以我认为尝试一个在类似(类似盒子)类上训练的预训练模型会有所帮助。

如果所有框都是棕色的(如示例图像中所示),您甚至可以根据颜色模式检测框。NN 能够做到这一点。

总的来说,如果没有看到你的模型,很难说出了什么问题。模型架构在这里可能是相关的。

您可以尝试使用已在大型数据集(例如 MS-COCO、Kitti 和 Open Images 等)上预训练的现有 TensorFlow 模型。然后您可以微调您希望在数据集上使用的特定模型。

可以在此处找到所有可用模型的列表

关于如何设置对象检测器的一个很好的来源。(如果您是 Linux 用户,请不要担心,即使在 Linux 系统中也可以修改相同的教程)。

您可以使用labellmg 之类的工具来标记图像以进行训练。

希望这可以帮助。