Отметьте тренировочные данные в YOLO

Я только начинаю разбираться в CNN и компьютерном зрении, поэтому я начал исследовать алгоритмы обнаружения объектов, я прочитал статью для Yolov1 и пытаюсь реализовать код с нуля, используя тензорный поток (я знаю, что это будет сложно, но я чувствую, что таким образом узнаю больше), однако у меня есть вопрос относительно формата обучающих данных.

Yolo Grid

Согласно YOLOv1, если я пытаюсь распознать, скажем, 3 изображения, маркировка должна выглядеть примерно так:

[Objectness,x,y,W,H,c1,c2,c3] 

Где c1, c2, c3 представляют количество классов, в данном случае 3 (например, человек, велосипед, автомобиль) и Объектность представляет уверенность в том, что объект существует 1, если он есть, и 0, если его нет...

Используя приведенное выше изображение в качестве справки, нужно ли мне также помечать все пустые ячейки для этого конкретного изображения?

1st cell, there is no object here    = [0,?,?,?,?,?,?,?]
2nd cell, there is no object here    = [0,?,?,?,?,?,?,?]
3rd cell, there is no object here    = [0,?,?,?,?,?,?,?]
4th cell, there is a black car here  = [1,x,y,W,G,0,0,1]
5th cell, there is no object here    = [0,?,?,?,?,?,?,?]
6th cell, there is a silver car here = [1,x,y,W,G,0,0,1]
7th cell, there is no object here    = [0,?,?,?,?,?,?,?]
8th cell, there is no object here    = [0,?,?,?,?,?,?,?]
9th cell, there is no object here    = [0,?,?,?,?,?,?,?]

Или просто 2 метки, где содержатся объекты

4th cell, there is a black car here  = [1,x,y,W,G,0,0,1]
6th cell, there is a silver car here = [1,x,y,W,G,0,0,1]

person Salvador Molina    schedule 30.07.2019    source источник


Ответы (1)


Я не думаю, что вы должны маркировать каждую ячейку самостоятельно. Если вы посмотрите на AlexeyAB для например, вы можете видеть, что каждая строка аннотаций должна содержать 5 элементов:

<object-class> <x_center> <y_center> <width> <height>

которые имеют относительные значения. Деление изображения на ячейки и подсчет баллов объектности должно происходить в программе.

То, что вы упомянули как обозначение [Objectness,x,y,W,H,c1,c2,c3], — это тензоры, созданные в каждой ячейке, которые затем используются для обучения сети даркнета.

person Hadi GhahremanNezhad    schedule 30.07.2019
comment
Посмотрите объяснение Эндрю по NG в этом видео: youtube.com/watch?v=9s_FpMpdYW8 на 1:02 минуты Он упоминает, что для построения тренировочного набора вы проходите через ячейки, поэтому я запутался... - person Salvador Molina; 30.07.2019
comment
Да, но в случае ручных аннотаций вам нужно только нарисовать ограничивающую рамку вокруг каждого объекта и установить его метку. Затем в программе вы вычисляете тензоры (на основе аннотаций и т. д.), а затем передаете их модели для обучения. - person Hadi GhahremanNezhad; 30.07.2019
comment
@SalvadorMolina Профессор Эндрю Нг объясняет общий алгоритм YOLO, как вычисляются координаты, классы, пробы и т. д. внутри алгоритма yolo. Но это не значит, что вы должны аннотировать свои данные таким образом. Yolo принимает формат, описанный Хади выше. - person gameon67; 31.07.2019
comment
@ gameon67 Меня поразило то, что он буквально сказал следующее: чтобы построить тренировочный набор, вы проходите через каждую из этих 9 ячеек сетки, чтобы сформировать целевой вектор y ... и если вы посмотрите на изображение, целевой вектор y в этот момент имеет значения, которые я упомянул ранее, поэтому, на мой взгляд, вам нужно было добавить показатель «объективности», чтобы сеть узнала, когда там есть объект, поэтому я думаю, что мой следующий вопрос будет, как знаем ли мы, есть ли объект в этой ячейке из обучающей метки? - person Salvador Molina; 31.07.2019
comment
@SalvadorMolina Проверьте это: towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b особенно в части функции потери йоло. Концепция такая же, как и у других CNN и нейронных сетей. - person gameon67; 31.07.2019