Darkflow: ЙОЛО 9000

Созданный на 9 февр. 2017  ·  41Комментарии  ·  Источник: thtrieu/darkflow

Привет ребята!

Спасибо за отличную работу!

Я ищу модель YOLO9000, которая может классифицировать 9000 категорий.

Не нашел YOLO 9000 cfg .

Кто-нибудь может помочь?

> find . -name '*.cfg' -exec cat {} \; | grep "classes"
classes=4
classes=20
classes=80
classes=2
classes=4
classes=20
classes=20
classes=4
classes=4
classes=20
classes=4
classes=2
classes=80
classes=4
classes=20
classes=80
classes=20
classes=20
classes=80

Я ожидал чего-то вроде classes=9000

help wanted

Самый полезный комментарий

У меня все заработало! :)

Я сейчас просто пытаюсь понять, как лучше всего структурировать свои изменения для PR. Я вижу, что за последние несколько дней многое изменилось.

В настоящее время у меня есть большая часть его как отдельного darkflow/cython_utils/cy_yolo9000_findboxes.pyx но я, вероятно, мог бы свернуть его в cy_yolo2_findboxes.pyx и включить другой мета-ключ в оператор if метода labels для darkflow/darkflow/yolo/misc.py (а затем сделайте разделение между техникой softmax в окнах поиска, прежде чем переходить в цикл).

Я уже перешел к оператору if в методе меток в misc.py чтобы добавить hyponym_map который является dict, отображающим родительский индекс в список его дочерних узлов для файлов данных.

Кроме того, у меня в настоящее время есть папка data / в моей папке cfg /, и я просто присоединяю путь к конфигурации и meta['tree'] и meta['map'] для путей к файлам.

Если у вас ничего не получится, я сделаю пиар из того, что имеет для меня смысл, иначе я все уши!

Все 41 Комментарий

Конфигурация здесь. Кажется, автор не предоставил файл веса YOLO9000.

Спасибо за быстрый ответ! Попробую найти weights9000 и выложу сюда, чтобы помочь другим.

Файл весов находится здесь: http://pjreddie.com/media/files/yolo9000.weights

Вам удалось заставить это работать? Я вставил файл весов и файл конфигурации, а также загрузил файл 9k.names. Обработка не заняла много времени, но пост-обработка заняла примерно в 10 раз больше времени, чем при обычных настройках yolo.cfg и yolo.weights. В конце концов, ни на одном из возвращенных изображений не обнаружилось никаких ограничивающих рамок. Я делаю что-то неправильно?

Я посмотрел на yolo9000.cfg , оказалось, что есть над чем поработать. yolo9000 выполняет не обычный softmax, а сгруппированный. Сейчас очень занят, я постараюсь над этим поработать, но, по крайней мере, не на этой неделе, а на следующей.

Да вообще не о чем беспокоиться. Вы быстро отвечаете на эти вопросы :) Большое спасибо за всю работу, которую вы вложили в этот проект - это действительно отличный проект. Я просто хотел убедиться, что не делаю что-то не так, что вызывает проблему - не нужно спешить, чтобы разобраться с этим.

Есть какие-нибудь новости?
У меня та же проблема, что и у abagshaw.
Постобработка в 10 раз медленнее и без ограничивающих рамок.
Нужно ли менять cfg файл и как?

Спасибо!

@thtrieu Можем ли мы снова открыть эту проблему, пока она не будет исправлена, потому что на данный момент я не думаю, что darkflow имеет функциональность YOLO 9000?

Я, вероятно, собираюсь использовать YOLO9000 для своего дипломного проекта (хотя я буду сильно его адаптировать), и поскольку это единственная реализация тензорного потока YOLOv2, которую я могу найти, я полагаю, что буду использовать ее в качестве основы. Я добавлю свою реализацию, когда она будет завершена, но это, вероятно, займет еще пару недель, поэтому, если у кого-то будет больше времени раньше, это мне очень поможет! ;)

В ближайшие несколько дней у меня будет немного свободного времени, однако мое понимание ML и того, что на самом деле происходит за кулисами, довольно поверхностно. Я не совсем уверен, что нужно сделать, чтобы YOLO 9000 заработал - если это не слишком сложно, может кто-нибудь вкратце обрисовать, что нужно сделать, и я попробую (если это довольно сложно, не беспокойтесь, как Сомневаюсь, что далеко уйду :))

@abagshaw что нужно сделать, так это понять следующие параметры в .cfg

random=1
tree=data/9k.tree
map = data/coco9k.map

Они будут считаны в meta dict текущим кодом, единственный код, который необходимо изменить, - это функция постобработки, которая в настоящее время не принимает во внимание meta['random'], meta['tree'], meta['map'] для интерпретации выходного тензора и нарисуйте ограничивающие рамки.

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

Да, извините, ребята - я думаю, что это немного выше моей головы. Я прочесывал https://github.com/pjreddie/darknet/commit/d2dece3df743c97f2cfbb9bbf0dd0449a8730cec, и там много чего я не понимаю. Я буду копаться, но не думаю, что далеко уйду.

