当前位置:网站首页>[pytorch] yolov5 train your own data set
[pytorch] yolov5 train your own data set
2022-07-06 19:20:00 【. Yun Zhe】
1.labelme Generate tags
2.labelme Label conversion yolo label
# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
import shutil
classes = ["cellphone", "person"]
def convert(size, box):
dw = 1./(size[0])
dh = 1./(size[1])
x = (box[0] + box[1])/2.0 - 1
y = (box[2] + box[3])/2.0 - 1
w = box[1] - box[0]
h = box[3] - box[2]
x = x*dw
w = w*dw
y = y*dh
h = h*dh
return (x,y,w,h)
def convert_annotation(path, save, image_id):
in_file = open("{}/{}.xml".format(path, image_id), "r", encoding="utf-8")
out_file = open("{}/{}.txt".format(save, image_id), "w", encoding="utf-8")
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
cls = obj.find("name").text
if cls not in classes or int(difficult) == 1:
continue
cls_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))
bb = convert((w, h), b)
out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
img_path = os.path.join(path, "{}.jpg".format(image_id))
save_path = os.path.join(save, "{}.jpg".format(image_id))
shutil.copy(img_path, save_path)
wd = getcwd()
if __name__ == '__main__':
# get image_ids
path = "val_voc"
save = "val"
txt_yolo = "val.txt"
image_ids = []
for file in listdir(path):
if file.endswith(".xml"):
image_id = file.replace(".xml", "")
image_ids.append(image_id)
# generate jpg and txt labels
for image_id in image_ids:
convert_annotation(path, save, image_id)
# write yolo
list_file = open(txt_yolo, "w", encoding="utf-8")
for image_id in image_ids:
txt_path = os.path.join(save, "{}.txt".format(image_id))
img_path = os.path.join(wd, save, "{}.jpg".format(image_id)) # Absolute path
lines = open(txt_path, "r", encoding="utf-8")
write_line = "{} {}\n".format(img_path, " ".join([line.strip() for line in lines]))
list_file.write(write_line)
list_file.close()
3.yolov5 Data file format
── coco128
├── images
│ ├── train
│ └── val
└── labels
├── train
└── val
$ cat 00009.txt
45 0.479492 0.688771 0.955609 0.5955
50 0.637063 0.732938 0.494125 0.510583
边栏推荐
- AUTOCAD——中心线绘制、CAD默认线宽是多少?可以修改吗?
- If you have any problems, you can contact me. A rookie ~
- Intelligent supply chain management system solution for hardware and electromechanical industry: digital intelligent supply chain "creates new blood" for traditional industries
- Three years of Android development, Android interview experience and real questions sorting of eight major manufacturers during the 2022 epidemic
- Graffiti intelligence is listed on the dual main board in Hong Kong: market value of 11.2 billion Hong Kong, with an annual revenue of 300 million US dollars
- MRO industrial products enterprise procurement system: how to refine procurement collaborative management? Industrial products enterprises that want to upgrade must see!
- LeetCode-1279. Traffic light intersection
- [depth first search] Ji suanke: a joke of replacement
- 【pytorch】yolov5 训练自己的数据集
- How to type multiple spaces when editing CSDN articles
猜你喜欢
The second day of rhcsa study
Interface test tool - postman
Tongyu Xincai rushes to Shenzhen Stock Exchange: the annual revenue is 947million Zhang Chi and Su Shiguo are the actual controllers
助力安全人才专业素养提升 | 个人能力认证考核第一阶段圆满结束!
Helm deploy etcd cluster
Three years of Android development, Android interview experience and real questions sorting of eight major manufacturers during the 2022 epidemic
How are you in the first half of the year occupied by the epidemic| Mid 2022 summary
Black Horse - - Redis Chapter
史上超级详细,想找工作的你还不看这份资料就晚了
渲大师携手向日葵,远控赋能云渲染及GPU算力服务
随机推荐
Solution of commercial supply chain management platform for packaging industry: layout smart supply system and digitally integrate the supply chain of packaging industry
Looting iii[post sequence traversal and backtracking + dynamic planning]
Fast power template for inverse element, the role of inverse element and example [the 20th summer competition of Shanghai University Programming League] permutation counting
如何提高网站权重
Tensorflow and torch code verify whether CUDA is successfully installed
Actf 2022 came to a successful conclusion, and 0ops team won the second consecutive championship!!
Wx applet learning notes day01
Camel case with Hungarian notation
Tongyu Xincai rushes to Shenzhen Stock Exchange: the annual revenue is 947million Zhang Chi and Su Shiguo are the actual controllers
R语言ggplot2可视化时间序列柱形图:通过双色渐变配色颜色主题可视化时间序列柱形图
Use of deg2rad and rad2deg functions in MATLAB
ACTF 2022圆满落幕,0ops战队二连冠!!
Reptiles have a good time. Are you full? These three bottom lines must not be touched!
Computer network: sorting out common network interview questions (I)
Dark horse -- redis
渲大师携手向日葵,远控赋能云渲染及GPU算力服务
第五期个人能力认证考核通过名单公布
First day of rhcsa study
GCC【7】- 编译检查的是函数的声明,链接检查的是函数的定义bug
Problems encountered in using RT thread component fish