YOLOv5 выпускает версию v6.0, посмотрите, что было обновлено?

глубокое обучение Python

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.

окрестности

  • ubuntu 18.04 64bit
  • GTX 1070Ti
  • anaconda with python 3.8
  • pytorch 1.7
  • cuda 10.1

предисловие

Буквально вчера (13 октября 2021 г.)yolov5опубликованоV6.0версия, эта новая версия находится вV5.0На основе интеграции многих новых функций, а также тонкой настройки сетевой структуры, новый меньший (Nano) модельP5(YOLOv5n) иP6(YOLOv5n6).Nanoмодель держитyolov5sглубина модели (depth),ширина(width) уменьшается с 0,5 до 0,25, после этой операции суммарные параметры уменьшаются75%,от7.5Mсузился до1.9M, в этом случае он очень подходит для мобильных терминалов илиCPUсреда г.

По показателям эффективности,V6.0Также улучшено, см. рисунок ниже

yolov5 v6.0

новые возможности

Организовано нижеV6.0Новые ключевые функции

  • интегрированныйRoboflow

    roboflowКак мы упоминали ранее, он предоставляет множество очень полезных наборов данных вv6.0Вы можете напрямую использовать их наборы данных, см.GitHub.com/ultra Еще одна ICS…, очень удобно

  • служба поддержкиtensorflowиkerasэкспорт модели

    использоватьpython export.py --include saved_model pb tflite tfjsэто может быть сделаноtensorFlow,keras,tfliteиtf.jsэкспорт модели

  • Также поддерживаетOpenCV DNNиONNX Runtime

    экспортируетсяonnxТакже поддерживаетopencv dnnиonnx runtime

    python export --weights yolov5s.pt --include onnx --opset 12 --dynamic
    

    Вы также можете использовать указанныйonnx,python detect.py --weights yolov5s.onnx --dnn

  • Структура модели

    • использоватьConv(k=6, s=2, p=2)заменятьFocusслой, в основном для облегчения экспорта модели
    • использоватьSPPFзаменятьSPPЭтаж
    • уменьшатьP3Магистральный уровеньC3
    • будетSPPFза багажником
    • напоследокC3Повторно ввести ярлыки на магистральном уровне
    • обновить гиперпараметры
  • выросFlask REST API

    при условииweb apiподдержка, удаленное тестирование очень удобно, это делают обычные открытые платформы

фляга API практика

скачатьV6.0исходный код

git clone -b v6.0 https://github.com/ultralytics/yolov5.git
cd yolov5/utils/flask-rest-api

Установите необходимые зависимости и запустите службу

pip install flask

# 通过参数port可以指定特定端口,如--port 8080
python restapi.py

Скрипт будет загружен в процессе запускаyolov5исходный код иyolov5s.ptфайл модели, хранящийся в~/.cache/torch/hubВниз

(base) xugaoxiang@1070Ti:~/workshop/yolov5/data/images$ ls ~/.cache/torch/hub/ultralytics_yolov5_master/
CONTRIBUTING.md  detect.py   export.py   LICENSE  __pycache__  requirements.txt  tutorial.ipynb  val.py
data             Dockerfile  hubconf.py  models   README.md    train.py          utils           yolov5s.pt

Это действие загрузки по умолчанию происходит каждый раз при выполнении скрипта. может быть изменен с помощьюrestapi.pyиспользовать существующую версию

# 将force_reload,由原来的True改为False
model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=False)

После запуска сервиса подходим к клиенту и используемcurlкоманда для проверки

curl -X POST -F image=@zidane.jpg 'http://192.168.1.140:5000/v1/object-detection/yolov5s'

После успеха вы можете получить результат, возвращаемый интерфейсом

(base) xugaoxiang@1070Ti:~/workshop/yolov5/data/images$ curl -X POST -F image=@zidane.jpg 'http://192.168.1.140:5000/v1/object-detection/yolov5s'
[{"xmin":752.0,"ymin":46.0,"xmax":1148.0,"ymax":716.0,"confidence":0.875,"class":0,"name":"person"},{"xmin":100.0,"ymin":201.5,"xmax":1002.0,"ymax":718.5,"confidence":0.5795898438,"class":0,"name":"person"},{"xmin":438.25,"ymin":422.0,"xmax":509.75,"ymax":720.0,"confidence":0.5219726562,"class":27,"name":"tie"}]

или

использоватьpostmanДля проверки с помощьюPOSTпросить,urlдаhttp://192.168.1.140

yolov5 v6.0

Если вы хотите использоватьpythonСделать запрос, примеры также приведены в проектеexample_request.py, с использованиемrequestмодуль

Связанное чтение