Transferable Joint Attribute-Identity Deep Learning for Unsupervised Person Re-Identification理解
简介:这篇文章属于跨域无监督行人再识别,不同于大部分文章它使用了属性标注。旨在于能够学习到有属性语义与有区分力的身份特征的表达空间(TJ-AIDL),并能够转移到一个没有看到过的域。
贡献:
- 提出了一个联合属性与身份的异质多任务无监督行人重识别深度模型
- 从有标注的源域图片中同时学习全局的身份信息与局部的属性信息,并通过一个身份推断属性(IIA)空间来最大化学习的有效性
- 提出一个属性一致框架来在无标注的目标域上进行无监督的自适应
之前工作存在的问题:
Re-ID: 依赖手工特征;缺乏有效域适应能力;单独利用身份与属性标注信息忽略了它们的联系与互补性
Re-ID的属性:语义协作表达对身份识别来说没有卷积特征向量有效,因为:属性协助表达通常是低维的,所以区分力不够;在标注数据比较稀疏而且行人图片质量不高时,一次预测出所有属性比较困难。
TJ-AIDL的特殊性:
- 不同于身份标签,属性检测是一个多标签识别问题,因为一个行人照片会同时对应几个标注
- 身份与属性监督对应了不同级别的约束:许多属性都是对应了某一个图片区域而身份标签则对应整张图片,所以两者结合在一起能够学习到一个更加全面的表达空间
方法:
整体的模型框架图如下所示,使用一个多分支的网络结构来进行有监督的异质多任务学习。上面的身份分支来在源域中提取Re-ID的敏感信息;下面的属性分支来从属性标签提取语义信息;后面的身份推断空间IIA使得这两种信息和谐地融合在一起。在测试时,选择训练好的属性分支来提取特征表达进行检索。整个网络的训练分为两步,一是在有标注的源域数据上进行监督训练,二是在无标注的目标域上进行域适应。
一:源域数据上的监督训练
首先介绍第一步,就是在源域数据上进行监督训练,这里的CNN用的是轻量化的MobileNet,身份分支(a)的监督损失如下,是一个常见的交叉熵损失:
下面的属性分支(b)的监督损失其实就是如下的BCELoss,因为属性预测是一个多label的问题。
现在这两者之间是独立的,一般的做法是建立一个多任务联合学习框架在这两个约束下映射到一个共享的特征空间。但是这篇文章提出了一个更加高效的多源信息融合框架,与之前方法的准确率对比如下:
这一框架就是身份推断属性空间(c),简称为IIA.它使用的自动编码机结构,理由如下:(1)自动编码机能够在给定的目标任务下提取输入数据的重要信息并通过一个简洁的特征向量表示出来;(2)这样的一个简洁的特征表达能够简化任务间的信息传递,同时为每个单独任务的学习保留自由的更新空间。
使用身份分支a的特征向量作为IIA的输入与重建输出的真值,首先是一个IIA的均方误差重建损失:
通过上面这个损失我们得到了eIIA,它是重要身份信息的编码,使用它在分支间传递信息。向属性分支的传递也使用的是均方误差:
因为eIIA是使用一个无监督方式得到的,它可能偏离了对应的属性预测,比较难以对齐,所以给eIIA加了属性预测。
与IIA有关的损失就是将这三者加起来:
IIA对身份分支的影响:无影响,因为IIA采用的输入就是身份分支得到的特征表达,所以得到的eIIA不需要对身份分支特征进行约束
IIA对属性分支的影响:加了一个eIIA与属性向量的均方误差约束,所以属性有关的约束变成了:
二:无监督的目标域适应
这里的跨域是基于属性一致性原则。这基于一个观察,也就是训练好的TJ-AIDL模型在两个不同的属性视角有着更小的差异。如下所示:
然后这篇文章就使用这两者之间的差异来显示模型在给定域上是否契合。
因为在测试时使用的是属性分支,所以目标是对属性分支进行适应而不用去管身份分支的更新。更新算法如下:
- 将源域上训练好的TJ-AIDL模型放到无标注的目标域来从属性分支得到属性预测patt,t
- 之后使用得到的软标签patt,t来作为伪标签来更新属性分支和IIA来减小域间的属性差异。直觉上,软标签保留了从源域获得的最具区分力的属性能够防止模型过度漂移。
- 在目标域上进行适应直到模型收敛。
整体算法如下:
Transferable Joint Attribute-Identity Deep Learning for Unsupervised Person Re-Identification理解的更多相关文章
- Deep learning:四十一(Dropout简单理解)
前言 训练神经网络模型时,如果训练样本较少,为了防止模型过拟合,Dropout可以作为一种trikc供选择.Dropout是hintion最近2年提出的,源于其文章Improving neural n ...
- 深度学习阅读列表 Deep Learning Reading List
Reading List List of reading lists and survey papers: Books Deep Learning, Yoshua Bengio, Ian Goodfe ...
- (转)WHY DEEP LEARNING IS SUDDENLY CHANGING YOUR LIFE
Main Menu Fortune.com E-mail Tweet Facebook Linkedin Share icons By Roger Parloff Illustration ...
- Deep Learning(深度学习)学习笔记整理
申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html 4.2.初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表 ...
- Deep learning的一些教程 (转载)
几个不错的深度学习教程,基本都有视频和演讲稿.附两篇综述文章和一副漫画.还有一些以后补充. Jeff Dean 2013 @ Stanford http://i.stanford.edu/infose ...
- 【转载】Deep Learning(深度学习)学习笔记整理
http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...
- Deep Learning(深度学习)学习笔记整理系列之(二)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- [DEEP LEARNING An MIT Press book in preparation]Deep Learning for AI
动人的DL我们有六个月的时间,积累了一定的经验,实验,也DL有了一些自己的想法和理解.曾经想扩大和加深DL相关方面的一些知识. 然后看到了一个MIT按有关的对出版物DL图书http://www.iro ...
- Deep Learning速成教程
引言 深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...
随机推荐
- Vite2+Vue3+ts的eslint设置踩坑
目录 新项目了 Vite搭建 eslint 先安装eslint 创建.eslintrc.js 引入规则 Airbnb 配合prettier 对ts的支持 .eslintrc.js 在页面上查看esli ...
- 通过OptaPlanner优化 COVID-19 疫苗接种预约安排(2)
本文为OptaPlanner官方博客<Optimizing COVID-19 vaccination appointment scheduling>的第二篇译文.第一篇介绍了通过OptaP ...
- Java高可用集群架构与微服务架构简单分析
序 可能大部分读者都在想,为什么在这以 dubbo.spring cloud 为代表的微服务时代,我要还要整理这种已经"过时"高可用集群架构? 本人工作上大部分团队都是7-15人编 ...
- Jx.Cms开发笔记(五)-文章编辑页面标签设计
标签页的样子 设计思路 与其他输入框一样,存在一个Label标签,由于这里不像其他输入框一样可以直接使用Row标签,所以这里需要额外增加. 使用Tag组件显示所有的标签,我们在Blazor 组件库 B ...
- 看看JDK1.7与1.8的内存模型差异
JDK1.7与1.8的区别的内存模型差异? jsk1.7的内存模型: 堆分为初生代和老年代,大小比例为1:2,初生代又分为eden.from.to三个区域,大小比例为8:1:1 方法区:有代码区.常量 ...
- Solon 1.7 重要发布,更现代感的应用开发框架
相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...
- 【ACM程序设计】求短路 Floyd算法
最短路 floyd算法 floyd是一个基于贪心思维和动态规划思维的计算所有点到所有点的最短距离的算法. P57-图-8.Floyd算法_哔哩哔哩_bilibili 对于每个顶点v,和任一顶点对(i, ...
- python常见漏洞总结
总结一下python里面常见安全问题,文章大部分内容来自MisakiKata师傅的python_code_audit项目,对原文进行了一些修改,后续会使用编写了规则对代码里面是否用到这些危险函数进行相 ...
- 【转】WinForm窗体刻度尺
`using System; using System.Drawing; using System.Windows.Forms; using System.Drawing.Drawing2D; nam ...
- 分享一下 Idea 的 scope 功能
分享一下 Idea 的 scope 功能 事情的起因是我在使用 idea 的call hierarchy功能时,觉得它没有像find usage那样有排除功能,并且如果点击了展开全部,当代码中使用了某 ...