图像处理中深度树学习

2019-06-24 08:19:49 weixin_42137700 阅读数 691

https://www.toutiao.com/a6703122083485843972/

 

 2019-06-16 21:37:09

 

深度学习不是万灵药!神经网络3D重建只是图像分类

 

【新智元导读】随着深度学习的大热,许多研究都致力于如何从单张图片生成3D模型。但近期一项研究表明,几乎所有基于深度神经网络的3D中重建工作,实际上并不是重建,而是图像分类。深度学习并不是万能的!

深度学习并不是万灵药。

近几年,随着深度学习的大热,许多研究攻克了如何从单张图片生成3D模型。从某些方面似乎再次验证了深度学习的神奇——doing almost the impossible

但是,最近一篇文章却对此提出了质疑:几乎所有这些基于深度神经网络的3D重建的工作,实际上并不是进行重建,而是进行图像分类

深度学习不是万灵药!神经网络3D重建只是图像分类

 

arXiv地址:

https://arxiv.org/pdf/1905.03678.pdf

在这项工作中,研究人员建立了两种不同的方法分别执行图像分类和检索。这些简单的基线方法在定性和定量上都比最先进的方法产生的结果要更好。

正如伯克利马毅教授评价:

深度学习不是万灵药!神经网络3D重建只是图像分类

 

几乎所有这些基于深度神经网络的3D重建的工作(层出不穷令人眼花缭乱的State of the Art top conferences 论文),其实还比不上稍微认真一点的nearest neighbor baselines。没有任何工具或算法是万灵药。至少在三维重建问题上,没有把几何关系条件严格用到位的算法,都是不科学的——根本谈不上可靠和准确。

并非3D重建,而只是图像分类?

基于对象(object-based)的单视图3D重建任务是指,在给定单个图像的情况下生成对象的3D模型。

深度学习不是万灵药!神经网络3D重建只是图像分类

 

如上图所示,推断一辆摩托车的3D结构需要一个复杂的过程,它结合了低层次的图像线索、有关部件结构排列的知识和高层次的语义信息。

研究人员将这种情况称为重建和识别:

  • 重构意味着使用纹理、阴影和透视效果等线索对输入图像的三维结构进行推理。
  • 识别相当于对输入图像进行分类,并从数据库中检索最合适的3D模型。

虽然在其它文献中已经提出了各种体系结构和3D表示,但是用于单视图3D理解的现有方法都使用编码器——解码器结构,其中编码器将输入图像映射到潜在表示,而解码器执行关于3D的非平凡(nontrivial)推理,并输出空间的结构。

为了解决这一任务,整个网络既要包含高级信息,也要包含低级信息。

而在这项工作中,研究人员对目前最先进的编解码器方法的结果进行了分析,发现它们主要依靠识别来解决单视图3D重建任务,同时仅显示有限的重建能力。

为了支持这一观点,研究人员设计了两个纯识别基线:一个结合了3D形状聚类和图像分类,另一个执行基于图像的3D形状检索。

在此基础上,研究人员还证明了即使不需要明确地推断出物体的三维结构,现代卷积网络在单视图3D重建中的性能是可以超越的。

在许多情况下,识别基线的预测不仅在数量上更好,而且在视觉上看起来更有吸引力。

研究人员认为,卷积网络在单视图3D重建任务中是主流实验程序的某些方面的结果,包括数据集的组成和评估协议。它们允许网络找到一个快捷的解决方案,这恰好是图像识别

纯粹的识别方法,性能优于先进的神经网络

实验基于现代卷积网络,它可以从一张图像预测出高分辨率的三维模型。

方法的分类是根据它们的输出表示对它们进行分类:体素网格(voxel grids)、网格(meshes)、点云和深度图。为此,研究人员选择了最先进的方法来覆盖主要的输出表示,或者在评估中已经清楚地显示出优于其他相关表示。

研究人员使用八叉树生成网络(Octree Generating Networks,OGN)作为直接在体素网格上预测输出的代表性方法。

与早期使用这种输出表示的方法相比,OGN通过使用八叉树有效地表示所占用的空间,可以预测更高分辨率的形状。

还评估了AtlasNet作为基于表面的方法的代表性方法。AtlasNet预测了一组参数曲面,并在操作这种输出表示的方法中构成了最先进的方法。它被证明优于直接生成点云作为输出的唯一方法,以及另一种基于八叉树的方法。

最后,研究人员评估了该领域目前最先进的Matryoshka Networks。该网络使用由多个嵌套深度图组成的形状表示,,这些深度图以体积方式融合到单个输出对象中。

对于来自AtlasNet的基于IoU的表面预测评估,研究人员将它们投影到深度图,并进一步融合到体积表示。 对于基于表面的评估指标,使用移动立方体算法从体积表示中提取网格。

研究人员实现了两个简单的基线,仅从识别的角度来处理问题。

第一种方法是结合图像分类器对训练形状进行聚类;第二个是执行数据库检索。

在聚类方面的基线中,使用K-means算法将训练形状聚类为K个子类别。

在检索基线方面,嵌入空间由训练集中所有三维形状的两两相似矩阵构造,通过多维尺度将矩阵的每一行压缩为一个低维描述符。

研究人员根据平均IoU分数对所有方法进行标准比较。

深度学习不是万灵药!神经网络3D重建只是图像分类

 

研究人员发现,虽然最先进的方法有不同体系结构的支持,但在执行的时候却非常相似。

有趣的是,检索基线是一种纯粹的识别方法,在均值和中位数IoU方面都优于所有其他方法。简单的聚类基线具有竞争力,性能优于AtlasNet和OGN。

但研究人员进一步观察到,一个完美的检索方法(Oracle NN)的性能明显优于所有其他方法。值得注意的是,所有方法的结果差异都非常大(在35%到50%之间)。

