PS-GAN:如何合成高质量行人图像提升行人检测性能?
论文地址:https://arxiv.org/abs/1804.02047
摘要:本文是利用合成图像提升行人检测性能的一次有益尝试,提出一种合成行人图像的方法(PS-GAN),该方法能够合成高质量的行人图像,并能够很好地融合在周围的场景中。
背景介绍
由CNN引领的行人检测器已经在几个数据集上(INRIA、ETH、Caltech、KITTI、CityPersons)取得了很好的性能。然而检测器的训练严重依赖大量标注数据,有限的训练数据往往使得检测器的性能达到一个瓶颈就很难再有提升了;另一方面,在现实场景应用中标注数据的代价是很高的,那么能不能自动生成一些标注数据来辅助检测器的训练呢?生成的标注数据又能在多大程度上提升检测器的性能?本文对此做了一次有益尝试。
生成对抗网络(Generative Adversarial Nets, GAN)已经在图像合成领域获得了很多的成功应用(如DCGAN),其基本思路是输入一张noise图像,用生成器(Generator)生成一张伪图像去欺骗判别器,判别器(Discriminator)则努力将伪图像和真实图像区分开,在这种对抗训练的过程中,生成器会逐渐变得强大,生成的伪图像几乎和真图像一样,这样我们的目的就达到了。但是要想使得GAN生成的行人图像能够辅助检测器的训练,个人认为面临两大挑战:一是目前GAN能生成的图像分辨率还比较小;二是如何使得生成的行人图像融合到周围的场景中呢?本文就为我们解答了这两个疑惑。
本文方法
基本思路:
图1给出了本文方法的一个基本思路:要训练一个GAN使得它能合成于场景相融的图像,PS-GAN的整个训练过程如下:
Generator(G):首先我把一张场景图Real image中的一个行人框全部用noise替换(目的就是在这个框中生成一个行人),然后送给生成器G,输出是一张生成的场景图。
Discriminator(D):包含两部分,DP负责生成的行人的真假,Db负责判断生成的场景图的真假。为什么要用两个Discriminator呢?因为DP只能关注到行人的细节信息,看不到场景信息,而Db则能捕捉到整个场景的信息,二者刚好形成互补优势,才能使得生成的行人图像和周围的场景能够有机融合。想法特别棒,那么网络具体是怎么训练的呢?
模型结构:
图2给出了网络训练的实现流程,其网络架构借鉴了pix2pix GAN [1]的训练过程,在此基础上实现我们的目的。
Generator(G):就是用的pix2pix GAN [1]中的U-Net。
Discriminator(Db):也是用的pix2pix GAN [1]中的PatchGAN。如图2中的左半部分所示,Real image和Noise image接成6通道的图像行成一对pair,作为正样本;Generated image和Noise image行成一对pair,作为负样本,以此来训练Db;
Discriminator(Dp):用的是一个含有5层卷积层的网络,为了适应不同尺度的行人,最后接了一层空间金字塔池化层(SPP layer),SPP是经典的目标检测算法SPPNet [2]中提出的,可以保留行人的局部结构信息啊,实验证明SPP对于生成细节丰富的行人图像非常有用。在本文的实现中,用了三层空间金字塔,分别是1x1, 2x2, 4x4的池化,共21个bin,最后把这些特征拼接起来送给分类器。
损失函数:
有了以上的训练流程,剩下的就是利用什么样的损失函数去指导网络去训练了。由于有两个Discriminator,本文的对抗损失函数主要包括两个部分:
1、G和Db之间:如(1)式,用的是least square loss。
2、G和Dp之间:如(2)式,用的是传统的GAN中的cross entropy loss。
为什么同样是Discriminator,这两个loss还不一样呢?实验效果给出了答案(见图3),作者在文中是这样解释的:least square loss比cross entropy loss能获得更大的损失值,使得模型对每个像素都更加敏感,因而会使得生成的行人图像的细节更加丰富,而Db更应该关注的是场景的全局信息,因此用cross entropy loss就更好了。此外,参考pix2pix [1],也是为了使得生成的图像尽可能逼近于真实图像,还增加了一个L1 loss:
最终整个网络的loss为:
参数设置和pix2pix GAN [1]中一样。下面我们看一下生成效果,其中A是指不用SPP layer的效果,B是指两个Discriminator都用least square loss,C是指两个Discriminator都用cross entropy loss,可以发现PS-GAN生成效果最好。
实验分析
实验细节:
(1)为了验证生成图像的质量,PS-GAN的训练图像来自于Cityscapes [3],PS-GAN的测试图像分别来自Cityscapes和Tsinghua-Daimler Cyclist Benchmark [4]。
(2)为了验证生成图像是否有利于提升行人检测性能,选用Faster R-CNN作为检测器,验证合生图像到底能在多大程度上提升Faster R-CNN的性能。
实验结果:
(1)生成图像的质量:
和图3相比,图4表明,即使在空白图像上,PS-GAN也能生成和场景比较匹配的高质量行人图像。以上图像都是随机从原图上crop出来的256x256大小的图像,把这些crop出来的图像贴合原图,就得到如下图所示的例子:
可以发现这些合成图像已经和真实图像很接近,不仔细看,肉眼都无法判断是合成图像。那么这些“如此真实”的合成图像到底能给检测器的训练带来多少的性能提升呢?
(2)生成图像对检测器的提升:
上表为在Cityscapes [3]的检测性能,可以看到pix2pix GAN[1]生成的图像基本没有提升检测器的性能啊,说明图像生成的质量还是很关键的,但是本文的PS-GAN是有效的,从表中可以得到以下三点结论:
1、合成图像对性能提升是有上限的,在1826张真实图像下,加5000个合成行人时检测器性能达到饱和,个人认为主要还是因为合成的行人较为单一,而这些合成图像中的背景信息是不变的;
2、不同domain上训练得到的model很难generalize,比如在Pascal VOC上训练的model只有37%的AP,甚至不如我们用300张真实图像训练的结果;
3、对于PS-GAN,见过更多的训练图像,其生成的图像更能提升检测器的性能,在有300张真实图像时能提升1%,而有1000张真实图像时能提升4%,个人认为还是因为1000张真实图像比300张图像多了更丰富的场景信息,使得检测器在训练过程中学到了更为general的信息。
下表则展示了在Tsinghua-Daimler Cyclist Benchmark [4] 的检测性能,结论同上,但也说明了本文方法可以迁移到另外一个数据集上。
下面看一看生成的图像能不能被我们的检测器成功检测出来呢:如果能检测率越高,岂不是证明了我们生成的行人图像更加真实?从下表可以看出,PS-GAN生成的图像,检测率能达到90%,而pix2pix GAN[1]生成的图像最高只有70%左右,再一次证明我们PS-GAN在生成行人图像上的优势。
总结展望
本文贡献:
(1)提出了一种生成行人图像的全新方法PS-GAN,能够生成与背景相容的高质量图像;
(2)生成的行人图像能够提升检测器的检测性能,为无监督行人检测提供了一种可行思路。
个人见解:
(1)熟悉GAN的同学可能知道,这篇文章主要借鉴了pix2pix GAN[1]的核心思想,装出了新酒——PS-GAN,并将其用在行人检测领域,是利用GAN合成图像提升detection performance的又一次成功应用,相似应用可见于Person Re-ID领域 [5]。
(2)在合成图像上的检测率能达到90%,而真实图像上的检测率只有60%?合成图像上的行人目标这么容易被检测出来?这是因为本文PS-GAN生成的行人图像还比较单一,而真实图像中行人目标的变化更为复杂:尺度范围更大,遮挡程度也千变万化,正式这些复杂变化导致很难被检测器学习到,因而利用有限的训练数据检测器的性能达到一定的瓶颈后再难以提升,而这些复杂变化是PS-GAN无法生成的,因而在合成图像上的检测率能达到90%,进而用PS-GAN生成的图像对检测器带来的提升也是有限的。
总之,本文为生成行人图像提供了一种很好的思路,如何使得生成的行人目标更为丰富,能够cover现实场景中的各种变化,是下一个要攻克的堡垒。
参考文献
[1] Isola, P., Zhu, J.Y., Zhou, T., Efros, A.A.: Image-to-image translation with conditional adversarial networks. CVPR (2017)
[2] He, K., Zhang, X., Ren, S., Sun, J.: Spatial pyramid pooling in deep convolutional networks for visual recognition. ECCV (2014)
[3] Marius, C., Mohamed, O., Sebastian, R., Timo, R., Markus, E., Rodrigo, B.,Uwe, F., Stefan, R., Bernt, S.: The cityscapes dataset for semantic urban scene understanding. CVPR(2016)
[4] Li, X., Flohr, F., Yang, Y., Xiong, H., Braun, M., Pan, S., Li, K., Gavrila, D.M.: A new benchmark for vision-based cyclist detection. In: 2016 IEEE IntelligentVehicles Symposium (IV). (2016)
[5] Zhedong Zheng, Liang Zheng, Yi Yang.: Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in vitro. ICCV(2017)