计算机视觉是一门研究如何使机器”看“的科学,作为一个学科,它试图建立能够从图像或多维数据中获取”信息“的人工智能系统。
一、检测跟踪
1.MTCNN
MTCNN是比较经典快速的人脸检测技术,它可实现两个任务:人脸检测与人脸关键点检测。这个过程由三个级联的轻量级CNN完成:PNet,RNet和Onet;图像数据先后经这三个网络的处理,最终输出人脸检测和关键点检测结果。
技术思想及原理分析
本项目的一大技术亮点就是使用了级联卷积的思想,将复杂问题简单化,化整为零,逐一攻破,既减小了问题的难度、提高了模型训练效率,还为以后解决这一类问题提供了可参考的方法。项目中的级联思想、图像金字塔、IOU、NMS、图像坐标缩放及坐标反算等技术在后续的目标检测中仍然能够看到它们的身影。
应用场景及商业价值
本项目应用最为广泛的场景就是人脸检测,如果将本项目怒扩展,实际上是可以使用在任何单类多目标的检测项目上的。比如交通车辆检测、工厂生产零部件检测、农业农作物检测、商场人流量检测等等,但凡是同类别的目标,都能够检测。本项目的商业价值在于它的普适性,目标检测类项目的应用场景广泛,在AI行业实际落地应用最多,从而也使得其商业应用价值大大增加。下图为MTCNN的测试效果展示。
2.YOLO系列
“You Only Look Once”或“YOLO”是一个对象检测算法的名字,这是Redmon等人在2016年的一篇研究论文中命名的。YOLO实现了自动驾驶汽车等前沿技术中使用的实时对象检测。
技术思想及原理分析
YOLO的渊源应该从RCNN系列说起,比较早的多类别检测识别模型是RCNN系列,包含了RCNN、fast-RCNN以及faster-RCNN,但是RCNN系列都是两阶段的,就是先检测、再分类,这样虽然说提高了检测分类精度,但是却降低了速度,所以才有了后来的YOLO系列,YOLO系列使用了划分区域和设置建议框的方法,直接把检测和分类融合成了一个阶段,模型能够同时学习检测和分类,实现了真正的端到端的模式,使得模型大大减小,从而提高的模型使用效率。虽然最早的YOLO子精度上并不能和RCNN系列比,但是在YOLOV2以后,无论是在精度上还是在效率上都已经超越了RCNN系列。
YOLO将对象检测重新定义为一个回归问题。它将单个卷积神经网络(CNN)应用于整个图像,将图像分成网格,并预测每个网格的类概率和边界框。
应用场景及商业价值
本项目和MTCNN最大的区别就是MTCNN为单类目标检测项目,而YOLO则为多类目标检测项目,而且YOLO不但能够检测目标,还能同时识别出所检测目标的类别,也就是说YOLO是同时可以检测和识别目标的,而MTCNN只能检测目标而不能识别目标,MTCNN要识别目标,则需要配上识别类模板,比如后面要介绍的center loss和arc loss等分类模型。YOLO的应用场景包括了MTCNN的应用场景,除此之外,YOLO还能够做多类别目标检测和识别,比如同时检测识别路上的车辆和人等。
二、分类识别
1.Center loss
center loss是一种损失函数,有效提高了人脸识别类别的辨识度。它来自ECCV2016的一篇论文《A Discriminative Feature Learning Approach for Deep Face Recognition》。
技术思想及原理分析
Center loss的出现是为了解决多分类损失函数softmax loss的缺点,softxmax loss分类的作用仅仅是把每个类别刚好分开,而不能拉开类别之间的距离,这会导致模型使用时,出现在类别边缘的样本点无法准确的分类。而center loss的作用是把每个类别内部的样本点聚集到一起,从而扩大了类别之间的距离,防止了样本点出现在类别边缘而无法准确分类的情况。值得注意的是center loss只一个辅助分类函数,必须要和softmax loss一起使用才有效果,单独使用是无法达到准确分类的效果的。
应用场景及商业价值
所有分类模型的损失函数作用都是分类,但是不同的损失函数,其分类效果也大不一样。比如softmax loss损失函数的作用是普通分类,也就是不同类别之间的分类;而center loss损失函数的作用是进行更精细化的分类,应用场景更适合同一类别内部的样本实例分类,比如人脸分类,车辆分类等,这些都是同一类别内部不同样本的分类。
2.Arc softmax loss
Arc-SoftmaxLoss = Arc-Softmax + NLLLoss。softmax 是通过角度分类的,Arc-Softmax 加宽了角度间的分界线,从而达到加大类间距的目的。
技术思想及原理分析
Arc softmax loss又称arc face loss,是专门为人脸识别分类而设计的一种损失函数,其之前的版本有A-softmax loss、L-softmax loss、AM-softmax loss。和center loss不同的是,arc softmax loss是直接对softmax loss进行改进,通过增加不同类别之间的角度距离来使不同类别获得更好的分类效果。两者都是减小同一类别中边缘的样本点与中心样本点的距离,只是使用了不同的方法,center loss采用的直接是欧式距离的做法,在同一类别下的所有样本点之间计算距离,这使得硬件资源的开销过大,不适合超大样本的分类计算;而arc softmax loss不对单个样本点进行计算,采用的是对每两个类别的决策面进行扩压,使得两个类别的边界线越来越大,从而将每个类别内部的样本点挤压到了一起,达到了精细化分类的效果,在计算效率远远大于center loss。
应用场景及商业价值
虽然Arc softmax loss和center loss 的的技术实现方法不一样,但是目的都是一样的,都是为了更精细化的分类。二者的应用场景也是一样的,主要应用方向是对与同一类别下的实例目标进行分类识别。人脸做为每个人的身份信息,其商业价值是非常巨大的,比如商家识别了客户脸部信息,建立准确的客户信息表,下次就可以针对性的销售。
三、对象生成
1.Auto Encoder
1986 年Rumelhart 提出自动编码器的概念,并将其用于高维复杂数据处理,促进了神经网络的发展。自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如y(i)=x(i) 。下图是一个自编码神经网络的示例:
技术思想及原理分析
AE模型(Auto Encoder)就是自编码模型,自编码的工作是让输入数据自己给自己编码,简单来说就是让输出等于输入!那么为什么要这么做呢?有必要让输出等于输入吗?如果输入是一张图片,那么直接复制一张图片作为输出不就行了吗?为什么要费尽心思让输出数据和输入数据一样呢?其实自编码的优点就体现于此,我们先来看看自编码的结构:
通过上面这张图,我们发现自编码是先把输入数据进行压缩成特征精髓,然后再对压缩过后的特征精髓进行解压缩还原,这是不是和我们的文件压缩和解压缩非常相似,其实二者原理是一样的,只不过文件压缩是无损压缩,而自编码模型对输入数据进行的是有损压缩,可以理解为自编码模型在压缩过程中,丢掉了部分不重要的特征,最终留下的是主要特征。在解压缩的时候,通过网络的学习,再去还原丢掉的那部分不重要的特征信息。由于神经网络是一个函数模拟器,最终网络是会学到一些特征,但是和丢掉的那部分特征又不完全一样,这就造成了网络输出的数据和输入数据很相似,但又不是完全一样的数据。
应用场景及商业价值
上面说了很多自编码的原理和过程,发现自编码虽然是尽量让输出等于输入,但是由于神经网络的极限逼近问题,其实最终得到的输出数据是和原输入非常接近但又不相同的数据,这正是自编码的目的,只有这样才能造成数据的多样性,通过自编码的这种多样性可以用来生成样本,扩大有效样本的数据量。自编码通过不同的变种可以做不同的事情,比如通过降噪自编码对图像进行去噪处理,可以得到一张更加清晰的图像。有的时候也可以通过自编码做一些比较有趣的小案例。
上图是对手写数字增加噪声后,使用降噪自编码得到的输出结果。可以看到降噪后输出的结果和原数据之间,除了在细节上展现出了不同之处,其数字基本是一致的。
2.VAE
VAE(Variational auto-encoder),变分编码器是自动编码器的升级版本,其结构跟自动编码器是类似的,也由编码器和解码器构成。
技术思想及原理分析
VAE是在AE(Auto Encoder)的基础上对输入的原数据的分布进行轻微扰动,使其产生多样性。具体做法就是让模型学习原数据的统计值μ和σ为标准正态分布的μ和σ,而不是学习数据本身,然后再从标准正态分布进行采样获得具体的数据值,最后将统计量和具体数据值结合,形成新的数据通过一个生成器学习原数据的分布。
应用场景及商业价值
VAE的应用场景主要体现在生成类方面,比如生成新的图像数据等,和AE模型相比,VAE由于加入了新的标准正态分布数据,使得生成数据更具多样性。下图展示了VAE对手写数字生成的一个效果。从图上可以看出,通过对输入数据的分布进行一定的扰动,得到的生成数据会发生一定变化,有的数据甚至改变了值。
3.GAN系列
Generative Adversarial Network,就是大家耳熟能详的 GAN,由 Ian Goodfellow 首先提出,在这两年更是深度学习中最热门的东西。所谓生成(generation),就是模型通过学习一些数据,然后生成类似的数据。比方说让机器看一些动物图片,然后自己来产生动物的图片。
技术思想及原理分析
生成式对抗神经网络GAN(Generative Adversarial Networks )是另一种非常有意思的生成类模型,和VAE不一样的是,GAN是通过一个判别器和生成器之间的模仿游戏来完成数据的生成的,其损失函数就是一个交叉熵,没有VAE的损失设计那么复杂,原理也更简单。而VAE是通过调整原数据的分布来生成新的数据的。相比较而言,GAN是直接学习原始数据的每部分特征分布,然后再组合每部分的分布数据合成的一张新图。由于直接学习数据本身的分布,训练好的GAN输出的图像更加清晰,细节部分表现更好,而VAE是对分布的方差进行一定扰动,也就是改变了细节,VAE更加关注全局,生成的图像细节没有GAN那么好。
应用场景及商业价值
GAN的应用比VAE更加广泛,GAN应用到一些场景上,比如图像风格迁移,超分辨率,图像补全,去噪,避免了损失函数设计的困难,只要有一个的基准,直接加上判别器,剩下的就交给对抗训练了。由于GAN的变种非常多,比如CGAN、DCGAN、WGAN等,以及近两年的高清图像生成模型Style GAN等,所以基本上能看到的一些生成类模型都以GAN为主。
四、物体分割
1.FCN
FCN(Fully Convolutional Networks)是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法。因为FCN网络中所有的层都是卷积层,故称为全卷积网络。
技术思想及原理分析
FCN顾名思义,即全卷积网络,做为使用深度学习做图像分割的先例,其象征意义更大于实际意义。FCN的主要特点是整个网络全部是由卷积网络构成的,不包括全连接。另外FCN采用的结构是以编解码网络为主干的瓶颈结构,加上了各层级之间的跳跃链接来获取局部细节信息。但由于模型设计简单,下采样部分和上采用部分并不对等,其分割效果并不理想。
应用场景及商业价值
分割类模型的应用场景比较广泛,目前最常见的应用范围涉及医疗影像分割、交通道路分割、GIS地理单位分割等领域。FCN是最早使用编解码瓶颈结构加跳跃连接来实现像素级分割的神经网络模型,虽然效果并不理想,但是对后来这一类模型的发展提供了可参考的价值,在后面的很多分割模型当中都可以看到FCN的影子。下图是FCN在不同的跳跃连接和步长下的分割效果,很明显,跳跃连接更多的分割也更精准一些。
2.UNet系列
Unet是一种比较年轻的神经网络,顾名思义,其结构为U形,在卷积层一层一层提取特征的同时将首尾对称的两层联系起来。
技术思想及原理分析
UNet可以看作是对FCN的一种优化,在FCN之后的很多基于神经网络的分割模型都可以看到FCN的影子,而UNet就是其中一个。UNet和FCN比起来,首先在模型结构上做到了完全对称,下采样部分的参数结构和上采用部分的参数结构几乎保持一致。另外在每个对应的下采样和上采样之间都使用了跳跃连接来增强细节信息的捕捉。在FCN中的add被改成了concatenate,让通道上的特征信息更加丰富。
应用场景及商业价值
由于UNet的分割效果更好,基于UNet的实际分割应用也更加广泛,UNet最早被设计出来的时候,就是为了做医学影像分割的。下图是UNet对眼球毛细血管的分割效果图,可以看出UNet对图像细节的分割效果是非常好的。
除了UNet之外,在UNet家族中还有UNet++,UNet3+,U²Net等等,其效果都要比原始的UNet更强。下面是N²Net的分割效果。可以看出U²Net的分割效果也是非常出色的。
3.DeepLab系列
DeepLab在图像分割领域中是另一个系列,目前已经有DeepLab v1、DeepLab v2、DeepLab v3和DeepLab v3+等版本。
技术思想及原理分析
和UNet系列比起来,主要差别是在对输入图像的处理和网络的结构上。DeepLab主要使用了图像金字塔、空洞卷积、SPP空间金字塔池化、可分离卷积等方法来提高分割的效果。其v1版本的网络比较简单,是在vgg16的基础上改动得到的,测试时使用全连接条件随机场(Fully Connected CRF)来提高分割精度。DeepLab通过空洞卷积获得图像特征金字塔来提取不同细节层次的信息,然后综合信息上采样还原图像,在上采样过程中,同样使用了跳跃连接来增强细节信息。
应用场景及商业价值
DeepLab的应用同UNet一样,都适合分割场景任务。
4.Mask R-CNN
Mask R-CNN是一个小巧、灵活的通用对象实例分割框架(object instance segmentation)。它不仅可对图像中的目标进行检测,还可以对每一个目标给出一个高质量的分割结果。
技术思想及原理分析
MaskRcnn是大神何凯明之作,集检测、分类、分割为一体的大模型。看名字就知道和Rcnn系列有一定联系,其实MaskRcnn就是在Rcnn的基础上增加了一个类似UNet的分割模型,Rcnn本来是做检测和分类的,MaskRcnn就是其基础上增加了一个分割功能。虽然MaskRcnn功能全面,但是不一定适合所有的场景,比如有的时候,你可能只需要做分割,仅此而已,这时候选择什么模型就需要认真思考了,不然参数过于冗余的模型会降低效率,而多余的功能对当前的任务可能并没有必要。
应用场景及商业价值
MaskRcnn融合了检测、分类、分割三种功能,其使用场景更多一些。比如一些需要对不同类别的实体进行分割分类的任务。
关注微信公众号:深度人工智能学院,获取更多人工智能方面的知识!
官方公众号 官方微信号
版权声明:本文为CSDN博主「深度人工智能学院」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/DeepAIedu/article/details/121332721
暂无评论