这意味着仅依赖于平均IoU的定量比较不能提供这种性能水平的全貌。 为了更清楚地了解这些方法的行为,研究人员进行了更详细的分析。

深度学习不是万灵药!神经网络3D重建只是图像分类

 

每类mIoU比较。

总的来说,这些方法在不同的类之间表现出一致的相对性能。检索基线为大多数类生成最佳重构。所有类和方法的方差都很大。

深度学习不是万灵药!神经网络3D重建只是图像分类

 

mIoU与每个类的训练样本数量。

研究人员发现一个类的样本数量和这个类的mIoU分数之间没有相关性。所有方法的相关系数c均接近于零。

深度学习不是万灵药!神经网络3D重建只是图像分类

 

定性的结果

聚类基线产生的形状质量与最先进的方法相当。 检索基线通过设计返回高保真形状,但细节可能不正确。 每个样本右下角的数字表示IoU。

深度学习不是万灵药!神经网络3D重建只是图像分类

 

左:为所选类分配IoU。 基于解码器的方法和显式识别基线的类内分布是类似的。 Oracle NN的发行版在大多数类中都有所不同。 右图:成对Kolmogorov-Smirnov检验未能拒绝两个分布的无效假设的类数的热图。

研究中的一些问题

参照系的选择

深度学习不是万灵药!神经网络3D重建只是图像分类

 

我们尝试使用视角预测网络对聚类基线方法进行扩展,该方法将重点回归摄像头的方位角和仰角等规范框架,结果失败了,因为规范框架对每个对象类都有不同的含义,即视角网络需要使用类信息来解决任务。我们对检索基线方法进行了重新训练,将每个训练视图作为单独样本来处理,从而为每个单独的对象提供空间。

量度标准

平均IoU通常在基准测试中被用作衡量单视图图像重建方法的主要量化指标。如果将其作为最优解的唯一衡量指标,就可能会出现问题,因为它在对象形状的质量值足够高时才能有效预测。如果该值处于中低水平,表明两个对象的形状存在显着差异

深度学习不是万灵药!神经网络3D重建只是图像分类

 

 

 

如上图所示,将一个汽车模型与数据集中的不同形状的对象进行了比较,只有 IoU分数比较高(最右两张图)时才有意义,即使IoU=0.59,两个目标可能都是完全不同的物体,比较相似度失去了意义。

倒角距离(Chamfer distance)

深度学习不是万灵药!神经网络3D重建只是图像分类

 

如上图所示,两者目标椅子与下方的椅子的下半部分完美匹配,但上半部分完全不同。但是根据得分,第二个目标要好于第一个。由此来看,倒角距离这个量度会被空间几何布局显著干扰。为了可靠地反映真正的模型重建性能,好的量度应该具备对几何结构变化的高鲁棒性。

F-score

我们绘制了以观察者为中心的重建方式的F分数的不同距离阈值d(左)。在 d =重建体积边长的2%的条件下,F分数绝对值与当前范围的 mIoU分数相同,这并不能有效反映模型的预测质量。

深度学习不是万灵药!神经网络3D重建只是图像分类

 

因此,我们建议将距离阈值设为重建模型体积边长的1%以下来考察F值。如上图(右)中所示,在阈值d = 1%时,F分数为0.5以上。只有一小部分模型的形状被精确构建出来,预设任务仍然远未解决。我们的检索基线方法不再具有明显的优势,进一步表明使用纯粹的识别方法很难解决这个问题。

深度学习不是万灵药!神经网络3D重建只是图像分类

 

现有的基于CNN的方法在精度上表现良好,但丢失了目标的部分结构

未来展望

在这项研究中,研究人员通过重建和识别来推断单视图3D重建方法的范围。

工作展示了简单的检索基线优于最新、最先进的方法。分析表明,目前最先进的单视图三维重建方法主要用于识别,而不是重建。

研究人员确定了引起这种问题的一些因素,并提出了一些建议,包括使用以视图为中心的坐标系和鲁棒且信息量大的评估度量(F-score)。

另一个关键问题是数据集组合,虽然问题已经确定,但没有处理。研究人员正努力在以后的工作中纠正这一点。

参考链接:

https://arxiv.org/pdf/1905.03678.pdf

2018-09-16 11:26:46 weixin_41923961 阅读数 3631

用深度学习玩图像的七重关卡

许铁-巡洋舰科技2 天前

第一个重境界: 图像识别

 

如果你开始了解深度学习的图像处理, 你接触的第一个任务一定是图像识别 :

比如把你的爱猫输入到一个普通的CNN网络里, 看看它是喵咪还是狗狗。

 

一个最普通的CNN, 比如像这样几层的CNN鼻祖Lenet, 如果你有不错的数据集(比如kaggle猫狗大战)都可以给出一个还差强人意的分类结果(80%多准确率), 虽然不是太高。

 

当然,如果你再加上对特定问题的一些知识, 也可以顺便识别个人脸啥的,开个startup叫face 减减什么:

会玩的, 也可以顺别识别个猪脸什么哒(我觉得长得都一样哦), 这样搞出来每个猪的身份, 对于高质量猪肉的销售, 真是大有裨益的。

或者看看植物都有个什么病害什么的,像这样不同的病斑, 人都懒得看的, 它可以给你看出来。 植物保护的人可以拿着手机下田了。

Ronneberger, Olaf, Philipp Fischer, and Thomas Brox. "U-net: Convolutional networks for biomedical image segmentation." International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, Cham, 2015.

 

虽然植物保护真的很好用,分类问做就了还真是挺无聊的。

我们进化的方向,也就是用更高级的网络结构取得更好的准确率,比如像下图这样的残差网络(已经可以在猫狗数据集上达到99.5%以上准确率)。分类做好了你会有一种成为深度学习大师,拿着一把斧子眼镜里都是钉子的幻觉。 分类问题之所以简单, 一要归功于大量标记的图像, 二是分类是一个边界非常分明的问题, 即使机器不知道什么是猫什么是狗, 看出点区别还是挺容易的, 如果你给机器几千几万类区分, 机器的能力通过就下降了(再复杂的网络,在imagenet那样分1000个类的问题里,都很难搞到超过80%的准确率)。

