1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/MegEngine-MegFlow

Клонировать/Скачать
02-det-attr.zh.md 3.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 12:04 e2ca17f

Сцепление обнаружения и классификации

В этой статье мы расширим вычислительный граф на основе модели modelserving из tutorial01, добавив обнаружение и последующую классификацию. Мы предоставляем услуги по анализу видео. Полный код можно найти в каталоге flow-python/examples/simple_det_classify.

Удаление предварительной обработки для классификации

См. раздел «Создание модели с предварительной обработкой» в appendix-C-dump-model.zh.md.

Подготовка модели обнаружения

Здесь мы будем использовать готовую модель YOLOX mge. Можно повторно использовать код обнаружения из cat_finder (https://github.com/MegEngine/MegFlow/blob/master/flow-python/examples/application/cat_finder/det.py) или загрузить последнюю версию с официального сайта YOLOX (https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/MegEngine/python).

Настройка вычислительного графа

Добавьте файл video_cpu.toml в каталог simple_det_classify/video_cpu.toml в examples.

$ cat flow-python/examples/simple_det_classify/video_cpu.toml

main = "tutorial_02"

# Сначала объявите ресурсоёмкие узлы
[[nodes]]
name = "det"
ty = "Detect"
model = "yolox-s"
conf = 0.25
nms = 0.45
tsize = 640
path = "models/simple_det_classify_models/yolox_s.mge"
interval = 5
visualize = 1
device = "cpu"
device_id = 0

[[nodes]]
name = "classify"
ty = "Classify"
path = "models/simple_det_classify_models/resnet18_preproc_inside.mge"
device = "cpu"
device_id = 0

[[graphs]]
name = "subgraph"
inputs = [{ name = "inp", cap = 16, ports = ["det:inp"] }]
outputs = [{ name = "out", cap = 16, ports = ["classify:out"] }]
# Опишите связи
connections = [
  { cap = 16, ports = ["det:out", "classify:inp"] },
]

...
# ty изменить на VdieoServer
    [[graphs.nodes]]
    name = "source"
    ty = "VideoServer"
    port = 8085
    
...

При работе с конфигурацией предыдущего периода следует обратить внимание на три момента:

  • Для узлов с интенсивным использованием ресурсов в потоке видео необходимо объявить их вне [[graphs]], поскольку эти узлы будут использоваться повторно для нескольких потоков видео. В противном случае ресурсы могут быть исчерпаны.
  • Поле connections больше не пустое, так как необходимо описать связь между двумя узлами.
  • Тип сервера изменяется на VideoServer, чтобы указать, что UI обрабатывает видео.

Запуск теста

Запустите сервис:

$ cd flow-python/examples
$ megflow_run -c simple_det_classify/video_cpu.toml  -p simple_det_classify

Ресурсы

Смотрите appendix-A-graph-definition.zh.md для описания определения графа toml.

Смотрите appendix-B-python-plugin.zh.md для получения информации об определении интерфейса Python node.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/MegEngine-MegFlow.git
git@api.gitlife.ru:oschina-mirror/MegEngine-MegFlow.git
oschina-mirror
MegEngine-MegFlow
MegEngine-MegFlow
master