【问题标题】:Custom Object detection in tensorflow along with existing detectionTensorFlow 中的自定义对象检测以及现有检测
【发布时间】:2019-03-22 09:42:21
【问题描述】:
我已经设置了 TensorFlow 对象检测模型(例如带有 coco 的 SSD 或任何其他模型)来检测图片中的“汽车”,效果很好。现在我想用我自己的数据集在 coco 上使用预训练的 SSD 模型训练相同的 SSD 模型,以检测自定义对象,比如“门”。
问:训练模型后,训练后的 SSD 模型是否仍然能够检测到“汽车”和“门”?或者经过训练的模型将仅检测“门”,因为这就是模型的训练目标。
如果经过训练的模型未检测到“汽车”和“门”,我如何检测到“汽车”(这是一个标准对象)和“门”,我希望训练模型来检测自定义对象?
谢谢。
【问题讨论】:
标签:
tensorflow
object-detection
【解决方案1】:
在不同的类集上微调预训练模型时(无论新集是否包含旧集或包含在其中等),每个检测头的权重为初始化,因为它不再是同一层。
例如,如果您有一个 SSD 检测器,则检测头是具有 #anchors*(4+#classes) 个通道的卷积头。如果更改#classes,通道数会更改,并且不再是同一层。
因此,当您微调模型以检测“汽车”和“门”时,您必须同时在“汽车”和“门”上训练模型,即使预训练模型已经知道检测“汽车” .
然而,可能由于所有其他层都已恢复,“汽车”将更容易被检测到,而“门”将需要更多训练。