He, Kaiming, et al. "Identity mappings in deep residual networks." European Conference on Computer Vision. Springer International Publishing, 2016.

 

第二重境界 : 物体检测

 

很快你发现,分类的技能在大部分的现实生活里并没有鸟用。因为现实中的任务啊, 往往是这样的:

或者这样的:

那么多东西在一起,你拿猫狗大头照训练的分类网络一下子就乱了阵脚。 即使是你一个图片里有一个猫还有一个狗,甚至给猫加点噪声,都可以使你的分类网络分寸大乱。

现实中, 哪有那么多图片, 一个图里就是一个猫或者美女的大图,更多的时候, 一张图片里的东西, 那是多多的, 乱乱的,没有什么章法可言的, 你需要自己做一个框, 把你所需要看的目标给框出来, 然后, 看看这些东西是什么 。

于是你来到机器视觉的下一层挑战 - 目标检测(从大图中框出目标物体并识别), 随之而来的是一个新的网络架构, 又被称为R - CNN, 图片检测网络 , 这个网络不仅可以告诉你分类,还可以告诉你目标物体的坐标, 即使图片里有很多目标物体, 也一一给你找出来。

 

Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.

 

万军斩你首级那是杠杠的,在众多路人甲中识别嫌疑犯,也是轻而易举, 安防的人听着要按捺不住了。

今年出现的YOLO算法更是实现了快速实时的物体检测,你一路走过就告诉你视线里都有什么在哪里,要知道这在无人驾驶里是何等的利器。

 

YOLO快速检测法Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.

 

当然, 到这里你依然最终会觉得无聊, 即使网络可以已经很复杂, 不过是一个CNN网络(推荐区域),在加上一层CNN网络做分类和回归。 能不能干点别的?

 

第三重境界 : 图像切割

啊哈, 这就来到了第三个关卡, 你不仅需要把图片中边边角角的物体给检测出来, 你还要做这么一个猛料的工作, 就是把它从图片中扣出来。 要知道, 刚出生的婴儿分不清物体的边界, 比如桌上有苹果这种事, 什么是桌子,什么是苹果,为什么苹果不是占在桌子上的? 所以, 网络能不能把物体从一个图里抠出来, 事关它是否真的像人一样把握了视觉的本质。 这也算是对它的某种“图灵测试” 。 而把这个问题简化,我们无非是在原先图片上生成出一个原图的“mask”, 面具,有点像phtoshop里的蒙版的东西。

所谓抠图

Drozdzal, Michal, et al. "The importance of skip connections in biomedical image segmentation." International Workshop on Large-Scale Annotation of Biomedical Data and Expert Label Synthesis. Springer International Publishing, 2016.

注意,这个任务里,我们是要从一个图片里得到另一个图片哦! 生成的面具是另一个图片, 这时候,所谓的U型网络粉墨登场,注意这是我们的第一个生成式的模型。 它的组成单元依然是卷积,但是却加入了maxpooling的反过程升维采样。

 

这个Segmentation任务, 作用不可小瞧哦, 尤其对于科研口的你, 比如现在私人卫星和无人机普及了,要不要去看看自己小区周围的地貌, 看是不是隐藏了个金库? 清清输入, 卫星图片一栏无余。 哪里有树, 哪里有水,哪里有军事基地,不需要人,全都给你抠出来。

 

 

如果你要数个细胞啥的 ,都是挺容易的,给它变成这样的轮廓不就你得了。

 

第四重境界:

我们开始fashion起来, 如果你是淘宝服装小店的老板 ,想让客户输入一张服装的图片,然后得到一组推荐的服装, 来个以图搜图的功能怎么搞呢? 注意啊,我可以从网络上爬一大堆图出来,但是这些数据是没有标注的。怎么办? 铁哥告你还是有的搞,这个搞法,就是聚类。

铁哥教你最简单的一招聚类哦,那就是, 把图片统统放进卷积网络,但是我们不提取分类,而只是提取一些网络中间层的特征, 这些特征有点像每个图片的视觉二维码,然后我们对这些二维码做一个k-means聚类, 也会得到意想不到的效果。 为什么要深度? 因为深度提取的特征,那是与众不同的。

然后以图搜图呢? 不过是找到同一聚类里的其它图片啊。

在聚类的基础上, 就可以做个搜索!

 

第五层境界 :

我们开始晋升为仰望星空的人, 之前那些分类赚钱的应用太无聊了。 机器视觉搞科学怎么港? 作为一群仰望星空后观察细胞的人,我们最常发现的是我们得到的天文或者细胞图片的噪声实在太大了, 这简直没法忍啊, 然后, 深度学习给了你一套降噪和恢复图像的方法。 一个叫auto-encoder的工具, 起到了很大的作用 , 刷的一下,图像就清楚了。

 

这还不是最酷炫的,那个应用了博弈理论的对抗学习, 也可以帮你谋杀噪点! 如果你会对抗所谓GAN, 也是一种图像生成的工具, 让网络去掉噪声的图片,与没有噪声的自然图片, 连卷积网络都判别不出来,对, 就是这样!

Schawinski, Kevin, et al. "Generative adversarial networks recover features in astrophysical images of galaxies beyond the deconvolution limit." Monthly Notices of the Royal Astronomical Society: Letters 467.1 (2017): L110-L114.

 

 

第六重境界 :

 

在工业界赚够了钱,科学也太nerd了, 我们来玩艺术思考哲学 ,第一招, 图像风格迁移,请见铁哥之前的文章

 

 

