基于GAN的小目标检测算法总结(2)——MTGAN

1.前言

  这里是基于GAN的小目标检测算法系列文章的第2篇,本文介绍2018年的ECCV论文《SOD-MTGAN:Small Object Detection via Multi-Task Generative Adversarial Network》,简称MTGAN。

2.MTGAN

2.1 算法简介

2.1.1 核心idea

  小目标检测困难,因为缺少足够的细节外观信息,导致难以从背景或其他类别中区分开来,MTGAN的核心idea,就是对小目标proposals进行image-level超分,获得更多特征。主要内容如下:
(1)MTGAN的生成器,是超分辨率网络,上采样小的模糊图像到大尺度图像,恢复细节信息;
(2)判别器是个多任务网络,用来判别超分图像片是真的还是假的,并且预测目标类别和边界框回归(检测算法的head);
(3)为了使得生成器恢复更好的细节、便于检测,判别器的分类和回归任务的损失,反向传播到生成器。

2.1.2网络组成

在这里插入图片描述

2.1.2.1 base detectors

  本文使用的是ResNet50-C4 Faster RCNN和ResNet101的FPN。使用base detectors生成正负样本,然后将这些正负样本对应的图像片裁剪出来,训练生成器和判别器。低分辨率图像通过对高分辨率图像采用双三次插值进行下采样4倍获得

2.1.2.2 生成器

  生成器是个超分辨率网络,使用的网络结构类似去模糊、人脸检测,但是有4x的上采样。生成器的输入是base detectors生成的正负样本对应的原始图像片的4x下采样低分辨率图像,注意,不是特征图。

2.1.2.3 判别器

  判别器网络使用的ResNet-50(默认)或者ResNet-101,但是在后面使用了3个并行的fc层,分别用来分类真假超分图像(sigmoid损失)、目标分类(softmax分类损失)、边界框回归(smooth L1损失)。
  判别器的输入是高分辨率的图像,包括base detectors生成的正负样本对应的原始图像片,以及生成器生成的高分辨率图像片。

2.1.3 总体的损失函数

  共四个部分:像素级MSE损失、对抗损失(sigmoid分类损失)、分类损失(softmax分类损失)、回归损失(smooth L1损失)。

2.1.3.1生成器损失函数

  像素级损失MSE损失、对抗损失、分类损失、回归损失。
(1)像素级MSE损失
  这是超分辨率网络的损失,用来训练一个超分网络。但是MSE优化的结果通常缺少高频内容(content),这会导致纹理过于平滑的模糊图像。为了获得更真实图像,引入对抗损失,这也是本文设计GAN的原因,不然只用超分网络就可以了
(2)对抗损失
  由判别器的输出计算对抗损失,区分输入是生成器产生的高分辨率图像,还是原始的高分辨率图像,对于生成器来讲,输入只有生成器产生的高分辨率图像,因此这里的对抗损失只有生成器产生的高分辨率图像对应的损失。
(3)分类损失+回归损失
  这两个损失有两个作用,一是让判别器具有检测head的作用、完成检测任务;二是梯度传递回生成器,让生成器生成的高分辨率图像更有利于检测。
  超分辨网络常用于自然图像,但是COCO上的图像有特定目标,并且更加多样性。超分辨率网络比如SRGAN生成的图像比较模糊,对目标检测没有帮助,为了解决这个问题,将目标检测的损失函数引入生成器。

2.1.3.2判别器的损失函数

包括3个部分:对抗损失、分类损失、回归损失。

2.1.4 训练过程

训练流程如下:
(1)使用base detectors生成正负样本,然后将这些正负样本对应的图像片裁剪出来,训练生成器和判别器。注意,据我猜测,这里裁剪正负样本后,应该还有一个resize图像片的操作,以统一输入到超分网络的图像的尺寸。
(2)训练生成器和判别器。对(1)得到的正负样本,进行resize统一图像尺寸后,使用双三次插值,进行4x下采样,以获得低分辨率图像片,然后使用低分图像片和下采样前的图像片训练生成器;使用生成器的生成的高分图像和原始的高分图像训练判别器。

2.1.5 测试流程

在这里插入图片描述

测试流程如下(论文4.2节有说明):
(1)使用base detectors(Faster RCNN)裁剪出100个ROIs图像片,(据我猜测,还需要resize ROIs到统一的尺寸);
(2)将获得的ROIs图像片送入MTGAN网络的生成器获得高分辨率图像;
(3)MTGAN生成器的高分辨率图像,送入判别器网络(ResNet50),获得检测结果。
总结:MTGAN的检测流程相当于是进行了两次检测,第一次是base detectors,第二次是判别器网络,计算量肯定非常大

3.一点看法

  我个人认为,这篇论文的核心idea很明晰,小目标是因为分辨率小、特征少而难以检测,那就用超分辨率网络提高分辨率、增加特征;但是MTGAN算法经过了两次检测,计算量太大,并且实验效果不明显
(1)计算量太大
  如2.1.5节所述,base detectors是faster RCNN,并且超分网络的输出是图像而不是特征,因此需要重新提取特征,这也是判别器选择ResNet50这种比较厚重网络的原因,整体的流程为:图像->base detectors->生成器->判别器,才算是完成一张图像的检测,计算量太大。
(2)实验结果不明显

在这里插入图片描述
  如表2所示,由于base detectors是faster RCNN,因此我们只看SOD-MTGAN和faster RCNN相比,其中AP涨点约0.7,APs涨点约1.5,不能说没有效果,但是不怎么样。
  此外,论文4.3节的消融实验表3,如下图,验证了对抗、分类、回归这几个损失的影响,这几个模块的影响也不怎么大。以第2行和第5行为例,验证了对抗损失的影响,这也是实验GAN对检测的影响,发现AP才提高了0.2个点,APs提高了0.5个点,影响太小了。那不如直接去掉对抗损失,只用MSE损失来训练超分网络,训练过程还能更简洁一点? 当然这只是我的看法,如有错误还请大家批评指正。
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值