如果您想匹配一些简单的模板来查找对象,请尝试 Viola &琼斯算法和所谓的哈尔级联。例如,OpenCV 在 XML 文件中训练了模板集合,用于检测人脸。 OpenCV 包含训练实用程序,因此您可以为其他类型的对象生成级联
OpenCV library (for iPhone) contains many algorithms. You can simply compare color histograms of images, or use more complicated stuff. Which kind of matching do you mean? Finding duplicates or calculating measure of similarity of images?
If you want to match some simple template to find objects then try Viola & Jones algorithm and so called Haar cascades. OpenCV has trained collection of templates in XML files for detecting faces for example. OpenCV contains utility for training thus you are able to generate cascades for other kinds of objects
随着深度神经网络的出现,整个图像识别领域发生了变化。然而,您需要一台强大的机器来训练您自己的神经网络。不过,您也可以使用 vize.it - 这是一个易于使用的工具在线应用程序,可让您使用 http API 定义任务并对图像进行分类。
免责声明:我是人工智能博士生,是 vize.it 团队的成员。
The whole field of image recognition has changed with the advent of Deep Neural Networks. However you need a powerful machine to train your own neural net. You can also use vize.it, though - It is an easy-to-use online app that lets you define the task and classify images by using http API.
Disclaimer: I am a PhD student of Artificial Intelligence who is a member of the vize.it team.
其简单的 HTTP API 允许轻松添加、删除和搜索索引中的匹配图像。它基于OpenCV并使用ORB描述符,该描述符是无专利的。
Pastec is an open source (LGPL) alternative to the service already mentioned.
Its simple HTTP API allows to easily add, remove and search for matching images in the index. It is based on OpenCV and uses the ORB descriptor, which is patent-free.
I've looked into Moodstocks, who seems to have perfected an image recognition system with a pay-per-month service. They have a great system (I've tested it for my own use and it's fantastic) BUT it's EXTREMELY expensive for me, which is why I am not using it. At the time of me writing this, the "up to 100,000" image service is about $12,000/year. For my project, I have nearly 4 million images I need to match against. YIKES.
So after many months of research on and off, I've come to the conclusion that if you're going to be comparing against 1000's of images or more (in my case 1 million+), you'll need to do the image comparison off of the device. Users mobile devices don't have the space, speed, and power to perform large amounts of computations to do this kind of work.
What that really means is that you need to set up an image recognition server on a high performance machine and make it public to your app. On the app, have the user take a picture of an object (or you can grab frames from the camera video), have it sent to your server for comparison, and then when a match is found report the results back to the app.
You can use a framework like Accord.NET or EmguCV to make a C# desktop application or service that runs on a Windows Server box to do this, for example.
What the Amazon iOS app does for image recognition from what I can guess is they appear to locate SURF points real-time and sends the data to the server while scanning instead of the entire image. My guess is that they use OpenCV on device to do this. But they still use server software to send back the matched product SKU.
From what I've been able to learn is that the LoCATe algorithm performs the best and the quickest with large amounts of images, but also takes hours, days, and possibly weeks (depending on how many images you have) to create massive indexes for search. I think when it comes to image matching I've found the speed of creating a solid index is in relation to the speed of finding matches from queries.
发布评论
评论(8)
OpenCV 库 (for iPhone)包含许多算法。您可以简单地比较图像的颜色直方图,或者使用更复杂的东西。你指的是哪一种匹配?查找重复项或计算图像相似度的度量?
如果您想匹配一些简单的模板来查找对象,请尝试 Viola &琼斯算法和所谓的哈尔级联。例如,OpenCV 在 XML 文件中训练了模板集合,用于检测人脸。 OpenCV 包含训练实用程序,因此您可以为其他类型的对象生成级联
OpenCV library (for iPhone) contains many algorithms. You can simply compare color histograms of images, or use more complicated stuff. Which kind of matching do you mean? Finding duplicates or calculating measure of similarity of images?
If you want to match some simple template to find objects then try Viola & Jones algorithm and so called Haar cascades. OpenCV has trained collection of templates in XML files for detecting faces for example. OpenCV contains utility for training thus you are able to generate cascades for other kinds of objects
您还可以查看 Moodstocks,它们提供了出色的 API 和 iOS SDK,可以在几分钟内在您的应用程序中实现图像识别。
You can also have a look at Moodstocks, they provide a great API and iOS SDK to implement image recognition in your app in minutes.
只是为了扩展列表:
Just to extend the list:
尝试以下两个 API:
Try the following two APIs:
我发现了 IQEngines,效果很好。
I found IQEngines, that work well.
随着深度神经网络的出现,整个图像识别领域发生了变化。然而,您需要一台强大的机器来训练您自己的神经网络。不过,您也可以使用 vize.it - 这是一个易于使用的工具在线应用程序,可让您使用 http API 定义任务并对图像进行分类。
免责声明:我是人工智能博士生,是 vize.it 团队的成员。
The whole field of image recognition has changed with the advent of Deep Neural Networks. However you need a powerful machine to train your own neural net. You can also use vize.it, though - It is an easy-to-use online app that lets you define the task and classify images by using http API.
Disclaimer: I am a PhD student of Artificial Intelligence who is a member of the vize.it team.
Pastec 是上述服务的开源 (LGPL) 替代方案。
其简单的 HTTP API 允许轻松添加、删除和搜索索引中的匹配图像。它基于OpenCV并使用ORB描述符,该描述符是无专利的。
Pastec is an open source (LGPL) alternative to the service already mentioned.
Its simple HTTP API allows to easily add, remove and search for matching images in the index. It is based on OpenCV and uses the ORB descriptor, which is patent-free.
我研究了 Moodstocks,他们似乎通过按月付费服务完善了图像识别系统。他们有一个很棒的系统(我已经测试过它供我自己使用,非常棒),但它对我来说非常昂贵,这就是我不使用它的原因。在我撰写本文时,“最多 100,000 张”图像服务的费用约为 12,000 美元/年。对于我的项目,我需要匹配近 400 万张图像。哎呀。
因此,经过几个月的断断续续的研究,我得出的结论是,如果您要与 1000 张或更多图像(在我的例子中超过 100 万张)进行比较,您需要进行图像比较 < em>关闭设备。用户的移动设备没有足够的空间、速度和能力来执行大量计算来完成此类工作。
这真正意味着您需要在高性能计算机上设置图像识别服务器并将其公开给您的应用程序。在应用程序上,让用户拍摄某个对象的照片(或者您可以从相机视频中抓取帧),将其发送到您的服务器进行比较,然后在找到匹配项时将结果报告回应用程序。
您可以使用 Accord.NET 或 EmguCV 创建一个在 Windows Server 上运行的 C# 桌面应用程序或服务来执行此操作。
据我猜测,Amazon iOS 应用程序对图像识别的作用是,它们似乎实时定位 SURF 点,并在扫描时将数据而不是整个图像发送到服务器。我的猜测是他们在设备上使用 OpenCV 来做到这一点。但他们仍然使用服务器软件发回匹配的产品SKU。
这是一篇很棒的博客文章,作者是一位想要在 .NET 中进行图像匹配的人,他详细介绍了每个步骤,包括它的工作原理、如何操作,然后在示例应用程序中提供了他的所有代码。精彩帖子:https ://sbrakl.wordpress.com/2015/01/30/love-affair-with-cbir-part-3/comment-page-1/
据我所知,LoCATe算法在处理大量图像时表现最佳且最快,但也需要数小时、数天甚至数周(取决于您拥有的图像数量)来创建用于搜索的大量索引。我认为在图像匹配方面,我发现创建可靠索引的速度与从查询中查找匹配项的速度有关。
I've looked into Moodstocks, who seems to have perfected an image recognition system with a pay-per-month service. They have a great system (I've tested it for my own use and it's fantastic) BUT it's EXTREMELY expensive for me, which is why I am not using it. At the time of me writing this, the "up to 100,000" image service is about $12,000/year. For my project, I have nearly 4 million images I need to match against. YIKES.
So after many months of research on and off, I've come to the conclusion that if you're going to be comparing against 1000's of images or more (in my case 1 million+), you'll need to do the image comparison off of the device. Users mobile devices don't have the space, speed, and power to perform large amounts of computations to do this kind of work.
What that really means is that you need to set up an image recognition server on a high performance machine and make it public to your app. On the app, have the user take a picture of an object (or you can grab frames from the camera video), have it sent to your server for comparison, and then when a match is found report the results back to the app.
You can use a framework like Accord.NET or EmguCV to make a C# desktop application or service that runs on a Windows Server box to do this, for example.
What the Amazon iOS app does for image recognition from what I can guess is they appear to locate SURF points real-time and sends the data to the server while scanning instead of the entire image. My guess is that they use OpenCV on device to do this. But they still use server software to send back the matched product SKU.
Here's an awesome blog post by a guy who wanted to do image matching in .NET and he walks through every step including how it works, how to do it, and then give all his code in a sample application. Amazing post: https://sbrakl.wordpress.com/2015/01/30/love-affair-with-cbir-part-3/comment-page-1/
From what I've been able to learn is that the LoCATe algorithm performs the best and the quickest with large amounts of images, but also takes hours, days, and possibly weeks (depending on how many images you have) to create massive indexes for search. I think when it comes to image matching I've found the speed of creating a solid index is in relation to the speed of finding matches from queries.