图文检索(20):Sketch Me That Shoe

Sketch Me That Shoe

  • 摘要
  • 3 细粒度实例级SBIR数据集
    • 3.1 数据收集
    • 3.2 数据标注
  • 4. 方法
    • 4.1 概览
    • 4.2 三元组损失
    • 4.3 异构网络 VS 孪生网络
    • 4.4 阶段预训练和微调
    • 4.5 数据增强
  • 结论


发布时间(2016 cvpr)


标题:给我画一下那只鞋

摘要

数量:两种类别的数据集 1432 sketch-photo 对
32000细粒度三元组排序注释

三元组排序损失

3 细粒度实例级SBIR数据集

两个数据集:鞋子和椅子
1432 张sketch-photo素描和照片 = 716 pairs = 鞋子419 + 椅子297

3.1 数据收集

收集photo
鞋子:从UT-Zap50K[31]中选取了419张具有代表性的图像,涵盖了靴子、高跟鞋、芭蕾舞鞋、正式鞋和非正式鞋等不同类型的鞋子。椅子:搜索了宜家、亚马逊和淘宝三个网上购物网站,选择了不同类型和风格的椅子产品图片。最终选出的297张图片具有代表性,涵盖了办公椅、沙发、儿童椅、课桌椅等不同种类的椅子。

收集sketch
第二步是使用收集到的图像生成相应的草图。我们招募了22名志愿者来绘制这些图像。我们在平板电脑上向志愿者展示了一张鞋子/椅子的图片,时间为15秒,然后展示一张空白画布,让志愿者用手指在平板上画出他/她刚刚看到的物体。
没有志愿者接受过任何艺术培训,因此代表了可能使用已开发的SBIR系统的一般人群。因此,收集到的草图并不完美(见图2),使得后续使用这些草图的SBIR具有挑战性。

3.2 数据标注

1.属性标注
鞋子:21个属性
椅子:15个属性
对于1432张照片进行标注 ground-truth attribute vectors

2.为每个草图生成候选图片
每个草图:选择了10个最相似的候选图像(属性向量+模型特征向量结合进行查询,利用欧式距离进行检索)

3.三元组注释
每个sketch有45个三元组:716*45 约等于 32000 个三元组
每个三元组:sketch + 两张图片,任务是选择哪张图片更相似

4. 方法

4.1 概览

triplet ranking loss:正例与sketch的欧式距离大于负例与sketch的欧式距离

4.2 三元组损失

三元素损失是0-1损失的凸优化近似。
0-1损失:只有0,1这两种离散的损失值
三元组损失:损失最小是0,最大同时随着样本之间距离变化而变化。类似于0-1损失
同时凸优化:局部最优解就是全局最优解(三元组也就是存在唯一的全局最优解0)

4.3 异构网络 VS 孪生网络

文本-图像:应该使用异构网络
图像-图像:应该使用孪生网络
sketch-图像:如果使用异构网络,由于数据量太少,容易过拟合
本文对于sketch和图像使用孪生网络

4.4 阶段预训练和微调

四个阶段
1.训练 better sketch-a-net:预训练
数据:ImageNet-1K的边缘图用于训练
模型:TU-Berlin数据训练的 Sketch-a-Net架构用来训练

2.训练 better sketch-a-net:微调
数据:利用TU-Berlin的250类草图数据进行微调

3.训练 sketch-photo 排序:预训练
因为训练数据有限,从另外两个数据集选取187类,8976张草图,19026张照片
构建三元组
1)正例:前20%图片作为正例
2)负例:随机其他类别(3份);其他类别硬负例(1份);同类硬负例(1份)

4.训练 sketch-photo 排序:微调
在自己的数据集上进行类别内细粒度的微调

4.5 数据增强

两种数据增强方式
笔画去除
1)轮廓更重要,画的次序更靠前
2)笔画越长越重要
去除概率越小

笔画变形
最小二乘算法用于笔画变形
1)长度越短
2)曲率越小
变形概率越大

总结
3个笔画去除 + 9个笔画变形,一共可以获得12倍的数据

结论

我们引入了细粒度实例级SBIR的新任务。这个任务比研究得很好的类别级SBIR任务更具挑战性,但对于商业SBIR采用也更有用。本文引入了两个具有密集注释的新数据集,以激发这一方向的研究。实现跨草图/图像间隙的细粒度检索需要一个使用三重注释学习的深度网络,这个框架显然具有广泛的数据和注释需求。我们演示了如何避开这些要求,以便在这个新的具有挑战性的任务中获得良好的性能。在这个过程中,我们探索了关于用有限数据训练深度网络的各种见解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/7788.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【车道线检测】一、传统车道线检测:基于霍夫变换的车道线检测史诗级详细教程

1、定义图像显示函数 首先定义一个函数,函数的作用是通过plt库显示两幅图,为后续实验做准备。该函数的主要功能是: 从指定路径加载图像显示图像的基本信息将图像从BGR格式转换为RGB格式并在一个图形窗口中显示两幅图像进行对比 import nump…

Ftrans数据跨境传输方案:保护隐私与促进合作

数据跨境传输是指在不同国家、地区和法律框架下进行的数据交换和传输,数据跨境传输流程周期是数据产生--数据传输--数据接收,而困境来源也来自这3个环节: 1.本地合规限制 数据出口国(数据输出国)的法律对于数据收集的…

Mybatis学习笔记(三)

十、MyBatis的逆向工程 (一)逆向工程介绍 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包…

Github 2024-11-08Java开源项目日报 Top9

