FCN/UNET/deeplabv3 语义分割 标注 重叠/重复/覆盖 的处理方案,以及自定义覆盖优先级
在对FCN/UNET/deeplabv3等语义分割时,标准的要求是对每一个像素点分开标记,即不允许出现重叠覆盖的情形:如下图所示


- 但不可避免的人工标注时会出现一定的标注重叠/重复/覆盖
- 甚至有的时候需要标注就是重复的,例如需要识别面板上赃物的情形,标记了面板和脏污,标注是重叠的,但是实际存在固定的上下覆盖叠加关系.可以通过一定的方法处理出这种关系.
下面以pytorch官方的实例代码为例
github链接: pytorch-segmentation
与之相关的就是transforms处理这一段:完整的处理流程如下
coco_utils.FilterAndRemapCocoCategories -> 过滤不要的标签,以及重新标记
coco_utils.ConvertCocoPolysToMask -> 多边形标记转mask标记,以及合标记,处理覆盖关系
presets.SegmentationPresetTrain -> 其他常见的预处理,数组增强等
transforms.RandomResize ->
transforms.RandomHorizontalFlip ->
transforms.RandomCrop ->
transforms.PILToTensor ->
transforms.ToDtype ->
transforms.Normalize ->
处理不忽略重复
有关重叠的就是ConvertCocoPolysToMask
有关重复的核心代码如下:
#将每个掩码与其对应的类别ID相乘,以便将类别信息合并到掩码中。

浙公网安备 33010602011771号