python 删除数据集中的负样本

在深度学习中,负样本指不含目标对象的图片及对应的空标注文件。这段代码用于检测并删除这些负样本,保留正样本。通过读取txt标注文件内容,判断是否为空,如果为空则删除对应的txt和图片文件,从而优化数据集。

负样本

在进行深度学习的过程中,如果图片过大,要进行拆图,将图片拆成小一点尺寸的,同时标注信息也要相应的拆了,那么就可能出现很多张图片,里面其实没有目标,是空的,相应的标注文件也是空的,我定义为这样的数据为负样本

下面是一段程序,将负样本从数据中删除,即,只保留正样本,代码如下:

如果要删除正样本,只需要将逻辑是改成逻辑非命令即可!

代码

import os

def delete_empty_txt(out_txt_floder, out_img_floder):
    txt_list = os.listdir(out_txt_floder)
    for txt_name in txt_list:
        #  去除.txt后缀
        name = txt_name[:-4]
        #  txt完整路径
        txt_path = out_txt_floder + "/" + txt_name
        #  对应图像完整路径
        img_path = out_img_floder + "/" + name + ".png"
        with open(txt_path, "r") as f:
            #  读取txt全部内容,然后关闭
            data = f.read()
            f.close()
            #  若该txt为空,删除txt及其对应图像
            if(data == ""):
                os.remove(txt_path)
                os.remove(img_path)
                print('{}为空,已被删除.'.format(name))
  
#  切割后数据集的标签文件存放文件夹 
out_txt_floder = r'/home/rtx2080ti/GeTu/train/1024_mask'
#  切割得到的图像数据集存放文件夹
out_img_floder = r'/home/rtx2080ti/GeTu/train/1024_img'

delete_empty_txt(out_txt_floder, out_img_floder)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值