Какой формат разметки имеет отрицательные значения Bbox в метках?

Вопрос или проблема

У меня есть помеченный набор данных для обнаружения объектов
несколько тысяч изображений с аннотацией в csv файле

csv содержит следующие столбцы
image_path, class, xmax, xmin, ymax, ymin

похоже на Pascal voc формат меток, но когда я его отображаю, это не работает, и все метки выглядят неправильно

Я заметил, что есть некоторые отрицательные значения в xmin, ymin, и это странно

поэтому я спрашиваю, какие форматы разметки могут иметь такие значения, потому что это?

например, bbox имеет следующие значения

xmax: 429
xmin: -68
ymax = 390
ymin = 130

код, который я использовал:

import cv2
import pandas as pd 
df = pd.read_csv('train.csv')

directory = 'dataset/images'

color = (255, 0, 0)
thickness = 2
org = (50, 50)
fontScale = 1
font = cv2.FONT_HERSHEY_SIMPLEX

for i in df.index:
  image_path = df.iloc[i]['image_path']
  xmax = int(df.iloc[i]['xmax'])
  xmin = int(df.iloc[i]['xmin'])
  ymax = int(df.iloc[i]['ymax'])
  ymin = int(df.iloc[i]['ymin'])
  txt = df.iloc[i]['name']

  x= xmax - xmin
  y = ymax - ymin 
  start_point = (xmin,ymin)
  end_point = (xmax,ymax)

  img = cv2.imread(directory+ "https://datascience.stackexchange.com/"+image_path)


  image = cv2.putText(img, txt, org, font, 
               fontScale, color, thickness, cv2.LINE_AA)

  bbox_img = cv2.rectangle(image, start_point, end_point, color, thickness)

  cv2.imshow('image window', bbox_img)
  # добавьте wait key. окно ждет, пока пользователь не нажмет клавишу
  cv2.waitKey(0)
  # и, наконец, закройте все открытые окна
  cv2.destroyAllWindows()

Судя по вашему ответу, похоже, что некоторые из ваших ограничивающих рамок используют другую систему координат, чем та, что обычно используется для отображения в OpenCV. OpenCV рассматривает координаты на изображении как строго положительные (где $(0,0)$ является верхним левым углом изображения при отображении) источник. Тот факт, что у вас есть отрицательные координаты, указывает на то, что эти координаты используют другую парадигму, например, что $(0,0)$ находится в центре изображения.

Вы можете выяснить, какова разметка для вашего набора данных. Также может быть проще перенормировать координаты изображения так, чтобы наименьшие значения $x$ и $y$ были $(0,0)$.

Ответ или решение

При анализе вашего набора данных и формате аннотаций, в частности, нескольких значений, при этом le xmin и ymin имеют отрицательные значения, важно понимать, какие форматы меток могут использовать такие координаты.

Понимание форматов разметки

  1. Стандартные форматы разметки:

    • Наиболее распространенными форматами разметки для детекции объектов являются PASCAL VOC и COCO. Оба из них используют положительные значения координат, где (0,0) находится в верхнем левом углу изображения. Таким образом, отрицательные значения в xmin и ymin не должны встречаться в этих форматах.
  2. Коррекция координат:

    • Отрицательные координаты могут свидетельствовать о том, что используется иное представление системы координат. Например, в некоторых случаях (особенно в задачах по анализу изображений, связанных с компьютерным зрением) может применяться система координат, в которой (0,0) находится в центре изображения. Это означает, что:
      • Положительные значения указывают на область правой и нижней частей изображения.
      • Отрицательные значения означают области, которые находятся вне границ изображения слева и сверху.

Возможные источники негативных значений

  • Формат, использующий центральную точку: Может быть, данные получены из формата разметки, который предполагает, что центр изображения — это (0, 0), а затем координаты измеряются относительно этого центра.
  • Ошибки при предварительной обработке данных: Неверная обработка или преобразование координат, где данные были масштабированы или сдвинуты. Например, если к значениям координат были применены математические операции, влиявшие на их диапазон.

Примеры и проверка

Ваш пример показывает коробку с координатами:

  • xmax: 429
  • xmin: -68
  • ymax: 390
  • ymin: 130

Эти значения говорят о том, что часть объекта находится за пределами изображения (в этом случае — влево). Для правильной визуализации таких аннотаций в OpenCV вам нужно следовать нескольким шагам.

Рекомендации по решению проблемы

  1. Реализуйте преобразование координат:
    Если система координат вашей аннотации базируется на центральной точке, вы можете преобразовывать значения следующим образом:

    • Например, если ваше изображение имеет ширину W и высоту H, корректировка может выглядеть так:
      xmin = xmin + W / 2
      ymin = ymin + H / 2
      xmax = xmax + W / 2
      ymax = ymax + H / 2

      Это переместит все координаты в положительное пространство.

  2. Проверка формата аннотации:
    Найдите документацию на ваш набор данных или опросите источники, которые предоставили вам данные, чтобы определить, какой именно формат аннотаций использовался. Возможно, существует специфический метод преобразования координат.

  3. Используйте отладочные инструменты:
    Добавьте больше отладочной информации, выводя координаты перед рисованием рамок. Это поможет быстро определить, какие надписи и какие координаты не нормализованы.

Заключение

Ваша ситуация с негативными значениями в аннотациях может быть решена путем корректировки координат с помощью описанных методик. Определение того, какой именно формат был использован, поможет избежать подобных ошибок в будущем. Нормализация координат для корректной визуализации гарантирует, что ваши метки будут видеть в правильной области на изображениях, что необходимо для успешной работы алгоритмов детекции объектов.

Оцените материал
Добавить комментарий

Капча загружается...