图像分类、目标检测、语义分割、对抗攻击、篡改检测等方向的概述
这是我自己编辑的关于图像分类、目标检测、语义分割、对抗攻击、篡改检测等方向的概述,将分成五个小点来进行讲解,每个小点都会涉及到四篇比较经典的论文。
(1)首先是图像分类。图像分类是计算机视觉中最基础的一个子任务,目标就是将不同的图像划分到不同的类别下,并实现最小的分类误差。Deep Learning这篇文章发表在Nature杂志上,对深度学习的基本原理与核心优势进行了全面综述,如监督学习、反向传播、CNN、RNN等;在最后还对深度学习的发展趋势进行预测,是入门AI领域的必读经典之一。
ImageNet Classification with Deep Convolutional Neural Networks
①AlexNet是第一个真正意义上的深度网络,包含5个卷积层和3个全连接层,使用ReLU激活函数来解决梯度弥散问题,加入Dropout层来防止过拟合,使用裁剪翻转等数据增强操作来提高模型的泛化能力,使用GPU来分块训练,从此深度学习进入了以GPU为王的训练时代。
Very Deep Convolutional Networks for Large-Scale Image Recognition
②VGGNet网络由牛津大学的视觉几何组提出,证明在一定范围内增加深度可以有效提升网络的性能。VGG使用3*3卷积和2*2池化的重复结构,串联起来就可以达到层数更多、计算量更小的效果,使得搭建网络就像搭建积木一样简洁优美。VGGNet的参数空间很大,训练起来比较耗时,但因为有预训练模型的存在,所以仍被很多任务选为基准模型。
Deep Residual Learning for Image Recognition
③ResNet由何恺明提出,用于解决网络越深越容易出现的SGD优化和模型退化难题。文中采用跨层连接的方式设计出残差模块,也就是输入X经过多层网络之后输出Y,再将X和Y的对应元素相加,这样就结合了原始输入X的信息,从而形成了一个残差块。ResNet成功缓解了深度网络中的梯度消失问题,所以为上千层网络的训练提供了可能。
Going Deeper with Convolutions
④GoogLeNet开创了Inception派系,它不仅关注网络深度,还从网络宽度入手。GoogLeNet的核心结构是Inception模块,它使用1*1、3*3、5*5的多尺寸卷积核以及3*3的池化核去观察数据,然后通过1*1的卷积核进行升维或降维操作,再将提取到的不同尺度的信息串联起来进行融合以形成该层的输出,最后由计算机选择使用或更注重哪种尺寸。
(2)其次是目标检测。目标检测就是针对特定目标物体的目标定位和图像分类,既要输出目标物体的具体位置信息,也要输出其类别信息。根据检测阶段和检测速度的不同,可将基于深度学习的目标检测方法,分为两阶段目标检测和单阶段目标检测。两阶段目标检测先做候选区域粗修与背景剔除,再执行候选区域分类和BBox回归;单阶段目标检测则将这两个过程融合在一起,并采用“锚点+分类精修”的实现框架。
Region-Based Convolutional Networks for Accurate Object Detection and Segmentation
①R-CNN又称基于区域的卷积网络,是利用深度学习进行目标检测的开山之作。它采用选择性搜索方法将候选区域控制在2000个左右,然后以暴力手段进行Crop、Warp操作,并送入AlexNet中提取特征以得到特征图,再使用SVM分类器得到所有候选区域对应于每个类别的得分,同时使用NMS过滤掉IoU大于特定阈值打分较低的候选区域,最后使用BBox回归的方法对候选区域进行微调,以得到更加精确的定位。
Faster R-CNN Towards Real-Time Object Detection with Region Proposal Networks
②Faster R-CNN是第一个真正意义上的端到端的目标检测算法,也是第一个准实时的目标检测算法。它可以简单地看成是由RPN和Fast R-CNN组成的统一网络,图像经过基础网络得到特征图,将这些特征图送入RPN得到300个候选区域;再将候选区域与特征图一起送入从感兴趣区域池化层RoI Pooling(简化版的Spatial Pyramid Pooling)开始的剩余网络即Fast R-CNN,它会将大小不一的候选框映射区域转换为具有固定尺寸的RoI特征向量,然后再输入到目标分类和BBox回归任务中,这样就能得到目标检测的结果了。RPN是一个用于从图像中提取候选区域的全卷积网络,输入一张任意大小的图片,将输出一批矩形的候选区域也即Anchor Box,每个区域都对应着目标的分数以及位置信息。
You Only Look Once: Unified, Real-Time Object Detection
③YOLO是最早出现的单阶段目标检测算法,也是第一个实时的目标检测算法。它的字面意思为只看一次就能解决问题,说明它最大的优势就是速度快。YOLO算法将目标检测任务当作分类置信度和BBox的回归问题来处理,它采用一个单独的CNN模型实现端到端的目标检测。首先将图片暴力Resize到固定尺寸并输入24个卷积层和2个全连接层,其中卷积层用于从图像中提取特征,全连接层用于预测并输出所有BBox的预测值。这相当于隐式地将全图划分为S*S个网格,某主体中心落在哪个网格内哪个网格就负责预测该主体,且每个网格需要预测B个BBox和C个类别,其中每个BBox包含了位置信息和置信度评分,即(x, y, w, h, confidence),所以一张图预测的信息总共有S*S*(B*5+C)。[注:每个网格(生成2个BBox,而每个BBox对应五个预测参数)有30维的特征,前10维是两个BBox的特征,后20维是20类物体的概率分数]
SSD: Single Shot MultiBox Detector
④SSD又称单点多尺度目标检测器,它相对Faster R-CNN有明显的速度优势,相对YOLO又有明显的mAP优势,因为它同时融合了前者的Anchor机制,以及后者的无显示候选框提取,并在特征空间中融合了不同卷积层的特征来进行预测,也就是在各CNN子网络的每一层特征图上都可以进行BBox回归和分类这两个步骤的预测,从而实现了所谓的多尺度特征图预测,这样处理后的网络对小目标的检测效果也不错。[注:具体来说,SSD前期使用VGG16分类层之前的截断网络进行特征提取,并将FC6和FC7替换成了Conv,后面紧跟四个卷积特征层,它们与Conv4_3、FC7一起共同构成六个预测层,最后再在每个预测层之后添加一个3*3的卷积层来输出预测结果(在总类别数上加了个背景类别)]
(3)第三是语义分割。语义分割就是把图像自动细分为具有相似颜色或纹理的子区域,并使它们对应不同的物体或物体的不同部分,这样才有可能对目标进行更深层次的分析,就好比学习文言文得先会断句一样。它是在像素级别对图像中的内容进行分类,输入一张图片,输出是与输入图片同尺寸的分割标记,每个像素都会被识别为一个类别。需要注意的是,语义分割是只给每个像素都打上标签,也就是只区分类别,但不区分类别之内都有哪些个体(因为这是实例分割的范畴)。
Fully Convolutional Networks for Semantic Segmentation
①FCN又称全卷积网络,诞生于加州大学伯克利分校,是第一个应用CNN进行语义分割的深度网络,并且拿到了当年的CVPR最佳论文奖。CNN网络中的FC层会丢失图像的二维信息,因此FCN使用1*1的卷积替代FC进行卷积化,之后通过反卷积操作对小尺度的特征图不断恢复分辨率,但这个上采样过程会丢失大量的细节信息,于是FCN通过跨层连接将浅层特征和深层特征相融合,大大提升了网络的分割效果。U-Net是基于FCN改良之后得到的广泛应用在医疗影像分析领域的语义分割网络,即下采样之后经过两次卷积操作再次下采样,上采样使用反卷积的方式,与对应大小的下采样特征层进行连接,然后经过两次卷积再次上采样,因为网络结构简单所以对小数据集有很好的效果。
SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
②SegNet是基于FCN修改VGG-16得到的语义分割网络,整个网络架构采用了完全对称的编码器-解码器结构,避免因为非对称带来的头重脚轻问题。Pooling Indices指的是把池化层的索引存储起来,然后在对应的反池化层中重用并进行非线性上采样,这样做的好处是在上采样阶段无需再进行学习,并且对于边界高频信息的保留也有很好的效果。
DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
③DeepLab由谷歌公司在2016年提出,考虑到需要分割的目标往往具有多种多样的尺度大小,这篇论文通过参考SPP结构的思想设计出Atrous Spatial Pyramid Pooling / ASSP结构。ASSP结构主要利用具有不同扩张因子的膨胀卷积(/带孔卷积)提取多尺度的特征信息,以便在多个尺度上捕获目标和上下文信息。因为小尺度特征有助于分割出小目标,大尺度特征有助于分割出大目标,而且膨胀卷积可以在不增加计算量的前提下提升卷积核的感受域,这样做更有利于综合上下文信息。
Pyramid Scene Parsing Network
④PSPNet又称金字塔场景解析网络,它的Baseline是DeepLab和FCN。PSPNet与目标检测中的SPP结构类似(空间金字塔池化层放在最后一个卷积层之后,用于对不同尺度的特征图进行池化,产生固定长度的输出并作为FC层的输入以进行后续操作),都是为了融合不同子区域之间的上下文信息。首先使用预训练的膨胀卷积ResNet提取原始特征图,然后经过金字塔池化模块得到不同级别的池化后的特征图,对它们各自进行特征学习和上采样,并与原始特征图Concat串接起来以得到多尺度特征,再进行卷积操作从而得到最终的预测图。使用金字塔池化模块可以实现不同尺度的感受域,它能将全局上下文信息(通常与整体轮廓相关)和具有层级的局部上下文信息(通常与图像的细节纹理相关)相结合,要想对多尺度目标很好地完成分割,这两部分信息都是必需的。
(4)第四是对抗攻击。网络安全问题一直与AI领域相伴相生,深度学习模型容易遭到对抗样本的攻击,这已经不是什么新鲜事。对图像数据叠加人类难以通过感官辨识出的细微扰动,就可以欺骗深度学习模型做出误判,指鹿为马或以假乱真。接下来我将从对抗攻击维度入手,分攻防两端,通过几篇论文简述典型的对抗攻击及其防御。Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey这篇文章发表于2018年,首次综述了计算机视觉领域的对抗攻击问题,回顾了常用的12种攻击设计与典型的15种防御机制。
Explaining and Harnessing Adversarial Examples
①FGSM又称快速梯度符号算法,其核心公式为:x' = x +ε*sign(▽x),表示在白盒环境下,通过求出模型对输入的导数,然后用符号函数得到其具体的梯度方向,接着乘以一个步长,获取的“扰动”再添加到原来的输入上,就能得到在FGSM攻击下的对抗样本。例如熊猫图像叠加该扰动后就会被模型识别为一只长臂猿,而且置信度还高达99.3%。
Delving into Transferable Adversarial Examples and Black-box Attacks
②迁移学习攻击是一种重要的黑盒攻击算法,其基本思想是:假设要攻击模型B,但并不知道模型B的具体细节,此时如果能找到与模型B功能和结构相似的模型A,那就可以基于测试数据对模型A发起白盒攻击,这样得到可以成功攻击模型A的对抗样本再用它去攻击模型B,就可以成功发起对模型B的黑盒攻击。文章中列出了两个表格,让模型B去识别模型A产生的对抗样本,识别正确的百分比在10%~40%之间浮动;如果采用A的四种相似模型集成学习之后再去攻击模型B,则最多只有6%的对抗样本被正确识别,说明攻击效果得到了大幅提升。
Perception Deception: Physical Adversarial Attack Challenges and Tactics for DNN-Based Object Detection
③物理攻击的难度系数是最大的,除了不了解模型的具体结构,甚至对于输入的控制也很弱。物理攻击遇到的挑战主要有受扰动区域、外观改变、光照条件、颜色失真、图像块位移等。应对策略为在生成对抗样本的迭代过程中,把打印设备的像素彩色输出范围和对抗样本的色差作为Loss的一部分,并且在训练过程中引入仿射变换和光照变化。
Efficient Defenses against Adversarial Attacks
④高斯数据增强的原理是,对抗样本是在原始数据上叠加一定的扰动,这些扰动非常接近随机的一些噪声。所以先把训练数据叠加高斯噪声,再重新输入模型进行有监督学习,通过调整参数、增加训练轮数、增加模型层数,在不降低原有模型准确度的基础上,让新生成的加固后的模型具有一定的识别对抗样本的能力,这与对抗训练的思路很相似。
(5)最后是篡改检测。现如今,伪造虚假图片的工具变得越来越普及,这些图片若使用不当可能会误导大众,甚至于危害社会。图像被动取证/篡改检测技术是一种有效的检测图像篡改的手段,它无需往原图里添加签名或水印信息,因此应用得比较广泛。研究人员将图像内容篡改检测主要分为复制-粘贴Copy-Move检测、拼接Splicing检测、涂抹Removal检测。
A Deep Learning Approach to Detection of Splicing and Copy-Move Forgeries in Images
①第一篇论文发表在2016年的WIFS会议上,首次将CNN应用到图像的篡改检测领域中。首先使用训练图片中带标签的图像块预训练一个有监督的CNN模型,用于自动学习篡改操作的多层次特征而不是图像的语义特征。为了有效屏蔽图片的语义特征,捕获因篡改操作带来的细微伪影,提高泛化能力并加速收敛,在预处理层使用SRM空域富模型中的30个高通滤波器进行参数初始化与残差图的计算;然后通过预训练好的CNN模型和滑窗扫描的方式提取测试图片中的密集特征,再经过区域池化进行特征融合以获取判别特征并用于最终的SVM二分类。[注:受到传统图像被动取证技术的启发,部分研究人员抛弃了图像的RGB域语义特征,而继续沿用传统图像取证方法中的手工特征(如重采样特征、SIFT特征、CFA不一致特征等)。与图像内容的被动取证方法类似,隐写分析也需要在屏蔽图像语义特征的条件下寻找图像边缘处隐藏的异常,SRM空域富模型在隐写分析领域取得了良好的效果。使用SRM模型中丰富多样的空域高通滤波器对图像进行滤波,可以得到丰富多样的残差图,而这些残差图屏蔽了原始图像RGB域的语义特征,较好地保留了图像的边缘特征,故非常适用于图像内容的被动取证领域] [注:SRM模型采用图像定性隐写分析框架,即先对训练样本图像抽取统计特征,然后结合机器学习工具训练隐写分析分类器,最后根据训练好的分类器对待检测图像进行分类。SRM设计了丰富多样的线性和非线性的空域高通滤波器,使用这些滤波器对图像进行高通滤波会得到丰富多样的残差图作为SRM的子模型,这些残差图就是图像的高频部分]
Learning Rich Features for Image Manipulation Detection
②第二篇论文将图像篡改检测任务转换为目标检测任务来处理,提出了基于Faster R-CNN框架的RGB-N双流模型,用于学习更加丰富的图像篡改特征。双流之一为RGB流,用于从输入的RGB图像中提取视觉特征以发现篡改伪影,如对比度差异、异常边界等;双流之二为Noise噪声流,利用从SRM空域富模型滤波层提取的噪声特征来捕获真实区域和被篡改区域之间的局部噪声不一致性,再将两个流的特征经过双线性池化层的融合以完成最终的篡改分类,实验表明RGB信息和噪声特征对提升检测效果具有互补性,为之后的研究打开了新思路。
ManTra-Net: Manipulation Tracing Network For Detection And Localization of Image Forgeries With Anomalous Features
③第三篇论文提出了一个无需进行预处理或者后处理的篡改检测网络ManTra-Net,它可以处理任意尺寸的图像以及多种篡改类型。该论文的主要贡献在于采用自监督学习的方式从385种篡改类型中学习特征,并将篡改定位问题当作了异常检测问题来看待。ManTra-Net包含两个子网络,即图像操作痕迹特征提取器与局部异常检测网络。子网络一的设计思想是靠实验说话,子网络二的设计则模仿了人类的决策过程。首先输入RGB图片,然后采用三种不同的卷积核进行卷积操作,接着就是特征的堆叠与全卷积操作,再送入LADN子网络进行Adaptation处理以适应后续的任务,包括提取Z-score特征表示局部异常、引入时间维度进行TimeConcat连接、使用LSTM的顺序分析来评估局部异常,也就是说,通过评估局部特征及其参考特征间的差异来识别异常区域,最后对异常特征做一个全面的考量,从而判断某像素是否发生了篡改。
RRU-Net: The Ringed Residual U-Net for Image Splicing Forgery Detection
④第四篇论文提出一个用于图像拼接检测的环形残差RRU-Net网络,是在U-Net的基础上添加残差传播Propagation和残差反馈Feedback结构来实现的,分别了借鉴了人脑的Recall机制、Consolidation机制。残差传播通过跨层连接和逐元素相加来实现,主要用来解决深度网络中的梯度退化问题;残差反馈选择带有Sigmoid激活函数的门控机制学习可辨别特征通道之间的非线性关系,然后将Sigmoid输出和输入信息相加,从而使篡改区域和非篡改区域之间的图像本质属性差异变得更为明显。
上述五个方向应该是CV领域比较经典的几个任务,希望对阅读这篇文章的网友能稍有帮助。我只是对每篇论文的关键点做了总结,想要完全参悟还得回到论文原文。
浙公网安备 33010602011771号