我应该如何检测相机图像中的物体?

人工智能 深度学习 人工智能设计 自动编码器 物体检测
2021-11-03 07:49:19

我想创建一个模型,它会告诉我图像中是否存在一种类型的对象。

因此,例如,我有一台相机,我想看看一个物体何时进入镜头。

  • 对象检测:这可能有点过头了,因为我不需要知道周围的边界框。此外,这意味着我需要标记很多图像,并绘制边界框以获得训练数据(很多时间)

  • 图像分类:这并不能解决问题,因为我不知道还有什么不能是对象。训练 2 个类是不可能的:对象/非对象。

我的想法是拥有自动编码器。仅对包含对象的数据进行训练。然后,如果 Autoencoder 产生的结果与原始结果有很大差异,我将其检测为异常 - 没有对象。

这是一个好方法吗?不同背景的我会有很多麻烦吗?

1个回答

这是一个好方法吗?不同背景的我会有很多麻烦吗?

很大程度上取决于您拥有的背景的性质,以及它们在没有帧中对象的情况下自行编码/解码的程度。我的直觉是,与经过适当训练的分类器相比,您的系统的性能会很差,因为自动编码器自然必须擅长构建背景元素才能获得良好的分数,所以除非您的对象始终处于与与背景完全不同的外观,然后自动编码器将获得仅背景帧的良好重建,并且您的异常检测需要设置得太敏感。这将导致检测器在框架内无法发现物体。

对于 ML 项目,“我的想法将如何运作”有一个包罗万象的答案。你应该试试看。数据科学本质上是一种经验方法,而构建实用模型是一门工程学科,其中测试是该过程的核心部分。

为了测试您的模型,您将需要大量仅背景的图像,包括您希望系统使用的所有类型的背景。这就引出了一个问题,为什么不收集一系列没有目标对象的合适图像,并将它们用作第二类?

这并不能解决问题,因为我不知道还有什么不能成为对象。训练 2 个类是不可能的:对象/非对象。

实际上,这很容易。只需从您希望使用系统的位置收集合适的图像,而无需框内的对象。这些是您的“非对象”类。“非对象”不必包括某些替代前景对象。尽管我建议您确实有一些这样的图像,以防止意外创建“对象在前景中”检测器*。主要目标应该是收集与部署后模型的使用方式相匹配的数据。这在很大程度上取决于您对将使用经过训练的检测器的生产相机进行多少控制和一致性。

我会这样做,然后训练一个标准的二元分类器。

如果您仍然对您的自动编码器想法的效果感兴趣,那么您就有大量的测试数据来评估它。


* 这是您的自动编码器想法可能比分类器做得更好的一个领域 - 重建不熟悉的前景对象应该很难,因为它会导致高错误。

很难提前判断这种效果是否足以让您的自动编码器方法比分类器更好。