精华内容
下载资源
问答
  • 何凯明 基于暗原色先验的图像去雾MATLAB代码,何恺明,孙剑,汤晓鸥香港中文大学微软亚洲研究院,大家可看看
  • 何凯明博士的去雾算法,是一大经典,此代码复现何博士的论文,达到的优秀的去雾效果,在现实中,应用场景还挺多的。。。
  • 去雾算法matlab何凯明

    2018-03-26 19:28:20
    何凯明大声去雾算法matlab版本的实现,欢迎下载学习!
  • 何凯明去雾MATLAB代码

    2020-02-25 07:40:16
    何凯明 基于暗原色先验的图像去雾MATLAB代码
  • 何凯明 残差网络 ppt

    2018-03-21 20:35:28
    何凯明大神的残差网络,必须要看,必须要看,必须要看!!!
  • 何凯明暗通道先验法 原文 翻译 ppt 及大气光模型论文 和图像除雾相关的资料 Single Image Haze Removal Using Dark Channel Prior Optimized contrast enhancement for realtime image and video dehazing modeling...
  • 何凯明博士暗通道去雾算法的 matlab 源码,打开文件内的 test.m 文件即可运行。
  • slow-fast network 何凯明最新论文源码,内含部分注释
  • 何凯明有关图像方面的三篇论文
  • Single Image Haze Removal Using Dark Channel Prior 图像去雾 原文及翻译 何凯明
  • 何凯明博士的图像去雾算法源代码,经调试可直接运行处理模糊图片
  • 何凯明的深度残差网络 PPT 对应相应论文的PPT 仅供学习交流使用
  • 何凯明2009年的IEEE最佳论文翻译,基于暗通道先验的图像去雾
  • 这是的火炬实施,何凯明,张向宇,任少清是2015年ILSVRC和COCO挑战赛的获胜者。 工作原理:根据论文,CIFAR会收敛。 尚无法解决的问题: Imagenet。 我还仅针对剩余的网络瓶颈策略实施了选项(A)。 目录 变化 ...
  • 何凯明的引导滤波去雾算法,内有图像,main文件直接运行
  • 何凯明的快速导引过滤器 我们已将其上传到github,目的是使其易于访问开发人员。 原始代码(与该存储库相同)存储在 用于“快速引导过滤器”的Matlab演示代码(arXiv 2015) 通过 He( ) 如果您在工作中使用/...
  • 何凯明的暗通道去雾算法matlab代码,可运行
  • 何凯明去噪论文翻译

    2019-01-11 17:40:48
    何凯明的 Single_Image_Haze_Removal_Using_Dark_Channel_Prior中文翻译版
  • 说到图像去雾算法,不得不提大牛何凯明博士,圈内都知道他的: 何凯明博士,本科毕业于清华大学基础科学班。他是2006年微软小学者奖学金获得者之一,同时也是2003年广东省高考状元。2007年清华大学毕业之后开始在...

    图像去雾算法学习笔记1——何凯明博士基于暗通道先验的单幅图像去雾算法公式推导

    首先简单自我介绍一下,本人现在是国内某211大学2019级博士研究生,计算机科学与技术专业,研究方向和兴趣包括深度学习(CV)、图像处理、菌群仿生优化算法、元胞自动机等,愿与大家分享自己的学习心得!现刚入学1个多月,先从图像去雾算法开始学起。
      说到图像去雾算法,不得不提大牛何凯明博士,圈内都知道他的:
    何凯明博士,本科毕业于清华大学基础科学班。他是2006年微软小学者奖学金获得者之一,同时也是2003年广东省高考状元。2007年清华大学毕业之后开始在微软亚洲研究院(MSRA)实习,2011年香港中文大学博士毕业后正式加入MSRA,目前在Facebook AI Research (FAIR)实验室担任研究科学家。曾以第一作者身份拿过两次CVPR最佳论文奖Best Paper Award (2009和2016)——其中2016年CVPR最佳论文为图像识别中的深度残差学习(Deep Residual Learning for Image Recognition)。
         我现在看的是他2009年的CVPR论文:《Single Image Haze Removal Using Dark Channel Prior》在中国知网、百度学术上都有下载的。CVPR的中文名是计算机视觉与模式识别会议,是计算机视觉领域最顶尖的国际会议之一。2009年的CVPR共收到约1450篇投稿,其中393篇文章被接收,接收率为26%。只有一篇文章被选为那年的最佳论文。这是CVPR创立25年以来首次由中国人获得这个奖项。这篇文章是他在微软亚洲研究院形象计算组实习的时候完成的,也是他个人真正意义上写的第一篇论文。
    他根据Dark Object Subtraction原理通过大量实验发现局部找最暗点进行均匀去雾有很好的效果。
       由此得到对于一个无雾图像,每个局部区域都很有可能有一些暗的地方,换言之,至少一个颜色通道会有很低的值、或黑色东西。
    看了他的论文,准备写点笔记,这是我的第一篇笔记。


    一、简单有效的图像去雾技术

        这篇论文研究的问题是图像的去雾技术,它可以还原图像的颜色和能见度,同时也能利用雾的浓度来估计物体的距离,这些在计算机视觉上都有重要应用(例如三维重建,物体识别)。但是之前人们还没找到简单有效的方法来达到这个目的。在这篇论文里,他们找到了一个非常简单的,甚至说令人惊讶统计规律,并提出了有效的去雾方法。

       与之前的方法不同,他们把注意力放到了无雾图像的统计特征上。他们发现,在无雾图像中,每一个局部区域都很有可能会有阴影,或者是纯颜色的东西,又或者是黑色的东西。因此,每一个局部区域都很有可能有至少一个颜色通道会有很低的值。他们把这个统计规律叫做Dark Channel Prior(暗通道先验或暗原色先验)。直观来说,Dark Channel Prior认为每一个局部区域都总有一些很暗的东西。这个规律很简单,但在他们研究的去雾问题上却是本质的基本规律。

         由于雾总是灰白色的,因此一旦图像受到雾的影响,那么这些本来应该很暗的东西就会变得灰白。不仅如此,根据物理上雾的形成公式,他们还能根据这些东西的灰白程度来判断雾的浓度。因此,他们提出的Dark Channel Prior能很有效地去除雾的影响,同时利用物的浓度来估算物体的距离(深度)。

         简单理解:仔细想想我们可以确定有这样一个统计规律:对于大多数没有雾的图像来说,它的任意一个像素点中的R,G,B值至少有一个是非常低的;(这个挺好理解的,如果R,G,B值都偏高,那么该像素显然有向白色过度的趋势)把每个像素中“偏暗”的值(通道)以一定的方式集合起来就构成了一幅图片的暗通道图;正式基于这样的一个想法和统计的规律(可以把这个统计规律当作一条定理),何博士提出了去雾的算法,该算法在大量的户外有雾图片的应用中得以验证其准确性;并且在去雾的过程中,他们也同时得到了原图的景深图片,因为雾的厚度一定程度上代表了景深。

    为了验证上述提到的统计规律,何博士对5000张无雾图的暗通道的强度进行了统计,可以发现暗通道图中大部分像素都是0,而且全部像素都集中于0-50之间,可以说暗通道图是稀疏的,这一点对于我们下边的公式推导至关重要

    在这里插入图片描述


    二、相关背景和公式
        看了何凯明博士的这篇论文,以及我近期看的其他论文,我总结了图像去雾的三种方法:
    1、图像增强技术。常用于雾天图像清晰化处理的图像增强方法,包括直方图均衡、对数变换、幂律变换、锐化、小波变换等,这些都是图像处理中常用来提高对比度或者突出图像特征的方法。但严格的说,这一类方法并不研究雾气对图像影响的原理,并非去除图像中的雾,而是应用图像增强方法,对图像作清晰化处理。
    2、基于物理模型的图像去雾算法对图像进行复原。图像复原通过分析雾图降质机理,建立图像散射模型(即建立方程),充分利用图像退化的先验知识或假设,实现场景复原(即求解方程)。说到这里,就不得不提经典的描述有雾图像的散射模型:
    在这里插入图片描述
    其中t(x)可以表示为:
    在这里插入图片描述
    0<=t(x)<=1
    这个模型也是何凯明博士的这篇论文中用到的。
    3、还有就是基于最近几年火爆的深度学习方法。如利用随机森林学习回归模型估计透射率的值,利用卷积神经网络构造端到端的去雾网络等。这个是我下一步的研究方向啊。

    三、我目前学习的主要方法:基于物理模型的去雾算法复原图像
          对于上面的描述有雾图像的散射模型,其中x为像素空间坐标,I(x)为观测的强度,也就是理解为实际拍摄的有雾图像,J(x)为场景辐射,也就是理解为清晰无雾的图像(就是我们要复原的清晰图像),t是介质传输率,描述的是未被大气颗粒物(雾、霾等悬浮颗粒)散射而到达照相机的那部分光,A是全局大气光,也就是整体大气光值,可以理解为就是太阳光。J(x)t(x)称为直接衰减项,描述了场景辐射照度在介质中的衰减,它随场景深度呈指数性衰减,A(1-t(x))称为大气光幕,用来描述场景成像中加入的大气散射光,这个部分是太阳光经过微粒散射之后参与到成像光路中的部分,它造成了场景的模糊和颜色的失真。这个模型我们要做到的去雾就是从实际拍摄得到的I(x)去求解出J(x)、A和t。 很明显,如果对于一个含N个像素的彩色图片,每个像素有3个通道(RGB)值,那一共就有3N个方程式,但是未知量包括3N个J(x)、N个t(x)、3个A值,一共是4N+3个未知量,用3N个方程解4N+3个未知量,明显就是个“病态方程”。但目前的研究都不是精确的求解,因为这是一个多未知数的“病态方程”,我们只能去估计参数A和t(x),最关键的就是估计介质传输率t(x),然后从I(x)中恢复J(x).
            下面对这个散射模型两边对x求梯度(偏导)得到:
    在这里插入图片描述
             这里面是对一个色块(patch)求的,其中假设t是均匀的,所以t和x无关,就直接作为系数提出来,然后A(1-t(x))与x无关就变成了0,又当t<1时,所以得到了上式。原文的描述: For a patch with uniform transmission t, the visibility (sum of gradient) of the input image is reduced by the haze since t<1。The transmission t in a local patch is estimated by maximizing the visibility of the patch under a constraint that the intensity of J(x) is less than the intensity of A.
    四、何凯明博士这篇论文的核心思想——暗通道先验
        首先看看暗通道先验是什么:
        在绝大多数非天空的无雾图像的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值。换言之,该区域光强度的最小值是个很小的数。我们给暗通道一个数学定义,对于任意的输入图像J,其暗通道可以用下式表达:
    在这里插入图片描述
    式中 J c J^c Jc表示彩色图像的每个通道 ,Ω(x)表示以像素X为中心的一个窗口,代表像素点X周围的小区域即滤波器。等式左边即为暗通道图,等式右边:C代表R,G,B中的某一通道,x代表图中某一像素点; 这个公式的意义用代码表达也很简单,首先求出每个像素RGB分量中的最小值,存入一副和原始图像大小相同的灰度图中,然后再对这幅灰度图进行最小值滤波(下一篇博文我将介绍滤波的原理),滤波的半径由窗口大小决定,一般有WindowSize = 2 * Radius + 1;
    这个公式的意思可以这样理解:首先取原图每一个像素点中最小的通道值,这样就可以得到一副灰色的图了,然后对这个灰色的图进行最小值滤波(滤波窗口代表了Ω(X))就得到了暗通道图。

         暗通道先验的理论指出:
    在这里插入图片描述
         实际生活中造成暗通道中低通道值主要有三个因素:a)阴影等。汽车、建筑物和城市中玻璃窗户的阴影,或者是树叶、树与岩石等自然景观的投影;b)色彩鲜艳的物体或表面等,在RGB的三个通道中有些通道的值很低(比如绿色的草地/树/植物,红色或黄色的花朵/叶子,或者蓝色的水面);c)颜色较暗的物体或者表面,例如灰暗色的树干和石头。总之,自然景物中到处都是阴影或者彩色,这些景物的图像的暗原色总是很灰暗的。原文的表述:The low intensity in the dark channel is mainly due to three factors: a) shadows, e.g., the shadows of cars, buildings, and the inside of windows in cityscape images, or the shadows of leaves, trees, and rocks in landscape images; b) colorful objects or surfaces, e.g., any object with low reflectance in any color channel (for example, green grass/tree/plant, red or yellow flower/leaf, and blue water surface) will result in low values in the dark channel; c) dark objects or surfaces, e.g., dark tree trunks and stones. As the natural outdoor images are usually colorful and full of shadows, the dark channels of these images are really dark!
    论文中列举的暗通道图:
         作者随机选取了5000张无雾图片,并手工切除了天空区域,重新调整图像大小,使得最大宽度和高度像素为500像素,并使用1515的色块大小去计算暗通道。
         原文描述:Among them, we randomly select 5,000 images and manually cut out the sky regions. The images are resized so that the maximum of width and height is 500 pixels and their dark channels are computed using a patch size 15
    15. Fig. 4 shows several outdoor images and the corresponding dark channels.
    在这里插入图片描述
         由上述几幅图像,可以明显的看到暗通道先验理论的普遍性。在作者的论文中,统计了5000多副图像的特征,也都基本符合这个先验,因此,我们可以认为这其实时一条定理,但是基于统计得出的结论。 有了这个先验,接着就需要进行一些数学方面的推导来最终解决问题。
    五、用这个暗通道先验解上面那个“病态方程”
    重新拿出这个要求解的病态方程-大气散射模型:
    在这里插入图片描述
    稍作变形(归一化):
    在这里插入图片描述
    上标C表示R/G/B三个通道的意思。
         首先假设在每一个窗口内透射率t(x)为常数,定义他为 t ~ ( x ) \tilde{t}(x) t~(x) ,并且A值已经给定,然后对上式两边求两次最小值运算(用的是最小值滤波),得到下式:
    在这里插入图片描述

    上式中,J是待求的无雾的图像,根据前述的暗通道先验理论有:
    在这里插入图片描述
    因此,可推导出:
    在这里插入图片描述
    把这个公式带入到上面的最小值滤波后的公式得到:

    在这里插入图片描述
    这就是透射率t的预估值。
         在现实生活中,即使是晴天白云,空气中也存在着一些颗粒,因此,看远处的物体还是能感觉到雾的影响,另外,雾的存在让人类感到景深的存在,因此,有必要在去雾的时候保留一定程度的雾,这可以通过在式(11)中引入一个在[0,1] 之间的因子,则上面的公式修正为:
    在这里插入图片描述
    该论文中所有的测试结果依赖于: ω=0.95。

         上述推论中都是假设全球达气光A值时已知的,在实际中,我们可以借助于暗通道图来从有雾图像中获取该值。具体步骤如下:
    1) 从暗通道图中按照亮度的大小取前0.1%的像素。

    2) 在这些位置中,在原始有雾图像I中寻找对应的具有最高亮度的点的值,作为A值。 到这一步,我们就可以进行无雾图像的恢复了。大气散射模型公式可知: J = ( I - A)/t + A
    现在I,A,t都已经求得了,因此,完全可以进行J的计算。
    当投射图t 的值很小时,会导致J的值偏大,从而使淂图像整体向白场过度,因此一般可设置一阈值T0,当t值小于T0时,令t=T0,本文中所有效果图均以T0=0.1为标准计算。
         因此,最终的恢复公式如下:
    在这里插入图片描述
           要获得更为精细的透射率图,何博士在文章中提出了了soft matting方法,能得到非常细腻的结果。 以下是他论文中的效果图:  
    在这里插入图片描述
    交流扣扣群:533209464(备注“学习”),如果大家有需要,我就录制完整的去雾算法视频讲解课程
    在这里插入图片描述

    展开全文
  • 何凯明大神在 ICCV2017上的 tutorial(Best Paper Award,Marr Prize),配合论文学习理解更好。
  • 何凯明图像去雾的算法MATLAB实现 以及改进
  • 何凯明所作MASK R-CNN

    2017-12-08 15:49:53
    大神何凯明所作的MASK-CNN,里面包含源代码和论文,是一种在有效检测目标的同时输出高质量的实例分割mask。
  • 导向滤波-何凯明

    热门讨论 2013-10-04 17:26:57
    导向滤波,何凯明的最新成果,主要用于去雾
  • 何凯明计算机视觉去雾源码+去雾小应用,这篇论文研究的问题是图像的去雾技术,它可以还原图像的颜色和能见度,同时也能利用雾的浓度来估计物体的距离,这些在计算机视觉上都有重要应用(例如三维重建,物体识别)
  • 何凯明引导滤波

    2015-01-04 16:23:07
    何凯明博士的引导滤波,经典的图像去雾算法MATLAB实现
  • 何凯明的 深度残差网络,在 ICML2016 上的 tutorial 演讲以及相关 PPT 整理 从网上看到现在整理成了 pdf ,方便大家查阅。
  • 作者何凯明博士,2007年清华大学毕业,2011年香港中文大学博士毕业,可谓是功力深厚,感叹于国内一些所谓博士的水平,何这样的博士才可以真正叫做Doctor。  关于何博士的一些资料和论文,大家可以访问这里: ...

    原文:http://blog.csdn.net/laviewpbt/article/details/11555877

     

     最新的效果见 :http://video.sina.com.cn/v/b/124538950-1254492273.html  

         可处理视频的示例:视频去雾效果

        在图像去雾这个领域,几乎没有人不知道《Single Image Haze Removal Using Dark Channel Prior》这篇文章,该文是2009年CVPR最佳论文。作者何凯明博士,2007年清华大学毕业,2011年香港中文大学博士毕业,可谓是功力深厚,感叹于国内一些所谓博士的水平,何这样的博士才可以真正叫做Doctor。

         关于何博士的一些资料和论文,大家可以访问这里:http://research.microsoft.com/en-us/um/people/kahe/

         最开始接触何的这篇论文是在2011年,说实在的那个时候,只是随便浏览了下,看到里面的soft matting过程比较复杂,并且执行速度非常慢,就没有什么大的兴趣。最近又偶尔拾起,仔细研读,觉得论文的推理步骤特别清晰,讲解很到位。恰好适逢浏览到其另外一篇文章《Guided Image Filtering》 ,其中提到了可以用导向滤波来代替soft matting的过程,且速度很快,因此,我对去雾的兴趣算法又大大提高了。  

         本文主要上是对《Single Image Haze Removal Using Dark Channel Prior》的翻译、整理、及部分解释。如果您的英文水平好,建议看原文可能来的更爽些。

        一、论文思想的简单描述 

         首先看看暗通道先验是什么:

           在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值。换言之,该区域光强度的最小值是个很小的数。

      我们给暗通道一个数学定义,对于任意的输入图像J,其暗通道可以用下式表达:

                                        

          式中Jc表示彩色图像的每个通道 ,Ω(x)表示以像素X为中心的一个窗口。 

        式(5)的意义用代码表达也很简单,首先求出每个像素RGB分量中的最小值,存入一副和原始图像大小相同的灰度图中,然后再对这幅灰度图进行最小值滤波,滤波的半径由窗口大小决定,一般有WindowSize = 2 * Radius + 1;          

          暗通道先验的理论指出:

                                                                           

         实际生活中造成暗原色中低通道值主要有三个因素:a)汽车、建筑物和城市中玻璃窗户的阴影,或者是树叶、树与岩石等自然景观的投影;b)色彩鲜艳的物体或表面,在RGB的三个通道中有些通道的值很低(比如绿色的草地/树/植物,红色或黄色的花朵/叶子,或者蓝色的水面);c)颜色较暗的物体或者表面,例如灰暗色的树干和石头。总之,自然景物中到处都是阴影或者彩色,这些景物的图像的暗原色总是很灰暗的。

          我们抛开论文中列举的那些例子,自己从网上找几幅没有雾的风景照,看看结果如下:

            

            

            

                          一些无雾的图片                                                                                  其暗通道

    在看看一些有雾的图的暗通道:

          

          

              一些有雾的图片                                                                                  其暗通道

      上述暗通道图像均使用的窗口大小为15*15,即最小值滤波的半径为7像素。

          由上述几幅图像,可以明显的看到暗通道先验理论的普遍性。在作者的论文中,统计了5000多副图像的特征,也都基本符合这个先验,因此,我们可以认为其实一条定理。

          有了这个先验,接着就需要进行一些数学方面的推导来最终解决问题。

      首先,在计算机视觉和计算机图形中,下述方程所描述的雾图形成模型被广泛使用:

                                                       

       其中,I(X)就是我们现在已经有的图像(待去雾的图像),J(x)是我们要恢复的无雾的图像,A是全球大气光成分, t(x)为透射率。现在的已知条件就是I(X),要求目标值J(x),显然,这是个有无数解的方程,因此,就需要一些先验了。

      将式(1)稍作处理,变形为下式:

                                                        

        如上所述,上标C表示R/G/B三个通道的意思。

        首先假设在每一个窗口内透射率t(x)为常数,定义他为,并且A值已经给定,然后对式(7)两边求两次最小值运算,得到下式:

                                      

        上式中,J是待求的无雾的图像,根据前述的暗原色先验理论有:

                                                   

         因此,可推导出:

                                                             

        把式(10)带入式(8)中,得到:

                                                     

        这就是透射率的预估值。

        在现实生活中,即使是晴天白云,空气中也存在着一些颗粒,因此,看远处的物体还是能感觉到雾的影响,另外,雾的存在让人类感到景深的存在,因此,有必要在去雾的时候保留一定程度的雾,这可以通过在式(11)中引入一个在[0,1] 之间的因子,则式(11)修正为:

                                                   

         本文中所有的测试结果依赖于:  ω=0.95。

         上述推论中都是假设全球达气光A值时已知的,在实际中,我们可以借助于暗通道图来从有雾图像中获取该值。具体步骤如下:

          1) 从暗通道图中按照亮度的大小取前0.1%的像素。

              2) 在这些位置中,在原始有雾图像I中寻找对应的具有最高亮度的点的值,作为A值。

         到这一步,我们就可以进行无雾图像的恢复了。由式(1)可知:  J = ( I - A)/t + A  

         现在I,A,t都已经求得了,因此,完全可以进行J的计算。

         当投射图t 的值很小时,会导致J的值偏大,从而使淂图像整体向白场过度,因此一般可设置一阈值T0,当t值小于T0时,令t=T0,本文中所有效果图均以T0=0.1为标准计算。

         因此,最终的恢复公式如下:

                                    

         当直接用上述理论进行恢复时,去雾的效果其实也是很明显的,比如下面一些例子:

           

           

                     有雾图                                             去雾图

          注意到第一幅图的原图两个字的周围明显有一块不协调的地方,而第二图顶部水平方向似乎有一块没有进行去雾处理,这些都是由于我们的透射率图过于粗糙了。

          要获得更为精细的透射率图,何博士在文章中提出了了soft matting方法,能得到非常细腻的结果。但是他的一个致命的弱点就是速度特慢,不使用于实际使用。在2011年,何博士又除了一片论文,其中提到了导向滤波的方式来获得较好的透射率图。该方法的主要过程集中于简单的方框模糊,而方框模糊有多重和半径无关的快速算法。因此,算法的实用性特强,关于这个导向滤波算法大家在何博士的网站可以自己去研习下,除了在去雾方面外,还有着其他多方面的应用,这部分本文不多述。

         使用了导向滤波后的去雾效果:

         

          

                使用原始的预估透射率图                                 使用导向滤波后的透射率图

          

                   (a) 原图                                  (b)  去雾结果图

          

                    (c)    暗通道图                          (d) 导向图 (原始图像的灰度图)

          

                    (e)   预估透射率图                       (f)   使用导向滤波后的透射率图

      二、各参数对去雾结果的影响

      第一:窗口的大小。这个对结果来说是个关键的参数,窗口越大,其包含暗通道的概率越大,暗通道也就越黑。我们不去从理论角度分析,从实践的效果来看,似乎窗口越大,去雾的效果越不明显,如下图所示:

            

                                  (a) 原始图像                            (b) 窗口大小=11

          

                  (c) 窗口大小=21                         (d) 窗口大小=101 

      我的建议是窗口大小在11-51之间,即半径在5-25之间。

         式(12)中的ω具有着明显的意义,其值越小,去雾效果越不明显,举例如下:

          

                                        (a) 原始图像                                   (b)    ω=0.5         

              

                                           (c)    ω=0.8                                                                       (d)    ω=1 

        三:编码的步骤

      如果你仔细的分析了原文的细路,加上适当的参考,编码其实并不是很困难。

      1)根据原始图像求暗通道,参考代码如下:

        for (Y = 0, DarkPt = DarkChannel; Y < Height; Y++)
        {
            ImgPt = Scan0 + Y * Stride;
            for (X = 0; X < Width; X++)
            {
                Min = *ImgPt;
                if (Min > *(ImgPt + 1)) Min = *(ImgPt + 1);
                if (Min > *(ImgPt + 2)) Min = *(ImgPt + 2);
                *DarkPt = Min;
                ImgPt += 3;
                DarkPt++;
            }
        }
    
        MinFilter(DarkChannel, Width, Height, Radius);
    

        这里需要注意的是MinFilter算法的快速实现,提供一篇论文供有需要的朋友学习:STREAMING MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER ELEMENT 。这个算法的时间复杂度是O(1)的。

          2)按文中所描述的算法自动获得全球大气光的值。

         这里说明一点,原始论文中的A最终是取原始像素中的某一个点的像素,我实际上是取的符合条件的所有点的平均值作为A的值,我这样做是因为,如果是取一个点,则各通道的A值很有可能全部很接近255,这样的话会造成处理后的图像偏色和出现大量色斑。原文作者说这个算法对天空部分不需特备处理,我实际发现该算法对有天空的图像的效果一般都不好。天空会出现明显的过渡区域。作为解决方案,我增加了一个参数,最大全球大气光值,当计算的值大于该值时,则就取该值。  

               

                            原图                                                         未对A值做限定                  最大A值限定为220

           3) 按式(12)计算预估的透射率图。

      在式(12)中,每个通道的数据都需要除以对应的A值,即归一化,这样做,还存在一个问题,由于A的选取过程,并不能保证每个像素分量值除以A值后都小于1,从而导致t的值可能小于0,而这是不容许的,原文作者并没有交代这一点是如何处理的。我在实际的编码中发现,如果真的这样做了,其效果也并不是很理想 ,因此,我最后的办法是在式(12)中,不考虑A的计算。

            4)计算导向滤波图。

       这里可以直接用原始的图像做导向图,当然也可以用其灰度图,但是用RGB导向图在下一步的计算中会占用比较大的时间。

            5)按照《Guided Image Filtering》论文中的公式(5)、(6)、(8)编码计算获得精细的透射率图。

        网络上有这个算法的 matlab代码可下载的,这里贴部分代码:

      function q = guidedfilter(I, p, r, eps)
      %   GUIDEDFILTER   O(1) time implementation of guided filter.
      %
      %   - guidance image: I (should be a gray-scale/single channel image)
      %   - filtering input image: p (should be a gray-scale/single channel image)
      %   - local window radius: r
      %   - regularization parameter: eps
    
      [hei, wid] = size(I);
      N = boxfilter(ones(hei, wid), r); % the size of each local patch; N=(2r+1)^2 except for boundary pixels.
    
      % imwrite(uint8(N), 'N.jpg');
      % figure,imshow(N,[]),title('N');
      
    
      mean_I = boxfilter(I, r) ./ N;
      mean_p = boxfilter(p, r) ./ N;
      mean_Ip = boxfilter(I.*p, r) ./ N;
      cov_Ip = mean_Ip - mean_I .* mean_p; % this is the covariance of (I, p) in each local patch.
    
      mean_II = boxfilter(I.*I, r) ./ N;
      var_I = mean_II - mean_I .* mean_I;
    
      a = cov_Ip ./ (var_I + eps); % Eqn. (5) in the paper;
      b = mean_p - a .* mean_I; % Eqn. (6) in the paper;
    
      mean_a = boxfilter(a, r) ./ N;
      mean_b = boxfilter(b, r) ./ N;
    
      q = mean_a .* I + mean_b; % Eqn. (8) in the paper;
      end

           由上面的代码,可见,主要的工作量在均值模糊上,而均值模糊是个很快速的算法,关于均值模糊的优化可参考我以前的文章:彩色图像高速模糊之懒惰算法。

          还有一点就是,上述计算需要在[0,1]范围内进行,也就是说导向图和预估的透射率图都必须从[0,255]先映射到[0,1]在进行计算。

          关于guidedfilter中的半径r值,因为在前面进行最小值后暗通道的图像成一块一块的,为了使透射率图更加精细,建议这个r的取值不小于进行最小值滤波的半径的4倍,如下图所示:

             

              (a)  r=最小值滤波半径的2倍                        (b) r=最小值滤波半径的8倍

          可以看到,当r比较小的时候,在透射率图中基本看不到什么细节信息,因此恢复处的图像边缘处不明显。

          参数eps的取值也有所讲究,他主要是为了防止计算中除以0的错误以及为了使得某些计算结果不至于过大,一般建议取值0.001或者更小。

          如果使用的彩色RGB图做导向图,计算时间上会增加不少,所的到的透射率图的边缘会比灰度图所处理的保留了更多的细节,效果上略微比灰度图好,如下所示:

             

                  (a) 原图                                                                                    (b)预估的透射率图

             

                           (c)使用灰度图为导向图得到的透射率图                           (d)使用RGB图为导向图得到的透射率图

             

               (e)灰度图为导向图对应的去雾效果                               (f)RGB图导向图对应的去雾效果

           以RGB图为导向图的计算中,涉及到3*3部分矩阵求逆的过程,如果用非matlab语言写,可以先借助于matlab的符号计算功能,以及其中的符号计算命令simple,把计算结果算出来,然后再再其他高级语言中实现。

           (6) 按式(22)进行无雾图像的恢复。

     四、其他一些去雾效果图

          

              

              

              

                                  原图                                                 去雾效果图                                                      透射率图

          上图中最后一副图我连续做了两次去雾的处理。 

          在原文中,有这样一段话:

      Since the scene radiance is usually not as bright as the atmospheric light, the image after haze removal looks dim. So we increase the exposure of J(x) for
    display.

         意思就是说直接去雾后的图像会比原始的暗,因此在处理完后需要进行一定的曝光增强,但作者没有说明其是如何增强的, 因此,这里的图和他论文的效果有所不同时正常的。一般在去雾处理后再用自动色剂之类的算法增强下会获得比较满意的结果,如下图:

                  

              原图                 去雾后              +自动色阶

          去雾算法目前也有着众多其他的方式,不过我所接触的,很多都是以这个为基础,因此,先弄会这个为研究其他的去雾算法能奠定坚实的基础。

          网络上有一些比较好的暗原色先验去雾的matlab代码:比如和本文基本对应的matlab资源:http://files.cnblogs.com/Imageshop/cvpr09defog%28matlab%29.rar

      后记:稍微有看了几篇去雾的文章,基本上都是围绕着获得透视率图做文章,比如一些文章讲用联合双边滤波方式获得精细的透射率,从我个人浅薄的认识中,我觉得去雾已基本上跳不出暗原色这个范畴了。

          我对双边滤波算法那也做了实验,发现这个的效果也还行,就是速度慢了很多,双边滤波的快速算法其实快不起来的,所以这个的实用性不高,我选择了一些图像做比较:

             

                                        (a) 原图                                                               (b)   联合双边滤波去雾图

             

                            (c) 导向滤波获得透射率图                                                   (d)联合双边滤波透射率图(Sigmad=SigmaR=100)

           上图可以很明显的看出联合双边滤波的透射率图没有导向滤波的精细,但比原始的粗糙的透射率图还是好很多,过渡很光滑,因此,也能获得不错的视觉去雾效果。

           联合双边滤波器中的算法是参考了OpenCv中相关函数写的。

         和平常一样,提供一个可供大家测试效果的程序: 基于暗原色先验的图像去雾演示程序

        

        我分别用VB6和C#做了个程序,两个程序都已经通过各自的语言方式进行了优化,算法部分编码是一样的,C#运行速度大约是VB6的1.8倍。

         在处理速度上,比 matalb的快了很多倍,在I3的笔记本电脑上,一副1024*768的图像去雾时间大约在150ms内(以灰度图为导向图)。

     

     五、算法的局限性

     

          暗原色先验是一种统计的结果,是对大量户外无雾照片(outdoor haze-free images)的统计结果,如果目标场景内在的就和大气光类似,比如雪地、白色背景墙、大海等,则由于前提条件就不正确,因此一般无法获得满意的效果,而对于一般的风景照片这个算法能处理的不错。

        

     

        2013.8.23 后记补充修正:

         在后续对该算法的关注中,发现自己在前面做出了一个错误的判断,就是关于式(11)中/A的操作。我在前面说这个除法会引起一些问题,因此,去除了这一步。但是后来的实践证明正是有了这一步,对于对比度低的图像才可以获得很好的去雾高对比度图。

        前面说的/A操作可能会导致t的值小于0,这种情况就可以把t的值直接设置为0来解决。

        还有一个事情就是式(11)严格的来说是要对原始图像的每个通道进行归一化后,再取每个通道R/G/B值的最小值得到中间图,然后对这个中间图进行指定半径的最小值滤波后,通过11式得到粗糙的透射率图,那么这样就需要多不少计算,我在实际中发现如果直接用前面的暗通道图/A进行操作,两者的效果区别不明显,因此,可用这种简便的方式。

       

     上图是一副经典的测试图,虽然取得了比较好的效果,不过似乎马路那一块的效果不如一些其他人公开的成果那么好。

       

         这也是一副比较常见的测试图,该图也是紧用去雾获得结果,未做任何的后处理,同CSDN一个的案例库:图像去雾的算法研究中的效果相比,在整幅图像的对比和和协调性上都要好一个档次。

         再如下图,也比CSDN那个案例库中的效果要好很多。

         

         还有:

      

      

       

       总结:我对这种去雾算法的效果还是很满意的, 效果和速度都还比较合适。

       附件的测试程序已经同步更新。

       2013.10,10 后记补充:

        一直听说C的效率很高,于是用C实现了该算法,并且编制了一个可供其他语言调用的dll文件,然后对最小值滤波算法又进行了特殊的优化,算法速度有了很大的提高,特别是在用VS2010时,编写C的代码可以勾选下图中的SSE选项和快速(fp:fast),程序会调用SSE一些函数,实现指令级别的并行。而这些C#的编译器是无法实现的。

         同样的算法,相对于原始的C#程序,程序的速度能提高一倍左右,对于800*600的图像,在我的I3的CPU上平均能能达到20fps的速度(只占用了一个核的CPU资源),因此可以适用于不大于该范围内的实时图像处理。

         同样我增加了3个内部可调的参数供大家测试。

         相应的DLL函数声明如下:

         c风格:

    void HazeRemovalUseDarkChannelPrior(unsigned char * Src,unsigned char * Dest,int Width,int Height,int Stride, int Radius ,int GuideRadius, int MaxAtom, float Omega,float Epsilon,float T0 )

        c#调用:

     [DllImport("HazeRemoval.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true)]
      private static extern void HazeRemovalUseDarkChannelPrior(byte* Src, byte* Dest, int Width, int Height, int Stride, int Radius,int GuideRadius, int MaxAtom, float Omega, float Epsilon, float T0);

        VB6调用:

    Private Declare Sub HazeRemovalUseDarkChannelPrior Lib "HazeRemoval.dll" (ByVal Src As Long, ByVal dest As Long, ByVal Width As Long, ByVal Height As Long, ByVal Stride As Long, ByVal Radius As Long, ByVal GuideRadius As Long, ByVal MaxAtom As Long, ByVal Omega As Single, ByVal Epsilon As Single, ByVal T0 As Single)

         

         调用实例源代码下载:http://files.cnblogs.com/Imageshop/HazeRemovalTest.rar

     2013.11,22修正: 

      通过联合双边滤波求透射率图的效果上面的不正确的,进最新的研究结果表明,双边滤波确实也能获得精细的投射图,比如依旧那上面的测试图像,不同的SigmaS和SigmaR下获得透射率效果如下:

            

              SigmaS=50,SigmaR=30                           SigmaS=100,SigmaR=30

     

     2014.1.12 重大更新(可实现实时效果):

         何的算法效果以及普遍的实用性都比其他的去雾算法要好,而主要的问题就是其速度还是不够快,有着太多的浮点计算。鉴于此,作者也多次试着对代码进行深层次的优化,包括SSE处理、并行运行等,但由于算法本身的顺序执行,无法全程并行,偶尔一个小函数可以并行,但由于其本身执行就特别快,比如不要5ms,你去用并行算法可能耗时还会大一些。因此,一直没有什么大的进步,对于一副1024*768的彩图进行去雾需要90ms,这肯定无法满足需求。

         最近,在思考,既然暗通道去雾的透射率图比其他的算法都来的精细,如果适当的降低一点点其精度,其去雾的效果理论上应该不会有太大的区别,于是我想到了一种方式,即求取透射率的时候不是对原图进行求取,而是先对原图进行下采样,比如缩小为原图的1/4,计算出小图的透射率,之后在通过插值的方式的获取原图大概的透射率,则应该也可以获得效果。经过实践,这种方式大大的提高了执行速度,而且效果和原始的方案基本一致,对于1024*768的图像大约只需要(I3CPU)30ms了,如果进一步取1/9的缩放,则只需要大约20ms,完全可以满足工业实时性要求高的场合。

        当然,如果你的缩小系数不是特别大的话,比如缩小为原来的0.5大小,可能两次缩放所用的耗时还抵消了计算小图的透射率图所换来的盈利,因此必须合理选择这个下采样率。

        要实现这样的速度,当然还是需要很高的优化技巧的,这些东西还是有所保留比较好。 

        我做了一个程序,集成了本博客中6种图像去雾的算法: 图像去雾综合版本

     

    用暗通道的算法对一段视频进行了处理,大家可以在这里看到效果:http://video.sina.com.cn/v/b/124538950-1254492273.html

    展开全文
  • 秒懂!何凯明Resnet

    千次阅读 2019-03-05 10:23:30
    雷锋网注:何凯明博士,2007年清华大学毕业之后开始在微软亚洲研究院(MSRA)实习,2011年香港中文大学博士毕业后正式加入MSRA,目前在Facebook AI Research (FAIR)实验室担任研究科学家。曾以第一作者身份拿过两次...

    雷锋网注:何凯明博士,2007年清华大学毕业之后开始在微软亚洲研究院(MSRA)实习,2011年香港中文大学博士毕业后正式加入MSRA,目前在Facebook AI Research (FAIR)实验室担任研究科学家。曾以第一作者身份拿过两次CVPR最佳论文奖(2009和2016)——其中2016年CVPR最佳论文为图像识别中的深度残差学习(Deep Residual Learning for Image Recognition),本文为何凯明博士在ICML2016上的tutorial演讲以及相关PPT整理。相比学术论文,他在演讲PPT中深入浅出地描述了深度残差学习框架,大幅降低了训练更深层次神经网络的难度,也使准确率得到显著提升。

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

     

    深度残差网络——让深度学习变得超级深

    ICML 2016 tutorial

    何凯明——Facebook AI Research(8月加入)

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    概览

    • 介绍

    • 背景

    从浅到深

    • 深度残差网络

    从10层到100层

    从100层到1000层

    • 应用

    • Q & A

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    | 介绍部分

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    介绍——深度残差网络(Resnet)

    • “用于图像识别的深度残差学习” CVPR2016

    • 一个能够用来训练“非常深”的深度网络又十分简洁的框架

    • 在以下几个领域中都能实现当下最好的表现

    图像分类

    对象检测

    语义分割

    等等

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    Resnet在ILSVRC 和COCO 2015上的表现

    在五个主要任务轨迹中都获得了第一名的成绩

    ImageNet分类任务:“超级深”的152层网络

    ImageNet检测任务:超过第二名16%

    ImageNet定位任务:超过第二名27%

    COCO检测任务:超过第二名11%

    COCO分割任务:超过第二名12%

     

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial 

    深度网络的革命(从浅层到越来越深的层级)

    在ILSVRC2010年左右还主要是浅层网络,大部分需要手动调教特征。在ILSVRC2012年时,出现了8层的网络——AlexNet,降低了10%的错误率。而后ILSVRC2014出现的VGG和GoogleNet是相当成功的,它们分别将层级提到了19层、22层,错误率也降低到了7.3、6.7。到去年的ILSVRC2015,我们的ResNet将层级提到了152层,将错误率降到了3.57。

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    深度网络的革命

    AlexNet, 8层 (ILSVRC 2012)

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    深度网络的革命

    AlexNet, 8层 (ILSVRC 2012)

    VGG, 19层 (ILSVRC 2014)

    GoogleNet, 22层 (ILSVRC 2014)

     

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    深度网络的革命

    AlexNet, 8层 (ILSVRC 2012)

    VGG, 19层 (ILSVRC 2014)

    ResNet, 152 层 (ILSVRC 2015)

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    深度网络的革命

    PASCAL VOC 2007——中间层数代表视觉识别的层数

    HOG, DPM——浅层——34%的对象检测率

    AlexNet (RCNN)——8层——58%的对象检测率

    VGG (RCNN)——16层——66%的对象检测率

    ResNet (Faster RCNN)——101层——86%的对象检测率

     

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    ResNet在COCO测试中的对象检测成绩

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    ResNet十分简单,且容易学习

    • 许多第三方实现工具

    Facebook AI Research’s Torch ResNet

    Torch, CIFAR-10,使用 ResNet-20到 ResNet-110, 训练代码等

    Lasagne, CIFAR-10, 使用 ResNet-32 和 ResNet-56 以及训练代码等

    Neon, CIFAR-10, 使用预训练的 ResNet-32到 ResNet-110 模型、代码等

    Torch, MNIST, 100层

    Neon, Place2 (mini), 40层

    • 容易重现结果

    • 一系列的扩展和后续工作

    6个月内超过200词引用(在2015年12月发布在arXiv上后)

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    深度残差网络——从第10层到100层

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    逐层深入

    • 初始化算法

    • 批归一化算法

    • 学习更好的网络是否与堆叠层数一样简单?

    ç§æï¼ä½å¯æç深度æ®å·®ç½ç»PPTæ¯è¿æ ·ç|ICML2016 tutorial

    仅是简单的层数堆叠吗?

    • “平原”网络:堆叠3x3卷积网络……

    • 与第20层网络相比,第56层网络存在更高的训练误差与测试误差。

     

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    • 层数过深的平原网络具有更高的训练误差

    • 这是一个在许多数据集中都能够观察到的普遍现象

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    • 网络层数较浅的模型(18层)

    • 网络层数较深的模型(34层)

    较高分辨率空间

    一个较深的网络模型不应当具有较高的训练误差

    通过构建形成的分辨率:

    • 原始层:由一个已经学会的较浅模型复制得来

    • 附加层:设置为“恒等”

    • 至少具有相同的训练误差

    优化难题:随着网络层数不断加深,求解器不能找到解决途径

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    深度残差学习

    • 平原网络

    H(x)是任意一种理想的映射

    希望第2类权重层能够与H(x)拟合

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    残差网络

    H(x)是任意一种理想的映射

    希望第2类权重层能够与F(x)拟合

    使H(x) = F(x) + x

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    • F(x)是一个残差映射w.r.t 恒等

    如果说恒等是理想,很容易将权重值设定为0

    如果理想化映射更接近于恒等映射,便更容易发现微小波动

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    相关研究——残差表示法

    • VLAD & 费舍尔向量(Fisher Vector) [Jegou et al 2010], [Perronnin et al 2007]

    编码残差向量;强大的较浅表示法。

    • 产品量化(IVF-ADC) [Jegou et al 2011]

    量化残差向量;高效最近邻搜索。

    • 多栅 & 分层的先决前提 [Briggs, et al 2000], [Szeliski 1990, 2006]

    解决残差次要问题;高效PDE求解器。

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    网络“设计”

    • 保持网络的简约性

    • 我们的基本设计方案(VGG-style)

    所有的3x3卷积层(几乎所有)

    空间规模/2=>#过滤器x2 (~每一层的复杂度相同)

    简约的设计风格;保持设计风格的简约性

    • 其他评论:

    无隐层fc

    无信息流失

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    训练

    • 所有的平原/残差网络都是从头开始训练的。

    • 所有的平原/残差网络都运用组归一化(Batch Normalization)

    • 标准化的超参数&增强

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    CIFAR-10 实验

    • 深度残差网络(ResNets)能够在没有任何难题的情况下得到训练

    • 深度残差网络(ResNets)具有较低的训练误差和测试误差

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    ImageNet (图像网络)实验

    • 深度残差网络(ResNets)能够在没有任何难题的情况下得到训练。

    • 深度残差网络(ResNets)具有较低的训练误差和测试误差。

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    • 一个逐层深入的实际可行的设计方案

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    • 较深的ResNets具有较低的误差

    与VGG-16/19相比,该模型具有较低的时间复杂度。

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    图像网络分类误差排行前5的网络模型

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    讨论

    表征,优化,归纳

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    学习深度模型存在的一些问题

    • 表征能力

    如果能够找到最佳表征方法,将具备构建模型的能力,以拟合训练数据。

    如果模型A的分辨率空间是B的父集,模型A的分辨率更高。

    • 优化能力

    找到最佳表征方法的可行性

    并不是所有的模型都能非常容易地得到优化

    • 归纳能力

    倘若训练数据是拟合的,测试的性能如何?

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    残差网络(ResNets)将如何解决这些问题?

    • 表征能力

    残差网络在模型表征方面不存在直接的优势(只是实现重复参数化)

    但是,残差网络允许逐层深入地表征所有的模型

    • 优化能力

    残差网络使得前馈式/反向传播算法非常顺利进行

    在极大程度上,残差网络使得优化较深层模型更为简单

    • 归纳能力

    残差网络未直接处理学习深度模型过程中存在的归纳问题

    但是,更深+更薄是一种好的归纳手段

    另外,对于残差网络的详细介绍可见何凯明博士在2016年CVPR中的最佳论文——图像识别的图像识别中的深度残差学习(Deep Residual Learning for Image Recognition)

    秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial

    在论文中介绍了一个深层次的残差学习框架来解决精准度下降问题。我们明确地让这些层适合残差映射,而不是寄希望于每一个堆叠层直接适合一个所需的底层映射。形式上,把H(x)作为所需的基本映射,让堆叠的非线性层适合另一个映射F(x):=H(x)-x。那么原映射便转化成:F(x)+x。我们假设优化剩余的映射,比优化原来未引用的映射更容易。如果身份映射是最佳的,那么将剩余的映射推为零,就比用一堆非线性层来适应身份映射更容易。

    公式F(x)+x可以通过“快捷连接”前馈神经网络实现。快捷连接是那些跳过中的一层或更多层。在我们的情景中,快捷连接简单的执行身份映射,并将它们的输出添加到叠加层的输出。身份快捷连接添加既不产生额外的参数,也会增加不计算的复杂度。通过反向传播的SGD,整个网络仍然可以被训练成终端到端的形式,并且可以在没有修改器的情况下很容易的使用公共资料库(例如Caffe)。

    我们在ImageNet上进行了综合性实验展示精准度下降问题,并对我们的方法做出评估。我们发现:

    (1)特别深的残差网络很容易优化,但当深度增加时对应的“平面”网(即简单的堆栈层)表现出更高的训练误差。

    (2)深度残差网络能够在大大增加深度的同时获得高精准度, 产生的结果本质上优于以前的网络。

    相似的现象同样出现在了CIFAR-10集中,这表明了优化的难度,以及我们方法影响的不仅仅是类似于一个特定的数据集。我们在这个超过100层数据集中提出了成功的训练模型,并探讨了超过1000层的模型。

    在ImageNet分层数据集中,通过极深的残差网络,我们得到了非常好的结果。152层的残差网络在ImageNet中是最深层的网络,同时相比于VGG网络仍然具有较低的复杂性。我们的集成在ImageNet测试集中有3.57%排前5的误差,并且在2015ILSVRC分类竞争中取得第一名。这种极深的陈述在其它识别任务方面也有出色的泛化性能,并带领我们进一步赢得了第一的位置:在ILSVRC和COCO2015竞赛中的,mageNet检测,ImageNet定位,COCO检测,和COCO分割方面。这有力的证据表明,剩余的学习的原则是通用的,我们期望它适用于其它的视觉和非视觉问题。

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,769
精华内容 1,107
关键字:

何凯明