FCN做语义分割
- 像素分割时,一般融合feature map中多层的特征
- 没有全连接层,减少模型参数量,提高计算速度
- 难点:几何上监督信息的定义(eg: EAST旋转矩形与四边形的检测框、如何监督弯曲的检测区域?)
RoI pooling(出自Fast R-CNN)
作用:
- 根据预选框在输入图像中的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续bounding box的分类和回归操作。
局限性分析:
- 预选框的位置通常是由模型回归得到的,一般来讲是浮点数,会先将其量化成整数坐标值;
- 根据卷积核尺寸(kernel size)以及卷积步长(stride),其位置坐标对应到feature map上仍可能变为浮点数,这是会进行第二次坐标的量化。
- 这两次量化使得在feature map上的RoI已经偏离了原预选框的位置。
- 改进方案为RoI align(在Mask-RCNN中被提出,反向传播公式论文中没有,见博客,不知出处)。
目前所知的两种RoI pooling方式:
- 将RoI region划分成固定的m*n个sections,每个section进行max-pooling。使得不同的RoI region都可以得到固定维度的特征表示。
- 在保持高度一致的情况下,不改变原RoI region的aspect ratio,然后通过将其送入RNN系列网络实现固定维度的特征表示。
被认为的弊端:
- 方向变化和量化因子带来的负面影响
RoI align(出自Mask-RCNN)
主要思想:
- 取消量化操作,使用双线性内插的方法获得坐标为浮点数的像素点上的像素值,从而将整个特征聚集过程转化为一个连续的操作。
具体做法:
- 遍历每一个候选区域,保持浮点数边界不做量化。
- 将候选区域分割成k x k个单元,每个单元的边界也不做量化。
- 在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。
- RoI pooling and RoI align can be integrated into the convolutional layers for in-network region cropping, which is a key component for training an end-to-end framework.
EAST中的loss function
- Loss for Score Map(binary classification loss):class-balanced cross-entropy loss,省去了样本均衡,难负样本挖掘等步骤
- Loss for Geometries(regression loss with scale-invariant):
- RBOX regression:AABB loss(IoU loss)➕ angle loss
- QUAD regression:scale-normalized smoothed-L1 loss
- 经过FCN,每个像素都会生成一个对应的bounding box
- 先threshold,然后merge by NMS