然而真正能玩好这一事项的,还是那个刚刚提过的对抗学习GAN, 比如大名鼎鼎的CycleGAN, 几乎可以实现一种你自定义的“图像翻译” 功能,而且你不用做标注哦, 拿出冬天和夏天的两组图片, 它会自动的在两组图片中找出对应来。

 

Zhu, Jun-Yan, et al. "Unpaired image-to-image translation using cycle-consistent adversarial networks." arXiv preprint arXiv:1703.10593 (2017).

 

第七重境界:

 

图像翻译也懒的玩了, 你神经网络不是号称能够理解图像,看你来个无中生有,在噪声里生成图片来?

 

对,依然是GAN,而且是最基础的卷积GAN (DCGAN)就可以给你干出来。

看看GAN所幻想的宾馆情景, 你能想到是计算机做的图吗? 哈哈哈!

Goodfellow, Ian, et al. "Generative adversarial nets." Advances in neural information processing systems. 2014.

 

写到这里, 我自己都觉得GAN是非常有前途的,有前途的,有前途的,以前我还以为只是好玩呢。

这里展示的七级浮屠,也不过深度学习被人类discover的冰山一角, 醉卧沙场君莫笑, 古来征战几人回。

2018-04-06 09:45:48 dongjiebox 阅读数 10662

本文转自知乎专栏:https://zhuanlan.zhihu.com/p/32177354

一方面为做资料整理用,方便后期回顾,另一方面转需

--------------------------------------------------

第一个重境界: 图像识别

如果你开始了解深度学习的图像处理, 你接触的第一个任务一定是图像识别 :比如把你的爱猫输入到一个普通的CNN网络里, 看看它是喵咪还是狗狗。

一个最普通的CNN, 比如像这样几层的CNN鼻祖Lenet, 如果你有不错的数据集(比如kaggle猫狗大战)都可以给出一个还差强人意的分类结果(80%多准确率), 虽然不是太高。

当然,如果你再加上对特定问题的一些知识, 也可以顺便识别个人脸啥的,开个startup叫face 减减什么:

会玩的, 也可以顺别识别个猪脸什么哒(我觉得长得都一样哦), 这样搞出来每个猪的身份, 对于高质量猪肉的销售, 真是大有裨益的。

或者看看植物都有个什么病害什么的,像这样不同的病斑, 人都懒得看的, 它可以给你看出来。 植物保护的人可以拿着手机下田了。

Ronneberger, Olaf, Philipp Fischer, and Thomas Brox. "U-net: Convolutional networks for biomedical image segmentation." International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, Cham, 2015.

虽然植物保护真的很好用,分类问做就了还真是挺无聊的。

我们进化的方向,也就是用更高级的网络结构取得更好的准确率,比如像下图这样的残差网络(已经可以在猫狗数据集上达到99.5%以上准确率)。分类做好了你会有一种成为深度学习大师,拿着一把斧子眼镜里都是钉子的幻觉。 分类问题之所以简单, 一要归功于大量标记的图像, 二是分类是一个边界非常分明的问题, 即使机器不知道什么是猫什么是狗, 看出点区别还是挺容易的, 如果你给机器几千几万类区分, 机器的能力通过就下降了(再复杂的网络,在imagenet那样分1000个类的问题里,都很难搞到超过80%的准确率)。

He, Kaiming, et al. "Identity mappings in deep residual networks." European Conference on Computer Vision. Springer International Publishing, 2016.

第二重境界 : 物体检测

很快你发现,分类的技能在大部分的现实生活里并没有鸟用。因为现实中的任务啊, 往往是这样的:

或者这样的:

那么多东西在一起,你拿猫狗大头照训练的分类网络一下子就乱了阵脚。 即使是你一个图片里有一个猫还有一个狗,甚至给猫加点噪声,都可以使你的分类网络分寸大乱。

现实中, 哪有那么多图片, 一个图里就是一个猫或者美女的大图,更多的时候, 一张图片里的东西, 那是多多的, 乱乱的,没有什么章法可言的, 你需要自己做一个框, 把你所需要看的目标给框出来, 然后, 看看这些东西是什么 。

于是你来到机器视觉的下一层挑战 - 目标检测(从大图中框出目标物体并识别), 随之而来的是一个新的网络架构, 又被称为R - CNN, 图片检测网络 , 这个网络不仅可以告诉你分类,还可以告诉你目标物体的坐标, 即使图片里有很多目标物体, 也一一给你找出来。

Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.

万军斩你首级那是杠杠的,在众多路人甲中识别嫌疑犯,也是轻而易举, 安防的人听着要按捺不住了。

今年出现的YOLO算法更是实现了快速实时的物体检测,你一路走过就告诉你视线里都有什么在哪里,要知道这在无人驾驶里是何等的利器。

YOLO快速检测法Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.

当然, 到这里你依然最终会觉得无聊, 即使网络可以已经很复杂, 不过是一个CNN网络(推荐区域),在加上一层CNN网络做分类和回归。 能不能干点别的?

第三重境界 : 图像切割

啊哈, 这就来到了第三个关卡, 你不仅需要把图片中边边角角的物体给检测出来, 你还要做这么一个猛料的工作, 就是把它从图片中扣出来。 要知道, 刚出生的婴儿分不清物体的边界, 比如桌上有苹果这种事, 什么是桌子,什么是苹果,为什么苹果不是占在桌子上的? 所以, 网络能不能把物体从一个图里抠出来, 事关它是否真的像人一样把握了视觉的本质。 这也算是对它的某种“图灵测试” 。 而把这个问题简化,我们无非是在原先图片上生成出一个原图的“mask”, 面具,有点像phtoshop里的蒙版的东西。

所谓抠图

Drozdzal, Michal, et al. "The importance of skip connections in biomedical image segmentation." International Workshop on Large-Scale Annotation of Biomedical Data and Expert Label Synthesis. Springer International Publishing, 2016.

