遥感语义分割的数据清洗
在将遥感图像进行分割后,我们得到了label集与image集,但此时数据集的图片数目太多,因为我仅需要实现梯田的提取,所以存在大量的无用的数据,因此在label集中根据图像的值对数据集进行数据清洗,再根据label集删除image集中的无用的数据,具体代码如下:
删除label中值全为零的图片:
import cv2 import os import glob path = "D:\Download\Pytorch-UNet-master\data\labelset"#在此输入要清洗的label数据集的路径 paths = glob.glob(os.path.join(path, '*.png')) for file in paths: img = cv2.imread(file, 0) if cv2.countNonZero(img) == 0: os.remove(file)
按label文件删除image文件:
import os inputlabelPath = 'D:/Download/Pytorch-UNet-master/data/labelset/' inputimagePath = 'D:/Download/Pytorch-UNet-master/data/dataset/' filelist = os.listdir(inputimagePath) for i in filelist: item_path = inputlabelPath + i image_path = inputimagePath + i if not os.path.exists(item_path): os.remove(image_path)
重命名(这步操作可以省略):
import os Path = 'D:/Download/Pytorch-UNet-master/data/labelset/' #Path = 'D:/Download/Pytorch-UNet-master/data/dataset/' filelist = os.listdir(Path) n=0 for i in filelist: oldname = Path + os.sep + filelist[n] newname = Path + os.sep + 'a' + str(n) + '.JPG' os.rename(oldname, newname) print(oldname, '======>', newname) n = n + 1
数据清洗完成,就可以开始后续的模型的训练了。