Posts

Showing posts with the label 计算机视觉

计算机视觉 语义分割 论文笔记

Image
< A Review on Deep Learning Techniques Applied to Semantic Segmentation > 1. 综述 语义分割semantic segmentation 是计算机视觉中一个重要的部分。长远来看,它为完整的场景理解铺平了道路。语义分割并不是一个单独的门类,这是从粗糙分类到精细分类的自然一步。 演化的步骤是这样的: 1. 首先我们做的是输入一张图,输出这张图上有没有特定的物体,即预测哪些物体是属于这个图像的,或者给出一个可能性排序。 2. 接下来我们发展为:给出物体的定位与检测。定位体现在我们可以标注出物体的中心点,或者用框框出来。然而这里的检测还是检测出一个类别,并不能细分出类别里的事例。可以理解为能识别java里的class 而不是instance 的感觉。这样的话我们对于图中的每一个像素都能归类到一个类别。 3. 在之前的基础上,我们可以进一步细化,我们可以把图中的每个像素不光标注出它属于什么类别class,而是标注出属于哪个事例instance 所以上图c,d 这种问题就被归结为: 我们定义一个集合 L{l0,l1,...lk} 集合L代表一共有k+1个不同的instance标签,通常我们认为l0就是背景background 定义集合X = {x1, x1, ... xn} 集合X代表图中所有像素一共n个像素点。 输出就是预测每个像素点所对应的label值 这也就是像素级别的预测 2.1 常见的深度网络架构 这段也可以看 CS231n 2017 Lecture 9 Alex Net VGG GoogLeNet ResNet ReNet 2.2 迁移学习 因为从头训练一个深度神经网络通常不太可行,原因有二:训练需要足够的数据量;模型训练到收敛需要不少的时间。通常我们拿一个预训练好的模型,然后用自己的数据集训练,微调Fine-tuning一些权重。在Fine-tuning的时候,选取哪一层开始很关键,一般会选择比较较高的层,因为底层会保留比较通用的特征;并且learning rate 也不适合选的过大,毕竟我们只是微调。 2.3 数据预处理和数据增强 数据增强指从已有数据中得到新的样本,通过 ...

Stanford's CS231n Lecture 11: Detection and Segmentation 笔记

Image
0. 主要内容 1. Semantic Segmentation 我们定义一系系列 label,比如天空,树木,猫,牛。然后对于输入图片的每个像素,输出一个预测的label值。 实现方式1: Fully Convolutional 但是对于高分辨率的图片 这样的过程是非常耗时的,于是我们进行了改进。 实现方式1 改: 这里我们用了downsampling 和 upsampling 来降低所需要处理的像素。 downsampling我们可以用pooling,strided convolution 来实现。 对于upsampling,这里介绍了两种方法: nearest neighbor 和 bed of nails (钉板) 在具体场景中,如果我们用bed of nails 来upsampling的话,不会像上图那样选取左上角来给值,而是根据在downsampling的时候取的那个像素位置来对应的还原。 2. Classification + Localization 例子1: 分类并定位图中的猫 输入一张图,输出一个矩形框的坐标。(x,y,w,h) 例子2: 姿势预测 我们可以用14个点来表示人体主要关节,于是我们只要在一个图片里识别出来这14个点,就大概确定了人的姿势。所以这里输入是一张图,输出是14个坐标。 tip: 这里的loss function 用的是regression loss。 在loss function的选择上,classification 和 regression 问题选用的有点差别 如果我们要的是一个类别输出,比如对几个类别的分类问题,这时候用的比较多的就是:cross entropy loss, softmax loss, SVM margin type loss  但是如果我们要的是一些连续的值,比如这里的点位,那么loss function 用L1, L2 距离比较合适。 3. Object Detection 这里和Classification问题的区别在于物体的数量。 3.1 CNN family 比较朴素的想法是滑窗,然后对选定的区域做分类/定位,比如用CNN。 ...