我目前正在使用ssd移动网络tensorflow api进行车辆检测。我从coco数据集中制作了一个自定义数据集,其中包含coco中的所有车辆类别,即汽车,自行车,摩托车,公共汽车,卡车,并且我还有730张人力车图像的数据集。
最终,我的目标是同时检测人力车和其他车辆。但是到目前为止,我失败了。
train_labels.csv中平均总共有16000个实例,每个类有2300个实例。我已将批次大小设置为12。然后在我的自定义数据集上训练了coco预训练模型12000个步骤。
但不幸的是,我未能获得良好的结果。训练后,它无法对其他车辆进行分类。
关于数据集中每个类的比率的任何建议,或者我需要更多的人力车图像,应该冻结几层?或者,不同的观点可能会受到高度赞赏。谢谢
答案 0 :(得分:0)
由于您有730张人力车图像的自定义数据集,因此我认为无需从COCO数据集中提取其他车辆的不同数据集进行微调。 我的意思是张量流预训练模型确实擅长于检测除人力车之外的所有其他车辆。您的任务只是教模型,如何检测人力车。
另一个选择是,由于您已经拥有车辆数据集,因此可以尝试使用COCO中的检查点训练模型。 https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9
仔细阅读以上文章,它将使您对开始到结束的流程有一个清晰的认识。作者调整了在可可数据集上训练的ssd mobilenet模型,以检测浣熊图像。浣熊是唯一想发现的新阶级。就您而言,您只需要用人力车图像替换浣熊并遵循完全相同的步骤即可。本文的作者使用了Google Cloud,但是您可以更改配置文件以在本地计算机上对其进行调整。考虑到您只有730张新图像,调整它不需要花费时间。
这是另一个很好的例子,以防万一https://towardsdatascience.com/building-a-toy-detector-with-tensorflow-object-detection-api-63c0fdf2ac95
关于您是否需要更多数据的问题,更多的数据总是更好。我建议使用以上步骤调整模型并检查mAP。如果您认为mAP低并且预期应用程序的性能不足,请收集更多数据并再次进行调整。
如有任何疑问,请告诉我。