精华内容
下载资源
问答
  • 何凯明去雾MATLAB代码

    2020-07-11 20:00:24
    何凯明 基于暗原色先验的图像去雾MATLAB代码
  • [深度大牛]·计算机视觉王者何凯明

    万次阅读 多人点赞 2019-03-03 09:17:30
    计算机视觉王者何凯明 2017年10月 22 日到10月29日,两年一度的计算机视觉国际顶级会议 International Conference on Computer Vision(ICCV 2017)在意大利威尼斯开幕。其中最佳论文和最佳学生论文奖,又被何凯明...

    补充推荐阅读:

    1.『带你学AI』带你学AI与TensorFlow2实战之入门初探:如何速成深度学习开发

    2.[深度应用]·首届中国心电智能大赛初赛开源Baseline(基于Keras val_acc: 0.88)

    3.[深度应用]·DC竞赛轴承故障检测开源Baseline(基于Keras1D卷积 val_acc:0.99780)

    4.笔者深度学公众号《极简AI》:

    极简AI公众号

    极简AI公众号

    计算机视觉王者何凯明

    2017年10月 22 日到10月29日,两年一度的计算机视觉国际顶级会议 International Conference on Computer Vision(ICCV 2017)在意大利威尼斯开幕。其中最佳论文和最佳学生论文奖,又被何凯明大神再度包揽!

    这位为国争光的何凯明是谁?为何被通称为“大神”?

    何凯明本人

    沉稳的素质让他成为“别人家的孩子”

    何凯明可谓是少年成名,因为他是万千学生和家长都曾“膜拜”的“别人家的孩子”——高考状元。

    能从万千学子中脱颖而出,在2000年那个年代,并不完全是靠“比贫困地区更优异的教学质量和环境”,更多的是自身的努力。作为2003年广东省理科高考状元,何凯明的高考成就也许更多是因为他的沉稳耐心的性格。

    少年时,何凯明没有把一切都抛弃而只顾高考,他年纪轻轻的时候就进入了少年宫学习,他选择了学习绘画。画画最需要耐得住性子,而何凯明却能一下午甚至大半天都坐在写生台前,慢慢画自己想画的。

    何凯明学习文化课也和作画一般,非常耐得住。据他的班主任说,何凯明的成绩非常稳定,也很扎实,发挥非常的稳定。在中学读书期间就获得过全国物理竞赛和省化学竞赛的一等奖。

    一路优秀的何凯明也走上了报送之路,在高考前,他就已经被确定报送清华大学。不过何凯明仍然参加了高考,凭着扎实的基础和稳定的发挥,何凯明的高考成绩比平时更出色,不仅超出了平时的水准,而且一举拿下了理科状元榜首!

    原本何凯明报送清华大学是机械工程及其自动化专业,但凭实力进入清华的何凯明,又一次做出了不一般的选择,他选择了基础科学班。基础科学班是清华大学于1998年开始设立的为培养数学、物理等基础科学培养人才的尖子班,课程压力大,同时要学习数学系、物理系的大部分基础课程。

    在大学期间,何凯明把沉稳发挥到了极致,专心于自己的学业,不仅在2003至2005年期间,连续三年都获得了奖学金,而且还有时间进入了微软亚洲研究院实习。

    本科毕业后,何凯明继续精修,他选择了去香港中文大学攻读研究生,在这期间,他的第一篇论文,《Single ImageHaze Removalusing Dark Channel Prior》,被计算机视觉领域顶级会议CVPR接收并被评为年度最佳论文。同时,由于在微软亚洲研究院的研究工作,何凯明还获得了微软亚洲研究院的奖学金。

    最佳论文得主

    曾经的优等生做的研究“无一例外都没有成功”

    然而,其实没有谁的成功是随随便便或者一帆风顺的。聪明如何凯明,也是如此。他虽然顶着高考状元的身份加入了清华大学,但是在专业学习上也不是“学神”似的随便两下就拿到奖学金。

    更明显的是他在微软亚洲研究院的经历。由于兴趣,何凯明在微软亚洲实验室选择的是视觉计算组,这个给他带来了巨大的挑战。虽然他曾因为兴趣也在大学的时候选修过计算机图形图像的相关课程,然而,并不是科班出身的他,这些兴趣知识完全不足以应对在微软亚洲研究院的研究工作。

    他曾经回忆起那段日子,这样表达当时的困扰:“在阅读文章的时候,我常常都不知道哪些是大家都在用的方法,哪些才是作者的贡献。对我来说,我看见的每一样东西都是新的。”

    可想而知,他当时是什么懵逼状态。

    可是,那又能怎么办呢?只能继续发挥稳定而刻苦的学习精神了。据悉,在其实习的头一年里,何恺明在导师孙剑的指导下,曾经做过些许不同的课题,但是无一例外都没有成功。

    无一例外都没有成功,这对一个曾经的高考状元来说,得是多大的打击?

    可是何凯明没有放弃,他除了发挥他的坚毅忍耐的学习精神,而且深深爱上了研究。这不,他和团队在2015年末举办的ImageNet图像识别大赛中,以“图像识别深度差残学习”系统傲立群雄。

    后来,他还写了一篇让中国人为之骄傲的论文,他一篇关于图像去雾的论文,得到了三个审稿人最高的评分,同时恺明在迈阿密的演讲被观众认为是那届CVPR上最有趣的演讲。

    这是中国人首次在CVPR获此殊荣,是华人的骄傲,而且人人都认为他这份Best Paper Award的奖项来得当之无愧。

    然而,谁知道在论文写作的过程中,何凯明有多痛苦呢?他不仅经常和自己吵架,反复质问自己的观点是否正确,是否合理。好不容易说服了自己,还会遭到孙剑的再度质疑……

    让何凯明出名的图像去雾研究

    因为热爱,所以一次又一次选择走研究的路

    这位大神其实与旷视科技Face++的还大有联系,他们曾经都是一个坑的战友,在微软亚洲研究院还是一个小组,他们还有共同的成绩:“残差网络”。对于这个成绩,孙剑在接受采访时,曾这样表示:

    “要说一下做出这个残差网络完全是团队,何凯明、张祥雨、任少卿和我的集体智慧结晶,缺少任何一人都不敢说能走得到这一步,中间经历很多的失败和曲折。我深感能把我们 4 个不同技能的人凑在一起,打下一个「大怪兽」的幸运;和他们在一起忘我的研究过程是我研究生涯中最难忘的经历之一。”

    与孙剑的选择不同,何凯明貌似还走得是那条学院路。并且,进一步地发扬光大。

    他选择了去Facebook,担任其AI 实验室研究科学家,选择了进一步走学术之路。

    在Facebook AI 实验室研究期间,何凯明仍然醉心于研究,而且颇有建树。

    现在,他的最新研究成果MaskR-CNN公布,这是一个概念上简单,灵活,而且通用的对象实例分割框架,在 COCO 的实例分割,边界框对象检测,人物关键点检测 3个任务上均优于现有的单一模型。

    除了图像去雾这个领域的成就,何凯明还在默默地继续耕耘。在今年的ICCV中,Facebook有15篇论文被收录,其中五分之一都有何恺明的名字,有多达三篇论文被收录。

     

    何凯明和孙剑曾是伙伴

    有人这样表示,同行的孙剑选择了加盟企业,而何凯明似乎还在不知人间疾苦地奋斗在研究领域,道不相同但同样的是为领域及行业所做的贡献。这个说话有理,孙剑那种是真正的博士,何凯明这样的博士也可以叫做真正的Doctor。

     

    欢迎大家关注小宋公众号《极简AI》带你学深度学习:

    基于深度学习的理论学习与应用开发技术分享,笔者会经常分享深度学习干货内容,大家在学习或者应用深度学习时,遇到什么问题也可以与我在上面交流知无不答。

    出自CSDN博客专家&知乎深度学习专栏作家@小宋是呢

    展开全文
  • 何凯明去噪论文翻译

    2019-01-11 17:40:48
    何凯明的 Single_Image_Haze_Removal_Using_Dark_Channel_Prior中文翻译版
  • 去雾算法matlab何凯明

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

    2015-01-04 16:23:07
    何凯明博士的引导滤波,经典的图像去雾算法MATLAB实现
  • 何凯明 残差网络 ppt

    2018-03-21 20:35:28
    何凯明大神的残差网络,必须要看,必须要看,必须要看!!!
  • slow-fast network 何凯明最新论文源码,内含部分注释
  • 何凯明的引导滤波去雾算法,内有图像,main文件直接运行
  • 导向滤波-何凯明

    热门讨论 2013-10-04 17:26:57
    导向滤波,何凯明的最新成果,主要用于去雾
  • 何凯明有关图像方面的三篇论文
  • 何凯明的深度残差网络 PPT 对应相应论文的PPT 仅供学习交流使用
  • 图像去雾,何凯明

    万次阅读 多人点赞 2016-07-01 14:30:39
    在图像去雾这个领域,几乎没有人不知道《Single Image Haze Removal Using Dark Channel Prior》这篇文章,该...作者何凯明博士,2007年清华大学毕业,2011年香港中文大学博士毕业,可谓是功力深厚,感叹于国内...
    
    
    

    在图像去雾这个领域,几乎没有人不知道《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内(以灰度图为导向图)。

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

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

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

       

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

       

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

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

         

         还有:

      

      

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

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

     

    导向滤波的相关资料:

     

    另外,代码里我们使用了导向滤波函数,导向滤波代码来自何恺明博士,读者可以访问他的网页获得源码,已经论文的原文,链接如下:

    http://research.microsoft.com/en-us/um/people/kahe/

    另外,下面这个博客里有一些关于导向滤波的比较通俗的讨论,可以作为阅读论文原文时的辅助材料:

    http://blog.inet198.cn/?aichipmunk/article/details/20704681

     
     

     

     

    展开全文
  • 何凯明博士暗通道去雾算法的 matlab 源码,打开文件内的 test.m 文件即可运行。
  • 何凯明所作MASK R-CNN

    2017-12-08 15:49:53
    大神何凯明所作的MASK-CNN,里面包含源代码和论文,是一种在有效检测目标的同时输出高质量的实例分割mask。
  • 何凯明 基于暗原色先验的图像去雾MATLAB代码,何恺明,孙剑,汤晓鸥香港中文大学微软亚洲研究院,大家可看看
  • 计算机视觉大佬–何凯明 http://kaiminghe.com/index.html

    计算机视觉大佬–何凯明

    http://kaiminghe.com/index.html
    在这里插入图片描述

    展开全文
  • 港大 何凯明 haze removal 代码 自己添加部分也有
  • 何凯明博士的图像去雾算法源代码,经调试可直接运行处理模糊图片
  • 何凯明博士的去雾算法,是一大经典,此代码复现何博士的论文,达到的优秀的去雾效果,在现实中,应用场景还挺多的。。。
  • Single Image Haze Removal Using Dark Channel Prior 图像去雾 原文及翻译 何凯明
  • 秒懂!何凯明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分割方面。这有力的证据表明,剩余的学习的原则是通用的,我们期望它适用于其它的视觉和非视觉问题。

     

    展开全文
  • 何凯明计算机视觉去雾源码+去雾小应用,这篇论文研究的问题是图像的去雾技术,它可以还原图像的颜色和能见度,同时也能利用雾的浓度来估计物体的距离,这些在计算机视觉上都有重要应用(例如三维重建,物体识别)
  • 何凯明最新成果PointRend解析

    千次阅读 2019-12-21 23:33:22
    文章目录**PointRend,是何凯明及其团队对图像分割领域的又一次最新探索,将图像分割当做一个渲染问题,思路清奇,源于经典而高于经典,又是一次突破传统的成功。**作者简介论文摘要传统实例分割是什么样子的算法有...
  • 何凯明2009年的IEEE最佳论文翻译,基于暗通道先验的图像去雾
  • 何凯明暗通道先验法 原文 翻译 ppt 及大气光模型论文 和图像除雾相关的资料 Single Image Haze Removal Using Dark Channel Prior Optimized contrast enhancement for realtime image and video dehazing modeling...
  • 何凯明的 深度残差网络,在 ICML2016 上的 tutorial 演讲以及相关 PPT 整理 从网上看到现在整理成了 pdf ,方便大家查阅。
  • ICCV2015 tutorial convolutional feature maps Kaiming He ICCV 2015 CNN 卷积神经网络 目标检测 教程 何凯明

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 687
精华内容 274
关键字:

何凯明