Есть обновления по этому поводу?

Да, извините, я решил, что было бы быстрее просто прикрепить слой классификации yolo9000 к более быстрому RCNN только в тензорном потоке. Я могу заняться чем-нибудь вместе, когда закончу диссертацию, но этого не будет в ближайшие 4 месяца;)

Драт - это плохо. Я пытаюсь понять, как вся эта классификация дерева WordNet работает в yolo9000. Я хотел бы лучше понять этот материал, чтобы я мог помочь. Надеюсь, у кого-то скоро найдется время добавить эту функциональность :)

Ребята, я создал репозиторий для YOLO 9000. Здесь все объяснено. Проверить это:

https://github.com/philipperemy/yolo-9000

Он использует darknet вместо darkflow, но я думаю, что его будет довольно легко перенести.

@abagshaw @TheLaurens @saiprabhakar @thtrieu @ frey123

@philipperemy Спасибо, может быть, я что-то

Если вы хотите перенести YOLO9000 на darkflow, это было бы здорово :) :)

Использование @abagshaw для даркнета было первым шагом. Теперь я собираюсь сосредоточиться на том, как заставить его работать в Darkflow!

@philipperemy Отлично! Держать нас в курсе :)

@philipperemy Есть ли

Извините, все еще нет большого прогресса! Я сейчас занят своей работой :)

Спасибо всем.

Могу я задать несколько вопросов по этой теме?
Сейчас меняю yolo.cfg, чтобы классифицировать 2 класса. Для веса я использую yolo.weights. После того, как я натренировал модель, она работает довольно хорошо.

Q1: Судя по этому вопросу, мне кажется, что мне нужен разный вес для разного количества классов. Я помню, что yolo.weights используется как минимум на 20 занятиях. Я прав?

Q2: На скольких занятиях я могу использовать yolo.weights?

Q3: Можно ли использовать контрольную точку модели для 2 классов в качестве начального веса для другой модели, скажем для 3 классов?

Еще раз спасибо.

@ chengs2000 Ваши вопросы на самом деле не относятся к YOLO9000 - возможно, разместите свой вопрос в новом выпуске, и там его можно будет решить.

Привет, если кто-то уже этим не занимается (@philipperemy?) Я попробую. Отчитаюсь через несколько дней с результатами.

@relh, давай, пожалуйста! У меня не было много времени, чтобы сосредоточиться на этом.

@relh Есть ли прогресс? 😃

У меня все заработало! :)

Я сейчас просто пытаюсь понять, как лучше всего структурировать свои изменения для PR. Я вижу, что за последние несколько дней многое изменилось.

В настоящее время у меня есть большая часть его как отдельного darkflow/cython_utils/cy_yolo9000_findboxes.pyx но я, вероятно, мог бы свернуть его в cy_yolo2_findboxes.pyx и включить другой мета-ключ в оператор if метода labels для darkflow/darkflow/yolo/misc.py (а затем сделайте разделение между техникой softmax в окнах поиска, прежде чем переходить в цикл).

Я уже перешел к оператору if в методе меток в misc.py чтобы добавить hyponym_map который является dict, отображающим родительский индекс в список его дочерних узлов для файлов данных.

Кроме того, у меня в настоящее время есть папка data / в моей папке cfg /, и я просто присоединяю путь к конфигурации и meta['tree'] и meta['map'] для путей к файлам.

Если у вас ничего не получится, я сделаю пиар из того, что имеет для меня смысл, иначе я все уши!

@relh Замечательно ! Большое спасибо за вашу работу над этим !!

За мои 2 цента: если ваш код cy_yolo9000_findboxes.pyx полностью отличается от того, который уже был написан в cy_yolo2_findboxes.pyx создание нового файла не проблема, но если они используют большую часть одного и того же кода, это Вероятно, было бы лучше попытаться внести изменения в существующий файл (чтобы избежать дублирования кода). Мне трудно дать больше информации, не увидев внесенных вами изменений (я совершенно не знаю, чем именно YOLO9000 отличается от YOLOv2), поэтому я бы согласился с вашим лучшим мнением о том, как внедрить эти изменения.

С нетерпением жду пиара!

@relh большое спасибо !! Извините, я был очень занят в последнее время, и у меня не было времени над этим поработать!

@relh, это отличная новость. Жду PR.

Большой! (С нетерпением жду возможности закрыть этот выпуск).

Вопрос закрыт? Есть ли у нас реализация тензорного потока для YOLO9000? Укажите, пожалуйста, на то же самое. Спасибо.

Вопрос в этом номере: pjreddie на своем сайте YOLO называет YOLO9000 как YOLOv2. Если перейти в раздел «Что нового в версии 2» и щелкнуть ссылку на документ, откроется бумага YOLO9000.

Итак, если в Darkflow нет реализации YOLO9000, что же такое YOLOv2 в контексте Darkflow?

Yolo9k - это модель, обученная в Imagenet с методом обучения ограничивающего прямоугольника, тогда как yolov2 по умолчанию обучается на COCO.

@philipperemy

1) кажется, что ваш код работает только на ЦП, знаете почему?
2) в чем разница между вашим проектом и даркнетом сейчас?

