赞
踩
最近在搞讯飞小车竞赛,完成视觉目标检测的时候,突然用到了这个,所以就写了着个小demo完成一下任务
功能:
import os import random import shutil def get_imlist(path): return [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.jpg')] def getData(src_path,k): dest_dir = src_path+'val' #划分出来的验证集 if not os.path.isdir(dest_dir): os.mkdir(dest_dir) img_list = get_imlist(src_path) random.shuffle(img_list) le = int(len(img_list) * k) # 这个可以修改划分比例 for f in img_list[le:]: shutil.move(f, dest_dir) ''' 函数功能: 划分数据集 ''' def SplitImg(filePath,k): #拆分的数据集 getData(filePath,k) ''' 函数功能: 根据划分的数据集进行移动标注文件 ''' def MoveAn(filePathAn,filePathImg): if not os.path.isdir(filePathAn+'val'): os.mkdir(filePathAn+'val') Imgs=os.listdir(filePathImg) for file in os.listdir(filePathAn): #print(filePathAn,filePathImg) #print(os.path.join(filePathAn,file),os.path.join(filePathAn+'val',file)) if file[:-4]+'.jpg' in Imgs: shutil.move(os.path.join(filePathAn,file),os.path.join(filePathAn+'val',file)) ''' 函数功能: 去除重复的图片 ''' def delReDisplayImg(filePath): Imgs=os.listdir(filePath) for img in Imgs: if Imgs.count(img)>1: os.remove(filePath+'/'+img) print(filePath+'/'+img) ''' 函数功能: 检查标签是否都符合 ''' def checkAn(filePath,lim): Ans=os.listdir(filePath) dels=[]#将找到的不合法的文件弄到这个文件夹里面 for An in Ans: with open(os.path.join(filePath,An),'r',encoding='utf-8')as f: while True: line=f.readline() if line=='': break #print(An,line) nc=int(line[0:2]) #print(nc) #print(nc) if nc<lim[0] or nc>lim[1]: print(nc,os.path.join(filePath,An)) dels.append(os.path.join(filePath,An)) #os.remove(os.path.join(filePath,An) print('是否删除以下异常文件?y/n') print(dels) op=input('执行操作:') if op=='y': for path in dels: os.remove(path) if __name__=='__main__': filePath = 'D:\AI\yolov5-master\\xunfeidata\images\\train' # 换成你的数据集 #划分比例 k=0.8 #SplitImg(filePath,k) filePathAn = 'D:\AI\yolov5-master\\xunfeidata\labels\\train' # 换成你的标注文件地址 # 根据数据集进行移动标注文件 MoveAn(filePathAn,filePath+'val') checkAn(filePathAn,[0,7])
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。