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

OSCHINA-MIRROR/MegEngine-MegFlow

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

Megflow Quickstart

Введение

В этой статье описывается, как использовать Megflow Quickstart для создания приложений в формате вопросов и ответов.

На данный момент поддерживаются 4 метода использования:

  • modelserving — сервис одной модели;
  • image pipeline — графический конвейер;
  • video pipeline — видеоконвейер;
  • custom template — пользовательский шаблон.

Сервис одной модели

Предположим, что модель использует формат Megengine и входной тензор имеет только один элемент.

$ megflow_quickstart
...
Welcome to MegFlow quickstart utility.
Please enter values for the following settings (just press Enter to accept a default value, if one is given in brackets).
> Enter the root fullpath for the project. [megflow-app]
megflow-app
> Enter project type, modelserving/image/video/custom? [modelserving]
modelserving
💡   fetching remote template, please wait...
> Enter model input tensor name. [data]
data
> Enter model fullpath. [model.mge]
model.mge
💡   Project created, read ${PROJECT_dir}/README.md to run it.

Quickstart задаст несколько вопросов и предоставит значения по умолчанию:

  • путь к проекту;
  • тип сервиса, здесь используется modelserving;
  • имя входного тензора, здесь используется data;
  • путь к модели.

Обычно будет отображаться сообщение об успешном создании проекта, и для запуска необходимо прочитать файл ${PROJECT_dir}/README.md.

$ cd megflow-app
$ ./requires.sh  # установка зависимостей Python
$ cd ..
$ megflow_run -p megflow-app/config.toml -p megflow-app  # запуск сервиса
...
# откройте браузер на 127.0.0.1:8080/docs

Для восстанавливаемых ошибок (например, сбой при извлечении шаблона) quickstart предложит повторить попытку, соответствующий эмодзи — 🔧.

Графический/видеосервис

$ megflow_quickstart
...
Welcome to MegFlow quickstart utility.
Please enter values for the following settings (just press Enter to accept a default value, if one is given in скобках).
> Enter the root fullpath for the project. [megflow-app]
megflow-app
> Enter project type, modelserving/image/video/custom? [modelserving]
image
💡   fetching remote template, please wait...
💡   Project created, read ${PROJECT_dir}/README.md to run it.

Созданный проект графического/видеосервиса содержит только структуру сервиса и может быть запущен напрямую с помощью megflow_run без конкретной бизнес-логики.

Пользовательский шаблон

Принцип работы quickstart:

  • извлечь из GitHub соответствующую ветку;
  • проверить наличие заполнителей в ветке;
  • попросить пользователя заполнить заполнитель;
  • заменить заполнитель.

Этот процесс также можно использовать для пользовательских репозиториев и веток, quickstart предоставляет параметр --git.

$ megflow_quickstart --git https://github.com/user/repo
...
> Enter project type, modelserving/image/video/custom? [modelserving]
custom
...

Опция custom задаст следующие вопросы:

  • путь к модели;
  • тип;
  • название ветки;
  • что нужно заменить на заполнитель.

Регулярное выражение для поиска заполнителя:

$ cat flow-quickstart/main.rs
...
    let re = Regex::new(r"##[_\-a-zA-Z0-9]*##").unwrap();
...

Использование сервисов MegFlow

WebUI для изображений

Откройте соответствующий порт в браузере (например, http://127.0.0.1:8080/docs), выберите изображение и нажмите «попробовать».

Видео WebUI

Откройте порт службы (например, http://127.0.0.1:8080/docs).

  • Следуйте инструкциям в разделе Как создать rtsp, чтобы предоставить адрес потока rtsp;
  • или укажите абсолютный путь к файлу .mp4 (файл и служба 8080 находятся на одном компьютере).

Командная строка для изображений

$ curl http://127.0.0.1:8080/analyze/image_name  -X POST --header "Content-Type:image/*"   --data-binary @test.jpeg

image_name — это пользовательский параметр, который используется в сценариях, требующих отправки содержимого. Здесь можно указать любое значение; test.jpeg — тестовое изображение.

Командная строка для видео

$ curl  -X POST  'http://127.0.0.1:8085/start/rtsp%3A%2F%2F127.0.0.1%3A8554%2Ftest1.ts'  # start  rtsp://127.0.0.1:8554/test1.ts
start stream whose id is 2% 
$ curl 'http://127.0.0.1:8085/list'   # list all stream
[{"id":1,"url":"rtsp://10.122.101.175:8554/test1.ts"},{"id":0,"url":"rtsp://10.122.101.175:8554/test1.ts"}]%

Путь содержит %2F и %3A, которые являются escape-символами URL.

Клиент Python

Код клиента для изображений:

import requests
import cv2

def test():
    ip = 'localhost'
    port = '8084'
    url = 'http://{}:{}/analyze/any_content'.format(ip, port)
    img = cv2.imread("./test.jpg")
    _, data = cv2.imencode(".jpg", img)
    data = data.tobytes()

    headers = {'Content-Length': '%d' % len(data), 'Content-Type': 'image/*'}
    res = requests.post(url, data=data, headers=headers)
    print(res.content)

if __name__ == "__main__":
    test()

Видео клиентский код:


import requests
import urllib


def test():
    ip = 'localhost'
    port = '8085'
    video_path = 'rtsp://127.0.0.1:8554/vehicle.ts'
    video_path = urllib.parse.quote(video_path, safe='')
    url = 'http://{}:{}/start/{}'.format(ip, port, video_path)

    res = requests.post(url)
    ret =
``` ```
res.content
    print(ret)

if __name__ == "__main__":
    test()

Другие языки

RWeb/Swagger предоставляет HTTP RESTful API-файлы с описанием, например, по адресу http://127.0.0.1:8084/openapi.json. Swagger codegen может использоваться для генерации кода вызовов на таких языках, как Java или Go, на основе файлов с описанием. Дополнительные руководства доступны по ссылке swagger codegen tutorial.

Опубликовать ( 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