GAN提高人体重识别准确率

论文地址https://arxiv.org/abs/1701.07717内容简介

这篇文章的主要贡献是只使用原始数据集进行半监督学习,提高行人重识别的Baseline。这里有两个挑战:

怎么从原始数据集中获得更多的训练数据

怎么使用生成的没有标签的新数据

本文提出的解决方法是:使用GAN进行新数据的生成,使用LSRO(label smoothing regularization for outliers) 方法利用没标签的新数据。

具体实现

作者使用真实数据集训练一个DCGAN模型,然后用DCGAN作为数据生成工具,生成没有标签的数据。然后用真实数据和生成的没有标签的数据进行分类训练。这里作者的分类模型是resnet50。求损失函数采用作者提出的LSRO方式,如上面公式,如果当前数据是生成的数据,即 那么损失函数采用 这种形式,即认为生成的数据属于每一个类的概率是相同的 ,(K是总类别数量)。如果当前的数据是真实数据,即 那么采用 损失函数。

说明一下公式是如何推导出来的:

如上图,公式(1)(3)(3)是交叉熵损失函数,LSR为了使标签更平滑,修改了q(k)函数,使得那些非ground truth类别也会分配到一个较低的分值.如公式(4),这里 取值一般是0.1

公式(5)是(1)和(4)整合得到.

以上是作者提到的LSR方法.后来作者以此为灵感提出了LSRO方法:如果训练数据一共有K类,那么生成的图片属于每个类的概率是 .可以写成下图中(6)式

结合(1)(2)(6)可以写出(7)式.

实验 & 结果

1)作者将LSRO和两个已有的方法(All in one 和 Pseudo label)进行比较。 All in one方法不同于LSRO方法,他将生成模型产生的图片当做一个新的类别

Pseudo方法不同于LSRO方法,他将网络的softmax输出的最大概率值所对应的分类当做是生成图片的标签。

作者主要使用Market-150这个数据库进行实验,只使用了在Market-150数据库上由dcgan生成的图片.

除此之外,作者还用到了DukeMTMC-reID和CUB-200-2011对他们的方法进行了评估。

实现细节:

1)使用Tensorflow和DCGAN包训练GAN模型,训练数据被resize到128X128大小,并随机翻转。训练30个epochs。生成数据时随机输入100维的向量,将大小resize到256X256并且用CNN训练(使用LSRO方法)

2)CNN re-ID baseline采用ResNet50。

修改ResNet50的全连接层,使得输出类别为751,702,1367.分别对应Market-1501,DukeTMC-reID和CUHK03的类别数。所有训练图片被resize到256x256然后随机裁剪到224x224并随机翻转。同时在全连接层之前加入dropout层,dropout rate在CUHK03数据集上设置为0.5,在Market-1501和DukeMTMC-reID数据集上设置为0.75。梯度下降的冲量(momentum)设置为0.9,初始学习率为0.002,40个epoch后到0.0002。训练到第50个epoch结束。在测试过程中,作者提取了最后一个卷积层中的2048维特征。采用余弦距离来计算两幅图像的相似度进行排名。

LSRO与All in one、Pseudo label对比

在Market-1501上rank-1:accuracy=78.06%, mAP = 56.23%

在CUHK03上rank-1:accuracy=73.1%, mAP = 77.4%

然后作者又在这篇论文的基础上加上GAN生成的图片和LSRO方法,发现也work的很好,达到了最好的效果。

在Market-1501上rank-1 accuracy=83.97%, mAP=66.07%

在在CUHK03上rank-1 accuracy = 84.6%, mAP = 87.4%

如下图:

思考:

一开始并没有弄清行人重识别的概念,一直按照分类的思想去理解,论文有很多不能理解的地方,后来查阅资料,还有数据集了解到行人重识别一般指图像检索而不是图像分类。

reID主要解决的是下图中红框所提到的内容:

欢迎关注:)

本文来自企鹅号 - 算法入门媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏重庆的技术分享区

看透神经网络和深度学习的脉络,终于不迷糊了

1274
来自专栏机器之心

教程 | 重新发现语义分割,一文简述全卷积网络

语义分割是一种学习如何识别图像中对象范围的机器学习技术。语义分割赋予机器学习系统与人类相似的理解图像内容的能力。它促使机器学习算法定位对象的精准边界,无论是街景...

1062
来自专栏用户2442861的专栏

数字图像处理笔记一 - 图像采集(空间分辨率和幅度分辨率)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

671
来自专栏有趣的Python

14- OpenCV+TensorFlow 入门人工智能图像处理-haar特征

1688
来自专栏大数据挖掘DT机器学习

R语言主成分和因子分析

主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。 探索性因子分析(EFA)是一系列用来发现一组变...

3144
来自专栏用户2442861的专栏

Python下opencv使用笔记(三)(图像的几何变换)

下面介绍的图像操作假设你已经知道了为什么需要用矩阵构造才能实现了(上面那个博客有介绍为什么)。那么关于偏移很简单,图像的平移,沿着x方向tx距离,y方向ty距离...

501
来自专栏有趣的Python

TensorFlow应用实战-11-DCGAN介绍及原理

1285
来自专栏marsggbo

空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)

想直接看公式的可跳至第三节 3.公式修正 一、为什么需要SPP 首先需要知道为什么会需要SPP。 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中...

4356
来自专栏深度学习之tensorflow实战篇

RNN与LSTM之间的介绍和公式梳理

最近在整理tensorflow,经常用到RNN与lSTM,故整理如下: -RNN:循环神经网络(Recurrent Neural Networks) -...

5466
来自专栏贾志刚-OpenCV学堂

TensorFlow进行简单的图像处理

TensorFlow进行简单的图像处理 简单概述 作为计算机视觉开发者,使用TensorFlow进行简单的图像处理是基本技能,而TensorFlow在tf.im...

4058

扫码关注云+社区