做网站运营工作流程,西部数码网站管理助手 ftp,企业招聘ppt模板免费,网站建设的步骤及方法1、划分数据集比例split_train_val.py
import os
import random
import argparseparser argparse.ArgumentParser()
#xml文件的地址或者label的地址#xff0c;根据自己的数据进行修改 xml一般存放在Annotations下 主要是获取每个数据的地址名字
parser.add_argument(--xml_…1、划分数据集比例split_train_val.py
import os
import random
import argparseparser argparse.ArgumentParser()
#xml文件的地址或者label的地址根据自己的数据进行修改 xml一般存放在Annotations下 主要是获取每个数据的地址名字
parser.add_argument(--xml_path, default/home/jovyan/exp_2607/dataset-445/yolo_labels, typestr, helpinput xml label path)
#数据集的划分保存的位置地址一般选择自己数据下的ImageSets/Main
parser.add_argument(--txt_path, default/home/jovyan/exp_2607/data/mydata/ImageSets/Main, typestr, helpoutput txt label path)
opt parser.parse_args()trainval_percent 1.0 # 训练集和验证集所占比例。 这里没有划分测试集
train_percent 0.7 # 训练集所占比例可自己进行调整
xmlfilepath opt.xml_path
txtsavepath opt.txt_path
total_xml os.listdir(xmlfilepath)
if not os.path.exists(txtsavepath):os.makedirs(txtsavepath)num len(total_xml)
list_index range(num)
tv int(num * trainval_percent)
tr int(tv * train_percent)
trainval random.sample(list_index, tv)
train random.sample(trainval, tr)file_trainval open(txtsavepath /trainval.txt, w)
file_test open(txtsavepath /test.txt, w)
file_train open(txtsavepath /train.txt, w)
file_val open(txtsavepath /val.txt, w)for i in list_index:name total_xml[i][:-4] \nif i in trainval:file_trainval.write(name)if i in train:file_train.write(name)else:file_val.write(name)else:file_test.write(name)file_trainval.close()
file_train.close()
file_val.close()
file_test.close()2.xml_to_yolo
import xml.etree.ElementTree as ET
import os
from os import getcwdsets [train, val, test]
classes [door_close, door_open, billboard, tear up,person, forklift, shovel loader, nothing forklift,conveyer belt] # 改成自己的类别
abs_path os.getcwd()
print(abs_path)def convert(size, box):dw 1. / (size[0])dh 1. / (size[1])x (box[0] box[1]) / 2.0 - 1y (box[2] box[3]) / 2.0 - 1w box[1] - box[0]h box[3] - box[2]x x * dww w * dwy y * dhh h * dhreturn x, y, w, hdef convert_annotation(image_id):in_file open(/home/jovyan/exp_2529/data/mydata/xml/%s.xml % (image_id), encodingUTF-8)out_file open(/home/jovyan/exp_2529/data/mydata/labels/%s.txt % (image_id), w)tree ET.parse(in_file)root tree.getroot()size root.find(size)w int(size.find(width).text)h int(size.find(height).text)for obj in root.iter(object):difficult obj.find(difficult).text# difficult obj.find(Difficult).textcls obj.find(name).textif cls not in classes or int(difficult) 1:continuecls_id classes.index(cls)xmlbox obj.find(bndbox)b (float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text),float(xmlbox.find(ymax).text))b1, b2, b3, b4 b# 标注越界修正if b2 w:b2 wif b4 h:b4 hb (b1, b2, b3, b4)bb convert((w, h), b)out_file.write(str(cls_id) .join([str(a) for a in bb]) \n)wd getcwd()
for image_set in sets:image_ids open(/home/jovyan/exp_2607/data/mydata/ImageSets/Main/%s.txt % (image_set)).read().strip().split()if not os.path.exists(/home/jovyan/exp_2607/dataset_copy/):os.makedirs(/home/jovyan/exp_2607/dataset_copy/)if not os.path.exists(/home/jovyan/exp_2607/dataset_copy/images):os.symlink(/home/jovyan/exp_2607/dataset-445/images, /home/jovyan/exp_2607/dataset_copy/images)if not os.path.exists(/home/jovyan/exp_2607/dataset_copy/labels):os.symlink(/home/jovyan/exp_2607/dataset-445/yolo_labels, /home/jovyan/exp_2607/dataset_copy/labels)if not os.path.exists(/home/jovyan/exp_2607/data/mydata/dataSet_path/):os.makedirs(/home/jovyan/exp_2607/data/mydata/dataSet_path/)list_file open(/home/jovyan/exp_2607/data/mydata/dataSet_path/%s.txt % (image_set), w)# 这行路径不需更改这是相对路径for image_id in image_ids:list_file.write(/home/jovyan/exp_2607/dataset_copy/images/%s.png\n % (image_id))# convert_annotation(image_id) 存在xml转txt文件的时候才使用 如果数据有现成的txt文件就不用运行list_file.close()3.mydata.yaml
train: /home/jovyan/exp_2607/data/mydata/dataSet_path/train.txt
val: /home/jovyan/exp_2607/data/mydata/dataSet_path/val.txt
test: /home/jovyan/exp_2607/data/mydata/dataSet_path/test.txt # number of classes
nc: 9# class names
names: [ door_close, door_open, billboard, tear up, person, forklift, shovel loader, nothing forklift, conveyer belt]