| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 解读FCN模型用于语义分割 (Fully Convolutional Networks) -> 正文阅读 |
|
[人工智能]解读FCN模型用于语义分割 (Fully Convolutional Networks) |
up convolutionFCN论文标题:Fully Convolutional Networks for Semantic Segmentation 代码地址:https://github.com/shelhamer/fcn.berkeleyvision.org 经典CNN由哪几部分 组成? ????????convolution, pooling, and activation functions 什么是语义分割:给每一个像素点都分类成一个label
与图片分类的区别?——分类网络是把一整张图分成一类,而分割网络是把一张图每一个像素点都分成一类。
与目标检测区别?——相似点:都标注了物体的具体分类信息。不同点:ISS是像素级颗粒度的,需要把物体的轮廓描绘出来,用轮廓来标记物体。OD标记物体是其外切框。 ? 与实例分割的区别?——如果一张照片中有多个人,对于语义分割来说,只要将所有人的像素都归为一类--人这一类Person。但是实例分割还要将不同人的像素归为不同的类,Person1,Person2,Person3。也就是说实例分割比语义分割更进一步。
学术意义:ISS语义分割是计算机视觉领域的几大核心研究之一,其他的还有图像分类Classification、目标检测Object Detection、实体分割
FCN的独特之处(1)全卷积Fully Conv:Fuly Conv指的是舍弃掉CNN模型的最后一层,全连接层,用1*1的卷积层替代(是吗?你确定?)。 ? ? ? ? ? ? ? ? 但是我们这里做的任务,是语义分割。全连接层把图片从二维拍扁成一维,损失了spatial information。我们做语义分割是在一个二维图上做的,自然希望保留二维图的结构,希望输出的是二维分割图。所以在最后一层里面用几个卷积层替换了之前的全连接层 ? ? ? ? 前面的网络用的可以是VGG,也可以是AlexNet或者GoogleNet
????????不含全连接层fully connected layer的全卷积网络,可以适应任意尺寸的输入。(
为什么可以适应不同尺寸的?原来用全连接层的为什么不能适应任意尺寸输入?)(输入图片是什么尺寸,输出图片也是什么尺寸。upsampling这个过程保证了输入输出的图片的大小是一致的)
Before:
????????原有的CNN图片分类模型,最后一部分是全连接层。比如说有1000个分类的类别。CNN的最后一部分,用全连接层把图片矩阵从二维矩阵拍扁成一长条的一个向量。向量的长度为1000。向量上的每一个位置的值代表的是这张图属于这个类别的概率。数值最大的那个维度,表示这张图属于这个类别。tabby cat这个类别对应的向量上位置的的概率值最大,说明对这张图片的分类结果是tabby cat.
? ? ? ? ????????convolution这个部分,长宽是图片的长宽。向后延伸的那个,代表channel通道数,输入图片是RGB彩图,通道数为3。后面channel数越变越大。
? ? ? ? ? ? ? ? FC全连接层,是相当于把conv层的图片从二维平面降维成了一个点,后面那个长度表示的是类别数量
? After:? 最后一部分换成了卷积层+upsampling层。upsampling用的是新卷积层不同深度卷积层的信息进行上采样和融合得出来的。最终的输出是size和原图一样,每个像素点标记了属于哪个类别。 ? ? (2)Upsampling via Deconvolution?反卷积的输出图像大于输入图像。 反卷积也被称为up convolution,transposed convolution转置卷积 具体实现方法:在input的这个小图片的四周用0做padding,然后拿着一个卷积核对这个padding后的大图做卷积运算,最后的feature map是 一个比输入图片大的图片,从而实现了上采样。 为什么要进行上采样?因为经过好几个卷积层以后,output的size变得很小。但是我们做语义分割是要对图片上每个像素点,赋予他们属于每个类别的概率值。也就是说我们最终的输出的size应该和输入完全一致。这个时候就通过deconv的上采样把output的size变大。(不一定对,需要再去确认)
优势:反卷积结构能够输出精细的结果(
个人认为,不是这样,再去验证吧)
? (3)Skip Architecture设计这个结构的原因: ????????通过Fully Cnv和Deconv两步以后进行分割,发现分割的结果很粗糙make the output label map rough。为了优化分割结果,于是加入了skip architecture。 ? ? ? ? 当卷积一层层把深度增加go deeper的时候,我们可以obtain到deep feaure。但是shallow layers有更多的空间信息spatial locational information,也就是说随着深度的增加,会有一个损失,也就是空间信息丢失掉了。为了兼顾deep feature和spatial information,因此提出来skip architecture,通过数据融合fusion来兼顾两方面的信息。 怎么做:FCN在其深处的卷积层中融入了浅层卷积的特征。根据步长的不同,FCN的上采样可以分为FCN-32s, FCN-16s, FCN-8s,分别表示 stride = 32,16,8。最后发现融合次数最多的FCN-8s效果最好。注意这是上采样,做完以后图片变大。 ? ? ? ? FCN-32s分割效果最差,是因为他是最深的,因此丢失了很多location information 他这个融合就是element-wise元素级的,对应元素相加在一起。 图里面的这个2x upsampled prediction是什么意思?首先2x代表什么意思?(方格,不密集那个)是把output的size扩大两倍是吧?upsample我懂是上采样。很密的那个格子进行分割所以需要predicton,这里你为什幺进行prediction?。upsampled prediction是怎么做的? 既然最后分类prediction只用最后那个黑色网格(FCN-8s),为什么前面两个黑色网格(FCN-32s和FCN-16s)也要画在下面这个图里面呢? ——确实来说,要融合出FCN-8s,我们并不需要获得FCN-32s和FCN-16s的分类结果,需要的仅仅是把pool3 pool4 pool5 通过上采样先变成大小一致,然后相加,即可。这里之所以在下面这个图里面也画了FCN-32s,FCN-16s,是因为我们要对比这三个模型的效果FCN-32s,FCN-16s,FCN-8s。既然要拿FCN-32s,FCN-16s来对比,你得说明FCN-8s之外的结果是怎么来的吧,所以这里画上去了。 结合下面的模型结构图和上面的图片分割效果图,你发现了什么? ——过对比图,我们才知道使用了skip arch,融合了深层卷积(pool5)和浅层卷积(pool 3,pool4)的FCN-8s,比只有深层信息的pool4和pool5但是没有浅层信息pool3的FCN-16s 好。这就是说明,加入浅层信息的pool3会提高分割效果。 ——继续对比,融合了pool4和pool5的模型FCN-16s,比只有深层信息pool5没有浅层信息的pool4的FCN-32s 要好。再次说明了,在深层信息上面,加上一点比它浅一点的信息,会提高分割效果。 ——因此我们得出,只用最深的数据效果最差,多融合一点浅层数据,模型效果会变好。 很密的格子做unsampled prediction,指的是(S1)因为卷积过很多次以后,output的size变得和原图片比小很多了,所欲先做upsample,将output的维度升高到和原图片一样大小。(2)然后在这张feature map上,用softmax做分类 32x unsampled prediction是指的上采样的卷积的步长为32步吗?卷积多次后,图片已经那么小了,你32步卷积一次,那上采样出来的图片扩大的幅度也有限啊! 2x upsampled prediction指的是什么?把图片的size扩大两倍吗? ? ? ? ? 他这个数据融合fusion fuse,在这里就是通过上采样(反卷积)来实现的。一个卷积核,一次卷积运算就好像融合这个一个卷积核大小的信息。很自然的stride越小,保留的信息越多,自然能够分割好的可能性会更大。
优势:同时确保了鲁棒性和精确性。
FCN是对过去CNN模型的改良(adaption),AlexNet、VGG net、GoogLeNet这些模型都借鉴了。 FCN模型有一个skip architecture,能够结合combine (1)semantic information from 次要的东西????????Optimization方面,使用的是SGD with momentum的方法。momentum=0.9,weight decay of 5^?4 or 2^?4。minibath size=20。下面几个模型的learning rate分别是,FCN-AlexNet, FCN-VGG16, and FCN-GoogLeNet,?10^?3, 10^?4 ,5^?5。 ? ? ? ? 最后还是要加一个softmax,对属于不同类别的概率进行预测 FCN的不足(1)使用了交浅层的特征,因为fuse操作会加上较上层的pool特征值,导致高维特征不能很好得以使用(为啥不能很好得以使用?) (2)也因为使用较上层的pool特征值(为啥因为这个就导致对图片大小有所要求?),导致FCN对于图像大小变化有所要求。也就是,如果测试集图片远大于或小于训练集图片,FCN的效果就会变差 我的疑问什么是全卷积fully conv? 什么是receptive fields视觉感受野,起什么作用?;卷积神经网络里面的filter滤波器是什么? FCN和传统的经典CNN的区别是什么?FCN是如何改进原有模型的比如AlexNet? 什么是shift-and-stitch trick?(这篇文章没有用,应该是不重要) 反复讲的overlap,是什么和什么overlap?
为什fully convolutional computation 可以speed up training?
train for segmentation的时候,是?如何通过fine-tuning来实现?
Skip net:skips between layers, 从而实现融合fuse coarse?semantic information(
coarse粗糙的,high layer information) and local, appearance information(
fine精细的, low layer information.)?
——具体是怎么skip的?把final prediction layer 和 lower layers with finer strides给combine在一起,把
fine精细 layers and coarse粗糙 layers combine在一起,(但是我也不知道谁是谁)
——(目的:)Refining fully convolutional nets by fusing information from (手段)l
ayers with different strides。
————pooling的时候stride越大意味着可以捕捉更多的全局global信息,stride约小,保留的图片信息就越多,捕捉了更多的细节的、局部的信息。二者一结合,全局的和局部的精确信息都捕捉到了。
——为什么这样做可以把后面这些信息融合到一起了?
——FCN-32s,FCN-16s,FCN-8s,的区别是什么,这数字32 16 8代表什么意思
? ? ? ? ——FCN-8s:by fusing predictions from?pool3 with a 2
× upsampling of predictions fused from pool4 and conv7,
intersection over union为什么可以作为评估语义分割的指标?
下面这个流程图Figure3.?
——pool 3和pool 4 这个两个pooling层拿过来,对conv7卷积后的结果再进行pooling。那下一步那个36x 16x 8x是在怎么做?和前面我说的这一步有什么关系?
——没看懂具体的操作流程是什么?
? 什么是fine-tuning?是梯度下降,参数更新吗?还是说特指在预训练模型下的参数更新?
bilinear interpolation,双线性插值吗?
具体指的是什么?怎么操作?有什么用?
什么是端到端学习end to end,是不用做特征工程,input data 到output data吗?
术语解释Dense Prediction:图像语义分割的目标是将图像的每个像素所属类别进行标注。因为是预测图像中的每个像素,这个任务通常被称为密集预测(dense prediction) pixelwise像素级?patchwise 图片小块级 receptive fields:视觉感受野 uniform sampling:均匀采样 fine:是 “精确” 的意思,不是“良好”的意思 阅读过的文章论文解析FCN——Semantic Segmentation的开山之作_浪子私房菜的博客-CSDN博客_fcn论文解析 深度学习语义分割(一)FCN论文解读_su扬帆启航的博客-CSDN博客_fcn论文解读 Review: FCN — Fully Convolutional Network (Semantic Segmentation) 卷积神经网络CNN(3)—— FCN(Fully Convolutional Networks)要点解释_Fate_fjh的博客-CSDN博客 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 17:52:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |