是否有可能为每个类别的多个数据集训练模型?

问题描述 投票:0回答:1

我对物体检测很新。我正在使用tensorflow对象检测API,我现在正在为我的项目和model_main.py收集数据集来训练我的模型。

我发现并转换了两个带有注释的汽车和交通灯的大型数据集。并从他们那里做了两个tfrecords。

现在我想训练一个预训练的模型,但我很好奇它会起作用吗?当有可能一个图像例如“001.jpg”当然会有一些注释的汽车边界框(它来自汽车数据集),但是如果有交通信号灯那么它也不会被注释 - >将它导致学习率不好? (可能有许多“有问题”的图像)我应该如何改进?有没有解决方法? (我真的不想再次注释图像)

如果它的愚蠢问题我很抱歉,感谢任何回复 - 这个问题的一些链接将是最好的!

谢谢 !

python tensorflow object-detection-api
1个回答
1
投票

简短的回答是肯定的,它可能有问题,但通过一些努力,你可以使它成为可能。如果您有两个城市数据集,并且在一个中您只有交通灯注释,而在第二个中您只有汽车注释,那么第一个数据集中的每个汽车实例都将被学习为虚假示例,以及每个交通实例第二个数据集中的光将作为错误示例学习。我能想到的两个可能的结果是:

  1. 该模型不会收敛,因为它试图学习相反的东西。
  2. 该模型将收敛,但将是特定于域的。这意味着该模型将仅检测来自第一个数据集的域的图像上的交通灯,以及第二个数据集上的汽车。事实上,我尝试在不同的设置中自己这样做,并得到了这个结果。

为了能够了解学习交通灯和汽车的目标,无论它们来自哪个数据集,您都需要修改损失函数。您需要告诉损失函数每个图像来自哪个数据集,然后只计算相应类的损失(/ 0表示类的损失与它不对应)。因此,回到我们的示例,您只计算第一个数据集上的损失和反向传播交通灯,以及第二个数据集上的汽车。

为了完整性,我将补充一点,如果资源可用,那么更好的选择是注释所有数据集上的所有类以避免建议的修改,因为仅通过反向传播某些类,您不喜欢使用其他类的实际错误示例。

© www.soinside.com 2019 - 2024. All rights reserved.