在论文CascadePSP中提到对seg标签进行扰动,生成二值的伪seg标签,在此对其代码进行分析和改动,实现生成多值的伪seg标签,可用于模拟全局语义分割模型的分割结果。
modify_boundary函数是整个代码的关键,该函数主要实现对二值图轮廓的扰动并生成扰动后的二值图。该代码可以保存到utils目录下,文件名为boundary_modification.py
函数实现流程如下:
1、获取所有轮廓
2、随机移除单个轮廓的部分轮廓像素点
3、对单个轮廓保留的轮廓像素点进行扰动(通过修改轮廓的坐标点实现)
4、根据坐标扰动后的轮廓重新绘制图像
5、对新的轮廓随机进行调整,并保证调整结果与原图重合度在一定iou内
import cv2
import numpy as np
import random
import mathtry:from utils.de_transform