数据集检查,去除多余的标签或图片

本文主要是针对大家在转化数据集时,有可能出现一些图片标签转化错误的问题,导致标签和图片数量不对应。

主要是3行,4行,27行,29行

着重说一下第29行,这里是你多的图片或标签的后缀。

import os
import shutil
filePath2 = r'D:\python\project\yolov5-6.1\VOCdevkit\CrowdHuamn\labels\val'  # 数量多的
filePath1 = r'D:\python\project\yolov5-6.1\VOCdevkit\CrowdHuamn\images\val'  # 数量少的

list1 = os.listdir(filePath1)
file_list1 = []  # annotations中的文件名列表 不带后缀
for i in list1:
    file_list1.append(os.path.splitext(i)[0])
# print(file_list1)

list2 = os.listdir(filePath2)
file_list2 = []  # image中的文件名列表 不带后缀
for i in list2:
    file_list2.append(os.path.splitext(i)[0])
# print(file_list2)
# 找出没有标注的图片名称列表
# n=0
# for y in file_list1:
#     if y in file_list2:
#         n = n+1
# print(n)
b = [y for y in file_list2 if y not in file_list1]

# 把这些列表加上扩展名 然后将其删除
# path = r'D:\python\project\yolov5-6.1\VOCdevkit\ksh\JPEGImages'  # 标签位置
new = r'D:\python\project\yolov5-6.1\VOCdevkit\ksh\move'   # 多出来的图片或标签保存位置
for i in b:
    old = os.path.join(filePath2, i+'.txt') # 注意这里修改 文件后缀,
    shutil.move(old, new)
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是代码实现: ```python import os import numpy as np import nibabel as nib from PIL import Image # 设置数据集路径和保存路径 data_path = "E:/LiTS2017" save_path = "E:/2D-LiTS2017" # 创建保存图像和标签的文件夹 if not os.path.exists(os.path.join(save_path, "image")): os.makedirs(os.path.join(save_path, "image")) if not os.path.exists(os.path.join(save_path, "label")): os.makedirs(os.path.join(save_path, "label")) # 读取数据集 for i in range(1, 3): data_dir = os.path.join(data_path, "Training Batch {}".format(i)) image_files = sorted(os.listdir(os.path.join(data_dir, "volume"))) label_files = sorted(os.listdir(os.path.join(data_dir, "segmentation"))) for j in range(len(image_files)): # 读取图像和标签 image_data = nib.load(os.path.join(data_dir, "volume", image_files[j])).get_fdata() label_data = nib.load(os.path.join(data_dir, "segmentation", label_files[j])).get_fdata() # 去掉肝脏和肿瘤面积占比小于2%的切片 liver_mask = label_data == 1 tumor_mask = label_data == 2 if np.sum(liver_mask) == 0 or np.sum(tumor_mask) / np.sum(liver_mask) < 0.02: continue # 将3D图像切片成2D图像 for k in range(image_data.shape[2]): # 将图像和标签转换为png格式 image = Image.fromarray((image_data[:, :, k] * 255).astype(np.uint8)).convert("RGB") label = Image.fromarray((label_data[:, :, k] * 255).astype(np.uint8)).convert("L") # 保存图像和标签 image.save(os.path.join(save_path, "image", "{}_{}.png".format(i, j * image_data.shape[2] + k))) label.save(os.path.join(save_path, "label", "{}_{}.png".format(i, j * image_data.shape[2] + k))) ``` 该代码将数据集中的3D图像切片成2D图像,并将图像和标签转换为png格式保存在指定的文件夹中。同时,它还会去掉肝脏和肿瘤面积占比小于2%的切片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值