深度学习对图像的精准度影响有多大

2020-07-18 16:03发布

1条回答
卡卡
2楼 · 2020-07-21 11:01






目前,深度学习在图像、语音、自然语言处理都取得了重大突破。深度学习(卷积神经网络)最初是为解决图像识别问题而提出的。目前深度学习在图像识别中的应用主要集中于图像分类、目标检测、图像分割等领域。


图像分类


图片分类的任务是对于一个给定的图片,预测其类别标签。


深度学习在图像分类上的应用可追溯到最初银行支票上的手写数字自动识别,现在的人工智能三巨头之一YanLeCun在1994年提出了LeNet,使用卷积来提取空间特征,进行手写字符的识别与分类,准确率达到了98%,并在美国的银行中投入了使用,被用于读取北美约10%的支票,LeNet将卷积、池化和非线性激活函数相结合,奠定了现代卷积神经网络的基础。


之后随着每年ImageNet比赛的成功举办,深度学习在图像分类中的精度逐渐提升。2012年Hinton的学生AlexKrizhevsky提出了AlexNet,并获得当年Imagenet比赛冠军,AlexNet可以算是LeNet的一种更深更宽的版本,证明了卷积神经网络在复杂模型下的有效性,算是神经网络在低谷期的第一次发声,确立了深度学习,或者说卷积神经网络在计算机视觉中的统治地位。


2014年,牛津大学计算机视觉组和GoogleDeepMind公司一起研发了深度卷积神经网络VGGNet,并取得了当年Imagenet比赛定位项目第一名和分类项目第二名。该网络主要是泛化性能很好,容易迁移到其他的图像识别项目上,可以下载VGGNet训练好的参数进行很好的初始化权重操作,现在很多卷积神经网络都是以该网络为基础,比如FCN,UNet,SegNet等。vgg版本很多,常用的是VGG16,VGG19网络。


2015年,ResNet(残差神经网络)由微软研究院的何凯明等4名华人提出,成功训练了152层超级深的卷积神经网络,效果非常突出,而且容易结合到其他网络结构中。在五个主要任务轨迹中都获得了第一名的成绩(ImageNet分类任务,ImageNet检测任务,ImageNet定位任务,COCO检测任务,COCO分割任务)。


2015年Szegedy等人提出了GoogLeNet,在卷积神经网络中搭建多个inception模块,以增加卷积神经网络的深度和宽度。由于inception模块中卷积核的尺寸较小,GoogLeNet的训练参数大约50万个,只有AlexNet参数数量的1/12,但是在ImageNet数据集上图像识别的准确度提高了10%左右。


2016,2017年的ImageNet比赛,来自中国的团队大放异彩,商汤科技,公安部三所,HikVision(海康威视),NUIST(南京信息工程大学)都拿到过各个项目的冠军,网络结构多采用多个网络做集合。




目标检测


目标检测是指从一幅场景(图片)中找出目标,并用矩形框确定目标的位置。多应用于人脸识别、自动驾驶、遥感影像识别等领域。


目前基于深度学习的目标检测算法大致分为两类:



基于区域建议的目标检测与识别算法,如R-CNN,Fast-R-CNN,Faster-R-CNN

基于回归的目标检测与识别算法,如YOLO,SSD



2014年,Girshick(RGB大神)等人提出了R-CNN模型。该模型利用selectivesearch方法从待检测图像中提取若干个候选区;然后将候选区转换为统一的大小,使用卷积神经网络对其进行特征提取;最后运用多个SVM对特征进行分类,完成多目标检测。由于选择了较好的候选区以及使用了AlexNet判定候选区所属的类别,识别效果非常好,极大地提高了PascalVOC数据集上的检测效果。


