当前位置: 首页 > news >正文

PTGAN:针对行人重识别的生成对抗网络 | PaperDaily #36

本文提出了一种针对于 ReID 的生成对抗网络 PTGAN,可以实现不同 ReID 数据集的行人图片迁移,在保证行人本体前景不变的情况下,将背景转换成期望的数据集 style。

另外本文还提出一个大型的 ReID 数据集 MSMT17,这个数据集包括多个时间段多个场景,包括室内和室外场景,是一个非常有挑战的数据集。

论文用 PTGAN 来缩小不同数据集间的 domain gap,并在新提出的 MSMT17 这个大数据集和其他一些公开的小数据集上做了实验。

MSMT17 数据集

MSMT17 是一个大型的 ReID 数据集,现在的一些公开数据集的准确度已经被刷得很高,这个数据集的提出进一步延续了 ReID 的发展。不过数据集目前还有公开,等待论文接收后数据集可以公开。 

MSMT17 数据集有以下几个特性: 

  • 数据采集时长约为 180 小时
  • 总共有 15 个相机,其中 12 个室外相机,3 个室内相机
  • 行人框由 Faster RCNN 机标完成
  • 最后总共有 4101 个行人的 126441 个 bounding boxes

5dad1e839a913ac11f9170aa070ba4b7e6d4d7e7

 MSMT17 数据集和已有 ReID 数据集的对比

da1263050b10e4a76d7fb3a1946fac0ac4bfc3dc

  MSMT17 数据集的图片和其他数据集的直观对比

PTGAN

Person Transfer GAN(PTGAN)是作者提出的一个针对于 ReID 问题的 GAN。这个 GAN 最大的特点就是在尽可能保证行人前景不变的前提下实现背景 domain 的迁移。 

首先 PTGAN 网络的损失函数包括两部分:

4391e1541a74a5891e8525a46490f560d36695ed

其中 LStyle 代表生成的风格损失,或者说 domain 损失,就是生成的图像是否像新的数据集风格。LID 代表生成图像的 ID 损失,就是生成的图像是否和原始图像是同一个人。λ1 是平衡两个损失的权重。下面的关键就是看这两个损失怎么定义。

首先 PTGAN 的基础是 CycleGAN,所以 loss 也和正常的 CycleGAN 的 loss 差不多。首先第一部分是 LStyle,这个就是标准的 CycleGAN 的判别 loss。

b1a9988b7fe26690078b1a80f5e13364bf987582

以上几部分都是正常的 CycleGAN 的损失,保证生成的图片和期望的数据集的 domain 是一样的。 

论文的另外一个改进的地方就是 LID。为了保证图片迁移过程中前景不变,先用 PSPNet 对图片进行了一个前景分割,得到一个 mask 区域。

传统的 CycleGAN 并不是用于 ReID 任务,因此也不需要保证前景物体的 ID 信息不变,这样的结果就是前景可能模糊之类的质量很差,更糟糕的现象是行人的外观可能改变,比如衣服颜色发生了改变,这是 ReID 任务非常不希望见到的。

为了解决这个问题,论文提出 LID 损失,用 PSPNet 提取的前景,这个前景就是一个 mask,最后 ID 损失为:

a96128a845386fdc87d1e660da647465ba1e76c1

其中 M(a) 和 M(b) 是两个分割出来的前景 mask,ID loss 将会约束行人前景在迁移过程中尽可能的保持不变。最后转换的效果如下图所示:

a7fb4a9fcc3547f629bb58bda2690ab71b20242f

可以看出,直观上和传统的 CycleGAN 相比能够更好的保证行人的 ID 信息。

结果

bfdfa5786984e8b1cf0fb8fc5fe933e00b947365

实验结果如上表,虽然论文没有用特别复杂的网络来训练,但是将另外一个数据集通过 PTGAN 迁移到 MSMT 上都能增加 MSMT17 数据集上的 performance。并且从准确度上看 MSMT17 还是一个非常难的数据集。


原文发布时间为:2018-01-22

本文作者:罗浩

本文来自云栖社区合作伙伴“PaperWeekly”,了解相关信息可以关注“PaperWeekly”微信公众号

相关文章:

  • SqlParameter的作用与用法
  • vue官方推荐的环境
  • managedwifi.codeplex.com
  • 微信小程序之 Swiper(轮播图)
  • 方丈被害子女有没有权利继承遗产?
  • js数组之filter
  • 故障处理记录--nginx反向代理显示不了部分图片
  • TCP通信粘包问题分析和解决
  • javascript笔记:自己写一个jqgrid框架(二)
  • eclipse编译器显示的文件名乱码,活动标签乱码(已解决)
  • Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月25日-7月1日)
  • 公式编辑器打的公式能改变颜色吗?
  • 7月1日我成为MVP啦
  • 直播答题APP突然爆红 直播APP平台迎来社交裂变新契机!
  • 模糊查询+分页
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [LeetCode] Wiggle Sort
  • [数据结构]链表的实现在PHP中
  • 【刷算法】求1+2+3+...+n
  • Android 控件背景颜色处理
  • CSS 提示工具(Tooltip)
  • Docker入门(二) - Dockerfile
  • Linux CTF 逆向入门
  • Lucene解析 - 基本概念
  • python学习笔记 - ThreadLocal
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 初识 beanstalkd
  • 多线程事务回滚
  • 开源SQL-on-Hadoop系统一览
  • 软件开发学习的5大技巧,你知道吗?
  • 我这样减少了26.5M Java内存!
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 小程序button引导用户授权
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​Spring Boot 分片上传文件
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (C语言)球球大作战
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (补)B+树一些思想
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (学习日记)2024.01.09
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)hibernate缓存
  • .java 9 找不到符号_java找不到符号
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET 事件模型教程(二)
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET运行机制
  • .NET中winform传递参数至Url并获得返回值或文件
  • @AliasFor注解