分割 定位 识别 - spatial pixels in images
语义分割:在一张图中分割聚类出不同物体的pixel
物体识别:多物体 2d 和 3d
sematic segmentation + object detection = instance segmentation
语义分割
- input:图片,output:图片中每个像素做分类
- 缺陷:实际上是对于每一个像素做分类操作,所以不能区别同一类别的不同物体
- dataset:VOC2012 和MSCOCO 是语义分割方面最重要的数据库
- 评价标准:
- 像素精度:每一类像素正确分类的个数/每一类像素的实际个数
- 均像素精度:每一类像素精度的平均值
- 平均交叉比:求出每一类的IOU取平均值。IOU是指两块区域相交的部分/两个部分的并集。
- 权频交并比:每一类出现的频率作为权重
idea
sliding window
- 对于每一个小的patch,判断它的中心像素属于哪一类
- problem:需要对每一个像素搞一个patch,计算负责度很高 supersupersuper expensive,同时patch之间有overlap所以重复计算很多
Fully-convolutional networks - FCN
- 仅有卷积层和zero-padding的cnn,保持输入图像的原有尺寸,最后输出一个tensor,尺寸是C*H*W,其中C是类的数量。
- loss function:每个像素的分类损失(交叉熵)做平均
- problem:没有pooling层,而且用的保持长宽的卷积层,计算量非常大,非常耗内存
Downsampling & upsampling
- 仅对一部分卷积层做原清晰度处理,然后用stried convolution来下采样,相当于一个分类网络,不同的是后面不是fully-connected层
- 后半部分上采样,使输出可以维持现有尺寸
- 好处:计算量变小,可以让网络变的更深
Upsampling
Unpooling - average pooling
- Nearest Neighbor: 都填相同数字
- Bed of Nails: 只有左上角填相应数字,其余均为0
Max Unpooling - max pooling的对称 - SegNet
- max pooling时记下区域的哪个元素是最大的,在max unpooling的时候类似于钉床的操作,但是把元素放在max pooling对应的位置上,剩下的为0
- 原因:做分割的时候,我们希望基于像素的预测结果尽可能好,希望找到边界,并让这些细节体现在预测中。如果我们做最大池化,这种不均匀性就会凸现出来,但是低resolution会丢失一些细节。用max unpooling,可以更好的处理细节,存储池化的时候丢失的位置信息
- 在反向传播时,存储这些信息占的位置并不多,所以不影响
Transpose Convolution 转置卷积
- learnable upsampling:既能用来做上采样,又能学习权重
- recall normal convolution,计算时算的是内积
- input:2*2, output:4*4,计算时用每个像素的标量乘上卷积核,再以3*3的方式复制这些值作为输出,感受野overlap的时候加起来。
- 也会叫deconvolution/upconvolution(去卷积/重卷积)
- 更好理解的1D example
- 解释一下为啥lecturer认为转置卷积这个名字更好,因为计算其实相当于是转置的计算
- 3*3 stride2 upsampling 有时候会出现棋盘效应
发展
FCN
- 全连接层换成卷积层
- 不同尺度的信息融合
U-net
SegNet
- 带有坐标的池化
Deeplab v1
- 带孔卷积(Atrus conv)
- CRF:利用像素之间的关联信息,相邻的像素或者颜色相近的像素有更大可能属于同一个class
PSPnet
- 使用了空间金字塔池化,得到一组感受野大小不同的feature map,最后联系起来,完成多层次的语义特征融合
Deeplab v2
- ASPP(Atrus Spatial Pyramid Pooling):融合不同级别的语义信息
Deeplab v3
- 引进新的ASPP模块:
- Batch Normal
- 全局平均池化
- 引入ResNet Block
- 丢弃CRF
Deeplab v3+
- 把deeplab v3作为了编码器,同时加入了Xception的结构减少了参数数量,提高运行速度。见mobilenet
套路:
- 全卷积网络
- 感受野的控制:pooling+upsample -> Atrous conv
- 不同level的融合:统一尺寸后add/contact+conv,SPP,ASPP
- 考虑相邻像素的关系:CRF
- 条件允许的情况,图像越大越好
- 对特定类别分割,可以考虑先验知识+对结果进行形态学处理
- 其他方向:实时语义分割,视频语义分割