我正在训练YOLO模型,我的边界框采用以下格式:- x1,y2,x2,y2 => ex(100,100,200,200) 我需要将其转换为YOLO格式,例如: X,Y,W,H => 0.436262 0.474010 0.383663 0.178218
我已经计算出中心点X,Y,高度H和重量W。 但是仍然需要如前所述将它们转换为浮点数。
答案 0 :(得分:3)
对于那些寻找相反问题的人(yolo 格式到普通 bbox 格式)
def yolobbox2bbox(x,y,w,h):
x1, y1 = x-w/2, y-h/2
x2, y2 = x+w/2, y+h/2
return x1, y1, x2, y2
答案 1 :(得分:1)
这是python中的代码片段,用于将x,y坐标转换为yolo格式
def convert(size, box):
dw = 1./size[0]
dh = 1./size[1]
x = (box[0] + box[1])/2.0
y = (box[2] + box[3])/2.0
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)
im=Image.open(img_path)
w= int(im.size[0])
h= int(im.size[1])
print(xmin, xmax, ymin, ymax) #define your x,y coordinates
b = (xmin, xmax, ymin, ymax)
bb = convert((w,h), b)
检查我的示例程序,将LabelMe注释工具格式转换为Yolo格式https://github.com/ivder/LabelMeYoloConverter
答案 2 :(得分:0)
YOLO将图像空间归一化为在x和y方向上都从0扩展到1。要在(x,y)坐标和yolo(u,v)坐标之间转换,您需要将数据转换为u = x / XMAX; y = y / YMAX,其中XMAX,YMAX是您正在使用的图像阵列的最大坐标。
这全部取决于以相同方式定向图像阵列。