注意,这个任务里,我们是要从一个图片里得到另一个图片哦! 生成的面具是另一个图片, 这时候,所谓的U型网络粉墨登场,注意这是我们的第一个生成式的模型。 它的组成单元依然是卷积,但是却加入了maxpooling的反过程升维采样。

这个Segmentation任务, 作用不可小瞧哦, 尤其对于科研口的你, 比如现在私人卫星和无人机普及了,要不要去看看自己小区周围的地貌, 看是不是隐藏了个金库? 清清输入, 卫星图片一栏无余。 哪里有树, 哪里有水,哪里有军事基地,不需要人,全都给你抠出来。

如果你要数个细胞啥的 ,都是挺容易的,给它变成这样的轮廓不就你得了。

第四重境界:

我们开始fashion起来, 如果你是淘宝服装小店的老板 ,想让客户输入一张服装的图片,然后得到一组推荐的服装, 来个以图搜图的功能怎么搞呢? 注意啊,我可以从网络上爬一大堆图出来,但是这些数据是没有标注的。怎么办? 铁哥告你还是有的搞,这个搞法,就是聚类。

铁哥教你最简单的一招聚类哦,那就是, 把图片统统放进卷积网络,但是我们不提取分类,而只是提取一些网络中间层的特征, 这些特征有点像每个图片的视觉二维码,然后我们对这些二维码做一个k-means聚类, 也会得到意想不到的效果。 为什么要深度? 因为深度提取的特征,那是与众不同的。

然后以图搜图呢? 不过是找到同一聚类里的其它图片啊。

在聚类的基础上, 就可以做个搜索!

第五层境界 :

我们开始晋升为仰望星空的人, 之前那些分类赚钱的应用太无聊了。 机器视觉搞科学怎么港? 作为一群仰望星空后观察细胞的人,我们最常发现的是我们得到的天文或者细胞图片的噪声实在太大了, 这简直没法忍啊, 然后, 深度学习给了你一套降噪和恢复图像的方法。 一个叫auto-encoder的工具, 起到了很大的作用 , 刷的一下,图像就清楚了。

这还不是最酷炫的,那个应用了博弈理论的对抗学习, 也可以帮你谋杀噪点! 如果你会对抗所谓GAN, 也是一种图像生成的工具, 让网络去掉噪声的图片,与没有噪声的自然图片, 连卷积网络都判别不出来,对, 就是这样!

Schawinski, Kevin, et al. "Generative adversarial networks recover features in astrophysical images of galaxies beyond the deconvolution limit." Monthly Notices of the Royal Astronomical Society: Letters 467.1 (2017): L110-L114.

第六重境界 :

在工业界赚够了钱,科学也太nerd了, 我们来玩艺术思考哲学 ,第一招, 图像风格迁移,请见怎么样用深度学习取悦你的女朋友(有代码):

然而真正能玩好这一事项的,还是那个刚刚提过的对抗学习GAN, 比如大名鼎鼎的CycleGAN, 几乎可以实现一种你自定义的“图像翻译” 功能,而且你不用做标注哦, 拿出冬天和夏天的两组图片, 它会自动的在两组图片中找出对应来。

Zhu, Jun-Yan, et al. "Unpaired image-to-image translation using cycle-consistent adversarial networks." arXiv preprint arXiv:1703.10593 (2017).

第七重境界:

图像翻译也懒的玩了, 你神经网络不是号称能够理解图像,看你来个无中生有,在噪声里生成图片来?

对,依然是GAN,而且是最基础的卷积GAN (DCGAN)就可以给你干出来。

看看GAN所幻想的宾馆情景, 你能想到是计算机做的图吗? 哈哈哈!

Goodfellow, Ian, et al. "Generative adversarial nets." Advances in neural information processing systems. 2014.

写到这里, 我自己都觉得GAN是非常有前途的,有前途的,有前途的,以前我还以为只是好玩呢。

这里展示的七级浮屠,也不过深度学习被人类discover的冰山一角, 醉卧沙场君莫笑, 古来征战几人回。

给你一个稍微清晰一些的大纲:


2018-08-12 20:29:37 luolan9611 阅读数 9751

一篇很不错的文章,分享给博客的朋友们~~~~~

作者:许铁-巡洋舰科技
链接:https://www.zhihu.com/question/21665775/answer/281946017
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

第一个重境界: 图像识别

如果你开始了解深度学习的图像处理, 你接触的第一个任务一定是图像识别 :

比如把你的爱猫输入到一个普通的CNN网络里, 看看它是喵咪还是狗狗。

 

一个最普通的CNN, 比如像这样几层的CNN鼻祖Lenet, 如果你有不错的数据集(比如kaggle猫狗大战)都可以给出一个还差强人意的分类结果(80%多准确率), 虽然不是太高。

 

当然,如果你再加上对特定问题的一些知识, 也可以顺便识别个人脸啥的,开个startup叫face 减减什么:

会玩的, 也可以顺别识别个猪脸什么哒(我觉得长得都一样哦), 这样搞出来每个猪的身份, 对于高质量猪肉的销售, 真是大有裨益的。

或者看看植物都有个什么病害什么的,像这样不同的病斑, 人都懒得看的, 它可以给你看出来。 植物保护的人可以拿着手机下田了。

Ronneberger, Olaf, Philipp Fischer, and Thomas Brox. "U-net: Convolutional networks for biomedical image segmentation." International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, Cham, 2015.

虽然植物保护真的很好用,分类问做就了还真是挺无聊的。

我们进化的方向,也就是用更高级的网络结构取得更好的准确率,比如像下图这样的残差网络(已经可以在猫狗数据集上达到99.5%以上准确率)。分类做好了你会有一种成为深度学习大师,拿着一把斧子眼镜里都是钉子的幻觉。 分类问题之所以简单, 一要归功于大量标记的图像, 二是分类是一个边界非常分明的问题, 即使机器不知道什么是猫什么是狗, 看出点区别还是挺容易的, 如果你给机器几千几万类区分, 机器的能力通过就下降了(再复杂的网络,在imagenet那样分1000个类的问题里,都很难搞到超过80%的准确率)。