Спасибо!

Код @moskiteau хорошо работает на GPU
Мой проект основан на даркнете и содержит все для работы YOLO9000.

скомпилирован с флагом CPU:

seb@PHQ-4035-En:~/projects/stockshot/darknet$ ./darknet detector test cfg/combine9k.data cfg/yolo9000.cfg yolo9000.weights data/person.jpg
layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   544 x 544 x   3   ->   544 x 544 x  32
    1 max          2 x 2 / 2   544 x 544 x  32   ->   272 x 272 x  32
    2 conv     64  3 x 3 / 1   272 x 272 x  32   ->   272 x 272 x  64
    3 max          2 x 2 / 2   272 x 272 x  64   ->   136 x 136 x  64
    4 conv    128  3 x 3 / 1   136 x 136 x  64   ->   136 x 136 x 128
    5 conv     64  1 x 1 / 1   136 x 136 x 128   ->   136 x 136 x  64
    6 conv    128  3 x 3 / 1   136 x 136 x  64   ->   136 x 136 x 128
    7 max          2 x 2 / 2   136 x 136 x 128   ->    68 x  68 x 128
    8 conv    256  3 x 3 / 1    68 x  68 x 128   ->    68 x  68 x 256
    9 conv    128  1 x 1 / 1    68 x  68 x 256   ->    68 x  68 x 128
   10 conv    256  3 x 3 / 1    68 x  68 x 128   ->    68 x  68 x 256
   11 max          2 x 2 / 2    68 x  68 x 256   ->    34 x  34 x 256
   12 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   13 conv    256  1 x 1 / 1    34 x  34 x 512   ->    34 x  34 x 256
   14 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   15 conv    256  1 x 1 / 1    34 x  34 x 512   ->    34 x  34 x 256
   16 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   17 max          2 x 2 / 2    34 x  34 x 512   ->    17 x  17 x 512
   18 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   19 conv    512  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x 512
   20 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   21 conv    512  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x 512
   22 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   23 conv  28269  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x28269
   24 detection
mask_scale: Using default '1.000000'
Loading weights from yolo9000.weights...Done!
data/person.jpg: Predicted in 13.577125 seconds.
Tuareg: 25%
wild horse: 27%
goat herder: 82%
Shetland pony: 86%
German shepherd: 48%
Gordon setter: 51%
seb@PHQ-4035-En:~/projects/stockshot/darknet$

и скомпилирован с флагом GPU:

seb@PHQ-4035-En:~/projects/stockshot/darknet$ ./darknet detector test cfg/combine9k.data cfg/yolo9000.cfg yolo9000.weights data/person.jpg
layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   544 x 544 x   3   ->   544 x 544 x  32
    1 max          2 x 2 / 2   544 x 544 x  32   ->   272 x 272 x  32
    2 conv     64  3 x 3 / 1   272 x 272 x  32   ->   272 x 272 x  64
    3 max          2 x 2 / 2   272 x 272 x  64   ->   136 x 136 x  64
    4 conv    128  3 x 3 / 1   136 x 136 x  64   ->   136 x 136 x 128
    5 conv     64  1 x 1 / 1   136 x 136 x 128   ->   136 x 136 x  64
    6 conv    128  3 x 3 / 1   136 x 136 x  64   ->   136 x 136 x 128
    7 max          2 x 2 / 2   136 x 136 x 128   ->    68 x  68 x 128
    8 conv    256  3 x 3 / 1    68 x  68 x 128   ->    68 x  68 x 256
    9 conv    128  1 x 1 / 1    68 x  68 x 256   ->    68 x  68 x 128
   10 conv    256  3 x 3 / 1    68 x  68 x 128   ->    68 x  68 x 256
   11 max          2 x 2 / 2    68 x  68 x 256   ->    34 x  34 x 256
   12 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   13 conv    256  1 x 1 / 1    34 x  34 x 512   ->    34 x  34 x 256
   14 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   15 conv    256  1 x 1 / 1    34 x  34 x 512   ->    34 x  34 x 256
   16 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   17 max          2 x 2 / 2    34 x  34 x 512   ->    17 x  17 x 512
   18 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   19 conv    512  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x 512
   20 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   21 conv    512  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x 512
   22 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   23 conv  28269  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x28269
   24 detection
mask_scale: Using default '1.000000'
Loading weights from yolo9000.weights...Done!
data/person.jpg: Predicted in 0.060738 seconds.
African: 25%
worker: 82%
horse: 86%
working dog: 48%
hunting dog: 50%

./darknet Detector test cfg / comb9k.data cfg / yolo9000.cfg yolo9000.weights data / person.jpg -thresh .25 -hier .001

может кто-нибудь объяснить, какова структура дерева 9000 этикеток? В файле 9k.tree, например n0000245 -1, n0566538625 4, что означают -1 и 4? Как я могу построить древовидную структуру с этим файлом 9k.tree?

@yaxiongchi
-1 означает корень дерева
4: индекс родительского узла

Была ли эта страница полезной?
0 / 5 - 0 рейтинги