Instance-Aware Hashing for Multi-Label Image Retrieval

Instance-Aware Hashing for Multi-Label Image Retrieval

出版源:《IEEE Transactions on Image Processing》, 2016, 25(6):1-1
论文下载地址

Introduce

本篇论文是发表在TIP的工作,主要讲述了深度学习在多目标数据集上生成hash code上的应用。深度学习用到的监督信息主要来源于人工标注,但是人工标注很主要取决于图像中的目标,比如说标注为狗的图片,可能只有狗这个部分是有用信息,其他的背景信息则忽略。之前的deep hash方法,都是单张图片生成一串hash code(semantic hash)。对于单label的数据集,图片中可能就是一个物体,单张图片生成一串hash code,对检索效果影响不大。但是在Multi-Label的数据集中,一张图片可能存在多个object,对应着不同的label,单纯的将不同数目object的图片生成相同长度的hash code,作者认为这是次最优的,论文没有解释为什么次最优的原因,这里我也有疑问。
对多label的数据,作者借用了目标检测的思路,主要过程如下:

  1. 产生object region proposals,和图片一起作为网络的输入。
  2. 使用SPP layer得到每一个region proposal的深度特征。
  3. 计算每个region proposal属于每类的可能性,得到一个 N×C 的矩阵,N代表proposal数目,c代表类别。
  4. 计算每个region proposal的hash code。

整个网络的结构如图所示:


这里写图片描述

The Proposed Method

Region Proposal的方法主要有Constrained Parametric Min-Cuts(CPMC), Seletive Search, Multi-scale Combinatorial Grouping(MCG),Geodesic Object Proposals(GOP)等方法,与通用的目标检测不同的是,本文作者采用了GOP这种方法,从原始的每张图片中提取超过1K个region proposals。为了减少重复计算区域的特征,作者借鉴SPPNet的方法,添加spp layer,一次输入一张图片,然后在spp layer中通过max pooling得到每一个region proposal的特征。假设输入N个region proposal,通过spp layer得到d-dim的特征,那么对于整个图片,会得到 N×d 的矩阵。论文中,使用GoogleNet。

Label Propobility Calculation Module

从ssp layer得到 N×d 的矩阵,spp layer跟着一个全连接层,压缩成一个 N×c 的矩阵,c代表目标的类别。 Pi=(Pi1,Pi2,Pi3,......Pic) 是可能性的向量, Pij 表示图片包含j-th类的可能性。与目标检测任务不同,目标检测的训练集中有每一个region proposal的ground truth,但是在hash任务中,只有每个图片属于哪些类,可以通过这个信息得到一个pair (I,Y) 。I代表了一幅图片,Y是图片的ground truth label。 YRc 并且 Yj{1,0},j=1,....,c 。如果 Yj 等于1,说明第j个label和图像相关,否则不相关。
得到 N×c 的矩阵M以后,其中M的每一行都代表一个c维的向量。作者使用了cross-hypothesis max-pooling的方法把M的每一行融合成一个c维的向量。融合过程如公式(1)所示:

mj=max{M1j,M2j,M3j,......MNj},j=1,.....,c(1)

mj 是第j类的经过max-pooling以后的值。使用 mj ,计算每类的可能性分布 p=(p1,p2,p3,.....pn) ,如公式(2)所示:
pj=exp(mj)ck=1exp(mk)(2)

pj 表示图片包含第j类物体的可能性。如果第i个proposal属于第j类, pj 的值应该很大, Mij 也应该有一个大的值。在得到每类的可能性分布以后,可以得到目标检测是否正确的损失函数:
lc=jc+1|c+|log(pj)(3)

