如果将synthetic gradient和airport time capsulee合并,能否创造出一个完全鲁棒的CNN?

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Faster R-CNN论文笔记——FR
在介绍Faster R-CNN之前,先来介绍一些前验知识,为Faster R-CNN做铺垫。
一、基于Region Proposal(候选区域)的深度学习目标检测算法
Region Proposal(候选区域),就是预先找出图中目标可能出现的位置,通过利用图像中的纹理、边缘、颜色等信息,保证在选取较少窗口(几千个甚至几百个)的情况下保持较高的召回率(IoU,Intersection-over-Union)。
图1 IoU定义
Region Proposal方法比传统的滑动窗口方法获取的质量要更高。比较常用的Region Proposal方法有:SelectiveSearch(SS,选择性搜索)、Edge Boxes(EB)。
基于Region Proposal目标检测算法的步骤如下:
CNN方法见https://blog.csdn.net/qq_/article/details/。
边框回归(Bouding Box Regression):是对RegionProposal进行纠正的线性回归算法,目的是为了让Region Proposal提取到的窗口与目标窗口(Ground Truth)更加吻合。
二、R-CNN、Fast R-CNN、Faster R-CNN三者关系
图2 三者关系
表1 三者比较
使用方法缺点改进
(Region-based Convolutional
Neural Networks)1、SS提取RP;
2、CNN提取特征;
3、SVM分类;
4、BB盒回归。1、 训练步骤繁琐(微调网络+训练SVM+训练bbox);
2、 训练、测试均速度慢;
3、 训练占空间1、 从DPM HSC的34.3%直接提升到了66%(mAP);
2、 引入RP+CNN
Fast R-CNN
(Fast Region-based Convolutional
Neural Networks)1、SS提取RP;
2、CNN提取特征;
3、softmax分类;
4、多任务损失函数边框回归。1、 依旧用SS提取RP(耗时2-3s,特征提取耗时0.32s);
2、 无法满足实时应用,没有真正实现端到端训练测试;
3、 利用了GPU,但是区域建议方法是在CPU上实现的。1、 由66.9%提升到70%;
2、 每张图像耗时约为3s。
Faster R-CNN
(Fast Region-based Convolutional
Neural Networks)1、RPN提取RP;
2、CNN提取特征;
3、softmax分类;
4、多任务损失函数边框回归。1、 还是无法达到实时检测目标;
2、 获取region proposal,再对每个proposal分类计算量还是比较大。1、 提高了检测精度和速度;
2、 真正实现端到端的目标检测框架;
3、 生成建议框仅需约10ms。
2.1 R-CNN目标检测流程介绍
具体可参考https://blog.csdn.net/shenxiaolu1984/article/details/
2.2 Fast R-CNN目标检测流程介绍
注意:Fast R-CNN的RegionProposal是在feature map之后做的,这样可以不用对所有的区域进行单独的CNN Forward步骤。
Fast R-CNN框架如下图:
图3 Fast R-CNN框架
Fast R-CNN框架与R-CNN有两处不同:
① 最后一个卷积层后加了一个ROI
② 损失函数使用了multi-task loss(多任务损失)函数,将边框回归直接加到CNN网络中训练。分类Fast R-CNN直接用softmax替代R-CNN用的SVM进行分类。
Fast R-CNN是端到端(end-to-end)的。
具体可参考https://blog.csdn.net/shenxiaolu1984/article/details/
三、Faster R-CNN目标检测
3.1 Faster R-CNN的思想
Faster R-CNN可以简单地看做&区域生成网络RPNs + Fast R-CNN&的,用区域生成网络代替FastR-CNN中的Selective Search方法。Faster R-CNN这篇论文着重解决了这个系统中的三个问题:
1. 如何设计区域生成网络;
2. 如何训练区域生成网络;
3. 如何让区域生成网络和Fast RCNN网络共享特征提取网络。
在整个Faster R-CNN算法中,有三种尺度:
1. 原图尺度:原始输入的大小。不受任何限制,不影响性能。
2. 归一化尺度:输入特征提取网络的大小,在测试时设置,中opts.test_scale=600。anchor在这个尺度上设定。这个参数和anchor的相对大小决定了想要检测的目标范围。
3. 网络输入尺度:输入特征检测网络的大小,在训练时设置,源码中为224*224。
3.2 Faster R-CNN框架介绍
图4 Faster R-CNN模型
Faster-R-CNN算法由两大模块组成:
1.PRN候选框提取模块;
2.Fast R-CNN检测模块。
其中,RPN是全卷积神经网络,用于提取候选框;Fast R-CNN基于RPN提取的proposal检测并识别proposal中的目标。
3.3 RPN介绍
目前最先进的目标检测网络需要先用区域建议算法推测目标位置,像SPPnet和Fast R-CNN这些网络虽然已经减少了检测网络运行的时间,但是计算区域建议依然耗时较大。所以,在这样的瓶颈下,RBG和Kaiming He一帮人将Region Proposal也交给CNN来做,这才提出了RPN(Region Proposal Network)区域建议网络用来提取检测区域,它能和整个检测网络共享全图的卷积特征,使得区域建议几乎不花时间。
RCNN解决的是,&为什么不用CNN做classification呢?&
Fast R-CNN解决的是,&为什么不一起输出bounding box和label呢?&
Faster R-CNN解决的是,&为什么还要用selective search呢?&
3.3.2RPN核心思想
RPN的核心思想是使用CNN卷积神经网络直接产生Region Proposal,使用的方法本质上就是滑动窗口(只需在最后的卷积层上滑动一遍),因为anchor机制和边框回归可以得到多尺度多长宽比的Region Proposal。
RPN网络也是全卷积网络(FCN,fully-convolutional network),可以针对生成检测建议框的任务端到端地训练,能够同时预测出object的边界和分数。只是在CNN上额外增加了2个卷积层(全卷积层cls和reg)。
①将每个特征图的位置编码成一个特征向量(256dfor ZF and 512d for VGG)。
②对每一个位置输出一个objectness score和regressedbounds for k个region proposal,即在每个卷积映射位置输出这个位置上多种尺度(3种)和长宽比(3种)的k个(3*3=9)区域建议的物体得分和回归边界。
RPN网络的输入可以是任意大小(但还是有最小分辨率要求的,例如VGG是228*228)的图片。如果用VGG16进行特征提取,那么RPN网络的组成形式可以表示为VGG16+RPN。
VGG16:参考
https://github.com/rbgirshick/py-faster-rcnn/blob/master/models/pascal_voc/VGG16/faster_rcnn_end2end/train.prototxt,可以看出VGG16中用于特征提取的部分是13个卷积层(conv1_1----&conv5.3),不包括pool5及pool5后的网络层次结构。
因为我们的最终目标是和Fast R-CNN目标检测网络共享计算,所以假设这两个网络共享一系列卷积层。在论文的实验中,ZF有5个可共享的卷积层, VGG有13个可共享的卷积层。
RPN的具体流程如下:使用一个小网络在最后卷积得到的特征图上进行滑动扫描,这个滑动网络每次与特征图上n*n(论文中n=3)的窗口全连接(图像的有效感受野很大,ZF是171像素,VGG是228像素),然后映射到一个低维向量(256d for ZF / 512d for VGG),最后将这个低维向量送入到两个全连接层,即bbox回归层(reg)和box分类层(cls)。sliding window的处理方式保证reg-layer和cls-layer关联了conv5-3的全部特征空间。
reg层:预测proposal的anchor对应的proposal的(x,y,w,h)
cls层:判断该proposal是前景(object)还是背景(non-object)。
图5 RPN框架
在图5中,要注意,3*3卷积核的中心点对应原图(re-scale,源代码设置re-scale为600*1000)上的位置(点),将该点作为anchor的中心点,在原图中框出多尺度、多种长宽比的anchors。所以,anchor不在conv特征图上,而在原图上。
图6 9种anchor(注意:是不同位置)
图7 Faster R-CNN卷积流程图
原图600*1000经CNN卷积后,在CNN最后一层(conv5)得出的是40*60大小的特征图,对应文中说的典型值为2400。若特征图大小为W*H,则需要W*H*K个anchor,本文中需要40*60*9&2k个。
在RPN网络中,我们需要重点理解其中的anchors概念,Loss fucntions计算方式和RPN层训练数据生成的具体细节。
3.4 RPN的平移不变性
在计算机视觉中的一个挑战就是平移不变性:比如人脸识别任务中,小的人脸(24*24的分辨率)和大的人脸()如何在同一个训练好权值的网络中都能正确识别。若是平移了图像中的目标,则建议框也应该平移,也应该能用同样的函数预测建议框。
传统有两种主流的解决方式:
第一、对图像或feature map层进行尺度\宽高的采样;
第二、对滤波器进行尺度\宽高的采样(或可以认为是滑动窗口).
但Faster R-CNN解决该问题的具体实现是:通过卷积核中心(用来生成推荐窗口的Anchor)进行尺度、宽高比的采样,使用3种尺度和3种比例来产生9种anchor。
3.5 窗口分类和位置精修
分类层(cls_score)输出每一个位置上,9个anchor属于前景和背景的概率。
窗口回归层(bbox_pred)输出每一个位置上,9个anchor对应窗口应该平移缩放的参数(x,y,w,h)。
对于每一个位置来说,分类层从256维特征中输出属于前景和背景的概率;窗口回归层从256维特征中输出4个平移缩放参数。
需要注意的是:并没有显式地提取任何候选窗口,完全使用网络自身完成判断和修正。
3.6 学习区域建议损失函数
3.6.1 标签分类规定
为了训练RPN,需要给每个anchor分配的类标签{目标、非目标}。对于positive label(正标签),论文中给了如下规定(满足以下条件之一即可判为正标签):
注意,一个GT包围盒可以对应多个anchor,这样一个GT包围盒就可以有多个正标签。
事实上,采用第②个规则基本上可以找到足够的正样本,但是对于一些极端情况,例如所有的Anchor对应的anchor box与groud truth的IoU不大于0.7,可以采用第一种规则生成。
negative label(负标签):与所有GT包围盒的IoU都小于0.3的anchor。
对于既不是正标签也不是负标签的anchor,以及跨越图像边界的anchor我们给予舍弃,因为其对训练目标是没有任何作用的。
3.6.2 多任务损失(来自Fast R-CNN)
图8 multi-task数据结构
Fast R-CNN网络有两个同级输出层(cls score和bbox_prdict层),都是全连接层,称为multi-task。
① clsscore层:用于分类,输出k+1维数组p,表示属于k类和背景的概率。对每个RoI(Region of Interesting)输出离散型概率分布
通常,p由k+1类的全连接层利用softmax计算得出。
② bbox_prdict层:用于调整候选区域位置,输出bounding box回归的位移,输出4*K维数组t,表示分别属于k类时,应该平移缩放的参数。
k表示类别的索引,
是指相对于objectproposal尺度不变的平移,
是指对数空间中相对于objectproposal的高与宽。
loss_cls层评估分类损失函数。由真实分类u对应的概率决定:
loss_bbox评估检测框定位的损失函数。比较真实分类对应的预测平移缩放参数
真实平移缩放参数为
其中,smooth L1损失函数为:
smooth L1损失函数曲线如下图9所示,作者这样设置的目的是想让loss对于离群点更加鲁棒,相比于L2损失函数,其对离群点、异常值(outlier)不敏感,可控制梯度的量级使训练时不容易跑飞。
图9 smoothL1损失函数曲线
最后总损失为(两者加权和,如果分类为背景则不考虑定位损失):
规定u=0为背景类(也就是负标签),那么艾弗森括号指数函数[u&1]表示背景候选区域即负样本不参与回归损失,不需要对候选区域进行回归操作。&控制分类损失和回归损失的平衡。Fast R-CNN论文中,所有实验&=1。
艾弗森括号指数函数为:
源码中bbox_loss_weights用于标记每一个bbox是否属于某一个类。
3.6.3 Faster R-CNN损失函数
遵循multi-task loss定义,最小化目标函数,FasterR-CNN中对一个图像的函数定义为:
3.6.4 R-CNN中的boundingbox回归
下面先介绍R-CNN和Fast R-CNN中所用到的边框回归方法。
1.为什么要做Bounding-box regression?
如图10所示,绿色的框为飞机的Ground Truth,红色的框是提取的Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU&0.5),那么这张图相当于没有正确的检测出飞机。如果我们能对红色的框进行微调,使得经过微调后的窗口跟Ground Truth更接近,这样岂不是定位会更准确。确实,Bounding-box regression 就是用来微调这个窗口的。
2.回归/微调的对象是什么?
3.Bounding-box regression(边框回归)
那么经过何种变换才能从图11中的窗口P变为窗口呢?比较简单的思路就是:
注意:只有当Proposal和Ground Truth比较接近时(线性问题),我们才能将其作为训练样本训练我们的线性回归模型,否则会导致训练的回归模型不work(当Proposal跟GT离得较远,就是复杂的非线性问题了,此时用线性回归建模显然不合理)。这个也是G-CNN: an Iterative Grid Based Object Detector多次迭代实现目标准确定位的关键。
线性回归就是给定输入的特征向量X,学习一组参数W,使得经过线性回归后的值跟真实值Y(Ground Truth)非常接近。即
。那么Bounding-box中我们的输入以及输出分别是什么呢?
这个是什么?输入就是这四个数值吗?其实真正的输入是这个窗口对应的CNN特征,也就是R-CNN中的Pool5feature(特征向量)。(注:训练阶段输入还包括 Ground Truth,也就是下边提到的
输出:需要进行的平移变换和尺度缩放
,或者说是
。我们的最终输出不应该是Ground Truth吗?是的,但是有了这四个变换我们就可以直接得到Ground Truth,这里还有个问题,根据上面4个公式我们可以知道,P经过
,得到的并不是真实值G,而是预测值
的确,这四个值应该是经过 Ground Truth 和Proposal计算得到的真正需要的平移量
和尺度缩放
这也就是R-CNN中的:
那么目标函数可以表示为
是输入Proposal的特征向量,
是要学习的参数(*表示
,也就是每一个变换对应一个目标函数),
是得到的预测值。我们要让预测值跟真实值
差距最小,得到损失函数为:
函数优化目标为:
利用梯度下降法或者最小二乘法就可以得到
4.测试阶段
根据3我们学习到回归参数,对于测试图像,我们首先经过 CNN 提取特征
,预测的变化就是
,最后根据以下4个公式对窗口进行回归:
3.6.5 Faster R-CNN中的bounding box回归
※注意:计算regression loss需要三组信息:
1)预测框,即RPN网络测出的
2)锚点anchor box:之前的9个anchor对应9个不同尺度和长宽比的
3)GroundTruth:标定的框。
3.7 训练RPNs
RPN通过反向传播(BP,back-propagation)和随机梯度下降(SGD,stochastic gradient descent)进行端到端(end-to-end)训练。依照FastR-CNN中的&image-centric&采样策略训练这个网络。每个mini-batch由包含了许多正负样本的单个图像组成。我们可以优化所有anchor的损失函数,但是这会偏向于负样本,因为它们是主要的。
每一个mini-batch包含从一张图像中随机提取的256个anchor(注意,不是所有的anchor都用来训练),前景样本和背景样本均取128个,达到正负比例为1:1。如果一个图像中的正样本数小于128,则多用一些负样本以满足有256个Proposal可以用于训练。
新增的2层参数用均值为0,标准差为0.01的高斯分布来进行初始化,其余层(都是共享的卷积层,与VGG共有的层)参数用ImageNet分类预训练模型来初始化。
参数化设置(使用caffe实现)
在PASCAL数据集上:
前60k个mini-batch进行迭代,学习率设为0.001;
后20k个mini-batch进行迭代,学习率设为0.0001;
设置动量momentum=0.9,权重衰减weightdecay=0.0005。
3.8 非极大值抑制法
训练时(eg:输入600*1000的图像),如果anchor box的边界超过了图像边界,那这样的anchors对训练loss也不会产生影响,我们将超过边界的anchor舍弃不用。一幅600*1000的图像经过VGG16后大约为40*60,则此时的anchor数为40*60*9,约为20k个anchor boxes,再去除与边界相交的anchor boxes后,剩下约为6k个anchor boxes,这么多数量的anchorboxes之间肯定是有很多重叠区域,因此需要使用非极大值抑制法(NMS,non-maximum suppression)将IoU&0.7的区域全部合并,最后就剩下约2k个anchor boxes(同理,在最终检测端,可以设置将概率大约某阈值P且IoU大约某阈值T的预测框采用NMS方法进行合并,注意:这里的预测框指的不是anchor boxes)。NMS不会影响最终的检测准确率,但是大幅地减少了建议框的数量。NMS之后,我们用建议区域中的top-N个来检测(即排过序后取N个)。
3.9 RPN与Fast R-CNN特征共享
Faster-R-CNN算法由两大模块组成:
1.PRN候选框提取模块;
2.Fast R-CNN检测模块。
我们已经描述了如何为生成区域建议训练网络,而没有考虑基于区域的目标检测CNN如何利用这些建议框。对于检测网络,我们采用Fast R-CNN,现在描述一种算法,学习由RPN和Fast R-CNN之间共享的卷积层。
RPN和Fast R-CNN都是独立训练的,要用不同方式修改它们的卷积层。因此需要开发一种允许两个网络间共享卷积层的技术,而不是分别学习两个网络。注意到这不是仅仅定义一个包含了RPN和Fast R-CNN的单独网络,然后用反向传播联合优化它那么简单。原因是Fast R-CNN训练依赖于固定的目标建议框,而且并不清楚当同时改变建议机制时,学习Fast R-CNN会不会收敛。
RPN在提取得到proposals后,作者选择使用Fast-R-CNN实现最终目标的检测和识别。RPN和Fast-R-CNN共用了13个VGG的卷积层,显然将这两个网络完全孤立训练不是明智的选择,作者采用交替训练(Alternating training)阶段卷积层特征共享:
第一步,我们依上述训练RPN,该网络用ImageNet预训练的模型初始化,并端到端微调用于区域建议任务;
第二步,我们利用第一步的RPN生成的建议框,由Fast R-CNN训练一个单独的检测网络,这个检测网络同样是由ImageNet预训练的模型初始化的,这时候两个网络还没有共享卷积层;
第三步,我们用检测网络初始化RPN训练,但我们固定共享的卷积层,并且只微调RPN独有的层,现在两个网络共享卷积层了;
第四步,保持共享的卷积层固定,微调Fast R-CNN的fc层。这样,两个网络共享相同的卷积层,构成一个统一的网络。
注意:第一次迭代时,用ImageNet得到的模型初始化RPN和Fast-R-CNN中卷积层的参数;从第二次迭代开始,训练RPN时,用Fast-R-CNN的共享卷积层参数初始化RPN中的共享卷积层参数,然后只Fine-tune不共享的卷积层和其他层的相应参数。训练Fast-RCNN时,保持其与RPN共享的卷积层参数不变,只Fine-tune不共享的层对应的参数。这样就可以实现两个网络卷积层特征共享训练。先从动机来讲一讲:因为自己是做hyperspectra land cover的分类的,所以可能会更多的从遥感影像角度出发. SVM 作为线性分类机器学习方法中的经典,其动机是寻找最优的支持向量来构建分割平面,当问题进步到multiclass的分类时,核方法的引入帮助SVM把线性不可分的数据映射到更高层次的超平面空间中从而使数据达到线性可分,但是归根结底无论是线性svm还是核方法SVM的分类精度都主要依赖于数据中位于分割平面的一部分支持向量。然而反观softmax也就是CNN方法中用于分类的逻辑回归层,它是基于回归的原则,LR的损失函数也是得自于一个考虑了全局数据的自概率模型,这里关于概率模型就不再多说了。&br&&figure&&img data-rawwidth=&750& data-rawheight=&373& src=&https://pic3.zhimg.com/v2-edc6b0cceccc6a_b.jpg& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic3.zhimg.com/v2-edc6b0cceccc6a_r.jpg&&&/figure&&br&&br&所以到这里你应该可以看到,SVM与 LR很大的一个区别就是:SVM的性能主要受支持向量的影响,而LR考虑全局数据的同时分类超平面也会收到每一个样本的干扰。&br&&br&&figure&&img data-rawwidth=&713& data-rawheight=&719& src=&https://pic3.zhimg.com/v2-cf6d6dd15eff05ed5eaa_b.jpg& class=&origin_image zh-lightbox-thumb& width=&713& data-original=&https://pic3.zhimg.com/v2-cf6d6dd15eff05ed5eaa_r.jpg&&&/figure&&br&所以我们可以认为当数据的特征feature处于一个线性不可分的状态的时候,SVM与LR是从两个不同的角度去解决了同一个分类问题,这也在许多的文献中得到了认证,中山大学的Jun Li教授就是做LR及其相关分类器的专家,小boss Pedram 则是SVM的专家(高光谱领域哈)。&br&&br&但是要注意CNN所连接的LR与单纯的LR的区别就在于CNN在训练的同时就会趋于提取样本中feature 的 signature特征,也就是说CNN的卷积过程在训练的过程中就是一个对线性不可分的数据增加其线性可分程度的过程。这一观点在哈工大Yushi chen的论文中也得到过验证。&br&&br&最后问题来了,当CNN的feature提取生效之后,原本线性不可分的分类样本趋于线性可分的时候,SVM 只利用部分支持向量样本的分类原则的优势就能够得到进一步展现。当然 machine learning可以从原理上预测性能,但是还是要结果说话。就我个人而言,我得到的ck svm数据融合的精度要高于单纯的DNN LR 精度。&br&&br&一点点自己的心得,希望各位大神指正!
先从动机来讲一讲:因为自己是做hyperspectra land cover的分类的,所以可能会更多的从遥感影像角度出发. SVM 作为线性分类机器学习方法中的经典,其动机是寻找最优的支持向量来构建分割平面,当问题进步到multiclass的分类时,核方法的引入帮助SVM把线性不…
&figure&&img src=&https://pic4.zhimg.com/v2-aa833afce2a4e853c93dda56_b.jpg& data-rawwidth=&640& data-rawheight=&395& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-aa833afce2a4e853c93dda56_r.jpg&&&/figure&&p&&a class=&member_mention& href=&http://www.zhihu.com/people/55b24d478d333dfe9ad95& data-hash=&55b24d478d333dfe9ad95& data-hovercard=&p$b$55b24d478d333dfe9ad95&&@王小新&/a&
编译自 Qure.ai Blog&/p&&p&量子位 出品 | 公众号 QbitAI&/p&&p&图像语义分割就是机器自动从图像中分割出对象区域,并识别其中的内容。&/p&&p&量子位今天推荐的这篇文章,回顾了深度学习在图像语义分割中的发展历程。&/p&&p&发布这篇文章的Qure.ai,是一家用深度学习来读取医学影像的公司,他们在官方博客上梳理了语义分割中的深度学习方法。&/p&&p&他们希望通过这份介绍,能让大家了解这个已经在自然图像处理比较成熟、但是在医学图像中仍需发展的新兴技术。&/p&&p&作者Sasank Chilamkurthy三部分介绍了语义分割相关研究:&/p&&p&语义分割的概念、相关解决方法、相关研究的综述。&/p&&p&以下内容编译自Qure.ai官方博客:&/p&&h2&语义分割是什么?&/h2&&p&语义分割方法在处理图像时,具体到像素级别,也就是说,该方法会将图像中每个像素分配到某个对象类别。下面是一个具体案例。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-af7eca9a2ac501_b.jpg& data-rawwidth=&1202& data-rawheight=&452& class=&origin_image zh-lightbox-thumb& width=&1202& data-original=&https://pic3.zhimg.com/v2-af7eca9a2ac501_r.jpg&&&/figure&&p&&b&△&/b& 左边为输入图像,右边为经过语义分割后的输出图像。&/p&&p&该模型不仅要识别出摩托车和驾驶者,还要标出每个对象的边界。因此,与分类目的不同,相关模型要具有像素级的密集预测能力。&/p&&p&目前用于语义分割研究的两个最重要数据集是&b&VOC2012&/b&和&b&MSCOCO&/b&。&/p&&p&VOC2012:&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//host.robots.ox.ac.uk/pascal/VOC/voc2012/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&host.robots.ox.ac.uk/pa&/span&&span class=&invisible&&scal/VOC/voc2012/&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&MSCOCO:&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//mscoco.org/explore/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&mscoco.org/explore/&/span&&span class=&invisible&&&/span&&/a&&/p&&h2&有哪些方法?&/h2&&p&在深度学习应用到计算机视觉领域之前,研究人员一般使用纹理基元森林(TextonForest)或是随机森林(Random Forest)方法来构建用于语义分割的分类器。&/p&&p&卷积神经网络(CNN)不仅能很好地实现图像分类,而且在分割问题中也取得了很大的进展。&/p&&p&最初,&b&图像块分类&/b&是常用的深度学习方法,即利用每个像素周围的图像块分别将各像素分成对应的类别。其中,使用图像块的主要原因是分类网络通常具有全连接层,其输入需为固定大小的图像块。&/p&&p&2014年,加州大学伯克利分校的Long等人提出的&b&完全卷积网络(Fully Convolutional Networks)&/b&,推广了原有的CNN结构,&b&在不带有全连接层的情况下能进行密集预测。&/b&&/p&&p&这种结构的提出使得分割图谱可以生成任意大小的图像,且与图像块分类方法相比,也提高了处理速度。在后来,几乎所有关于语义分割的最新研究都采用了这种结构。&/p&&p&&b&除了全连接层结构,在分割问题中很难使用CNN网络的另一个问题是存在池化层。&/b&池化层不仅能增大上层卷积核的感受野,而且能聚合背景同时丢弃部分位置信息。然而,语义分割方法需对类别图谱进行精确调整,因此需保留池化层中所舍弃的位置信息。&/p&&p&&b&研究者提出了两个不同形式的结构来解决这个问题。&/b&&/p&&p&&b&第一种方法是编码器-解码器(encoder-decoder)结构。&/b&其中,编码器使用池化层逐渐缩减输入数据的空间维度,而解码器通过反卷积层等网络层逐步恢复目标的细节和相应的空间维度。从编码器到解码器之间,通常存在直接的信息连接,来帮助解码器更好地恢复目标细节。在这种方法中,一种典型结构为U-Net网络。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-ad7daaae1a4_b.jpg& data-rawwidth=&936& data-rawheight=&669& class=&origin_image zh-lightbox-thumb& width=&936& data-original=&https://pic4.zhimg.com/v2-ad7daaae1a4_r.jpg&&&/figure&&p&&b&△&/b& 一种典型的编码器-解码器结构U-Net&/p&&p&&b&第二种方法使用了称作空洞卷积的结构,且去除了池化层结构。&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-d1b8ab65498ecd1d8b1027_b.jpg& data-rawwidth=&750& data-rawheight=&351& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic1.zhimg.com/v2-d1b8ab65498ecd1d8b1027_r.jpg&&&/figure&&p&&b&△&/b& 空洞卷积,当比率为1时,即为经典的卷积结构。&/p&&p&&b&条件随机场(Conditional Random Field,CRF)方法通常在后期处理中用于改进分割效果。&/b&CRF方法是一种基于底层图像像素强度进行“平滑”分割的图模型,在运行时会将像素强度相似的点标记为同一类别。加入条件随机场方法可以提高1~2%的最终评分值。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-3fb54cca06c47f_b.jpg& data-rawwidth=&1401& data-rawheight=&683& class=&origin_image zh-lightbox-thumb& width=&1401& data-original=&https://pic1.zhimg.com/v2-3fb54cca06c47f_r.jpg&&&/figure&&p&&b&△&/b& 发展中的CRF方法效果。b图中将一维分类器作为CRF方法的分割输入;c、d、e图为CRF方法的三种变体;e图为广泛使用的一种CRF结构。&/p&&p&接下来,我们会梳理一些代表性论文,来介绍从FCN网络开始的分割结构演变历程。&/p&&p&这些结构都使用了VOC2012数据集来测试实际效果。&/p&&h2&一些有趣的研究&/h2&&p&接下来将按照论文的发表顺序来介绍以下论文:&/p&&p&1.FCN网络;&/p&&p&2.SegNet网络;&/p&&p&3.空洞卷积(Dilated Convolutions);&/p&&p&4.DeepLab (v1和v2);&/p&&p&5.RefineNet;&/p&&p&6.PSPNet;&/p&&p&7.大内核(Large Kernel Matters);&/p&&p&8.DeepLab v3;&/p&&p&对于上面的每篇论文,下面将会分别指出主要贡献并进行解释,也贴出了这些结构在VOC2012数据集中的测试分值IOU。&/p&&p&&b&FCN&/b&&/p&&p&论文:&/p&&p&Fully Convolutional Networks for Semantic Segmentation&/p&&p&于日提交到arvix&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&&/span&&/a&&/p&&p&主要贡献:&/p&&ul&&li&将端到端的卷积网络推广到语义分割中;&/li&&li&重新将预训练好的Imagenet网络用于分割问题中;&/li&&li&使用反卷积层进行上采样;&/li&&li&提出了跳跃连接来改善上采样的粗糙程度。&/li&&/ul&&p&具体解释:&/p&&p&本文的关键在于:分类网络中的全连接层可以看作是使用卷积核遍历整个输入区域的卷积操作。&/p&&p&这相当于在重叠的输入图像块上评估原始的分类网络,但是与先前相比计算效率更高,因为在图像块重叠区域,共享计算结果。&/p&&p&尽管这种方法并不是这篇文章中所特有的,还有一篇关于overfeat的文章也使用了这种思想,但是确实显著提高了在VOC2012数据集上的实际效果。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-b55b025a40d279b5d2d2c17f_b.jpg& data-rawwidth=&600& data-rawheight=&325& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-b55b025a40d279b5d2d2c17f_r.jpg&&&/figure&&p&&b&△&/b& 用卷积运算实现的全连接层结构&/p&&p&在将VGG等预训练网络模型的全连接层卷积化之后,由于CNN网络中的池化操作,得到的特征图谱仍需进行上采样。&/p&&p&反卷积层在进行上采样时,不是使用简单的双线性插值,而是通过学习实现插值操作。此网络层也被称为上卷积、完全卷积、转置卷积或是分形卷积。&/p&&p&然而,由于在池化操作中丢失部分信息,使得即使加上反卷积层的上采样操作也会产生粗糙的分割图。因此,本文还从高分辨率特性图谱中引入了跳跃连接方式。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-bd3c366c050f47115c1a_b.jpg& data-rawwidth=&1366& data-rawheight=&298& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&https://pic1.zhimg.com/v2-bd3c366c050f47115c1a_r.jpg&&&/figure&&p&个人评论:&/p&&p&本文的研究贡献非常重要,但是最新的研究已经很大程度地改进了这个结果。&/p&&p&&b&SegNet&/b&&/p&&p&论文:&/p&&p&SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation&/p&&p&于日提交到arvix&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&1&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&主要贡献:&/p&&p&将最大池化指数转移至解码器中,改善了分割分辨率。&/p&&p&具体解释:&/p&&p&在FCN网络中,通过上卷积层和一些跳跃连接产生了粗糙的分割图,为了提升效果而引入了更多的跳跃连接。&/p&&p&然而,FCN网络仅仅复制了编码器特征,而Segnet网络复制了最大池化指数。这使得在内存使用上,SegNet比FCN更为高效。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2def74b5a5c00fc76dddd86_b.jpg& data-rawwidth=&600& data-rawheight=&177& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-2def74b5a5c00fc76dddd86_r.jpg&&&/figure&&p&&b&△&/b& SegNet网络结构&/p&&figure&&img src=&https://pic2.zhimg.com/v2-afc5d0bf91c72d0cf2c9c_b.jpg& data-rawwidth=&1352& data-rawheight=&216& class=&origin_image zh-lightbox-thumb& width=&1352& data-original=&https://pic2.zhimg.com/v2-afc5d0bf91c72d0cf2c9c_r.jpg&&&/figure&&p&个人评论:&/p&&p&FCN网络和SegNet网络都是最先出现的编码器-解码器结构,但是SegNet网络的基准分值还不能满足可实际使用的需求。&/p&&p&&b&空洞卷积&/b&&/p&&p&论文:&/p&&p&Multi-Scale Context Aggregation by Dilated Convolutions&/p&&p&于日提交到arvix&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&2&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&主要贡献:&/p&&ul&&li&使用了空洞卷积,这是一种可用于密集预测的卷积层;&/li&&li&提出在多尺度聚集条件下使用空洞卷积的“背景模块”。&/li&&/ul&&p&具体解释:&/p&&p&池化操作增大了感受野,有助于实现分类网络。但是池化操作在分割过程中也降低了分辨率。&/p&&p&因此,该论文所提出的空洞卷积层是如此工作的:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-888ccccfd253_b.jpg& data-rawwidth=&395& data-rawheight=&381& data-thumbnail=&https://pic1.zhimg.com/v2-888ccccfd253_b.jpg& class=&content_image& width=&395&&&/figure&&p&&b&△&/b& 空洞卷积示意图&/p&&p&空洞卷积层在不降低空间维度的前提下增大了相应的感受野指数。&/p&&p&在接下来将提到的DeepLab中,空洞卷积被称为多孔卷积(atrous convolution)。&/p&&p&从预训练好的分类网络中(这里指的是VGG网络)移除最后两个池化层,而用空洞卷积取代了随后的卷积层。&/p&&p&特别的是,池化层3和池化层4之间的卷积操作为空洞卷积层2,池化层4之后的卷积操作为空洞卷积层4。&/p&&p&这篇文章所提出的背景模型(frontend module)可在不增加参数数量的情况下获得密集预测结果。&/p&&p&这篇文章所提到的背景模块单独训练了前端模块的输出,作为该模型的输入。该模块是由不同扩张程度的空洞卷积层级联而得到的,从而聚集多尺度背景模块并改善前端预测效果。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-b7a749d6dcff748c7a1cd9e_b.jpg& data-rawwidth=&1358& data-rawheight=&442& class=&origin_image zh-lightbox-thumb& width=&1358& data-original=&https://pic4.zhimg.com/v2-b7a749d6dcff748c7a1cd9e_r.jpg&&&/figure&&p&个人评论:&/p&&p&需要注意的是,该模型预测分割图的大小是原图像大小的1/8。这是几乎所有方法中都存在的问题,将通过内插方法得到最终分割图。&/p&&p&&b&DeepLab(v1和v2)&/b&&/p&&p&论文1:&/p&&p&Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs&/p&&p&于日提交到Arvix&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&&/span&&/a&&/p&&p&论文2:&/p&&p&DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs&/p&&p&于日提交到Arxiv&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&5&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&主要贡献:&/p&&ul&&li&使用了空洞卷积;&/li&&li&提出了在空间维度上实现金字塔型的空洞池化atrous spatial pyramid pooling(ASPP);&/li&&li&使用了全连接条件随机场。&/li&&/ul&&p&具体解释:&/p&&p&空洞卷积在不增加参数数量的情况下增大了感受野,按照上文提到的空洞卷积论文的做法,可以改善分割网络。&/p&&p&我们可以通过将原始图像的多个重新缩放版本传递到CNN网络的并行分支(即图像金字塔)中,或是可使用不同采样率(ASPP)的多个并行空洞卷积层,这两种方法均可实现多尺度处理。&/p&&p&我们也可通过全连接条件随机场实现结构化预测,需将条件随机场的训练和微调单独作为一个后期处理步骤。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-b_b.jpg& data-rawwidth=&600& data-rawheight=&272& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-b_r.jpg&&&/figure&&p&&b&△&/b& DeepLab2网络的处理流程&/p&&figure&&img src=&https://pic1.zhimg.com/v2-bdd63b7772ad81_b.jpg& data-rawwidth=&1356& data-rawheight=&228& class=&origin_image zh-lightbox-thumb& width=&1356& data-original=&https://pic1.zhimg.com/v2-bdd63b7772ad81_r.jpg&&&/figure&&p&&b&RefineNet&/b&&/p&&p&论文:&/p&&p&RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation&/p&&p&于日提交到Arxiv&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&2&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&主要贡献:&/p&&ul&&li&带有精心设计解码器模块的编码器-解码器结构;&/li&&li&所有组件遵循残差连接的设计方式。&/li&&/ul&&p&具体解释:&/p&&p&使用空洞卷积的方法也存在一定的缺点,它的计算成本比较高,同时由于需处理大量高分辨率特征图谱,会占用大量内存,这个问题阻碍了高分辨率预测的计算研究。&/p&&p&DeepLab得到的预测结果只有原始输入的1/8大小。&/p&&p&所以,这篇论文提出了相应的编码器-解码器结构,其中编码器是ResNet-101模块,解码器为能融合编码器高分辨率特征和先前RefineNet模块低分辨率特征的RefineNet模块。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a3da8468ffc9a382f0bff_b.jpg& data-rawwidth=&788& data-rawheight=&388& class=&origin_image zh-lightbox-thumb& width=&788& data-original=&https://pic4.zhimg.com/v2-a3da8468ffc9a382f0bff_r.jpg&&&/figure&&p&&b&△&/b& RefineNet网络结构&/p&&p&每个RefineNet模块包含一个能通过对较低分辨率特征进行上采样来融合多分辨率特征的组件,以及一个能基于步幅为1及5×5大小的重复池化层来获取背景信息的组件。&/p&&p&这些组件遵循恒等映射的思想,采用了残差连接的设计方式。&/p&&figure&&img src=&https://pic7.zhimg.com/v2-2dec08dffd1e_b.jpg& data-rawwidth=&943& data-rawheight=&503& class=&origin_image zh-lightbox-thumb& width=&943& data-original=&https://pic7.zhimg.com/v2-2dec08dffd1e_r.jpg&&&/figure&&p&&b&△&/b& RefineNet模块&/p&&figure&&img src=&https://pic3.zhimg.com/v2-758c5f134b466a81ad71a74eec86c4e1_b.jpg& data-rawwidth=&1352& data-rawheight=&218& class=&origin_image zh-lightbox-thumb& width=&1352& data-original=&https://pic3.zhimg.com/v2-758c5f134b466a81ad71a74eec86c4e1_r.jpg&&&/figure&&p&&b&PSPNet&/b&&/p&&p&论文:&/p&&p&Pyramid Scene Parsing Network&/p&&p&于日提交到Arxiv&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&5&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&主要贡献:&/p&&ul&&li&提出了金字塔池化模块来聚合背景信息;&/li&&li&使用了附加损失(auxiliary loss)。&/li&&/ul&&p&具体解释:&/p&&p&全局场景分类很重要,由于它提供了分割类别分布的线索。金字塔池化模块使用大内核池化层来捕获这些信息。&/p&&p&和上文提到的空洞卷积论文一样,PSPNet也用空洞卷积来改善Resnet结构,并添加了一个金字塔池化模块。该模块将ResNet的特征图谱连接到并行池化层的上采样输出,其中内核分别覆盖了图像的整个区域、半各区域和小块区域。&/p&&p&在ResNet网络的第四阶段(即输入到金字塔池化模块后),除了主分支的损失之外又新增了附加损失,这种思想在其他研究中也被称为中级监督(intermediate supervision)。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ed8c07b9fc0845d17acb639c97343a36_b.jpg& data-rawwidth=&977& data-rawheight=&313& class=&origin_image zh-lightbox-thumb& width=&977& data-original=&https://pic2.zhimg.com/v2-ed8c07b9fc0845d17acb639c97343a36_r.jpg&&&/figure&&p&&b&△&/b& PSPNet网络结构&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c5feea2a2f886dce3d69f1ebbf8a9e9a_b.jpg& data-rawwidth=&1352& data-rawheight=&292& class=&origin_image zh-lightbox-thumb& width=&1352& data-original=&https://pic3.zhimg.com/v2-c5feea2a2f886dce3d69f1ebbf8a9e9a_r.jpg&&&/figure&&p&&b&大内核&/b&&/p&&p&论文:&/p&&p&Large Kernel Matters — Improve Semantic Segmentation by Global Convolutional Network&/p&&p&于日提交到Arxiv&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&9&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&主要贡献:&/p&&p&提出了一种带有大维度卷积核的编码器-解码器结构。&/p&&p&具体解释:&/p&&p&这项研究通过全局卷积网络来提高语义分割的效果。&/p&&p&语义分割不仅需要图像分割,而且需要对分割目标进行分类。在分割结构中不能使用全连接层,这项研究发现可以使用大维度内核来替代。&/p&&p&采用大内核结构的另一个原因是,尽管ResNet等多种深层网络具有很大的感受野,有相关研究发现网络倾向于在一个小得多的区域来获取信息,并提出了有效感受野的概念。&/p&&p&大内核结构计算成本高,且具有很多结构参数。因此,k×k卷积可近似成1×k+k×1和k×1+1×k的两种分布组合。这个模块称为全局卷积网络(Global Convolutional Network, GCN)。&/p&&p&接下来谈结构,ResNet(不带空洞卷积)组成了整个结构的编码器部分,同时GCN网络和反卷积层组成了解码器部分。该结构还使用了一种称作边界细化(Boundary Refinement,BR)的简单残差模块。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-266a286dda96b5c1c5e695_b.jpg& data-rawwidth=&999& data-rawheight=&562& class=&origin_image zh-lightbox-thumb& width=&999& data-original=&https://pic2.zhimg.com/v2-266a286dda96b5c1c5e695_r.jpg&&&/figure&&p&&b&△&/b& GCN网络结构&/p&&figure&&img src=&https://pic1.zhimg.com/v2-c713e2f01f6ec63d0ac6_b.jpg& data-rawwidth=&1370& data-rawheight=&304& class=&origin_image zh-lightbox-thumb& width=&1370& data-original=&https://pic1.zhimg.com/v2-c713e2f01f6ec63d0ac6_r.jpg&&&/figure&&p&&b&DeepLab v3&/b&&/p&&p&论文:&/p&&p&Rethinking Atrous Convolution for Semantic Image Segmentation&/p&&p&于日提交到Arxiv&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&7&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&主要贡献:&/p&&ul&&li&改进了空间维度上的金字塔空洞池化方法(ASPP);&/li&&li&该模块级联了多个空洞卷积结构。&/li&&/ul&&p&具体解释:&/p&&p&与在DeepLab v2网络、空洞卷积中一样,这项研究也用空洞卷积/多空卷积来改善ResNet模型。&/p&&p&这篇论文还提出了三种改善ASPP的方法,涉及了像素级特征的连接、加入1×1的卷积层和三个不同比率下3×3的空洞卷积,还在每个并行卷积层之后加入了批量归一化操作。&/p&&p&级联模块实际上是一个残差网络模块,但其中的空洞卷积层是以不同比率构建的。这个模块与空洞卷积论文中提到的背景模块相似,但直接应用到中间特征图谱中,而不是置信图谱。置信图谱是指其通道数与类别数相同的CNN网络顶层特征图谱。&/p&&p&该论文独立评估了这两个所提出的模型,尝试结合将两者结合起来并没有提高实际性能。两者在验证集上的实际性能相近,带有ASPP结构的模型表现略好一些,且没有加入CRF结构。&/p&&p&这两种模型的性能优于DeepLabv2模型的最优值,文章中还提到性能的提高是由于加入了批量归一化层和使用了更优的方法来编码多尺度背景。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-eb20f194ce2cdc44808d51_b.jpg& data-rawwidth=&835& data-rawheight=&200& class=&origin_image zh-lightbox-thumb& width=&835& data-original=&https://pic3.zhimg.com/v2-eb20f194ce2cdc44808d51_r.jpg&&&/figure&&p&&b&△&/b& DeepLabv3 ASPP结构&/p&&figure&&img src=&https://pic1.zhimg.com/v2-03a404cbc17_b.jpg& data-rawwidth=&1356& data-rawheight=&218& class=&origin_image zh-lightbox-thumb& width=&1356& data-original=&https://pic1.zhimg.com/v2-03a404cbc17_r.jpg&&&/figure&&p&原文地址:&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//blog.qure.ai/notes/semantic-segmentation-deep-learning-review& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.qure.ai/notes/sema&/span&&span class=&invisible&&ntic-segmentation-deep-learning-review&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&【完】&/p&&p&欢迎大家关注我们的专栏:&a href=&https://zhuanlan.zhihu.com/qbitai& class=&internal&&量子位 - 知乎专栏&/a&&/p&&p&&b&一则通知&/b&&/p&&p&量子位读者5群开放申请,对人工智能感兴趣的朋友,可以添加量子位小助手的微信qbitbot2,申请入群,一起研讨人工智能。&/p&&p&另外,量子位大咖云集的自动驾驶技术群,&b&仅接纳研究自动驾驶相关领域的在校学生或一线工程师&/b&。申请方式:添加qbitbot2为好友,备注“&b&自动驾驶&/b&”申请加入~&/p&
编译自 Qure.ai Blog量子位 出品 | 公众号 QbitAI图像语义分割就是机器自动从图像中分割出对象区域,并识别其中的内容。量子位今天推荐的这篇文章,回顾了深度学习在图像语义分割中的发展历程。发布这篇文章的Qure.ai,是一家用深度学习来读取医学…
&figure&&img src=&https://pic3.zhimg.com/v2-c63fbef4ed5fe_b.jpg& data-rawwidth=&1254& data-rawheight=&482& class=&origin_image zh-lightbox-thumb& width=&1254& data-original=&https://pic3.zhimg.com/v2-c63fbef4ed5fe_r.jpg&&&/figure&&h3&新写了一篇&a href=&https://zhuanlan.zhihu.com/p/?group_id=457152& class=&internal&&TensorFlow识别字母扭曲干扰型验证码-开放源码与98%模型 - 知乎专栏&/a& 欢迎来踩踩&/h3&&br&&a href=&https://link.zhihu.com/?target=https%3A//www.urlteam.org& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The world we move forward together&/a&&br&&br&&h3&什么是TensorFlow?&/h3&&p&TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU)、服务器、移动设备等等。TensorFlow 最初由Google Brain 小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。&/p&&h3&教程&/h3&&ul&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/pkmital/tensorflow_tutorials& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow 教程1&/a& – 从基础到有趣的TensorFlow程序&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/nlintz/TensorFlow-Tutorials& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow 教程2&/a& – 介绍基于谷歌TensorFlow框架的深度学习,其中有些教程是学习了Newmu的Theano教程&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/aymericdamien/TensorFlow-Examples& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow 实例&/a& – TensorFlow教程以及一些新手的代码实例&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/sjchoi86/Tensorflow-101& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sungjoon的TensorFlow-101&/a& – 在Jupyter Notebook上用python写的TensorFlow教程&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/terryum/TensorFlow_Exercises& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Terry Um的TensorFlow练习&/a& – 根据其他TensorFlow项目再创作的代码&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/samjabrahams/tensorflow-on-raspberry-pi& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&在树莓派3上安装TensorFlow&/a& – 在树莓派上正确安装和运行TensorFlow&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/guillaume-chevalier/LSTM-Human-Activity-Recognition& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&时间序列上的分类&/a& – 在TensorFlow上的基于手机传感数据的LSTM循环神经网络&/li&&/ul&&h3&模型/工程&/h3&&ul&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/yunjey/domain-transfer-network& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&图片形态转换&/a& – 无监督图片形态转换的实现&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/yunjey/show-attend-and-tell& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Show, Attend and Tell算法&/a& -基于聚焦机制的自动图像生成器&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/cysmith/neural-style-TensorFlow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neural Style&/a& – Neural Style 算法的TensorFlow实现&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/google/prettytensor& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pretty Tensor&/a& – Pretty Tensor提供了高级别的TensorFlow封装接口&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/anishathalye/neural-style& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neural Style&/a& – neural style的又一实现&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/denti/AlexNet3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AlexNet3D&/a& – 用3D卷积层实现AlexNet&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/samjabrahams/tensorflow-white-paper-notes& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow笔记&/a& – TensorFlow的学习笔记和总结,附带一些图片说明&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/ckmarkoh/neuralart_tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NeuralArt&/a& – 艺术风格绘画的神经网络算法TensorFlow实现&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//www.danielslater.net/2016/03/deep-q-learning-pong-with-tensorflow.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DQN玩乒乓&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/hardmaru/write-rnn-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow生成手写体&/a& – 实现Alex Grave的论文中关于生成手写体的部分&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/carpedm20/NTM-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow实现神经图灵机&/a& – TensorFlow实现神经图灵机&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/agermanidis/thingscoop& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基于物体搜索和过滤视频&/a& – 使用卷积神经网络基于视频中的物品、地点等来搜索、过滤和描述视频&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/tokestermw/tensorflow-shakespeare& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用TensorFlow来转换莎士比亚作品和现代版本的英语&/a& – 实现莎士比亚作品和现代版本的英语的单语转换&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/Conchylicultor/DeepQA& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&聊天机器人&/a& – 一个基于深度学习的聊天机器人&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/pavelgonchar/colornet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&colornet&/a& – 使用神经网络给灰度图像着色&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/jazzsaxmafia/show_attend_and_tell.tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&图像生成器&/a& – Show and Tell算法实现&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/jazzsaxmafia/show_attend_and_tell.tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Attention based的自动图像生成器&/a& – Show, Attend and Tell算法实现&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/jazzsaxmafia/Weakly_detector& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Weakly_detector&/a& – 用于定位的深度特征&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/jazzsaxmafia/dcn.TensorFlow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dynamic Capacity Networks&/a& – DCN的TensorFlow实现&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/dwiel/tensorflow_hmm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow实现HMM&/a& – 实现HMM的维特比算法和前后向算法&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/trailbehind/DeepOSM& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DeepOSM&/a& – 使用OpenStreetMap和卫星图像训练深度学习网络&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/devsisters/DQN-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DQN-tensorflow&/a& – TensorFlow通过OpenAI Gym实现深度学习来实现“深度强化学习下达到人类水平的控制”&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/fomorians/highway-cnn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Highway Networks&/a& – 使用TensorFlow和Fomoro进行简单的超深度网络训练&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/dennybritz/cnn-text-classification-TensorFlow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&用CNN做句子分类&/a& – 用TensorFlow实现句子分类的卷积神经网络&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/domluna/memn2n& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&End-To-End Memory Networks&/a& – 使用TensorFlow实现End-To-End的Memory Network&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/carpedm20/lstm-char-cnn-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Character-Aware的神经语言模型&/a& – 基于字符感知的LSTM语言模型&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/thtrieu/darkflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YOLO TensorFlow ++&/a& – TensorFlow实现YOLO实时物体检测,支持实时运行在移动设备上&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/ibab/tensorflow-wavenet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Wavenet&/a& – TensorFlow实现用来生成音频的WaveNet对抗生成网络架构&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/trigeorgis/mdm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mnemonic Descent Method&/a& – TensorFlow实现助记符下降法:重现端对端的人脸对齐&/li&&/ul&&h3&由TensorFlow提供技术支持&/h3&&ul&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/gliese581gg/YOLO_tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YOLO TensorFlow&/a& – 实现YOLO:实时物体检测&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/natanielruiz/android-yolo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&android-yolo&/a& – 在安卓设备商使用YOLO实行实时物体检测,由TensorFlow提供技术支持&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/tensorflow/magenta& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Magenta&/a& – 在制作音乐和艺术中使用机器智能提升艺术形态(研究项目)&/li&&/ul&&h3&库&/h3&&ul&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/learn/python/learn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Scikit Flow (TensorFlow Learn)&/a& – 深度/机器学习的简化版接口(现在是TensorFlow的一部分)&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/somaticio/tensorflow.rb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tensorflow.rb&/a& – TensorFlow的Ruby版本,使用了SWIG&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/TensorFlowlearn/TensorFlowlearn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlowlearn&/a& – 有高级别API的深度学习库&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/tensorflow/models/tree/master/inception/inception/slim& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow-Slim&/a& – TensorFlow中的高级别简化版库&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/databricks/tensorframes& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFrames&/a& – Apache Spark上DataFrames的TensorFlow封装&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/ethereon/caffe-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&caffe-tensorflow&/a& – 转换Caffe模型为TensorFlow的模式&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//keras.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&keras&/a& – 用于TensorFlow和Theano的小型的模块化的库&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/tensorflow/models/tree/master/syntaxnet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SyntaxNet 语法分析神经网络模型&/a& – 全球标准化的Transition-Based神经网络模型的TensorFlow实现&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/transcranial/keras-js& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&keras-js&/a& – 在GPU的支持下,在浏览器中运行Keras模型&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//github.com/welschma/NNFlow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NNFlow&/a& – 一个简单的框架,可以将ROOT NTuples转换成可以在TensorFlow使用的Numpy数据&/li&&/ul&&h3&视频&/h3&&ul&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3D_ODQ-mV3H9Q& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow Guide 1&/a& – TensorFlow的安装和使用指南1&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3D0Xjj8SQKdDw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow Guide 2&/a& – TensorFlow的安装和使用指南2&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3Dyh8oRFw3vDc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow Basic Usage&/a& – 基本使用指南&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DkMts0baddow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow Deep MNIST for Experts&/a& – 深入了解MNIST&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DReaxoSIM5XQ& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow Udacity Deep Learning&/a& – 在有1GB数据的Cloud 9在线服务安装TensorFlow的步骤&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//video.foxnews.com/v/1/why-google-wants-everyone-to-have-access-to-tensorflow/%3F%23sp%3Dshow-clips& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&为什么谷歌希望所有人都可以访问TensorFlow&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//blog.altoros.com/videos-from-tensorflow-silicon-valley-meetup-january-19-2016.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1/19/2016TensorFlow 硅谷见面会&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//blog.altoros.com/videos-from-tensorflow-seattle-meetup-jan-21-2016.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1/21/2016TensorFlow 硅谷见面会&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DL8Y2_Cq2X5s%26index%3D7%26list%3DPLmImxx8Char9Ig0ZHSyTqGsdhb9weEGam& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&19th Apr 2016 斯坦福CS224d 第七课 – TensorFlow介绍&/a& – CS224d 用于自然语言处理的深度学习 By Richard Socher&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DGZBIPwdGtkk%26feature%3Dyoutu.be%26list%3DPLBkISg6QfSX9HL6us70IBs9slFciFFa4W& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&通过TensorFlow了解机器学习&/a& – Pycon 大会,2016年&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DXYwIDn00PAo%26feature%3Dyoutu.be& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用TensorFlow的大规模深度学习&/a& – Jeff Dean在Spark Summit 2016上的演讲&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3Dvq2nnJ4g6N0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow和深度学习&/a&&/li&&/ul&&h3&论文&/h3&&ul&&li&&a href=&https://link.zhihu.com/?target=http%3A//download.tensorflow.org/paper/whitepaper2015.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems &/a&– 论文介绍了TensorFlow的接口以及我们在google上构建的这些接口的实现&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow.Learn: TensorFlow’s High-level Module for Distributed Machine Learning&/a& – TensorFlow用于分布式机器学习的高级别模块&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Comparative Study of Deep Learning Software Frameworks&/a& – 这个研究运行在不同的深度学习架构上,我们也评估在单机上使用CPU和GPU配置时同一框架的性能&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Distributed TensorFlow with MPI &/a&– 在论文中,我们使用MPI将TensorFlow在大规模集群中扩展&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Globally Normalized Transition-Based Neural Networks&/a& – 这个论文介绍了&a href=&https://link.zhihu.com/?target=https%3A//github.com/tensorflow/models/tree/master/syntaxnet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SyntaxNet&/a&背后的模型&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow: A system for large-scale machine learning&/a& – 这个论文展示了TensorFlow的数据流模型并与存在的系统进行对比,展现了它引人注目的性能&/li&&/ul&&h3&官方公告&/h3&&ul&&li&&a href=&https://link.zhihu.com/?target=https%3A//googleblog.blogspot.com/2015/11/tensorflow-smarter-machine-learning-for.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow: smarter machine learning, for everyone&/a& – 介绍了TensorFlow&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Announcing SyntaxNet: The World’s Most Accurate Parser Goes Open Source&/a& – SyntaxNet的发布公告“一个基于TensorFlow的开源神经网络系统,为自然语言理解系统打下了基础”&br&&h3&博文&/h3&&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//www.somatic.io/blog/why-tensorflow-will-change-the-game-for-ai& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Why TensorFlow will change the Game for AI&/a& – 为什么TensorFlow会改变游戏的AI&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//petewarden.com//tensorflow-for-poets/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow for Poets &/a&– 了解TensorFlow的实现&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//terrytangyuan.github.io//scikit-flow-intro/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Introduction to Scikit Flow – Simplified Interface to TensorFlow &/a&– Scikit Flow简介,它简化了TensorFlow的接口&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//terrytangyuan.github.io//understand-and-build-tensorflow-estimator/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Building Machine Learning Estimator in TensorFlow&/a& – 了解TensorFlow的内部学习评估器&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//terrytangyuan.github.io//tensorflow-not-just-deep-learning/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow – Not Just For Deep Learning&/a& – TensorFlow,不仅仅为了深度学习&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//indico.io/blog/indico-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The indico Machine Learning Team’s take on TensorFlow&/a& – indico机器学习团队采纳TensorFlow&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//indico.io/blog/the-good-bad-ugly-of-tensorflow/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Good, Bad, & Ugly of TensorFlow &/a&– 为期六个月快速演进的报告(一个小贴士和窍门来弥补TensorFlow的不足)&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//joelgrus.com//fizz-buzz-in-tensorflow/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Fizz Buzz in TensorFlow&/a& – Joel Grus的一个玩笑&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//www.wildml.com/2016/08/rnns-in-tensorflow-a-practical-guide-and-undocumented-features/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&RNNs In TensorFlow, A Practical Guide And Undocumented Features &/a&– 基于TensorFlow的RNN实现,Github上提供了步骤和全套代码&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//maxmelnick.com//visualizing-tensorflow-retrain.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用TensorBoard来可视化TensorFlow训练的图片分类&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//warmspringwinds.github.io/tensorflow/TensorFlow-slim//TensorFlowrecords-guide/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlowRecords Guide&/a& – 语义分割和处理TensorFlowRecord文件格式&/li&&/ul&&h3&社区&/h3&&ul&&li&&a href=&https://link.zhihu.com/?target=http%3A//stackoverflow.com/questions/tagged/tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stack Overflow&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//twitter.com/TensorFlo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&@TensorFlo on Twitter&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www.reddit.com/r/tensorflow/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Reddit&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//groups.google.com/a/tensorflow.org/forum/%23%21forum/discuss& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mailing List&/a&&/li&&/ul&&h3&书&/h3&&ul&&li&《&a href=&https://link.zhihu.com/?target=http%3A//www.jorditorres.org/first-contact-with-tensorflow/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&First Contact with TensorFlow&/a& – 第一次接触TensorFlow》。作者 Jordi Torres 是UPC Barcelona Tech 的教授。也是 Barcelona 超级计算中心的研究经理和高级顾问&/li&&li&《&a href=&https://link.zhihu.com/?target=https%3A//machinelearningmastery.com/deep-learning-with-python/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Deep Learning with Python&/a& – 深度学习之python》,使用Keras在Theano和TensorFlow开发深度学习模型&/li&&li&《&a href=&https://link.zhihu.com/?target=https%3A//bleedingedgepress.com/tensor-flow-for-machine-intelligence/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow for Machine Intelligence&/a& – TensorFlow实现机器智能》,提供完成的教程,从基本的图运算到在实际应用中制造深度学习模型&/li&&li&《&a href=&https://link.zhihu.com/?target=https%3A//www.packtpub.com/big-data-and-business-intelligence/getting-started-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Getting Started with TensorFlow&/a& – TensorFlow入门》,开始学习并使用谷歌最新的数据计算库TensorFlow来深度分析数据&/li&&li&《&a href=&https://link.zhihu.com/?target=http%3A//shop.oreilly.com/product/9.do& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hands-On Machine Learning with Scikit-Learn and TensorFlow&/a& – 通过Scikit-Learn和TensorFlow来实践机器学习》,覆盖了机器学习的基础、训练以及在多个服务器和GPU上部署深度学习网络,以及CNN、RNN、自动编码器和Deep Q.&/li&&li&《&a href=&https://link.zhihu.com/?target=https%3A//www.packtpub.com/big-data-and-business-intelligence/building-machine-learning-projects-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Building Machine Learning Projects with Tensorflow&/a&》 – 这本书包含了多个不同类型的工程,来说明TensorFlow在不同场景中的应用,这本书的工程包括了训练模型、机器学习、深度学习以及多种神经网络,每个工程都是一个精妙的、有意义的项目,会教我们如何使用TensorFlow并在使用中如何对数据分层&/li&&/ul&&p&有些python相关的库是&a href=&https://link.zhihu.com/?target=https%3A//github.com/jobbole/awesome-python-cn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&从vinta那儿拷贝&/a&的&/p&&p&go相关的资源是从&a href=&https://link.zhihu.com/?target=https%3A//github.com/golang/go/wiki/Projects%23Machine_Learning& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这儿&/a&获取的&/p&&br&&p&&strong&原创文章,转载请注明:&/strong& 转载自&a href=&https://link.zhihu.com/?target=https%3A//www.urlteam.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&URl-team&/a&&/p&&p&&strong&本文链接地址:&/strong&&a href=&https://link.zhihu.com/?target=https%3A//www.urlteam.org/2017/03/tensorflow-%25e8%25b5%%25ba%%25a4%25a7%25e5%-%25e4%25b8%25ad%25e6%e7%/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow 资源大全–中文版&/a&&/p&
新写了一篇 欢迎来踩踩
什么是TensorFlow?TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示…
&p&呃,谢邀。。文科生啊。其实这篇论文真是蛮适合文科生读的,因为确实很简单=,=,1个初中生就懂的公式,5行代码就能实现了,而且对目前几乎所有主流网络都有效。&/p&&p&以前分类神经网络,是给张图,然后网络输出某个物体出现的概率。现在这个叫Class Activation Mapping的方法可以在不改变网络结构的情况下,再帮忙输出一张热力图,高亮出图片里面哪些区域最可能出现这个物体。直观如下面这个视频,左上角是网络预测当前帧的最可能出现的物体的概率,然后热力图高亮了这个物体可能在图片里面什么地方(第一次在回答里插视频,不知道效果如何)。&/p&&a class=&video-box& href=&//link.zhihu.com/?target=https%3A//www.zhihu.com/video/568320& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic2.zhimg.com/80/v2-61a0bbcedb530a6f16fa9_b.jpg& data-lens-id=&568320&&
&img class=&thumbnail& src=&https://pic2.zhimg.com/80/v2-61a0bbcedb530a6f16fa9_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/568320&/span&
&/a&&p&大致做法是利用了内部卷积层和最后预测层的线形关联,看懂论文里那个唯一一个公式就够了。&/p&&p&算法的网站和代码在这里:&a href=&//link.zhihu.com/?target=http%3A//cnnlocalization.csail.mit.edu/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CNN Discriminative Localization and Saliency&/a&&/p&&p&其实Places-CNN demo里面也用了这个算法生成热力图(&a href=&//link.zhihu.com/?target=http%3A//places2.csail.mit.edu/demo.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&A Large-Scale Database for Scene Understanding&/a&),说不定你还能给哈佛博士现场展示。。&/p&&p&-----------------刚发现&/p&&p&Andrew Ng用过都说好。。&/p&&p&&figure&&img data-rawwidth=&750& data-rawheight=&995& src=&https://pic2.zhimg.com/v2-8e3b61ce5c1eacf74ddc15_b.jpg& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic2.zhimg.com/v2-8e3b61ce5c1eacf74ddc15_r.jpg&&&/figure&&/p&
呃,谢邀。。文科生啊。其实这篇论文真是蛮适合文科生读的,因为确实很简单=,=,1个初中生就懂的公式,5行代码就能实现了,而且对目前几乎所有主流网络都有效。以前分类神经网络,是给张图,然后网络输出某个物体出现的概率。现在这个叫Class Activation M…
不知道用文科生的视角解读是不是意味着不能再中英混杂装逼了……&br&anyway。&br&本文的动机如下:&br&曾经有人提出过一个方法叫做global average pooling(GAP),之前大家是用它来“正则化训练的”,这个的意思就是说让训练的结果更具有泛化性。例如,我希望在室内场景狗的数据集训练的模型可以也能拿来识别室外的狗。&br&&br&&br&然而,然而,然而。作者就是不拿GAP来干这个事情。&br&曾经,有一些工作将深度学习结果用容易理解的图的形式表示出来(如作者用到的热力图),帮助人们理解深度网络在训练的过程中到底在干什么。&br&&br&我打赌这篇的作者就是用了以上的可视化途径去看用了GAP以后,深度网络的层的输出有了什么规律,于是,他惊奇的发现,原来GAP帮助深度网络提高泛化力的同时,还能定位与目标类别相关的位置,啊哈,又TM能去顶会灌水了...啊呸....又能为学术界提供强有力的insight了。&br&&br&举例来说就是这样。&br&&figure&&img data-rawwidth=&478& data-rawheight=&257& src=&https://pic2.zhimg.com/v2-5ecfdaf919a947d5e5e53ed_b.jpg& class=&origin_image zh-lightbox-thumb& width=&478& data-original=&https://pic2.zhimg.com/v2-5ecfdaf919a947d5e5e53ed_r.jpg&&&/figure&&br&图片的标签告诉我们,女人在刷牙,大爷在砍树。用了作者的方法,再可视化成热力图,我们发现原来深度网络之所以判断正确,是因为它们的“关注点”跟人一样,在这些位置。这些位置上的信息帮它把刷牙的动作认出来,而没有认错成砍树。&br&&br&那么,以前分类效果超好的深度网络为啥没发现呢?因为它们最后一层是全连层。全连层的缺点是啥?它不把图片当图片看啊,直接把人家拉成一条向量,位置信息自然就丢失咯 。GoogleNet认识到这个问题,人家就不去用全连层啦,人家开始用全都是卷积层的网络来搞分类任务啦。&br&&br&那么,作者现在最想做的事情就是,如何告诉大家,使用全卷积网络和GAP来标记与识别目标相关的位置信息。&br&&br&我假设一下你对深度网络如何模仿人的生理系统,大脑,有了一定认识基础,毕竟你上过课嘛。其实就

我要回帖

更多关于 time capsule 设置 的文章

 

随机推荐