В этой статье описывается, как использовать Megflow Quickstart для создания приложений в формате вопросов и ответов.
На данный момент поддерживаются 4 метода использования:
Предположим, что модель использует формат 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 задаст несколько вопросов и предоставит значения по умолчанию:
Обычно будет отображаться сообщение об успешном создании проекта, и для запуска необходимо прочитать файл ${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:
Этот процесс также можно использовать для пользовательских репозиториев и веток, 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();
...
Откройте соответствующий порт в браузере (например, http://127.0.0.1:8080/docs), выберите изображение и нажмите «попробовать».
Откройте порт службы (например, http://127.0.0.1:8080/docs).
$ 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.
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 )