文章目录
图像检测和分割是cv的两个重要任务,这节课对其进行总结。
1 语义分割
输入图像,并对每个像素进行分类并输出,而对于同类的目标,语义分割不会对其进行区分。
1.1 Sliding Window
滑动窗口:将图像切分为许多小的图像块,通过卷积网络对其中心像素实现分类,从而实现整张输入图像的语义分割。
这种方法计算复杂度高,需要为所有的像素准备图像块
1.2 FCN(Fully Convolutional)
全卷积网络:仅仅通过卷积层进行对像素的分类。通过padding的方式保持每次卷积之后的大小不变,最后得到一个大小为C×H×W的特征图,其中C为该图像中像素的类别数目,最后通过argmax得到分割结果。
每次都要在原图大小的特征图上进行卷积,这样计算量太大了
在网络中加入下采样和上采样,可以减少fcn的计算量。如下图所示,首先通过下采样将特征图的大小变小,然后通过上采样将特征图恢复到原图大小以输出语义分割结果。下采样可以通过池化层或者带有步长的卷积实现,那么上采样如何将小的特征图恢复到原图大小呢?主要通过两种方法,一种是去池化一种是转置卷积。
去池化
主要讲了三种去池化的方法:
- Nearest Neighbor:输入为2×2大小,输出为4×4大小,将输入的每一个元素值重复四次
- Bed of Nails:输入为2×2大小,输出为4×4大小,将输出的四块左上角与输入一一对应,其余全部置0
- Max Unpooling:在进行池化时记住每一步池化计算的最大值的位置,在进行去池化时将输入的元素填入相应位置中,其余置0
转置卷积
转置卷积取输入的元素乘卷积核得到卷积核大小的输出,依次对每一个像素进行同样的计算&