swinU生成NPZ

import cv2
import glob
import numpy as np
import os
import random
import cv2
import matplotlib.pyplot as plt
from tqdm import tqdm
import pandas as pd
def npz():
    #原图像路径
    path = r'F:/COVID-19 CT scan lesion segmentation dataset/images/*.png'
    #项目中存放训练所用的npz文件路径
    path2 = r'F:/COVID-19 CT scan lesion segmentation dataset/1111/test//'
    for i,img_path in enumerate(glob.glob(path)):
     	#读入图像
        image = cv2.imread(img_path)
        image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
        #读入标签
        label_path = img_path.replace('images','labels')
        label = cv2.imread(label_path,flags=0)
        #将非目标像素设置为0
        label[label!=255]=0
        #将目标像素设置为1
        label[label==255]=1
		#保存npz
        np.savez(path2+str(i),image=image,label=label)
        print('------------',i)

    # 加载npz文件
    # data = np.load(r'F:\COVID-19 CT scan lesion segmentation dataset\1111\test\0.npz', allow_pickle=True)
    # image, label = data['image'], data['label']

    print('ok')


if __name__=="__main__":
    ret_arr=npz()
print('ok')

上边生成NPZ文件其中要将lable设置好,从0开始,就是把其中表示不同类的像素点更改成新的像素值,这样才能被网络读取。

将文件夹中的文件统计命名后写入TXT文件

#文件夹记录到TXT中
# -*- coding:utf-8 -*-
import sys
sys.path.append('E:\\Anaconda\\libs')
import os #os:操作系统相关的信息模块
import random #导入随机函数
#存放原始图片地址
data_base_dir = "F:/COVID-19 CT scan lesion segmentation dataset/1111/tran"
file_list = [] #建立列表,用于保存图片信息
#读取图片文件,并将图片地址、图片名和标签写到txt文件中
write_file_name = 'F:/COVID-19 CT scan lesion segmentation dataset/1111/train.txt'
write_file = open(write_file_name, "w") #以只写方式打开write_file_name文件
for file in os.listdir(data_base_dir): #file为current_dir当前目录下图片名
  if file.endswith(".png"): #如果file以jpg结尾
    write_name = file.split('.')[0] #图片路径 + 图片名 + 标签
    file_list.append(write_name) #将write_name添加到file_list列表最后
    sorted(file_list) #将列表中所有元素随机排列
    number_of_lines = len(file_list) #列表中元素个数
#将图片信息写入txt文件中,逐行写入
for current_line in range(number_of_lines): 
  write_file.write(file_list[current_line] + '\n')
#关闭文件
write_file.close()

将数据集划分(训练集,验证机,测试机)


#########################生成训练集和数据集
# 从总的数据集中(有规律)选取固定大小部分作为训练集验证集测试集的总和。如此处选取总数据集的前10000句作为需要使用的数据集。
# 两次使用train_test_split()将选取的固定大小的数据集,按照一定的比例,如8:1:1随机划分为训练集,验证集,测试集。
# 并分别将划分好的数据集进行写入到固定目录下
 
from sklearn.model_selection import train_test_split
 
 
def write_data(datapath, line_sen_list):
    '''
    datapath: 需要写入的文件地址
    line_sen_list: 需要写入的文件内容行列表
    '''
    with open(datapath, 'w', encoding = 'utf-8') as o:
        o.write(''.join(line_sen_list))
        o.close()
 
 
def main():
 
    raw_data_path = 'F:/COVID-19 CT scan lesion segmentation dataset/1111/train.txt'
    train_data_path = 'F:/COVID-19 CT scan lesion segmentation dataset/1111/tr.txt'
    validate_data_path = 'F:/COVID-19 CT scan lesion segmentation dataset/1111/111.txt'
    test_data_path = 'F:/COVID-19 CT scan lesion segmentation dataset/1111/test.txt'
 
    line_sen_list = []
    
    with open(raw_data_path, 'r', encoding = 'utf-8') as f:
        lines = f.readlines()
        # 按某种规律选取固定大小的数据集..需要更改循环数为数据集数量
        for line in lines[0:2729]:
            line_sen_list.append(''.join(line))
        f.close()
 
    label_list = [0] * 2729  # 由于该数据形式为文本,且形式为数据和标签在一起,所以train_test_split()中标签可以给一个相同大小的0值列表,无影响。
 
    # 先将1.训练集,2.验证集+测试集,按照8:2进行随机划分
    X_train, X_validate_test, _, y_validate_test = train_test_split(line_sen_list, label_list, test_size = 0.1, random_state = 42)
    # 再将1.验证集,2.测试集,按照1:1进行随机划分
    X_validate, X_test, _, _ = train_test_split(X_validate_test, y_validate_test, test_size = 0.1, random_state = 42)
    
    # 分别将划分好的训练集,验证集,测试集写入到指定目录
    write_data(train_data_path, X_train)
    write_data(validate_data_path, X_validate)
    write_data(test_data_path, X_test)
 
if __name__ == '__main__':
    main()

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值