IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 论文阅读《Learning visual similarity for product design with convolutional neural networks》 -> 正文阅读

[人工智能]论文阅读《Learning visual similarity for product design with convolutional neural networks》

参考:

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

1. idea

  1. 该文章研究的是用卷积神经网络学习产品相似性的两个问题,一是对于给定区域的图像,找出与这个区域中包含物品最相似的其它物品,二是对于一个物品,找到包含相似物品的室内设计图。
  2. Query1可以解决的问题是人们常常会在装修网站询问“这张图片中的台灯挺好的,从哪里可以买到相似的?”;而Query2可以解决的问题是“这条椅子可以摆放房间的哪里?
  3. 在给定物品区域框的情况下,两个问题的本质都在于学习两个物品的相似度,然后利用相似度来完成检索任务。

2. 贡献

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

3. 背景介绍

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

3.1.1 contrastive loss

  1. 首先介绍一下正样本和负样本的概念:
  • 正样本:物品q和p是相似的,通常被标注为y=1,那么我们称这样的训练数据对(p,q)是positive pair;
  • 负样本:物品q和n是不相似的,通常被标注为y=0,那么我们称这样的训练数据对(p,n)是negative pair;
  1. 如图,我们定义一个边界值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优化的时候慢慢拉大;

3.2 siamese network

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

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

4. 网络结构介绍

4.1 网络结构

在上面background的基础上,文章提出了4种网络结构:
在这里插入图片描述

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

A:将本来用于分类任务网络,将最后一层softmax改成特征提取层
B:最基本的siamese CNN + contrastive loss结构
C:在B的基础上增加了一个图像分类任务,用多任务更好的表示loss
D:在C的基础上对提取到的特征多做了一次L2归一化操作
文章最后给出的应用演示中用的是D结构,如下图所示为用D结构,并结合t-SNE算法做出来的可视化效果图:

在这里插入图片描述

4.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应该没有交叉)

其它小细节

  1. margin(m)的初始化,文章探索了{1,√10, √100,√1000}, 最后用D结构的时候用了√2
  2. 网络结构的初始化可以考虑用模型迁移
  3. 距离度量使用的是cosine
  4. 处理在测试阶段对region加了padding,在测试阶段也用了16的padding效果最好
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:38:10  更:2021-07-29 11:39:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 15:51:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码