Computer vision 使用TensorFlow构建简单的图像搜索

Computer vision 使用TensorFlow构建简单的图像搜索,computer-vision,tensorflow,image-recognition,Computer Vision,Tensorflow,Image Recognition,我需要在我的应用程序中使用TensorFlow实现一个简单的图像搜索。 要求如下: 该数据集包含大约一百万张大小相同的图像,每个图像包含一个唯一的对象,并且仅包含该对象 搜索参数是使用手机摄像头拍摄的数据集中可能存在的某个对象的图像 我设法从相机图片中提取图像并将其拉直成矩形,结果,像TinEye这样的反向搜索图像索引器能够找到匹配 现在,我想通过使用TensorFlow根据我的数据集创建一个模型(使每个图像的文件名成为唯一的索引)来复制该索引器 有谁能给我指点一些教程/代码来解释如何在不太钻研

我需要在我的应用程序中使用TensorFlow实现一个简单的图像搜索。 要求如下:

  • 该数据集包含大约一百万张大小相同的图像,每个图像包含一个唯一的对象,并且仅包含该对象
  • 搜索参数是使用手机摄像头拍摄的数据集中可能存在的某个对象的图像
  • 我设法从相机图片中提取图像并将其拉直成矩形,结果,像TinEye这样的反向搜索图像索引器能够找到匹配

    现在,我想通过使用TensorFlow根据我的数据集创建一个模型(使每个图像的文件名成为唯一的索引)来复制该索引器

    有谁能给我指点一些教程/代码来解释如何在不太钻研计算机视觉术语的情况下实现这一目标

    非常感谢

    研究人员说,这将产生与TinEye类似的结果。它们是参考文献。但是


    感知散列方法的最大问题是,虽然它能有效识别相同的图像(受到倾斜、对比度变化等的影响),但它在识别相同对象的完全不同的图像(例如,汽车前部和侧面)方面并不出色

    TensorFlow对深度神经网络有很大的支持,它可能会给你更好的结果。下面是关于如何在TensorFlow中使用深层神经网络来解决此问题的高级描述:

    从预先训练好的NN(比如GoogLeNet)开始,或者自己在类似的数据集上训练一个NN。现在,我们得到了一幅新的图片,我们正试图识别它。把它输入神经网络。看看NN中相当深层的激活情况。这个激活向量就像图像的“指纹”。在数据库中查找具有最近指纹的图片。如果距离足够近,可能是同一个物体

    这种方法背后的直觉是,与感知哈希不同,神经网络正在构建图像的高级表示,包括识别边缘、形状和重要颜色。例如,苹果的指纹可能包括其圆形、红色甚至小茎的信息


    您也可以尝试类似的方法,使用大量手工挑选的功能,如筛选、区域颜色矩和对象轮廓片段。这可能需要做更多的工作,而不是TensorFlow最擅长的


    更新

    OP提供了一对来自其应用程序的图像示例:

    下面是在这对相似图像和一对完全不同的图像上使用的结果

    比较OP提供的两个图像:

    RADISH(径向散列):
    pHash确定您的图像与PCC=0.518013不相似

    DCT哈希:
    pHash确定您的图像与汉明距离=32.000000的图像不相似。

    Marr/Mexican hat wavelet:
    pHash确定您的图像与标准化汉明距离=0.480903的图像不相似。

    将他的一张图像与我机器上的随机图像进行比较:

    RADISH(径向散列):
    pHash确定您的图像与PCC=0.690619不相似。

    DCT哈希:
    pHash确定您的图像与汉明距离=27.000000的图像不相似。

    Marr/Mexican hat wavelet:
    pHash确定您的图像与标准化汉明距离=0.519097的图像不相似。

    结论

    我们必须测试更多的图像才能真正了解。但到目前为止,pHash的表现似乎不是很好。在默认阈值下,它不认为相似的图像是相似的。对于一种算法,它实际上认为完全随机的图像更相似。


    这是一个使用TensorFlow和InceptionV3模型的类似图像搜索的简单实现。代码实现了两种方法,一种是处理图像搜索的服务器,另一种是基于提取的pool3特征进行最近邻匹配的简单索引器

    我想知道他们使用的是什么感知散列,因为我尝试了pHash开源项目,结果非常糟糕……你能分享一个链接、代码或更多关于你构建了什么以及得到了什么结果的细节吗?这里:第一个图像是数据库中的图像,第二个是我正在寻找的汉克斯!在这两幅图像上运行PHash会得到什么结果?为什么使用TensorFlow?虽然深度学习对于许多计算机视觉问题来说是一个很好的工具,但它可能不是图像搜索的正确解决方案。我愿意接受以下建议:)标准方法是:提取局部特征(SIFT或类似SIFT)->计算视觉词->搜索具有类似视觉词的图像(类似于文档搜索)。(可选)使用单应(或其他几何模型)验证匹配。你可以在网上寻找文字袋图片搜索链接已失效