c+ 表示输入图片属于类别集合, |c+| 表示集合中的数目。损失函数和softmax-loss相似。损失函数关于 mj 的导数如公式(4)所示:
lcmj={pj1|c+|,ifYj=1pj,ifYj=0(4)

通过以上公式,可以得到可能性矩阵P。
Pij=exp(Mij)ck=1exp(Mik)(i=1,...N)(5)

Pij 表示第i个region proposal包含第j类物体的概率。

Hash coding Module

spp layer使用N*d的特征矩阵D作为输入,通过全连接层把 Di 映射到b-dim的向量 HiRb(i=1,2,...,N) Hi 与第i个proposal相对应。上述矩阵D可以得到 N×b 的矩阵H。下一步的操作就是根据可能性矩阵P和矩阵H融合起来。P是一个 N×c 的矩阵。两个矩阵进行以下公式的操作:

f=1Ni=1NPiHi,(6)

Hi,Pi 分别代表H,P的第i行。 代表Kronecker Product。Kronecker Product是一个如下所示的 c×b 的vector。


这里写图片描述

假设 f=(f(1),f(2),f(3),.......f(c)) 。矩阵f的每列是b维的向量,使用sgn函数进行二值化,就可以得到b位的hash code。对一幅图像 I ,最终得到b(I)=(b(1)(I),b(2)(I),b(3)(I),......b(c)(I))
作者使用的损失函数为三元组损失,一个三元组包括一个属于同样类别的正样本,一个属于不同类别的负样本。对于第j类的三元组,损失函数如公式(7)所示:

lTriplet(f(j)(I)f(j)(I+),f(j)(I)=max(0,1||f(j)(I)f(j)(I)||22+||f(j)(I)f(j)(I+)||22),(7)

损失函数保证,相似的图片之间的hash code之间的距离小于不相似图片之间的hash code的距离。目标函数关于 f(j)(I)f(j)(I+),f(j)(I) 的导数如公式(8)所示:
lTriplet(f(j)(I)f(j)(I+),f(j)(I)f(j)(I)=2(f(j)(I)f(j)(I+))lTriplet(f(j)(I)f(j)(I+),f(j)(I)f(j)(I+)=2(f(j)(I+)f(j)(I))lTriplet(f(j)(I)f(j)(I+),f(j)(I)f(j)(I)=2(f(j)(I)f(j)(I))(8)

1||f(j)(I)f(j)(I)||22+||f(j)(I)f(j)(I+)||22|| 小于等于0的时候,所有的偏导数都等于0。

当实现semantic hash的时候,如图1所示,将f矩阵通过全连接映射到q维的向量,通过二值化,得到hash code。在semantic hash中,作者同样采用了三元组损失函数,具体推导过程如上面类似。

Retrieval

对于训练集,每张图片得到属于某些类的概率,选取阈值大于0.2的类,生成hash code。最后每类会得到一个hash 表,存储包含该类的图片的hash code。检索的时候,查询图片也会得到每类的概率,选取阈值大于0.2的类别,用hash code和待检索对应类的hash code作内积操作,根据距离大小,返回检索的结果。


这里写图片描述

Experiment

作者选取了VOC07,VOC12和MIRFILCKR-25K作为数据集进行训练,其中每类数据集的选取方式如表所示:


这里写图片描述

作者在论文中,使用了四种评价标准,主要是NDGG,ACG,MAP和加权MAP。实验结果如下图所示:


这里写图片描述
这里写图片描述
这里写图片描述

Conclusion

本文巧妙的应用了目标识别的技巧到deep hash上来,在多类别的数据集上检测取得了不错的效果。但是个人觉得,这种方法同样存在缺陷,如果对于小的图片,受目标识别算法的影响效果会很差。并且对于蓝天白云,公园这种目标不明确的图片,很难进行识别。不过瑕不掩瑜,方法迁移的idea还是值得学习,从实验结果来看,的确有了明显的提升。

Reference

Hanjiang Lai, Pan Yan, Xiangbo Shu,Yunchao Wei, Shuicheng Yan Instance-Aware Hashing for Multi-Label Image Retrieval TIP2016

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值