基于GAN的小目标检测算法总结(4)——算法总结对比
1. 前言
这里是基于GAN的小目标检测算法系列文章的第4篇,也是最后一篇,本文将对前面3种算法进行总结对比,并提一点我自己的看法,受限于个人的局限性,本文内容难免有错误,个人观点也仅作参考,欢迎大家批评指正。本文多要对比的3种算法如下:
(1)2017年的CVPR,《Perceptual Generative Adversarial Networks for Small Object Detection》,简称Perceptual GAN;
(2)2018年的ECCV,《SOD-MTGAN:Small Object Detection via Multi-Task Generative Adversarial Network》;简称MTGAN;
(3)2019年的ICCV,《Better to Follow, Follow to Be Better: Towards Precise Supervision of Feature Super-Resolution》,目前没有主流的简称叫法,我这里为了方便,将其简称为TPS。
2. 3种算法的对比
2.1 相同点
(1)解决小目标检测问题的原理
基于GAN的方法解决小目标检测的原理都一样,那就是:小目标难以检测,根本原因是特征少,利用GAN学习一个SR网络,通过对小目标的图像片或特征进行超分(分辨率可能增加,也可能不会增加),提高小目标的信息量,增强小目标的特征,从而提高小目标的检测精度。
(2)局部的学习
为了降低计算量,三种方法都是基于RoI的学习,而不是在整张图像或整个特征图上的学习。Perpetual GAN的生成器学习的,是RoIs的low-level的特征与high-level的特征之间的差异;MTGAN的生成器学习的,是低分辨率RoIs的图像片、到高分辨率图像片的映射;TPS的生成器学习的是,低分辨率特征到高分辨率特征的映射。
2.2 不同点
总结如下
(1)超分的层级不同
MTGAN是image-leveld 超分,得到高分辨率图像片之后还需要重新提取特征,因此导致计算量增加比较多;而Perpetual GAN和TPS都是feature-level的超分,因而不需要重新弄提取特征,因此计算量小。
(2)超分网络的监督信号不同
Perpetual GAN的SR网络的监督信号只有对抗损失,无法学习到显示的SR网络,因此我个人认为Perpetual GAN的“SR网络”本质上无法起到超分的作用;而MTGAN和TPS都以显示的高分图像片或特征作为直接监督信号,因此学习到的就是SR网络。
(3)精度的提高
Perpetual GAN在feature-level层级上超分,计算量小,但由于SR网络没有直接监督信号,精度较低;MTGAN在image-level的层级上超分,计算量大;而TPS充分吸收了Perpetual GAN和MTGAN的优点,在feature-level层级上超分,且使用直接监督信号训练SR网络,并且通过引入空洞卷积,缓解了HR目标特征和LR特征的感受野不匹配问题,获得了比较高的精度提升。
3. 一些看法
在我个人看来,基于GAN的小目标检测算法,依然存在以下疑问或问题:
(1)不开源
现有的3种基于GAN的小目标检测算法,都选择不开源,这大大增加了他人的使用、对比难度,比如MTGAN论文没有和Perpetual GAN的实验结果对比,TPS论文中没有和MTGAN的实验结果对比。
(2)GAN是必须的吗?
Perpetual GAN使用对抗损失作为间接监督信号,训练SR网络;而MTGAN和TPS使用直接+间接监督信号来训练SR网络,那间接监督信号,对SR网络的训练,影响有多大呢?因为根据MTGAN的消融实验的结果,如下图,使用和不使用对抗损失差别并不大(第2行和第5行),仅在APs上增加了0.5个点。那是否可以直接去掉GAN,仅使用直接监督信号训练SR网络呢?毕竟GAN的训练是交替进行的,流程复杂而且难以收敛。
(3)计算量比较大
Perpetual GAN、MTGAN、TPS,都是在base detector的计算量的基础上,增加了SR网络前向传播的计算量,MTGAN甚至还增加了超分图像片提取特征的计算量,这对实际的端侧应用来讲是不可接受的。
(4)过于依赖base detector
Perpetual GAN、MTGAN、TPS都是在base detector检测得到的小目标的proposals的基础上进行超分的,如果base detector根本没有检测到小目标的proposals,那么也就根本无法提高小目标的检测精度。
(5)不支持one-stage检测算法
这3种方法的base detector都是two-stage方法(论文中都是faster RCNN),不支持one-stage方法,不过我个人认为,只要把one-stage的检测bbox作为two-stage的proposal去截取图像片或特征就好。
(6)算法内存需求可能增加
Perpetual GAN和TPS方法都需要base detector的backbone的浅层特征图,这样就需要在前向传播的过程中保存浅层特征图,由此带来额外的内存开销。