创建自定义检测模型 - 图像对象检测
Posted
技术标签:
【中文标题】创建自定义检测模型 - 图像对象检测【英文标题】:Create custom detection model - Image Object Detection 【发布时间】:2020-02-12 11:02:31 【问题描述】:我对图像/视频中的对象检测有一些疑问。
我成功地尝试了本教程: Train Object Detection AI with 6 lines of code
在本教程中,我们训练了一个模型来检测全息透镜。如果我想检测汽车,我需要训练一个新模型。
我的问题是:我可以使用我的实际模型(全息透镜)并让它检测全息透镜和汽车吗?
最后,我想要一个文件(模型)来检测我用来训练的所有对象。我将放置一个包含 'n' 个图像的目录,模型将尝试检测它经过训练以检测的所有内容,并返回检测到的对象的名称。
对不起,我的英语不好!
【问题讨论】:
【参考方案1】:是的,您可以在任意数量的对象类上训练您的模型。本教程基于 YOLOV3,它是最先进的对象检测模型之一,其速度足以在实时和视频中使用。在您提到的页面上,在 步骤 1 中,它解释了如何准备和注释您的数据集。您的数据可以包含许多类别的对象(如汽车、hololens 等),但您需要在训练之前设置此数字。此外,在注释步骤(为对象提供标签)中,您应该为对象分配正确的名称。
此页面上有一个链接,说明了如何准备您自己的数据: Object Detection Training — Preparing your custom dataset
如果数据已经准备好,请确保它是 Pascal Voc 格式,因为它必须与您使用的模型保持一致。最后,您只需要一个模型来检测各种对象。精度取决于迭代次数、每个类中对象的数量、对象的形状、大小、颜色、角度等的变化等等。
【讨论】:
所以你说我只需要在 Pascal Voc 中创建一个新数据,在第 3 步的代码中我将设置:object_names_array["cars"] |和 train_from_pretrained_model="my_model.h5"。在那之后,我会有一个可以检测全息透镜和汽车的新模型,对吧? 在你提到的链接里有解释:如果你的自定义数据集注解有多个对象,只需按照下面的示例设置值object_names_array = ["hololens", "google-glass", "oculus"]
嗯,所以在数组中我将只放置我的模型所具有的值。然后开始火车。在下一次,如果我想检测猫,我放入数组 ["hololens", "cars"] 并使用模型。我“永远”这样做......对吗?抱歉问了很多,我真的是菜鸟,但我每天都会阅读模式文章来学习这方面的知识。
不,你应该在训练之前把所有的对象名称放在数组中。如果你有两个对象类,你可以在训练之前放入数组["hololens", "cars"]
。稍后,如果您想添加另一个对象,您可以将此模型用作新对象的预训练模型;但是应该在训练之前定义对象。
很好!!谢谢你。我可以再做一个问题吗?这是最后一个!!我有检测全息透镜的模型,是否可以使用新的全息透镜图像再次训练该模型以改进检测?以上是关于创建自定义检测模型 - 图像对象检测的主要内容,如果未能解决你的问题,请参考以下文章
TensorFlow 自定义对象检测结果令人失望 - 为啥?