He, Kaiming, et al. "Identity mappings in deep residual networks." European Conference on Computer Vision. Springer International Publishing, 2016.

 

第二重境界 : 物体检测

 

很快你发现,分类的技能在大部分的现实生活里并没有鸟用。因为现实中的任务啊, 往往是这样的:

或者这样的:

那么多东西在一起,你拿猫狗大头照训练的分类网络一下子就乱了阵脚。 即使是你一个图片里有一个猫还有一个狗,甚至给猫加点噪声,都可以使你的分类网络分寸大乱。

现实中, 哪有那么多图片, 一个图里就是一个猫或者美女的大图,更多的时候, 一张图片里的东西, 那是多多的, 乱乱的,没有什么章法可言的, 你需要自己做一个框, 把你所需要看的目标给框出来, 然后, 看看这些东西是什么 。

于是你来到机器视觉的下一层挑战 - 目标检测(从大图中框出目标物体并识别), 随之而来的是一个新的网络架构, 又被称为R - CNN, 图片检测网络 , 这个网络不仅可以告诉你分类,还可以告诉你目标物体的坐标, 即使图片里有很多目标物体, 也一一给你找出来。

 

 

Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.

 

万军斩你首级那是杠杠的,在众多路人甲中识别嫌疑犯,也是轻而易举, 安防的人听着要按捺不住了。

今年出现的YOLO算法更是实现了快速实时的物体检测,你一路走过就告诉你视线里都有什么在哪里,要知道这在无人驾驶里是何等的利器。

YOLO快速检测法Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.

 

当然, 到这里你依然最终会觉得无聊, 即使网络可以已经很复杂, 不过是一个CNN网络(推荐区域),在加上一层CNN网络做分类和回归。 能不能干点别的?

 

第三重境界 : 图像切割

啊哈, 这就来到了第三个关卡, 你不仅需要把图片中边边角角的物体给检测出来, 你还要做这么一个猛料的工作, 就是把它从图片中扣出来。 要知道, 刚出生的婴儿分不清物体的边界, 比如桌上有苹果这种事, 什么是桌子,什么是苹果,为什么苹果不是占在桌子上的? 所以, 网络能不能把物体从一个图里抠出来, 事关它是否真的像人一样把握了视觉的本质。 这也算是对它的某种“图灵测试” 。 而把这个问题简化,我们无非是在原先图片上生成出一个原图的“mask”, 面具,有点像phtoshop里的蒙版的东西。

 

rozdzal, Michal, et al. "The importance of skip connections in biomedical image segmentation." International Workshop on Large-Scale Annotation of Biomedical Data and Expert Label Synthesis. Springer International Publishing, 2016.

注意,这个任务里,我们是要从一个图片里得到另一个图片哦! 生成的面具是另一个图片, 这时候,所谓的U型网络粉墨登场,注意这是我们的第一个生成式的模型。 它的组成单元依然是卷积,但是却加入了maxpooling的反过程升维采样。

 

这个Segmentation任务, 作用不可小瞧哦, 尤其对于科研口的你, 比如现在私人卫星和无人机普及了,要不要去看看自己小区周围的地貌, 看是不是隐藏了个金库? 清清输入, 卫星图片一栏无余。 哪里有树, 哪里有水,哪里有军事基地,不需要人,全都给你抠出来。

如果你要数个细胞啥的 ,都是挺容易的,给它变成这样的轮廓不就你得了。

 

第四重境界:

我们开始fashion起来, 如果你是淘宝服装小店的老板 ,想让客户输入一张服装的图片,然后得到一组推荐的服装, 来个以图搜图的功能怎么搞呢? 注意啊,我可以从网络上爬一大堆图出来,但是这些数据是没有标注的。怎么办? 铁哥告你还是有的搞,这个搞法,就是聚类。

铁哥教你最简单的一招聚类哦,那就是, 把图片统统放进卷积网络,但是我们不提取分类,而只是提取一些网络中间层的特征, 这些特征有点像每个图片的视觉二维码,然后我们对这些二维码做一个k-means聚类, 也会得到意想不到的效果。 为什么要深度? 因为深度提取的特征,那是与众不同的。

然后以图搜图呢? 不过是找到同一聚类里的其它图片啊。

在聚类的基础上, 就可以做个搜索!

 

第五层境界 :

我们开始晋升为仰望星空的人, 之前那些分类赚钱的应用太无聊了。 机器视觉搞科学怎么港? 作为一群仰望星空后观察细胞的人,我们最常发现的是我们得到的天文或者细胞图片的噪声实在太大了, 这简直没法忍啊, 然后, 深度学习给了你一套降噪和恢复图像的方法。 一个叫auto-encoder的工具, 起到了很大的作用 , 刷的一下,图像就清楚了。

这还不是最酷炫的,那个应用了博弈理论的对抗学习, 也可以帮你谋杀噪点! 如果你会对抗所谓GAN, 也是一种图像生成的工具, 让网络去掉噪声的图片,与没有噪声的自然图片, 连卷积网络都判别不出来,对, 就是这样!

Schawinski, Kevin, et al. "Generative adversarial networks recover features in astrophysical images of galaxies beyond the deconvolution limit." Monthly Notices of the Royal Astronomical Society: Letters 467.1 (2017): L110-L114.

 

第六重境界 :

 

在工业界赚够了钱,科学也太nerd了, 我们来玩艺术思考哲学 ,第一招, 图像风格迁移,请见铁哥之前的文章

 

 

 