根据Github Trendings的统计,今日(2024-11-08统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9Vue项目1经验丰富的Java(后端)开发人员核心面试问题和答案 | 互联网Java工程师进阶知识完全扫盲 创建周期:2085 天开发语言:Java协议…

【新闻文本分类识别】Python+CNN卷积神经网络算法+深度学习+人工智能+机器学习+文本处理

一、介绍 文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集(“体育类”, “财经类”, “房产类”, “家居类”, “教育类”, “科技类”, “时尚类”, “时政类”, “游戏类”, “娱乐类”),然…

数据结构 ——— 链式二叉树的前中后序遍历递归实现

目录 前言 链式二叉树示意图​编辑 手搓一个链式二叉树 链式二叉树的前序遍历 链式二叉树的中序遍历 链式二叉树的后序遍历 前言 在上一章学习了链式二叉树的前中后序遍历的解析 数据结构 ——— 链式二叉树的前中后序遍历解析-CSDN博客 接下来要学习的是代码实现链式…

<项目代码>YOLOv8 pcb板缺陷检测<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

yarn报错`warning ..\..\package.json: No license field`:已解决

出现这个报错有两个原因 1、项目中没有配置许可证 在项目根目录package.json添加 {"name": "next-starter","version": "1.0.0",# 添加这一行"license": "MIT", }或者配置私有防止发布到外部仓库 {"priv…

大模型学习笔记------CLIP模型解读与思考

大模型学习笔记------CLIP模型详解 1、为什么提出CLIP模型2、CLIP模型详解3、CLIP模型的意义4、一些思考 上文说到,多模态大模型应该是非常有发展前景的,首先来学习 CLIP(Contrastive Language-Image Pretraining)这个多模态模型…

昇思25天学习打卡营第1天|快速入门

昇思25天学习打卡营第1天|快速入门 目录 昇思25天学习打卡营第1天|快速入门实操教程 一、MindSpore内容简介 主要特点: MindSpore的组成部分: 二、入门实操步骤 1. 安装必要的依赖包 2. 下载并处理数据集 3. 构建网络模型 4. 训练模型 5. 测试…

【Python TensorFlow】入门到精通

TensorFlow 是一个开源的机器学习框架,由 Google 开发,广泛应用于机器学习和深度学习领域。本篇将详细介绍 TensorFlow 的基础知识,并通过一系列示例来帮助读者从入门到精通 TensorFlow 的使用。 1. TensorFlow 简介 1.1 什么是 TensorFlow…

Python 学习完基础语法知识后,如何进一步提高?

入门Python后,就可以拿些小案例练手了,这时候千万不要傻乎乎地成天啃语法书。 编程是一门实践的手艺,讲究孰能生巧。不管是去手撸算法、或者照葫芦画瓢写几个小游戏都可以让你的Python突飞猛进。 之前看github比较多,推荐给大家…

Java:数据结构-再谈String类

字符串常量池 首先我们来思考这段代码,为什么运行结果一个是true,一个是false呢? public class Test {public static void main(String[] args) {String s1"123";String s2"123";String s3new String("555")…

书生第四期实训营基础岛——L1G2000 玩转书生「多模态对话」与「AI搜索」产品

基础任务 MindSearch使用示例 书生浦语使用示例 书生万象使用示例 进阶任务 问题:目前生成式AI在学术和工业界有什么最新进展? 回答截图: 知乎回答链接:目前生成式AI在学术和工业界有什么最新进展?

ReactPress:重塑内容管理的未来

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议,欢迎一起共建,感谢Star。 ReactPress:重塑内容管理的未来 在当今信息爆炸的时代,一个高效、易用的内容管理系统&#xff0…

短视频矩阵系统源码/抖去推源头技术4年开发

#短视频矩阵系统# #短视频矩阵系统源码# #短视频矩阵系统源码开发# #短视频矩阵系统源头技术开发# 抖音短视频矩阵系统集成开发是指利用抖音平台的开放接口和API,构建一个系统,该系统能够管理多个抖音矩阵账号,实现内容的统一发布、账号管理、…

CJ/T188-2004 报文举例

CJ/T188-2004 报文举例 # 读水表地址 # 请求报文: FE FE FE FE 68 AA AA AA AA AA AA AA AA 03 03 81 0A 00 49 16FE FE FE FE :前导字符 FE68 :起始字符AA :仪表类型AA AA AA AA AA AA AA :仪表地址(当…

JavaEE进阶---第一个SprintBoot项目创建过程我的感受

文章目录 1.我的创建感受2.环境配置说明2.1xml文件国内源2.2配置流程 3.创建项目4.项目创建说明5.第一个程序--helloworld 1.我的创建感受 今天是学习这个spring boot项目创建的一天,这个确实过程坎坷,于是我自己决定弄一个这个IDEA的 专业版本&#xf…

7.1、实验一:RIPv1配置

一、源文件 7.1、实验一:RIPv1配置: https://url02.ctfile.com/d/61945102-63657205-d343fe?p2707 (访问密码: 2707) 二、实验目的 学会配置RIPv1路由 查看和调试RIPv1路由协议相关信息 三、实验要求 1.拓扑图 2. 四、开始实验 1.配置ip 配置R1 配置R2 配置…

【ARM Linux 系统稳定性分析入门及渐进 1.3 -- Crash工具编译过程】

文章目录 Build Procedure安装二进制 RPM从源代码重建构建过程从 tar 映像构建ARM 平台 Crash 工具安装从源 RPM 构建Build Procedure 从 RHEL3 版本开始,如果在系统安装时选择了开发工具包集(Development Tools),crash 工具会自动安装。然而,对于其他内核版本,或者如果…