一、标签转换 如下图所示,是标注的json文件。这里转换的时候所需要的,最重要的信息是 category_id和bbox,用这两个来转换成txt
文章图片
需要完成以下的转换——> 左边的可能是其他渠道或者任务提供的json标注,右边的txt是yolov5所需要的标注
文章图片
二、边界框(bounding box)说明 在目标检测中,用边界框来表示物体的位置,边界框为能正好包含物体的矩形框。如下图中包含框选的矩形框即为边界框。
文章图片
边界框的表达形式:
- xyxy格式: 边界框由左上角坐标(x1,y1)和右下角坐标(x2,y2)表示
- xywh格式: 边界框由中心坐标(x,y)和框的长宽(w,h)表示——YOLO中主要采用的是这种
三、转换 1. bbox(x1,y1,x2,y2)的情况
- size为图片的尺寸,一般json文件中可以获取,以list的形式储存,如[1920, 1080]
- box为json里的边界框bbox,同样以list的形式表示
def convert(size,box):
dw = 1. / size[0]
dh = 1. / size[1]
x = (box[0] + box[2]) / 2.0
y = (box[1] + box[3]) / 2.0
w = box[2] - box[0]
h = box[3] - box[1]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return(x,y,w,h)
1. bbox(x,y,w,h)的情况
def convert(siez,box):
x, y, w, h = item['bbox']
dw = 1. / size[0]
dh = 1. / size[1]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return(x,y,w,h)
推荐阅读
- pytorch|pytorch_lesson2 张量的索引+torch.index_select+torch.view+张量的分片函数+张量的合并操作+张量的维度变换
- sklearn|t-SNE非线性降维
- python|python编写冒泡算法
- Python|Pandas合并数据集
- VUE|Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)
- #|Python学习笔记 - Python编程规范
- 计算机视觉|Faster rcnn 训练自己的数据集 解决方案
- python练习题|python基础20道小练习
- 【原创】Selenium获取请求头、响应头