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

西安网站建设和推广公司网拍外宣怎么推广

西安网站建设和推广公司,网拍外宣怎么推广,上海外贸人才网,恶意点击别人的网站简介: 最近做实例分割分割,使用Labelme生成json格式标签后,需要转换为txt标签,才能供YOLO进行训练。 在参看b站,github后,发现GitHub有相关项目: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/?h=format+image#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_ok=True 可以避免重复检查目录是否存在directory_path.mkdir(parents=True, exist_ok=True)# 创建训练使用的yaml文件
def create_yaml(output_folder: Path, sorted_keys: list):train_img_path = Path("images") / "train"val_img_path = Path("images") / "val"train_label_path = Path("labels") / "train"val_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.yaml"with open(yaml_file_path, "w") as yaml_file:yaml.dump(yaml_dict, yaml_file, default_flow_style=False, sort_keys=False)print(f"yaml 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, key=lambda k: label_counts[k], reverse=True)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, task="train")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, task="val")if __name__ == "__main__":parser = argparse.ArgumentParser(description="labelme2yolo")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.参考1:KdaiP/labelme2YoloV8-segment: 将labelme数据标注格式转换为YoloV8语义分割数据集,并可自动划分训练集和验证集

2.rooneysh/Labelme2YOLO: 帮助将 LabelMe 注释工具 JSON 格式转换为 YOLO 文本文件格式。如果您已经通过 LabelMe 标记了分割数据集,则可以轻松使用此工具来帮助转换为 YOLO 格式的数据集。 

 

http://www.hkea.cn/news/851899/

相关文章:

  • 淮安网站定制徐州seo外包公司
  • 嘉兴类网站系统总部网站建设技术解决方案
  • 做网站的教科书外包网络推广公司推广网站
  • 模板名字 wordpress优化大师如何删掉多余的学生
  • 3d网站建设制作百度关键词优化手段
  • 新手做那些网站比较好东莞企业网站排名
  • 欧美风格网站360指数
  • 优秀网站建设公司电话下列哪些店铺适合交换友情链接
  • 58同城乌鲁木齐网站建设重庆网站到首页排名
  • wordpress知言主题山东服务好的seo公司
  • 旅游商务平台网站建设功能需求关键词排名查询官网
  • 做网站要搭建本地服务器么微商引流被加方法精准客源
  • 网站名字要备案吗友情链接怎么弄
  • 江苏网站开发外链网站大全
  • 网站代备案流程图百度关键词优化排名技巧
  • 石狮建设局网站今日头条站长平台
  • 修改公司网站网页站长素材音效
  • 网站速度测速免费访问国外网站的app
  • 常州网站搭建公司宣传推广渠道有哪些
  • 中国建设监理网站广告网络
  • 网站维护费用怎么收路由优化大师官网
  • 如何加入小说网站做打字员合肥网站优化推广方案
  • 网站建设现状关键词在线优化
  • 网站建设就业百度网址导航主页
  • 郑州公司做网站汉狮中囯联通腾迅
  • 专业网上购物平台优化网站的步骤
  • 用web开发一个网站怎么做网站推广优化平台
  • 建设企业网站进去无法显示搜索引擎seo
  • 网站 分辨率百度视频推广
  • 中国红河网seo排名工具