-
semantic
2014-09-09 23:12:25semantic -
FCN的学习及理解(Fully Convolutional Networks for Semantic Segmentation)
2018-05-23 15:55:25论文Fully Convolutional Networks for Semantic Segmentation 是图像分割的milestone论文。理清一下我学习过程中关注的重点。fcn开源代码github下载地址https://github.com/shelhamer/fcn.berkeleyvision.org核心...论文Fully Convolutional Networks for Semantic Segmentation 是图像分割的milestone论文。
理清一下我学习过程中关注的重点。
fcn开源代码
github下载地址https://github.com/shelhamer/fcn.berkeleyvision.org
核心思想
该论文包含了当下CNN的三个思潮
- 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。
- 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。- 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。
一些重点:
损失函数是在最后一层的 spatial map上的 pixel 的 loss 和,在每一个 pixel 使用 softmax loss
使用 skip 结构融合多层(3层)输出,底层网络应该可以预测更多的位置信息,因为他的感受野小可以看到小的 pixels
上采样 lower-resolution layers 时,如果采样后的图因为 padding 等原因和前面的图大小不同,使用 crop ,当裁剪成大小相同的,spatially aligned ,使用 concat 操作融合两个层
预备知识:
CNN与FCN
- 通常cnn网络在卷积之后会接上若干个全连接层,将卷积层产生的特征图(feature map)映射成为一个固定长度的特征向量。一般的CNN结构适用于图像级别的分类和回归任务,因为它们最后都期望得到输入图像的分类的概率,如ALexNet网络最后输出一个1000维的向量表示输入图像属于每一类的概率。
- FCN对图像进行像素级的分类,从而解决了语义级别的图像分割问题。与经典的CNN在卷积层使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷基层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后奇偶在上采样的特征图进行像素的分类。
-全卷积网络(FCN)是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。 - FCN将传统CNN中的全连接层转化成一个个的卷积层。如下图所示,在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,7,7)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。
简单的说,FCN与CNN的区别在于FCN把CNN最后的全连接层换成卷积层,输出一张已经label好的图。
网络结构
网络结构如下。输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21。 (在PASCAL数据集上进行的,PASCAL一共20类)
全卷积-提取特征
虚线上半部分为全卷积网络。(蓝:卷积,绿:max pooling)。对于不同尺寸的输入图像,各层数据的尺寸(height,width)相应变化,深度(channel)不变。
这部分由深度学习分类问题中经典网络AlexNet1修改而来。只不过,把最后两个全连接层(fc)改成了卷积层。论文中,达到最高精度的分类网络是VGG16,但提供的模型基于AlexNet。此处使用AlexNet便于绘图。
全连接层转换为卷积层:在两种变换中,将全连接层转化为卷积层在实际运用中更加有用。假设一个卷积神经网络的输入是 224x224x3 的图像,一系列的卷积层和下采样层将图像数据变为尺寸为 7x7x512 的激活数据体。AlexNet使用了两个尺寸为4096的全连接层,最后一个有1000个神经元的全连接层用于计算分类评分。我们可以将这3个全连接层中的任意一个转化为卷积层:
针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为F=7,这样输出数据体就为[1x1x4096]了。
针对第二个全连接层,令其滤波器尺寸为F=1,这样输出数据体为[1x1x4096]。
对最后一个全连接层也做类似的,令其F=1,最终输出为[1x1x1000]
逐像素预测
虚线下半部分中,分别从卷积网络的不同阶段,以卷积层(蓝色×3)预测深度为21的分类结果。
例:第一个预测模块
输入16*16*4096,卷积模板尺寸1*1,输出16*16*21。相当于对每个像素施加一个全连接层,从4096维特征,预测21类结果。
怎么具体逐像素点预测分类的:
参考博客:http://www.cnblogs.com/gujianhan/p/6030639.html
采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
具体过程:
经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低。其中图像到 H/32∗W/32 的时候图片是最小的一层时,所产生图叫做heatmap热图,热图就是我们最重要的高维特征图。
得到高维特征的heatmap之后就是最重要的一步也是最后的一步对原图像进行upsampling,把图像进行放大、放大、放大,到原图像的大小。
(也就是将高维特征图翻译成原图时对应的分割图像!!)
最后的输出是21张heatmap经过upsampling变为原图大小的图片,为了对每个像素进行分类预测label成最后已经进行语义分割的图像,这里有一个小trick,就是最后通过逐个像素地求其在21张图像该像素位置的最大数值描述(概率)作为该像素的分类。因此产生了一张已经分类好的图片,如下图右侧有狗狗和猫猫的图。
反卷积-升采样
(这里会先进行上采样,即扩大像素;再进行卷积——通过学习获得权值)
下半部分,反卷积层(橙色×3)可以把输入数据尺寸放大。和卷积层一样,上采样的具体参数经过训练确定。
这里图像的反卷积与下图的full卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现end to end。
(feature map值与权重不同,生成的上采样的二值区域也是不一样的。)
例:反卷积2
输入:每个像素值等于filter的权重
输出:步长为stride,截取的宽度为pad。跳级结构
-
如下图所示:对原图进行卷积conv1、pool1后图像缩小为1/2;对图像进行第二次卷积conv2、pool2后图像缩小为1/4;对图像进行第三次卷积conv3、pool3后图像缩小为1/8,此时保留pool3的featuremap;对图像进行第四次卷积conv4、pool4后图像缩小为1/16,此时保留pool4的featuremap;对图像进行第五次卷积conv5、pool5后图像缩小为1/32,然后把原来CNN操作过程中的全连接编程卷积操作的conv6、conv7,图像的featuremap的大小依然为原图的1/32,此时图像不再叫featuremap而是叫heatmap。
-
其实直接使用前两种结构就已经可以得到结果了,这个上采样是通过反卷积(deconvolution)实现的,对第五层的输出(32倍放大)反卷积到原图大小。但是得到的结果还上不不够精确,一些细节无法恢复。于是将第四层的输出和第三层的输出也依次反卷积,分别需要16倍和8倍上采样,结果过也更精细一些了。这种做法的好处是兼顾了local和global信息。
网络的loss层
sem是网络输入层的top:’sem’ 是数据的标签fcn网络的输入batchsize是1,因为分割loss的计算在每一个像素点都一个真值(标签),相当于每一个像素点的都是一个分类任务,一个图像就有对应像素点个样本。所以分割任务的batch是一个图片,将一个图片最后在所有像素点上的分类loss加起来计算一次梯度的更新。
训练
训练过程分为四个阶段,也体现了作者的设计思路,值得研究。
第1阶段
以经典的分类网络为初始化。最后两级是全连接(红色),参数弃去不用。第2阶段
从特征小图(16*16*4096)预测分割小图(16*16*21),之后直接升采样为大图。
反卷积(橙色)的步长为32,这个网络称为FCN-32s。
这一阶段使用单GPU训练约需3天。第3阶段
升采样分为两次完成(橙色×2)。
在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)融合进来。使用跳级结构提升精确性。
第二次反卷积步长为16,这个网络称为FCN-16s。
这一阶段使用单GPU训练约需1天。第4阶段
升采样分为三次完成(橙色×3)。
进一步融合了第3个pooling层的预测结果。
第三次反卷积步长为8,记为FCN-8s。
这一阶段使用单GPU训练约需1天。较浅层的预测结果包含了更多细节信息。比较2,3,4阶段可以看出,跳级结构利用浅层信息辅助逐步升采样,有更精细的结果。
其他参数
minibatch:20张图片
learning rate:0.001
初始化:
分类网络之外的卷积层参数初始化为0。
反卷积参数初始化为bilinear插值。最后一层反卷积固定位bilinear插值不做学习。结论
总体来说,本文的逻辑如下:
- 想要精确预测每个像素的分割结果
- 必须经历从大到小,再从小到大的两个过程
- 在升采样过程中,分阶段增大比一步到位效果更好
- 在升采样的每个阶段,使用降采样对应层的特征进行辅助后续的一个发展:
采用条件随机场建立类别的关系。
举个简单的例子,"天空"和"鸟"这样的像素在物理空间是相邻的概率,应该要比"天空"和"鱼"这样像素相邻的概率大,那么天空的边缘就更应该判断为鸟而不是鱼(从概率的角度)。https://blog.csdn.net/DL_CreepingBird/article/details/78574059
参考博客:https://blog.csdn.net/xxiaozr/article/details/74159614
配置caffe运行FCN:http://melonteam.com/posts/quan_juan_ji_shen_jing_wang_luo_fcn_xue_xi_bi_ji/
我觉得思路最清晰的一个博主:https://blog.csdn.net/qq_37274615/article/details/73251503
-
Construction of Semantic Collocation Bank Based on Semantic Dependency Parsing
2021-02-09 15:20:59Construction of Semantic Collocation Bank Based on Semantic Dependency Parsing -
semantic 2.0
2020-12-03 03:21:10<p>when is comming semantic 2.0? when you update the meteor package? <p>i need this very urgent for a project. <p>Semantic is perfect and very very cool <p>regards aron</p><p>该提问来源于开源项目ÿ... -
Semantic release
2020-12-28 10:16:14ve following semantic-release <a href="https://semantic-release.gitbook.io/semantic-release/usage/getting-started">getting started guide, and also <a href="https://github.com/semantic-release/semantic... -
Semantic Drilldown
2020-12-25 18:18:54<p>Planned and desired future developments for <a href="http://www.mediawiki.org/wiki/Extension:Semantic_Drilldown">Semantic Drilldown</a>: - the ability to drill down on <a href="https://semantic-... -
Semantic Release
2021-01-09 10:06:44ve been using <a href="https://github.com/semantic-release/semantic-release">semantic-release</a> along with <a href="https://github.com/commitizen/cz-cli">commitizen</a> on our open source JS ... -
Semantic colors
2021-01-08 11:58:18So we need to go through the remaining <code>RAW_COLORS</code> and decide whether we want to add a new semantic color, make an exception, or better, change it to use an existing semantic color.... -
SEMANTIC html
2020-12-05 20:32:36With frameworks and lots of people coming from flash background, you see lots of great sites, with amazing design and css/js, but the semantic is terrible! Would be great if this tool had a way to ... -
Semantic Versioning
2020-12-27 11:11:18t specify an upper bound for the version of the Dropbox SDK but under a semantic versioning scheme I should. Upping major version numbers is a signal that the new version of the library isn't ... -
semantic versioning
2020-12-27 00:41:03<p>The question is not whether semantic versioning isn't helpful in theory. The question is what happens in practice: - how heavy a burden is it for us to use semantic versioning? Can we be ... -
SemanticUI后台模板Semantic-Admin-Template.zip
2019-07-19 05:46:16Semantic-Admin-Template 是 Semantic UI 的后台模板。 标签:Semantic -
Semantic labelling
2021-01-10 02:14:01<div><p>Hello How can i do the semantic labeling around detected objects?</p><p>该提问来源于开源项目:dusty-nv/jetson-inference</p></div> -
Semantic issues
2020-11-28 21:54:33Since updating, the Baker framework brings up a whole slew of semantic issues. Most stem from JSONkit.m, others are parsing issues from unzip.c. Searching suggests other frameworks (e.g. Phonegap) ... -
Semantic Highlighting
2020-12-26 11:03:54<p>I was wondering if there is a plan to support the newly semantic highlighting feature. <p>https://github.com/microsoft/vscode/wiki/Semantic-Highlighting-Overview</p> <p>The thme looks already great... -
Semantic versioning
2020-12-25 16:35:49<div><p>Is it possible you can use semantic versioning, e.g. $major.$minor.$patch in your releases?</p><p>该提问来源于开源项目:mime-types/ruby-mime-types</p></div> -
Semantic UI 框架
2018-07-06 18:51:07Semantic UI 框架,Semantic UI中文官方网站, 当前版本:Semantic UI 2.2.4... Semantic作为一款开发框架,帮助开发者使用对人类友好的HTML语言构建优雅的响应式布局。 -
(Semantic UI)Semantic UI导入
2021-01-16 18:43:341、参考链接 (1) semantic ui英文站:https://semantic-ui.com/ (2) semantic ui中文站:...(1) jquery-3.5.1.min.js (要注意,该文件必须在semantic.min.js前引入,因为后者依赖于前者) (2) semantic.min.css (31、参考链接
(1) semantic ui英文站:https://semantic-ui.com/
(2) semantic ui中文站:https://zijieke.com/semantic-ui/
(3) jQuery:https://jquery.com/download/引入Semantic UI框架需要引入三个文件
(1) jquery-3.5.1.min.js (要注意,该文件必须在semantic.min.js前引入,因为后者依赖于前者)
(2) semantic.min.css
(3) semantic.min.js代码具体如图:
<script src="../js/jquery-3.5.1.min.js"></script> <link rel="stylesheet" href="../css/semantic.min.css"> <script src="../js/semantic.min.js"><</script>
-
Efficient Distributed Semantic Based Data and Service Unified Discovery With One-Dimensional ...
2021-02-11 02:01:27Efficient Distributed Semantic Based Data and Service Unified Discovery With One-Dimensional Semantic Space -
Trying to load mesh_semantic_semantic.ply instead of mesh_semantic.ply
2020-11-27 20:59:46W1030 21:54:12.197676 15167 ResourceManager.cpp:310] ResourceManager::loadScene : Not loading semantic mesh - File Name : data/scene_datasets/replica/apartment_0/habitat/mesh_semantic_semantic.ply ... -
Semantic Augmentation
2019-11-23 20:06:47Semantic Augmentation1.Implicit Semantic Data Augmentation for Deep Networks_NIPS192.Learning to compose domainspecific transformations for data augmentation_NIPS173.A Unified Feature Disentangler for...Semantic Augmentation
- 1.Implicit Semantic Data Augmentation for Deep Networks_NIPS19
- 2.Learning to compose domain specific transformations for data augmentation_NIPS17
- 3.A Unified Feature Disentangler for Multi-Domain Image Translation and Manipulation_NIPS18
- 4.Unsupervised Domain Adaptation by Backpropagation_ICML15
- 5.Adversarial Zero-Shot Learning with Semantic Augmentation_AAAI18
- 6.DATA AUGMENTATION GENERATIVE ADVERSARIAL NETWORKS_2018未发表
- 7.Domain Agnostic Learning with Disentangled Representations_ICML19
1.Implicit Semantic Data Augmentation for Deep Networks_NIPS19
作者认为神经网络产生的深度特征总是线性化的(linearized),在深度特征空间有很多语义方向,修改这些语义方向可以作用到样本的某个特征,比如让不戴眼镜的人戴上眼镜。但语义方向的操作应该是一个自动过程,作者对于每个类学习一个协方差矩阵,包含丰富的语义信息,捕获这个类的各种样本的变化。同时在normal distribution中采样零均值的随机向量。我认为这里是在模拟输入数据的高斯分布,利用这两项就能采样出新的数据,再输入分类器训练,可以提高分类精度。
还有一个细节是,本文产生了M次增强的数据,所以损失函数(交叉熵)中含有未知量M,作者将其趋近无穷大作为上界,计算这个极限值的损失。数据点有C个class,aik是增强后的向量。
2.Learning to compose domain specific transformations for data augmentation_NIPS17
gan+强化学习
针对指定域做数据增强,用强化学习学得和参数化不可微的transformation functions,作者提出增强后的图片分布可能变化,不应假定标签不变,所以提出了null class,优化目标是使得输入图片指向null class的概率变小。用gan来实现,判别器的目标是分配low values给转换的、脱离分布的数据点,high values给真实的服从分布的数据点,生成器的目标是产生transformation sequences,其作用在数据点上后,产生判别器无法区分的数据点。
3.A Unified Feature Disentangler for Multi-Domain Image Translation and Manipulation_NIPS18
gan实现的,直接上图。编码器E接收xc生成语义表示z,损失由Dv和自编码器两部分确定,后者由生成xc帽的synthesize损失和zc与z分布距离组成。产生z后,拼接域语义表示vc和vc横,域语义应该是通过gan训练出来的,传递给生成器G,重构成xc帽和xc横帽(要了命了不知道怎么打这公式,只能一个是帽一个是横了,看图片能看出来),再给Dx判别,此处的判别有两个目标。
下面是各自的损失函数:
4.Unsupervised Domain Adaptation by Backpropagation_ICML15
域对齐,将生成模型得到的表示向量同时输入给一个类分类器和一个域分类器,当域分类器收敛后,说明源数据域和目标数据域已经对齐,不存在shift。就好比这张图片,A,B是两个域,当域分类器无法分辨出数据是A还是B的时候,说明生成模型找到了中间交集的部分,所以在A域训练的模型可以用来在B域上测试。
可以参考Unsupervised Domain Adaptation by Backpropagation阅读笔记
如果将表示向量分成两段,分别输入给类分类器和域分类器,当域分类器收敛后,说明输入给域分类器的向量段不存在域信息,可以视为只有类信息,而域信息在另一段里。参考李宏毅的2019课程之自编码器第二节。
5.Adversarial Zero-Shot Learning with Semantic Augmentation_AAAI18
利用gan,生成器的输入是数据点的语义表示和噪声,目标是产生semantic same和semantic compound两种样本,前者是和输入数据类相同的,为了丰富某类的多样性;后者是介于两个输入数据类之间的新类yij样本,为了使判别器能够区分出类间overlap的样本,也是以此实现零次学习。作者将图像特征和中间表示(作者说intermediate representation是实现零次学习的核心,通过它来将知识从见过的类中迁移出来,此处的中间表示是样本的label)都映射到一个common space,据称这样更易识别。作者还做了检索的实验。
6.DATA AUGMENTATION GENERATIVE ADVERSARIAL NETWORKS_2018未发表
本文preprint在了coRR上,源代码在github上传时间是在两年前。
题目很清楚,用GAN做DA,见下图。输入图片的语义表示和高斯分布中采样的噪声zi的线性变换做concat,输入解码器得到生成图片xg,将(xi,xj)作为正样本对,(xi,xg)作为负样本,输入判别器,当判别器训练到无法分辨的时候,代表生成的图片可以乱真了。
7.Domain Agnostic Learning with Disentangled Representations_ICML19
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本引用文本
-
Semantic UI Semantic is a UI framework designed for theming. Key Features 50+ UI elements 3000 + CSS variables 3 Levels of variable inheritance (similar to SublimeText) Built with EM values for ...
-
About semantic labels
2020-12-01 15:38:27If so, Please let me know how to extract.)</li><li>Do /data/semantic or semantic_pretty/camera*.png data mean 2D semantic labels? I want to know which object each label belongs to. Therefore, what I ...