赞
踩
<计算机视觉二> labelme标定的数据转换成yolo训练格式
上一章讲了如何使用labelme标注自己的数据集,本章将继续将标注的数据转换成网络能够训练的数据格式。首先说明下,适合自己的数据格式才是重要的,本文的数据不代表一定要这么写。有可能你在工作或者实际使用中自己摸索一套习惯用的数据格式,或者在团队有已经有了约定俗称的数据格式,本文大致说下思路和具体实现。
- #!/usr/bin/env python
- # -*- encoding: utf-8 -*-
- '''
- @File : create_targets.py
- @Time : 2021/08/19 16:18:57
- @Author : XIA Yan
- @Contact : 微信 lingyanlove
- @Version : 0.1
- @License : Apache License Version 2.0, January 2004
- @Language: python3.8
- @Desc : 将labelme生成的json标签 制作成YOLO网络能够训练的格式
- 为了简化代码,这里强制保存在 data文件夹中不再增加额外的路径代码
- '''
-
- import json
- import os
- import os.path as osp
- import labelme
- from pathlib import Path
- from PIL import Image
- import cv2
- import numpy as np
- import tqdm
- import glob
- import json
- import argparse
-
-
- #1 创建标签生成
- def create_label(json_path:str):
- '''
- @description:
- 遍历所有的labelme json文件,生成一个class.txt标签文件
- @Args:
- json_path :(string) 训练的json文件路径
- @Return:
- None
- '''
-
- assert osp.exists(json_path),f"{json_path}不存在当前目录,请检查运行的根目录!"
- label_list = [] #创建一个list用于存放标签
-
- json_path = glob.glob(f"{json_path}/*.json")
- num_js = len(json_path)
- for path in tqdm.tqdm(json_path, total= num_js, desc= "正在生成classes.txt标签文件:"):
- try:
- label_file = labelme.LabelFile(filename = str(path))
- except:
- print(path)
- exit(-1)
- for shape in label_file.shapes:
- #忽略指定标签
- if shape["label"] == "#":
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。