使用CNN进行图像匹配

时间:2018-05-21 06:44:01

标签: python image

有两组彩色图像:A和B.对于A中的每个图像,我想在B中找到10个最接近的图像,即10个最高分。

此外,A和B的每个图像的大小都不同。

请注意,它不是将A中的图像分类为不同的类别,而是查找最相似的图像。

此外,需要得分来说明相似性。如果B中有100张图像,那么A中每张图像应该有100个分数。

我知道CNN可以用来解决这个问题,但我找不到任何信息。

这样做的方法是什么?

是否有任何项目或示例可供使用?

非常感谢。

1 个答案:

答案 0 :(得分:1)

基本上你可以做以下

在达到足够的精度后,在图像上训练自动编码器网络(当然使用CNN),使用网络的编码器部分获得表示图像的矢量

你可以使用矢量之间的任何相似性方法来获得前n个最接近的向量

关于您对不同尺寸的第二次评论,您必须将图像标准化为一个通用尺寸或使用2个不同的网络,A和B

如果您只想使用一个网络,这意味着您需要使用与输入图层相对应的图像来提供它, 所以你必须放气使图像的像素膨胀以将图像大小调整到所选的大小,有多种技术可以做到这一点,每一种都有它的优点和缺点(大多数都是关于丢失的数据)

例如,您可以将每个2X2块合并为1个像素,您可以将图像裁剪为所需的大小(丢失它的条纹数据),依此类推...... 我的建议是首先使用图像库的resize api,在获得稳定的解决方案之后,在调整网络时,尝试其他调整大小的技术

有很多自动编码器示例,取决于您使用的框架... here's一个简单的keras