当前位置: 首页 > news >正文

网站一键生成手机网站网络维护服务合同模板

网站一键生成手机网站,网络维护服务合同模板,网络市场营销的概念,网站建设4038gzs标注工具 LabelMe 生成的标注文件为JSON格式#xff0c;而YOLOv8中支持的为TXT文件格式。以下Python代码实现3个功能#xff1a; 1.将JSON格式转换成TXT格式#xff1b; 2.将数据集进行随机拆分#xff0c;生成YOLOv8支持的目录结构#xff1b; 3.生成YOLOv8支持的YAML文件…      标注工具 LabelMe 生成的标注文件为JSON格式而YOLOv8中支持的为TXT文件格式。以下Python代码实现3个功能 1.将JSON格式转换成TXT格式 2.将数据集进行随机拆分生成YOLOv8支持的目录结构 3.生成YOLOv8支持的YAML文件。 代码test_labelme2yolov8.py如下 import os import json import argparse import colorama import random import shutildef parse_args():parser argparse.ArgumentParser(descriptionjson(LabelMe) to txt(YOLOv8))parser.add_argument(--dir, requiredTrue, typestr, helpimages, json files, and generated txt files, all in the same directory)parser.add_argument(--labels, requiredTrue, typestr, helptxt file that hold indexes and labels, one label per line, for example: face 0)parser.add_argument(--val_size, default0.2, typefloat, helpthe proportion of the validation set to the overall dataset:[0., 0.5])parser.add_argument(--name, requiredTrue, typestr, helpthe name of the dataset)args parser.parse_args()return argsdef get_labels_index(name):labels {} # key,valuewith open(name, r) as file:for line in file:# print(line:, line)key_value []for v in line.split( ):# print(v:, v)key_value.append(v.replace(\n, )) # remove line breaks(\n) at the end of the lineif len(key_value) ! 2:print(colorama.Fore.RED Error: each line should have only two values(key value):, len(key_value))continuelabels[key_value[0]] key_value[1]with open(name, r) as file:line_num len(file.readlines())if line_num ! len(labels):print(colorama.Fore.RED Error: there may be duplicate lables:, line_num, len(labels))return labelsdef get_json_files(dir):jsons []for x in os.listdir(dir):if x.endswith(.json):jsons.append(x)return jsonsdef parse_json(name):with open(name, r) as file:data json.load(file)width data[imageWidth]height data[imageHeight]# print(fwidth: {width}; height: {height})objects[]for shape in data[shapes]:if shape[shape_type] ! rectangle:print(colorama.Fore.YELLOW Warning: only the rectangle type is supported:, shape[shape_type])continueobject []object.append(shape[label])object.append(shape[points])objects.append(object)return width, height, objectsdef get_box_width_height(box):dist lambda val: max(val) - min(val)x [pt[0] for pt in box]y [pt[1] for pt in box]return min(x), min(y), dist(x), dist(y)def bounding_box_normalization(width, height, objects, labels):boxes []for object in objects:box [] # class x_center y_center width heightbox.append(labels[object[0]])# print(point:, object[1])x_min, y_min, box_w, box_h get_box_width_height(object[1])box.append(round((float(x_min box_w / 2.0) / width), 6))box.append(round((float(y_min box_h / 2.0) / height), 6))box.append(round(float(box_w / width), 6))box.append(round(float(box_h / height), 6))boxes.append(box)return boxes def write_to_txt(dir, json, width, height, objects, labels):boxes bounding_box_normalization(width, height, objects, labels)# print(boxes:, boxes)name json[:-len(.json)] .txt# print(name:, name)with open(dir / name, w) as file:for item in boxes:# print(item:, item)if len(item) ! 5:print(colorama.Fore.RED Error: the length must be 5:, len(item))continuestring item[0] str(item[1]) str(item[2]) str(item[3]) str(item[4]) \rfile.write(string)def json_to_txt(dir, jsons, labels):for json in jsons:name dir / json# print(name:, name)width, height, objects parse_json(name)# print(fwidth: {width}; height: {height}; objects: {objects})write_to_txt(dir, json, width, height, objects, labels)def is_in_range(value, a, b):return a value bdef get_random_sequence(length, val_size):numbers list(range(0, length))val_sequence random.sample(numbers, int(length*val_size))# print(val_sequence:, val_sequence)train_sequence [x for x in numbers if x not in val_sequence]# print(train_sequence:, train_sequence)return train_sequence, val_sequencedef get_files_number(dir):count 0for file in os.listdir(dir):if os.path.isfile(os.path.join(dir, file)):count 1return countdef split_train_val(dir, jsons, name, val_size):if is_in_range(val_size, 0., 0.5) is False:print(colorama.Fore.RED Error: the interval for val_size should be:[0., 0.5]:, val_size)raisedst_dir_images_train datasets/ name /images/traindst_dir_images_val datasets/ name /images/valdst_dir_labels_train datasets/ name /labels/traindst_dir_labels_val datasets/ name /labels/valtry:os.makedirs(dst_dir_images_train) #, exist_okTrueos.makedirs(dst_dir_images_val)os.makedirs(dst_dir_labels_train)os.makedirs(dst_dir_labels_val)except OSError as e:print(colorama.Fore.RED Error: cannot create directory:, e.strerror)raise# supported image formatsimg_formats (.bmp, .jpeg, .jpg, .png, .webp)# print(jsons:, jsons)train_sequence, val_sequence get_random_sequence(len(jsons), val_size)for index in train_sequence:for format in img_formats:file dir / jsons[index][:-len(.json)] format# print(file:, file)if os.path.isfile(file):shutil.copy(file, dst_dir_images_train)breakfile dir / jsons[index][:-len(.json)] .txtif os.path.isfile(file):shutil.copy(file, dst_dir_labels_train)for index in val_sequence:for format in img_formats:file dir / jsons[index][:-len(.json)] formatif os.path.isfile(file):shutil.copy(file, dst_dir_images_val)breakfile dir / jsons[index][:-len(.json)] .txtif os.path.isfile(file):shutil.copy(file, dst_dir_labels_val)num_images_train get_files_number(dst_dir_images_train)num_images_val get_files_number(dst_dir_images_val)num_labels_train get_files_number(dst_dir_labels_train)num_labels_val get_files_number(dst_dir_labels_val)if num_images_train num_images_val ! len(jsons) or num_labels_train num_labels_val ! len(jsons):print(colorama.Fore.RED Error: the number of files is inconsistent:, num_images_train, num_images_val, num_labels_train, num_labels_val, len(jsons))raisedef generate_yaml_file(labels, name):path os.path.join(datasets, name, name.yaml)# print(path:, path)with open(path, w) as file:file.write(path: ../datasets/%s # dataset root dir\n % name)file.write(train: images/train # train images (relative to path)\n)file.write(val: images/val # val images (relative to path)\n)file.write(test: # test images (optional)\n\n)file.write(# Classes\n)file.write(names:\n)for key, value in labels.items():# print(fkey: {key}; value: {value})file.write( %d: %s\n % (int(value), key))if __name__ __main__:colorama.init()args parse_args()# 1. parse JSON file and write it to a TXT filelabels get_labels_index(args.labels)# print(labels:, labels)jsons get_json_files(args.dir)# print(jsons:, jsons)json_to_txt(args.dir, jsons, labels)# 2. split the datasetsplit_train_val(args.dir, jsons, args.name, args.val_size)# 3. generate a YAML filegenerate_yaml_file(labels, args.name)print(colorama.Fore.GREEN execution completed ) 代码有些多主要函数说明如下 1.函数parse_args解析输入参数 2.函数get_labels_index解析labels文件数据集中的所有类别及对应的索引格式labels.txt如下所示生成YOLOv8的YAML文件时也需要此文件 face 0 hand 1 eye 2 mouth 3 horse 4 tree 5 bridge 6 house 7 3.函数get_json_files获取指定目录下的所有json文件 4.函数parse_json解析json文件将txt文件中需要的数据提取出来 5.函数bounding_box_normalization将bounding box值归一化到(0,1)区间 6.函数write_to_txt将最终结果写入txt文件 7.函数split_train_val将数据集随机拆分为训练集和验证集并按YOLOv8支持的目录结构存放根目录为datasets,接着是指定的数据集名例如为fake与YOLOv8中数据集coco8目录结构完全一致 8.函数generate_yaml_file生成YOLOv8支持的yaml文件存放在datasets/数据集名下例如为fake.yaml 接收4个参数参数dir为存放数据集的目录参数labels指定labels文件参数val_size指定验证集所占的比例参数name指定新生成的YOLOv8数据集的名字 这里从网上随机下载了10幅图像使用LabelMe进行了标注执行结果如下图所示 生成的fake.yaml文件如下图所示 path: ../datasets/fake # dataset root dir train: images/train # train images (relative to path) val: images/val # val images (relative to path) test: # test images (optional)# Classes names:0: face1: hand2: eye3: mouth4: horse5: tree6: bridge7: house 将生成的fake数据集进行训练测试代码test_yolov8_detect.py如下 import argparse import colorama from ultralytics import YOLOdef parse_args():parser argparse.ArgumentParser(descriptionYOLOv8 object detect)parser.add_argument(--yaml, requiredTrue, typestr, helpyaml file)parser.add_argument(--epochs, requiredTrue, typeint, helpnumber of training)args parser.parse_args()return argsdef train(yaml, epochs):model YOLO(yolov8n.pt) # load a pretrained modelresults model.train(datayaml, epochsepochs, imgsz640) # train the modelmetrics model.val() # Itll automatically evaluate the data you trained, no arguments needed, dataset and settings rememberedmodel.export(formatonnx, dynamicTrue) # export the modelif __name__ __main__:colorama.init()args parse_args()train(args.yaml, args.epochs)print(colorama.Fore.GREEN execution completed ) 执行结果如下图所示目前此测试代码接收2个参数参数yaml指定yaml文件参数epochs指定训练次数由以下结果可知生成的新数据集无需做任何改动即可进行训练 GitHubhttps://github.com/fengbingchun/NN_Test
http://www.pierceye.com/news/586785/