2015年,Girshick为了提高R-CNN模型的检测速度,提出了fast-R-CNN模型。该模型仍然利用selectivesearch方法从待检测图像中提取若干个候选区。相比于R-CNN模型对每个候选区都提取特征,fast-R-CNN只对待检测图像提取特征;然后将候选区对应的特征图通过空间金字塔池化层映射为固定长度的特征向量;最后特征经过全连接的神经网络进行分类,并且预测边界框的坐标,对候选区进行修正,大幅提升了目标检测的速度。


2015年,继R-CNN,fast-R-CNN之后,目标检测界的领军人物RossGirshick团队(包括华人科学家任少卿,何凯明大神,孙剑)又推出faster-R-CNN模型,该模型由用于提取候选区的卷积神经网络(RPN)和用于目标检测的卷积神经网络fast-R-CNN构成。RPN对待检测图像中的每个位置都预测是否存在目标,并给出可能性最大的候选区。Fast-R-CNN判别所有候选区的类别并预测目标的边界框,对候选区进行修正。由于RPN和fast-R-CNN共享了卷积神经网络特征提取的部分,只需提取一次待检测图像的特征,加快了目标检测的速度。


2015年,JosephRedmon等人(RossGirshick挂名)提出YOLO模型,即youonlylookonce,用来实现实时目标检测的一种神经网络,将一个物体检测作为一个回归问题求解,输出图像只需经过一次inference,便可直接获取到图像中物体位置,物体对应的类别及其置信度。由于YOLO没有显示求解regionproposal,而是将该过程直接融合在网络中,所以避免了很多麻烦。


2015年WeiLiu等人提出了SSD,结合了YOLO中的回归思想和Faster-RCNN中的Anchor机制,使用全图各个位置的多尺度区域特征进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster-RCNN一样比较精准。SSD的核心是在特征图上采用卷积核来预测一系列DefaultBoundingBoxes的类别、坐标偏移。为了提高检测准确率,SSD在不同尺度的特征图上进行预测。




语义分割


语义分割也就是像素级别的分类,让计算机根据图像的语义来进行分割,确定边缘位置。目前应用有自动驾驶、医疗影像识别、遥感影像识别等领域。


传统的语义分割主要依赖使用人工提取特征和概率图模型,2015年JonathanLong等提出了全卷积网络(FCN),将深度学习引入了语义分割领域,FCN这篇论文(FullyConvolutionalNetworksforSemanticSegmentation)的发表,成为了语义分割的一个重要转折点。FCN主要使用了卷积化(Convolutional)、上采样(Upsample)、跳跃结构(SkipLayer)三种技术。


2015年VijayBadrinarayanan等人提出SegNet,主要贡献:将最大池化指数转移至解码器中,改善了分割分辨率。SegNet没有复制FCN中的编码器特征,而是复制了最大池化索引,这使得SegNet比FCN更节省内存。


2016年Liang-ChiehChen等提出了DeepLab网络,DeepLabv1:结合深度卷积神经网络,使用空洞卷积(atrousconvolution)进行语义分割。DeepLabv2:基于DeepLabv1的优化,使用空洞空间金字塔池化(atrousspatialpyramidpooling,ASPP)对物体进行有效的分割。DeepLabv3:采用多比例的带孔卷积级联或并行来捕获多尺度背景,基于图像特征优化ASPP。DeepLabv3+:对DeepLabv3的扩展,包括一个简单而高效的改善分割结果的解码器模块目前,DeepLabv3+版本已经开源。


2016年HengshuangZhao等提出了PSPNet网络,提出的金字塔池化模块(pyramidpoolingmodule)能够聚合不同区域的上下文信息,从而提高获取全局信息的能力。


2017年何凯明等人提出了MaskR-CNN,在原有FasterR-CNN的基础上添加了一个分支网络把目标像素分割出来,对每个实例生成一个高质量的分割掩码。该论文(MaskR-CNN)获得了ICCV2017的bestpaper,作为大神级人物,这也是他第三次斩获顶会最佳论文,另外,他参与的另一篇论文:FocalLossforDenseObjectDetection,也被大会评为最佳学生论文。

相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问