Привет ребята!
Спасибо за отличную работу!
Я ищу модель 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
Конфигурация здесь. Кажется, автор не предоставил файл веса 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: индекс родительского узла
Самый полезный комментарий
У меня все заработало! :)
Я сейчас просто пытаюсь понять, как лучше всего структурировать свои изменения для 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']
для путей к файлам.Если у вас ничего не получится, я сделаю пиар из того, что имеет для меня смысл, иначе я все уши!