# Are there any very good APIs for matching similar images?

I am working with Python. I have 3000 thousands images of front-faced watches like the following ones: Watch1, Watch2, Watch3.

I want to find an API which receives this collection of photos or even others taken under less ideal conditions (different background colour, darker lightning etc) and which finds/matches the most similar watches with one each other.

By similarity I mean that I expect that a round in shape, brown watch with thin lace will be only matched with watches of round shape, of dark colour and with thin lace (from the same collection of photos).

I am aware of APIs of this kind from Google, Amazon, Microsoft, TinEye, Clarifai, Indico etc but I am not sure that they will perform so well in a so specialised application. For example, these APIs are useful for matching car images with car images and not with food images but matching among the same kind of objects (e.g. watches) based on a very high level of detail (shape, colour, thickness etc) is significantly more demanding.

For instance, this is an application on a specific kind of objects like clothes with Indico: https://indico.io/blog/clothing-similarity-how-a-program-is-more-fashionable-than-me/. However, if you notice it, the results are not that good and essentially they could be retrieved to a great extent even by simply applying PCA and KNN to these images.

Therefore, my question is: Is there any API which can match similar images based on a high level of detail?

• This problem is called similarity search. Google has a Visually Similar Search, as does Clarifai. And here's a library: github.com/ascribe/image-match – Emre May 10 '18 at 16:29
• Is it important to you to know what the visual attributes are and you specifying them explicitly or not? – Pavel Savine May 10 '18 at 19:30
• (@PavelSavine) No it is not, for now at least... :) – Outcast May 11 '18 at 7:53