Как преобразовать ограничивающий прямоугольник (x1, y1, x2, y2) в стиль YOLO (X, Y, W, H) - PullRequest
1 голос
/ 13 мая 2019

Я тренирую модель YOLO, у меня есть ограничивающие рамки в этом формате: - x1, y1, x2, y2 => ex (100, 100, 200, 200) Мне нужно преобразовать ее в формат YOLO, чтобычто-то вроде: - X, Y, W, H => 0,436262 0,474010 0,383663 0,178218

Я уже вычислил центральную точку X, Y, высоту H и вес W. Но все же нужно преобразовать ихна плавающие числа, как упоминалось.

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Вот фрагмент кода в 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

0 голосов
/ 13 мая 2019

YOLO нормализует пространство изображения для перемещения от 0 до 1 в направлениях x и y. Чтобы преобразовать координаты между вами (x, y) и координатами yolo (u, v), вам необходимо преобразовать данные в виде u = x / XMAX; y = y / YMAX, где XMAX, YMAX - максимальные координаты для используемого вами массива изображений.

Все это зависит от ориентации массивов изображений.

...