zoukankan      html  css  js  c++  java
  • 图像检索算法

    图像检索:是从一堆图片中找到与待匹配的图像相似的图片,就是以图找图。

    看了两篇文章:

    Large-Scale Image Retrieval with Attentive Deep Local Features   https://arxiv.org/pdf/1612.06321v4.pdf

    Aggregated Deep Local Features for Remote SensingImage Retrieval  https://arxiv.org/pdf/1903.09469.pdf

    这两片都是讲了用使用注意力机制提取CNN局部特征描述子,进行图像检索的方法。第一篇是原创,第二篇是将其应用到遥感图像检索。

    图片检索可以分为两个问题: 第一图像级别的描述子的建立,第二搜索匹配的描述子。这两篇文章主要关注,第一个问题,第二个问题没有深入。

    论文一:

    作者先是说了以往的研究都是在小尺度数据集上的得到的。作者的提出了一种基于CNN的特征描述子,用于大规模数据检索。

    这篇文章的特点就是:使用注意力机制帮助获取特征点,用特征点相应位置卷积层的通道方向的特征,作为该特征点的描述子。

    1、使用了一种弱监督学习方法,只有图像级的标签用于训练;

    2、加入了一个注意力模型,使用注意力机制,找到局部关键点,将该点的cnn通道方向的特征作为描述子

    作者制作了个大型(large scale)数据集,然后建立检索系统:1. 密集局部特征提取 2. 关键点选择 3. 降维 4. 索引和检索

    1.密集局部特征提取

    使用了Resnet50的预训练模型,去掉头,换上自己的头,微调。把conv4的输出作为特征,conv4里每个像素在原图像的视场的位置就是特征点的位置。

    这一步比较常规,现在普遍认为卷积层就是起特征提取的feature extractor。

    这样卷积层是特征,从这么多的位置里选择出代表性的特征。作者比较新的提出了以下的关键点选择方法:

    2. 基于注意力机制的关键点选择

    如果直接使用cnn层作为特征直接进行匹配的话,描述子的维度太高,检索太慢。因此有必要,从特征图里选择出来一些关键点。

    在普通的匹配里有一些:sift,surf,FAST,Brief等特征点和描述子。

    CNN已经提取好特征了,我们需要在特征图上选择出一些。

    这时候作者把训练好的网络参数固定,新建一个2层的卷积网络,这个两层的网络的输入就是conv4的输出,输出就是和conv4大小相同的1通道的权重图,这个权重图里就是每个conv4特征的权重。

    注意力就关注到这地方了。

    这里的训练分两步,不能同时训练,先训练1,训练完了再训练2中的注意力模型。

    这个和普通的方法区别是:他是先计算特征描述子,再选择特征点

    特征点选择多少个论文没有说,好奇,只能看代码了。

    3.降维

    因为没有说,一副图像选择多少个特征点。

    只是说把这些特征点对应的conv4的通道数构成的描述子,先L2归一化,再用PCA降维到40维,降完之后再归一化

    4. 索引和检索

    基于最近邻的搜索技术,kd-tree,PQ.

    当然基于距离最小的方法全部招呼上来。

    实验部分:

    这部分说了前面的疑问,每个图像提取1000个关键点(根据注意力机制里概率的大小),每个特征点40维。使用k最近邻匹配 k=60。

    怎么匹配的呢,对1000个关键点,每个进行匹配,选择前60个最匹配的,60个匹配结果里统计类别分布,选择最高的,就是这个关键点对应的图像。

    至于1000个关键点怎么弄一个个弄?还是每个集成起来?

    对比方法:

    Deep Image Retrieval(DIR)  全局2048维的描述子,也就是说一副图像一个描述子维度是2048维。使用QE 最近邻.

    QE 方法见:http://yongyuan.name/blog/cbir-query-expansion.html

    算是最近邻方法的一个小技巧。

     siaMac 与上方法类似,也是一种全局描述子512维度,使用的是VGG处理过的。

    LIFT 这个比较有意思的是用SIFT产生的特征点特征向量,监督CNN学习的的结果,然后取代 SIFT (众所周知SIFT速度慢,不知道CNN学习后速度快了没有,没看原论文)

     论文2:

    这篇论文的选题好,关注遥感图像。 遥感图像有个好处就是拍摄的角度高,基本处于90%。遥感图像自带分辨率,尺度因素不用考虑(这些强的先验知识,可以极大的减轻网络负担和匹配负担)

    所以改了改,用到遥感数据上效果就遥感图像最优了(state-of-the-art)

    这篇论文思路清晰,过程说的明白,就是网络使用的是论文1的网络,刚开始不明白,所以反过去看了论文1。

    开篇就点题了:基于内容的图像检索主要包括两个步骤:

    图像的描述特征提取,图像匹配

    1.图像特征提取

    特征提取完全和上文相同。就是再注意力模型里分了个 乘注意力 和 加注意力, 乘法注意力是论文1提出的,加注意力是该文增加的,后边的实验说乘法注意力,比加的好。

    怀疑作者是再凑创新。其他地方完全一样,就是直接搬过来了。

    2.特征集成

    使用了VLAD 方法,将不同数量的特征,变成相同大小,可以比较,计算距离。

    3.检索

    为了提高检索精度,使用 query expansion (QE,上文中提到过) 和图像匹配(估计就是根据特征点的匹配,进行仿射变换后,计算相关系数等)

    论文2主要在于把一些方法联合起来使用,然后应用到了数据集中。

    总结就是:卷积神经网络成功的原因就是图像的对称性,每个像素点的意义是相同的,都是代表某一区域的亮度。(全连接为什么不行,因为输入输出没有可比性,比如输入速度,位置,量纲都不同,怎么处理)

                     分类来看,高层的特征并不是每一个地方都对分类有贡献,图像的类别的对象,不可能占据所有图像,还有背景,以及其他类。所以没有必要考虑所有特征,只需要考虑类别相关的特征即可。

                    该论文里的注意力神经网络是不错的。而且训练分两段训练也是有启发意义的。

     

    每天看一论文。

     

  • 相关阅读:
    MySQL错误 1030-Got error 28 from storage engine
    电脑开机无反应 不显示BIOS 硬件没问题
    python错误 import: unable to open X server
    Python 错误 invalid command 'bdist_wheel' & outside environment /usr
    Cento 7安装 Failed to execute /init
    笔记《鸟哥的Linux私房菜》5 首次登入与在线求助 man
    Scrapy XPath语法
    Linux 用户操作
    Mysql 表修改
    Ubuntu 配置 Python环境 IPython
  • 原文地址:https://www.cnblogs.com/yjphhw/p/10596371.html
Copyright © 2011-2022 走看看