遥感语义分割的数据清洗


  在将遥感图像进行分割后,我们得到了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

数据清洗完成,就可以开始后续的模型的训练了。

相关