相关文章:

  • 网页网站模板北京市工商注册网上服务系统
  • 企业网站建设报价明细表免费ppt模板下载哪个网站好
  • 佛山做公司网站全球域名
  • 网站建设陆金手指谷哥7邢台企业做网站找谁
  • h5手机端网站开发优秀高端网站建设
  • 东莞桥头网站建设廊坊开发网站公司
  • sem优化托管公司湖南做网站seo
  • 网站流量下跌免费空间asp网站
  • 有没有可以做app的网站wordpress代码转义
  • 电子商务网站开发的任务书wordpress图片间距
  • 石家庄集团网站建设哪些网站可以做微信
  • 网站文件夹名平台期什么意思
  • 怎么用vps做网站论坛网站建设视频
  • 广州网站制作实力乐云seowordpress 评论模块
  • 永久免费制作网站木门行业做网站有什么好处
  • 怎么区分模板网站wordpress菜单怎么建
  • 网站开发最新效果企业手机网站建
  • 网站群管理系统哪个好wordpress制作会员功能
  • 做套现网站网站的访问量
  • 做网站网页需要学些什么做网站学的什么专业
  • 建设银行的官方网站纪念币公司宣传页设计印刷
  • 网站左侧图片悬浮代码常州工厂网站建设
  • 智慧团建网站怎么转团关系app制作开发小程序制作开发
  • 誉字号网站wordpress 展示模板下载
  • 网站不接入备案成都市建设工程质量协会网站
  • 企业网站html网站开发济南招聘
  • 网站html优化方法音乐网站开发参考文献
  • 网站建设及推广方案ppt模板微信小程序开发工具下载哪个版本
  • 固安县城乡和住房建设局网站科技公司手机端网站
  • 寿光网站建设思科企业网络拓扑图