论文 | 图像检索经典论文解读《Learning visual similarity for product design with convolutional neural networks》

一 写在前面

未经允许,不得转载,谢谢~~

最近想尝试一下CHINA-MM 2018中的京东AI挑战赛,其中的一个子任务就是单品搜索,其实就是图像内容检索任务。

因为之前并没有接触过这一块任务,所以找了一些资料学习(其实都是受惠于导师与师兄。・ω・。嘻嘻),分享出来给有兴趣的同学:

简单说明一下,前两篇是图像检索方面的综述文章,总结的非常的好,对于刚刚接触这个领域的人真的很有必要阅读,以便于形成整个概念~

了解基本概念之后,其实脑子里就会有一个粗略的网络模型,这个时候再去看几篇具体的论文是非常恰到好处的~

二 文章简介

本文主要是对Learning visual similarity for product design with convolutional neural networks这篇文章的总结,整理了自己觉得最重要的部分,也作为学习记录,至于对具体的训练细节以及实验部分感兴趣的同学还请阅读原文哦~~~

1 整体介绍

其实通过文章名就可以知道文章研究的是用卷积神经网络学习产品相似性问题。

图1

如图,文章解决了以下两个问题:

  1. Query1:对于一张给定区域的图像,找出与这个区域中包含物品最相似的其他物品;
  2. Query2:对于一个物品,找到包含相似物品的室内设计图

这篇文章针对的具体场景是室内设计中物品与具体场景设计。具体来说Query1可以解决的问题是人们常常会在装修网站询问“这张图片中的台灯挺好的,从哪里可以买到相似的?”;而Query2可以解决的问题是“这条椅子可以摆放房间的哪里?”

在给定物品的区域框的情况下,其实我觉得两个问题的本质都在于学习两个物品的相似度,当然后期利用相似度我们可以很自然的完成检索任务。

2 文章主要贡献

这篇文章是2015年发在ACM Transactions on Graphics上面的文章,在图像检索还是蛮有代表性的,以下为作者自己总结的几点主要贡献:

  1. 生成物品与对应场景的数据集;
  2. 使用孪生CNN网络(siamese network)并结合contrastive loss & classfication loss完成了整个模型的训练;
  3. 将网络应用到实际中;

作者在论文中花了较多篇幅介绍数据集的收集与处理,但在下文中就重点介绍第2部分,其余的还是请阅读原文哦~~~

三 网络结构介绍

可能大家对于什么是siamese network, 什么是contrastive loss都有点陌生,接下来我会先介绍这两部分的内容,然后再总结论文中使用的结构及一些重要的处理细节。

1 background: 用孪生网络进行距离度量

1.1 CNN模型建模

  • 我们的卷积网络模型其实都可以看成是一个函数f,只不过这个函数比我们直观接触过的线性函数、二次函数等要复杂和很多,anyway,当参数θ确下来以后它就是一个从输入到输出的映射关系f;
  • 而对于每一张输入图像I,我们都能得到对应的输出特征x;
  • 所以我们得到这样的关系:x = f(I;θ)

1.2 contrastive loss

首先介绍一下正样本和负样本的概念。

  • 正样本:物品q和p是相似的,通常被标注为y=1,那么我们称这样的训练数据对(p,q)是positive pair;
  • 负样本:物品q和n是不相似的,通常被标注为y=0,那么我们称这样的训练数据对(p,n)是negative pair;


如图,我们定义一个边界值Margin(m)来判定两个物品是否相似,例如对于图中的p与q被标注为正样本,在图中体现在两者的特征值会比较相近(圆内); 反之,p与q为负样本,那么他们的特征值之差一定大于m。

接下来我们来学习一下如何用正负样本计算损失值contrastive loss。
如下图所示为损失函数L的定义


对于公式作如下解读:

  • loss由两部分组成;
  • Lp表示对相似的图片(正样本)得到的特征值太远的惩罚(理论应该是越近越好);
  • Ln表示对不相似的图片(负样本)得到的特征值太近的惩罚(理论应该至少大于m);

如下图为更形象一点的解释:


  • 正样本(p,q)通过CNN得到的特征值x如果离得太远,会在loss优化的时候慢慢拉回来;
  • 负样本(p,n)通过CNN得到的特征值x如果小于阈值m,会在loss优化的时候慢慢拉大;

这样用正负样本去训练神经网络的参数,我们就能得到一个能够正确判断物品相似性的结果。

1.3 siamese network

孪生网络顾名思义就是使用一样的网络结构,因为在我们的算法中,需要同时对需要正样本(p,q)或者是负样本(p,n)计算特征值,为了提高效率,设计了这样的结构~


其实本质就是两个CNN网络共享参数θ,这个结构在上面那张图中也已经展示出来了。

2 Our-approach:文章网络结构具体介绍

2.1 网络结构

在上面background的基础上,文章提出了4种网络结构:


都不是很复杂,上面的看懂的话应该很快就能看懂这4个结构图。

  • A:将本来用于分类任务网络,将最后一层softmax改成特征提取层
  • B:最基本的siamese CNN + contrastive loss结构
  • C:在B的基础上增加了一个图像分类任务,用多任务更好的表示loss
  • D:在C的基础上对提取到的特征多做了一次L2归一化操作

文章最后给出的应用演示中用的是D结构,如下图所示为用D结构,并结合t-SNE算法做出来的可视化效果图:


2.2 重要处理细节

正负样本处理
我们直接拿到的标注数据一般只有正样本对(p,q),那么如何更好的利用这些正样本数据及生成负样本数据呢?
个人觉得本文的处理方式还是挺有参考意义的,所以整理在这里:

  1. 生成负样本:对于每个图片p,都随机选取80张属于同一类别的图像+随机选取20张不属于这个类别的图像,这样每个图像p,都能生成100对负样本(p,n);
  2. 为了平衡正样本与负样本之比,正样本对*5,这样正样本对:负样本对=5:100=1:20;
  3. 对于每个图像,我们都有这个物体对应的框。为了数据增强,采用在原来的框外面额外选取像素大小为{0,8,16,32,48,64,80}的边框,这边边框其实就作为物品的背景,从而达到训练数据增强的效果;
  4. 最后将数据分成train、val、test(图像p应该没有交叉)

讨论&求助:以上是我整理出来的核心处理思路,作为学习来说应该够用了,但我用论文中实际的数据量代入作者描述的方法,不能得到论文中的数据,就是为什么101,945的原始正样本对最后得到的是63,820,250的训练数据、3,667,769的验证数据以及6,391的测试数据。非常希望有同学能帮我解一下疑惑,ヾ(◍°∇°◍)ノ゙

其他小细节

  • margin(m)的初始化,文章探索了{1,√10, √100,√1000}, 最后用D结构的时候用了√2
  • 网络结构的初始化可以考虑用模型迁移
  • 距离度量使用的是cosine
  • 处理在测试阶段对region加了padding,在测试阶段也用了16的padding效果最好。

四 写在最后

啊啊啊啊啊啊,终于写完了,看了一下时间,写了2个小时。
而且是在完!全!集!中!精!力!的情况下~

个人很喜欢分享,但真的不喜欢没有任何招呼也不注明作者信息的情况下就被网站拿去全文使用,有点小委屈╭(╯^╰)╮

oooooh,恢复正常,总结的有问题还请简友们一定要提出来,特别是期待有人能解决我文中的困惑,感激不尽!

最后,这篇文章用的是contrastive loss,在前面推荐的另一篇文章中用的是FaceNet网络中用的是另一种图像相似度检测中常用的triplet loss,具体的等我读完文章以后会再整理一篇,谢谢关注嘻嘻~~~

参考文献

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容