使用GAN来进行CV数据增强(一)

一.论文

  • Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in vitro
  • 论文代码:layumi/Person-reID_GAN

二.论文概述

  • 使用原始数据训练DCGAN,然后根据得到的模型产生新的数据作为扩充数据用于训练
  • 设计LSRO(label smoothing regularization for outliers)损失函数,将DCGAN产生的数据的label分布标为均匀分布,比如为3分类,其lable为[1/3,1/3,1/3].
  • 加入了DCGAN产生的扩充数据,并使用LSRO后,性能在Market-1501, CUHK03, DukeMTMC-reID上能分别提升4.37%, 1.6%, 2.46%

三.论文细节

1) DCGAN[1]

  • PART1:产生器,100维的随机向量,扩充到4*4*16;之后继续扩大,通过5个反卷积,5*5的卷积核并且stride为2.额外的,一个可选的反卷积核使用的是5*5大小且stride为1的卷积核。最后出来的是128*128*3的图片。
  • PART2:生成器使用的是5个卷积层.卷积核大小也是5*5,stride为2
  • backbone用的是resnet50

2)损失函数LSRO

  • LSR(label smoothing regularization),这个损失函数策略能够使得网络不要太自信的偏向真实标签类从而减少过拟合的可能性,即将非真实标签的类别的分布也考虑在内。epsilon是一个超参数,属于[0,1],取0的时候为原始的交叉熵,太大的话就会导致模型学习到的分布是偏向均匀分布,而不是真实的分布。epsilon一般取0.1

  • LSRO(label smoothing regularization for outlier), 根据LSR,为无标签图片转换而来的损失函数。对于DCGAN产生的无标签图片,损失函数用的是epsilon=1的LSR;对于有真实标签的图片使用的是传统交叉熵。公式上,对于真实图片Z=0, 生成的图片Z=1。(笔者在天池一个分类比赛采用的就是这种损失函数,能够带来一定提升,代码可见中的maozezhong/TIANCHI_XUELANG_AI,code/main.py函数中的my_loss)

  • LSRO的好处 : 使得网络能够学到更多潜在的因素,比如如果只有一张绿色衣服的个体样本,网络可能认为绿色是一个用于区分的特征,那么通过增加产生的图片(可能会产生同为绿色衣服的无标签图片),可以让分类器考虑它是否对原来绿色衣服个体分类错误。即增加鲁棒性喽。

  • 跟LSRO对比的方法

    • All in one , 新产生的图片作为同一类,即成为K+1类.
    • Pseudo label , 生成的图片的标签设置为本次预测出来的概率最大的那一类.在作者的实验中,20epoch后才feeding GAN产生的图片并且标注为pseudo label.同时GAN产生 图片在计算softmax损失的时候加一个0.1的权重,有标签图片的损失给一个1的权重.

四.参考

  • [1] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

你可能感兴趣的:(计算机视觉)