然而真正能玩好这一事项的,还是那个刚刚提过的对抗学习GAN, 比如大名鼎鼎的CycleGAN, 几乎可以实现一种你自定义的“图像翻译” 功能,而且你不用做标注哦, 拿出冬天和夏天的两组图片, 它会自动的在两组图片中找出对应来。

Zhu, Jun-Yan, et al. "Unpaired image-to-image translation using cycle-consistent adversarial networks." arXiv preprint arXiv:1703.10593 (2017).

 

第七重境界:

 

图像翻译也懒的玩了, 你神经网络不是号称能够理解图像,看你来个无中生有,在噪声里生成图片来?

对,依然是GAN,而且是最基础的卷积GAN (DCGAN)就可以给你干出来。

看看GAN所幻想的宾馆情景, 你能想到是计算机做的图吗? 哈哈哈!

Goodfellow, Ian, et al. "Generative adversarial nets." Advances in neural information processing systems. 2014.

写到这里, 我自己都觉得GAN是非常有前途的,有前途的,有前途的,以前我还以为只是好玩呢。

这里展示的七级浮屠,也不过深度学习被人类discover的冰山一角, 醉卧沙场君莫笑, 古来征战几人回。

 

2017-12-15 14:47:13 roslei 阅读数 32815

作者:buldajs
链接:https://www.zhihu.com/question/53354718/answer/207687177
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

基于深度学习的单目深度估计算近年比较火的方向

之前搜集过相关的论文,尝试回答一下。


Depth Map Prediction from a Single Image using a Multi-Scale Deep Network

NIPS2014,第一篇CNN-based来做单目深度估计的文章。



基本思想用的是一个Multi-scale的网络,这里的Multi-scale不是现在网络中Multi-scale features的做法,而是分为两个scale的网络来做DepthMap的估计,分别是Global Coarse-Scale Network和Local Fine-Scale Network。前者其实就是AlexNet,来得到一个低分辨率的Coarse的Depth Map,再用后者去refine前者的输出得到最后的refined depth map.

代码:hjimce/Depth-Map-Prediction


Predicting depth, surface normals and semantic labels with a common multi-scale convolutional architecture

ICCV2015,也是上一篇作者David Eigen发的,号称是multi-task的一个network.



网络结构上做了一些改进,从两个scale增加到了三个scale,scale1考虑了用VGG替换AlexNet,这篇没细看,有错请指出~


Learning Fine-Scaled Depth Maps from Single RGB Images

挂在Arxiv1607上的,在上一篇的基础上做了一些改进。



主要的contributions:

1.在ICCV2015的基础上加入了multi-scale之间的skip connections,号称可以加速网络的收敛。

2.考虑了在做Data Augmentation的时候,相同的数据生成的train data之间的相关性,其恢复得到的深度要尽可能接近,因此构建了基于set of transformed images的loss的约束。



Joint Semantic Segmentation and Depth Estimation with Deep Convolutional Networks

Arxiv1604,分割和单目深度估计Joint的文章。。。然而。


Deeper Depth Prediction with Fully Convolutional Residual Networks

IEEE 3D Vision 2016的文章,用ResNet的结构来做了。



Deconv部分提出了几个版本,如下图.



1. up-convolution:基本的unpooling+convolution

2. up-projection: 引入了残差的up-convolution单元

3. 两者的fast版本,基本思想就是unpooling+5*5的conv可以用4个更小的conv来实现,从而加速,如下图


代码:FCRN-DepthPrediction,基于tensorflow的。


CVPR2017也有3篇。


Unsupervised Monocular Depth Estimation With Left-Right Consistency

这篇没细看,思想应该是loss不是直接用的depth的loss.

而是用估计出来的depthmap来做左右图的匹配,利用匹配后rgb图像的强度的偏差来构建loss,所以说是unsupervised.

代码:mrharicot-monodepth 也是基于tensorflow的。


Semi-Supervised Deep Learning for Monocular Depth Map Prediction

这篇是semi-supervised,网络结构基本用的是上面的FCRN,主要在loss上做了手脚。



loss一共分为Supervised loss,Unsupervised loss,Regularization loss

1.Unsupervised loss

和上一篇unsupervised的一样,用的也是网络inference得到depthmap后做左右rgb图像匹配构建的loss.

2.Supervised loss

同时因为用的是kitti的数据,有雷达图像数据配准后的sparse的深度值图,将这些sparse的depth values作为seed点,也引入了loss中。

3.Regularization loss

还添加了gradient的Regularization loss作为约束。

所以个人感觉是,这篇文章是上两篇文章的结合。


Multi-Scale Continuous CRFs as Sequential Deep Networks for Monocular Depth Estimation

xiaogang wang他们的成果,这篇主要是CNN和Graphical Model的结合。



主要的motivation:

1.在CNN解决pixel级的classification/regression问题时,引入multi-scale的信息可以更好的结合low-level和high-level的feature。

2.在semantic segmentation问题中,CRFasRNN中将CRF的mean-field解法展开用RNN网络的结构实现,使得CNN+CRF可以进行end-to-end的优化,这是针对discrete domain的问题,而对于continuous domain的regression问题,还没有这样翻译成网络的CRF层的存在。

3.以及图模型有很好的表达能力,可以与CNN模型的特征表达结合,得到更好的效果。

因此作者提出了Multi-scale CRFs和Cascade CRFs两个模块。

具体推导不展开,有兴趣的可以看论文,两个CRFs的最小单元可以用一个C-MF block来实现。


代码:danxuhk/ContinuousCRF-CNN 基于caffe框架。


作者:知乎用户
链接:https://www.zhihu.com/question/53354718/answer/209398048
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

其实楼上写的蛮具体的了, 我再补充一下把。


我觉得近几年采用深度学习来解决深度估计的思路可以分为好几类:

第一类 仅仅依靠深度学习和网络架构得到结果

最近这部分文章我较为详细的总结在了专栏里:深度学习之单目深度估计 (Chapter.1):基础篇

