如何识别与新图像中的汽车相对应的汽车(存储在数据库中)?
汽车的型号
您想要做的是接近一次性图像识别。每辆车不是 1 个,而是 3-4 个示例,但这仍然是一个很小的数量,特别是考虑到汽车从不同的角度看起来不同(您是否应该从任何角度识别它们,包括侧面、后部、前部, 和 45 度等?也许你也想认出它们是从顶部拍摄的?)。
我发现的一篇有趣的文章是:Koch、Zemel 和 Salakhutdinov的 Siamese Neural Networks for One-shot Image Recognition 。
我还发现Caffee支持连体网络。
您可能想阅读有关One-shot learning的其他文献。
您可以做的一个技巧是利用汽车是对称的这一事实,因此您可以通过反映每张图像来使学习示例的数量增加一倍。
颜色
确定颜色并不像看起来那么简单。您的算法需要确定照片中的汽车在哪里,然后确定颜色,同时考虑照明条件以及灯光效果,尤其是反射。例如,考虑下图:.
我们看到草莓是红色的,但这张照片上没有红色像素。草莓的图像由灰色像素组成。
也许您还需要一个卷积神经网络,或者只是一个神经网络来完成这项任务。
有几种方法可以做到这一点。一种方法将涉及几个步骤,并且可能效果最好:
- 使用经过训练的高斯检测器从图像的其余部分中过滤掉汽车
- 使用卷积神经网络对汽车进行分类
- 使用神经网络或简单的最常见的颜色算法来查找汽车的颜色
您将能够在 MATLAB 中最轻松地实现此方法,但您也可以在 python 中使用 tensorflow 或 Torch 来实现。您可能能够在 tensorflow 中实现训练有素的高斯检测器。
方法二:
- 使用空间变换网络对汽车图像进行“变换”,便于分类
- 通过卷积神经网络使用空间变换器网络的输出进行分类。
- 使用另一个神经网络或最常见的颜色算法来查找汽车的颜色。
这种方法也可以很好地工作,但是使用带有卷积神经网络的空间变换器网络可能很难编码,因为它是一个正在发展的研究领域,其中存在许多问题,因为空间变换器网络和卷积神经网络必须运行良好在一起,这通常很难做到。
方法三:
- 直接在输入图像上使用卷积神经网络,可能使用下采样对汽车进行分类
- 使用另一个神经网络找到汽车的颜色
我个人会使用方法 #1,因为使用 tensorflow 等现有库实现它会相当简单,而且它很可能会提供高精度。
与往常一样,我还建议您在开发过程中使用 LIME 来调试模型并确定可以添加或删除哪些功能以帮助您的模型更好地执行。
**编辑* 由于您需要检测汽车上的某些模式以进行颜色分类,我建议您使用卷积神经网络对这些模式进行分类。所以你的方法现在看起来像这样:
1. 使用空间变换网络或过滤高斯检测器来过滤汽车 2. 使用卷积神经网络对汽车的品牌和型号进行分类。3. 使用另一个具有卷积或深度架构的神经网络对图案和纯色进行分类。因此,输出将包含您想要的所有颜色以及您想要检测的所有模式。