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

厦门 网站建设东莞网络公司排行榜

厦门 网站建设,东莞网络公司排行榜,查关键词排名工具app,网站建设所需的基本条件简介#xff1a; 最近做实例分割分割#xff0c;使用Labelme生成json格式标签后#xff0c;需要转换为txt标签#xff0c;才能供YOLO进行训练。 在参看b站#xff0c;github后#xff0c;发现GitHub有相关项目#xff1a;lableme2yolo 一个是ultralyics官方的JSON2YO…简介 最近做实例分割分割使用Labelme生成json格式标签后需要转换为txt标签才能供YOLO进行训练。 在参看b站github后发现GitHub有相关项目lableme2yolo 一个是ultralyics官方的JSON2YOLO项目 ultralytics/JSON2YOLO: Convert JSON annotations into YOLO format. 参考1 将labelme数据标注格式转换为YoloV8语义分割数据集并可自动划分训练集和验证集 import json import random import yaml import argparse import shutil from pathlib import Path from collections import defaultdict from tqdm import tqdm# 设定随机种子以确保可重复性 random.seed(114514)# yoloV8支持的图像格式 # https://docs.ultralytics.com/modes/predict/?hformatimage#images image_formats [jpg, jpeg, png, bmp, webp, tif, .dng, .mpo, .pfm]def copy_labled_img(json_path: Path, target_folder: Path, task: str):# 遍历支持的图像格式查找并复制图像文件for format in image_formats:image_path json_path.with_suffix(. format)if image_path.exists():# 构建目标文件夹中的目标路径target_path target_folder / images / task / image_path.nameshutil.copy(image_path, target_path)def json_to_yolo(json_path: Path, sorted_keys: list):with open(json_path, r) as f:labelme_data json.load(f)width labelme_data[imageWidth]height labelme_data[imageHeight]yolo_lines []for shape in labelme_data[shapes]:label shape[label]points shape[points]class_idx sorted_keys.index(label)txt_string f{class_idx} for x, y in points:x / widthy / heighttxt_string f{x} {y} yolo_lines.append(txt_string.strip() \n)return yolo_linesdef create_directory_if_not_exists(directory_path):# 使用 exist_okTrue 可以避免重复检查目录是否存在directory_path.mkdir(parentsTrue, exist_okTrue)# 创建训练使用的yaml文件 def create_yaml(output_folder: Path, sorted_keys: list):train_img_path Path(images) / trainval_img_path Path(images) / valtrain_label_path Path(labels) / trainval_label_path Path(labels) / val# 创建所需目录for path in [train_img_path, val_img_path, train_label_path, val_label_path]:create_directory_if_not_exists(output_folder / path)names_dict {idx: name for idx, name in enumerate(sorted_keys)}yaml_dict {path: output_folder.as_posix(),train: train_img_path.as_posix(),val: val_img_path.as_posix(),names: names_dict,}yaml_file_path output_folder / yolo.yamlwith open(yaml_file_path, w) as yaml_file:yaml.dump(yaml_dict, yaml_file, default_flow_styleFalse, sort_keysFalse)print(fyaml created in {yaml_file_path.as_posix()})# Convert label to idx def get_labels_and_json_path(input_folder: Path):json_file_paths list(input_folder.rglob(*.json))label_counts defaultdict(int)for json_file_path in json_file_paths:with open(json_file_path, r) as f:labelme_data json.load(f)for shape in labelme_data[shapes]:label shape[label]label_counts[label] 1# 根据标签出现次数排序标签sorted_keys sorted(label_counts, keylambda k: label_counts[k], reverseTrue)return sorted_keys, json_file_pathsdef labelme_to_yolo(json_file_paths: list, output_folder: Path, sorted_keys: list, split_rate: float ):# 随机打乱 JSON 文件路径列表random.shuffle(json_file_paths)# 计算训练集和验证集的分割点split_point int(split_rate * len(json_file_paths))train_set json_file_paths[:split_point]val_set json_file_paths[split_point:]for json_file_path in tqdm(train_set):txt_name json_file_path.with_suffix(.txt).nameyolo_lines json_to_yolo(json_file_path, sorted_keys)output_json_path Path(output_folder / labels / train / txt_name)with open(output_json_path, w) as f:f.writelines(yolo_lines)copy_labled_img(json_file_path, output_folder, tasktrain)for json_file_path in tqdm(val_set):txt_name json_file_path.with_suffix(.txt).nameyolo_lines json_to_yolo(json_file_path, sorted_keys)output_json_path Path(output_folder / labels / val / txt_name)with open(output_json_path, w) as f:f.writelines(yolo_lines)copy_labled_img(json_file_path, output_folder, taskval)if __name__ __main__:parser argparse.ArgumentParser(descriptionlabelme2yolo)parser.add_argument(input_folder, help输入LabelMe格式文件的文件夹)parser.add_argument(output_folder, help输出YOLO格式文件的文件夹)parser.add_argument(split_rate, help调整训练集和测试集的比重)args parser.parse_args()input_folder Path(args.input_folder)output_folder Path(args.output_folder)split_rate float(args.split_rate)sorted_keys, json_file_paths get_labels_and_json_path(input_folder)create_yaml(output_folder, sorted_keys)labelme_to_yolo(json_file_paths, output_folder, sorted_keys, split_rate) 参考资料  1.参考1KdaiP/labelme2YoloV8-segment: 将labelme数据标注格式转换为YoloV8语义分割数据集并可自动划分训练集和验证集 2.rooneysh/Labelme2YOLO 帮助将 LabelMe 注释工具 JSON 格式转换为 YOLO 文本文件格式。如果您已经通过 LabelMe 标记了分割数据集则可以轻松使用此工具来帮助转换为 YOLO 格式的数据集。
http://www.w-s-a.com/news/44871/

相关文章:

  • 西宁网站建设优化重庆企业的网站建设
  • 贝壳企业网站管理系统徽与章网站建设宗旨
  • 郑州网站模板动漫设计与制作设计课程
  • 在线制作网站的工具岳阳网站设计改版
  • 网站建设需要汇报哪些内容前端开发的工作内容
  • 无锡阿凡达网站建设美团app开发公司
  • 个性化企业网站制作公司深圳高端网站定制公
  • 专业深圳网站定制开发企业网站开发 流程
  • 网站建设推广的软文php网站平台
  • 如何做代刷网站长外贸网站个性设计
  • 合同网站开发 设计 后期维护如何搭建海外网络
  • 提供网站建设服务优化大师哪个好
  • 军队营房基础建设网站哦咪咖网站建设
  • fifa17做任务网站app下载免费安装
  • 网站开发用哪些技术seo是什么意思为什么要做seo
  • 网站会动的页面怎么做的与网站建设有关的招标文件
  • 公司网站如何做seowordpress付费资源
  • 福田做商城网站建设哪家公司便宜点WordPress安装子目录
  • 南京建设交易中心网站wordpress 拼车
  • 上海今天发生的重大新闻5条河南网站seo费用
  • 广东深圳最新情况临安网站seo
  • 华为快速建站女人做春梦网站
  • 建外贸网站费用手机排行榜zol
  • 长治网站制作的网站做网站要什么知识条件
  • discuz 做门户网站wordpress怎么添加图片不显示图片
  • 东营网站建设方案范文百度应用搜索
  • 网站 常见推广js代码放wordpress哪里
  • 靖江网站开发徐州住房和城乡建设局网站
  • 南宁网站建设公司如何为老板打造网站赚钱的wordpress optimizer
  • 做微商好还是开网站好网站网络推广