wordpress站内全文检索,做网站图片分辨率多少,企业内部网站宣传方案,小程序代理是什么意思理论上用于分类的图像一般都不需要用labelme来标注的#xff0c;笔者是因为刚好手上有这么一组数据#xff0c;所以就顺带处理了。labelme标注完的数据每张还包含了一个json文件#xff0c;这个在分类任务中用不上。具体的mmclassification使用方法在我的另一篇文章里有笔者是因为刚好手上有这么一组数据所以就顺带处理了。labelme标注完的数据每张还包含了一个json文件这个在分类任务中用不上。具体的mmclassification使用方法在我的另一篇文章里有需要注意的是现在分类任务被集合在mmpretrain里了。用法也优点区别不过也都是细微的修改都还能用。 数据处理代码如下
import os, random, shutil# 最开始train的文件夹路径
ori_path rF:\Data\doctor_research\Arthritis_mini# label种类
label_list [arthritis, normal]# 抽取比例 ******自己改*******
val_ratio, test_ratio 0.1, 0.2 # 抽取比例 ******自己改*******# 处理好的数据集路径
result_path os.path.join(ori_path, result)# 存放图片的文件地址
train_path os.path.join(result_path, train)
test_path os.path.join(result_path, test)
val_path os.path.join(result_path, val)# meta文件夹地址
meta_path os.path.join(result_path, meta)
# meta文件夹下的txt文件
train_txt os.path.join(meta_path, train.txt)
test_txt os.path.join(meta_path, test.txt)
val_txt os.path.join(meta_path, val.txt)# 预留内容
traintxt []
testtxt []
valtxt []# 如果没有就创建
if not os.path.exists(result_path):os.mkdir(result_path)if not os.path.exists(meta_path):os.makedirs(meta_path)if not os.path.exists(train_path):os.makedirs(train_path)if not os.path.exists(test_path):os.makedirs(test_path)if not os.path.exists(val_path):os.makedirs(val_path)# 在train test val 文件夹中创建对应的label文件夹
for label in label_list:print(flabel:{label})os.makedirs(os.path.join(train_path, label), exist_okTrue)# print(ftrain_path:{train_path})os.makedirs(os.path.join(test_path, label), exist_okTrue)# print(ftest_path:{test_path})os.makedirs(os.path.join(val_path, label), exist_okTrue)# print(fval_path:{val_path})ori_pic_path os.path.join(ori_path, label)print(fori_pic_path is : {ori_pic_path})# 将该label下所有的图像文件名暂存在一个list里面temp_path []for pic in os.listdir(ori_pic_path):# 判断是否为图片if pic.endswith(.jpg) or pic.endswith(.jpeg) or pic.endswith(.png):# 先全部计入到一个临时list里print(fpic is {pic})temp_path.append(pic)# print(ftemp_path is {temp_path})# 计算该类别下的所有图片数量以及对应的验证集、测试集图片数量print(f{label} num is {len(temp_path)})# 验证集数量val_number int(len(temp_path) * val_ratio)# 测试集数量test_number int(len(temp_path) * test_ratio)# 抽取val数据集val_sample random.sample(temp_path, val_number)print(fval_number is:{val_number})print(fval_sample is:{val_sample})# 把抽取的val数据剔除# temp_path.remove(val_sample)temp_path [item for item in temp_path if item not in val_sample]# 对应的val文件夹goal_val_path os.path.join(result_path, val, label)# 将文件移动到val文件夹for name1 in val_sample:goal_name1_path os.path.join(goal_val_path, name1)shutil.copy(os.path.join(ori_pic_path, name1), goal_name1_path)# 同时将该文件地址记录到val.txt中val_content goal_name1_path str(label_list.index(label))valtxt.append(val_content)# with open(val_txt, w) as f:# f.write(goal_name1_path str(label_list.index(label)) \n)# 抽取test数据集test_sample random.sample(temp_path, test_number)print(ftest_number is:{test_number})# 把抽取的test数据剔除temp_path [item for item in temp_path if item not in test_sample]# 对应的test文件夹goal_test_path os.path.join(result_path, test, label)# 将文件移动到test文件夹for name2 in test_sample:goal_name2_path os.path.join(goal_test_path, name2)shutil.copy(os.path.join(ori_pic_path, name2), goal_name2_path)# 同时将该文件地址记录到test.txt中# 同时将该文件地址记录到test.txt中test_content goal_name2_path str(label_list.index(label))testtxt.append(test_content)# with open(test_txt, w) as f:# f.write(goal_name2_path str(label_list.index(label)) \n)# 把剩下的数据移入train数据集goal_train_path os.path.join(result_path, train, label)print(fgoal_train_path is : {goal_train_path})for name3 in temp_path:goal_name3_path os.path.join(goal_train_path, name3)shutil.copy(os.path.join(ori_pic_path, name3), goal_name3_path)# 同时将该文件地址记录到test.txt中train_content goal_name3_path str(label_list.index(label))traintxt.append(train_content)with open(train_txt, w) as f:for item in traintxt:f.write(item \n)with open(test_txt, w) as f:for item in testtxt:f.write(item \n)with open(val_txt, w) as f:for item in valtxt:f.write(item \n)