1. 引用最多、最早的是Eigen组的两篇文章,相对于简单粗暴的使用卷积神经网络回归来得到结果,主要卖点是采用Multi-scale的卷积网络结构(2015年):

2. 之后在2016年,Laina依靠更深层次的网络和一个“novel”的逆卷积结构再加上一个"novel"的loss来得到结果。其实我认为这篇文章的贡献点不是很大,主要是pretrain的ResNet-50帮了很大的忙。这个方法被他们组改进然后用到了之后CVPR2017用来重建SLAM的文章中。

第二类 依靠于深度信息本身的性质

1. 深度信息和语义分割信息具有很强的相关性:场景中语义分割信息相似的物体所拥有的深度信息是相似的

2. 之后接下来又有文章试图去做了语义分割和深度信息的升级版:除了语义分割信息有没有其他信息和深度信息也相似的

SURGE: Surface Regularized Geometry Estimation from a Single Image(NIPS 2016)

3. 深度信息本就是一个从远到近一层一层的分类,是不是把预测深度当做一个分类问题更好解一点,搜文章的时候搜到了这两篇用到了这个思路:

Estimating Depth from Monocular Images as Classification Using Deep Fully Convolutional Residual Networks

Single image depth estimation by dilated deep residual convolutional neural network and soft-weight-sum inference


第三类 基于CRF的方法

CRF之前一直在语义分割问题上表现的很好,包括CRFasRNN,DeepLab等等,几乎成为了这种回归问题的标配。这一类的方法采用CRF是因为通常CNN用来做回归时产生的图都比较糊(blur), CRF可以通过条件概率建模的方法将糊的图片变得不糊。这是一种纯数学解决问题的方法,与深度信息本身的物理性质关系不大。

Deep Convolutional Neural Fields for Depth Estimation from a Single Image(2015 CVPR)

Depth and surface normal estimation from monocular images using regression on deep features and hierarchical CRFs(2015 CVPR)

Multi-Scale Continuous CRFs as Sequential Deep Networks for Monocular Depth Estimation (2017 CVPR)


第四类 基于相对深度

接下来介绍的这一类是我觉得最有意思的一个方法。 总的来说就是利用了深度信息的基本特征:图片中的点与点之间的是有相对远近关系的。NIPS2016这篇文章自己构建了一个相对深度的数据库,每张图片之中仅仅标注两个随机点之间的相对远近关系,通过一个神经网络的训练就能得到原图之中的相对深度信息。而且,一般的方法通常是针对某个数据库的数据范围的(NYUv2用来做室内深度预测,深度的ground truth 是 0~10m,KITTI用来处理行车道路信息,深度的ground truth 是 0~70m),这篇文章的深度是没有这种限制的。这篇文章得到的深度信息感觉是很amazing的一件事,为这篇文章打call! 但是缺点也很明显,由于是相对深度信息仅仅得到的数据表示了当前图片中物体的远近关系和真实深度信息有很大的区别。

Single-Image Depth Perception in the Wild (NIPS2016)

当然这种相对关系的想法第一个提出来应该是下面这篇文章。不过我觉得这篇文章生成的图看起来太“超像素”了,不太smooth(因为它训练的时候就是使用的是图片中超像素的中点):

Learning Ordinal Relationships for Mid-Level Vision(2015ICCV)


第五类 非监督学习

最近这部分文章我较为详细的总结在了专栏里:深度学习之单目深度估计 (Chapter.2):无监督学习篇

所谓使用非监督学习来训练就是利用不知道ground truth的输入图片训练来得到深度信息。既然没有深度的ground truth那肯定有来自于其他地方的约束,比如使用stereo image。stereo image是来自两个相机(或者双目相机)在同一水平线上左右相距一定位置得到的两幅图片。这种图片获取的代价要比深度的ground truth 低一些。 这些方法利用了深度信息和场景之间的一些物理规律来约束,感觉得到了很不错的结果,这三个方法可以说是一脉相承:

Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue(2016 ECCV)

Unsupervised Monocular Depth Estimation with Left-Right Consistency (2017 CVPR)

Semi-Supervised Deep Learning for Monocular Depth Map Prediction (2017 CVPR)

总结

其实感觉同样是image to image 的转换,深度信息相比于语义分割关注的人要少很多,很多语义分割方面的方法就会有可能直接用到深度预测方面。比如Estimating Depth from Monocular Images as Classification Using Deep Fully Convolutional Residual Networks 这篇文章其实就和CRFasRNN很像。

直接利用深度网络来得到深度预测的结果已经不是很novel的方法了,采用基于CRF的方法得到的效果比较好但是和感觉并不是那么让人眼前一亮。


很喜欢基于相对深度和采用非监督学习来得到深度信息的这几种方法。大胆的预测一下,在这种问题上,结合物理规律和深度学习的方法得到更好的结果可能会有更多的文章出来,拭目以待把。


看到有人说Unsupervised Monocular Depth Estimation,但我觉得这个算法训练是个坑,需要双目图像进行训练,而这个监督信号又带了相机参数这个新的约束,如果你用一个相机采集数据进行训练,换一个不同焦距的相机进行测试,获取到的视差实际上就带有scale了。

这个作者也给出了stereo的版本,性能提升是质变。

个人还是比较认可双目无监督估计,[1709.00930] Self-Supervised Learning for Stereo Matching with Self-Improving Ability,这个看看kitti stereo 2015(The KITTI Vision Benchmark Suite)的排名就知道了,和很多有监督的算法比起来也是state-of-art。


如果实在是想用单目做,建议还是看看用视频序列做的吧,(Unsupervised Learning of Depth and Ego-Motion from Video)开源的



作者:Shallow
链接:https://www.zhihu.com/question/53354718/answer/257263728
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


原文地址:https://www.zhihu.com/question/53354718

深度强化学习

阅读数 797