【问题标题】:Identify if an image contains any image (object) from a database识别图像是否包含数据库中的任何图像(对象)
【发布时间】:2015-02-19 02:31:59
【问题描述】:
尽管在谷歌上搜索了相当多的内容,但唯一出现在神经网络和使用现有 API 查找图像标签以及网络摄像头跟踪方面的东西。
我想做的是为一些对象创建我自己的数据集(一个包含产品图像(或每个图像的指纹)的数据库,以及有关产品的制造商信息),然后使用一些组合机器学习和对象检测,以查找给定图像是否包含我收集的数据中的任何产品。
例如,我想拍一张椅子的照片并将其与一些数据进行比较,以从我的数据库中的椅子中找出哪张椅子最有可能出现在照片中。
解决这个问题的方法是什么?我已经考虑过使用 OpenCV,并认为这是一个起点,可能我将如何检测对象,但我还没有找到如何使用它来解决我的问题。
【问题讨论】:
标签:
c#
image-processing
object-detection
【解决方案1】:
我认为最终使用什么工具来解决问题并不重要。你可能需要某种机器学习。很难说哪种方法会导致最好的检测,为此我建议使用像weka 这样的工具。它是多种机器学习算法的集合,可让您轻松尝试最适合您的算法。
在开始尝试机器学习之前,您首先需要从数据集中提取一些特征。由于您几乎无法逐像素比较图像,这将导致巨大的计算工作量,甚至不一定提供所需的结果。尝试提取使您的图像独一无二的特征,例如平均颜色或亮度,也许尝试从图像中提取一些形状或大小。因此,最终您将只使用从图像中提取的特征而不是图像本身来提供算法。
很难定义哪些好的功能,这取决于您的特殊情况。通常,它不仅有一个,而且有多个覆盖图像完全不同方面的特征。要提取特征,您可以使用 openCV 或您喜欢的任何其他图像处理工具。获取数据集中所有图像的特征并开始使用机器学习。
【解决方案2】:
据我了解,您想构建一个基于内容的图像检索系统。
有很多方法可以做到这一点。定义解决问题的最佳方法与什么有关:
- 您要识别的对象类型,
- 用于搜索对象的图像类型,
- 系统的优先级(效率、稳健性等)。
你举了一个识别椅子的例子。在您的系统中,哪个是选择最相似椅子的决定因素?椅子的颜色?椅子的形状?这些是您在选择方法之前必须回答的典型问题。
无论哪种方式,解决此类问题最常用的方法之一是 词袋 模型(也称为特征袋)。我希望我能提供更多帮助,但为此我需要您更好地解释哪些是您工作/项目的最终目标。