Yolo算法,在进行模型训练时,常常使用VOC数据格式。
将图片文件复制到JPEGImages目录下,需要对文件名进行VOC标准格式编号重命名,如2020_000001.jpg,2020_000002.jpg,这样便于voc_label.py来进行后续处理。
python脚本如下,文件名为renamefiles.py。
1 # -*- coding:utf-8 -*- 2 3 # 读取指定目录,并将指定后缀的文件名重命名为yyyy_+6位数字编号的文件 4 5 import sys,os,string 6 import getopt 7 8 opts, args = getopt.getopt(sys.argv[1:], "hi:p:", ["help","input=","postfix="]) 9 10 def usage(): 11 print(sys.argv[0] + ' -i inputdir -p postfix') 12 print(sys.argv[0] + ' -h #get help info') 13 14 def rename_files(filepath, postfix): 15 #遍历filepath下所有文件,忽略子目录,将文件重命名 16 #print(filepath) 17 yyyy = '2020' 18 print(postfix) 19 newCounter = 1 20 files = os.listdir(filepath) 21 for fi in files: 22 #将目录和文件或子目录合成一个全路径 23 fi_d = os.path.join(filepath,fi) 24 if os.path.isdir(fi_d): 25 continue; 26 else: 27 #fs = os.path.join(filepath,fi_d) 28 fs = fi_d 29 #print(fi_d) 30 #取得文件全路径 31 32 lstpathext = os.path.splitext(fs) 33 ext = lstpathext[1] 34 if (ext == postfix): 35 #指定类型文件, 36 newFilename = str(newCounter).zfill(6) 37 #文件重命名 38 newFilename = yyyy + '_' + newFilename + postfix 39 newPath = os.path.join(filepath,newFilename) 40 os.rename(fs,newPath) 41 # 更新计数 42 newCounter = newCounter + 1 43 44 45 rename_files(sys.argv[1],sys.argv[2]) 46 print('process finished!') 47 sys.exit();
该脚本使用两个参数,参数1为图片存储目录,参数2为图片文件的后缀,要包括“.“,如".jpg"。另外,yyyy在代码中写死了,为2020,如不同,可以自行修改。
使用方法示例:
python renamefiles.py E:workspacedarknetuilddarknetx64datavocVOCdevkitVOC2020JPEGImages .jpg