Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
окрестности
- 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Также улучшено, см. рисунок ниже
новые возможности
Организовано нижеV6.0Новые ключевые функции
-
интегрированный
RoboflowroboflowКак мы упоминали ранее, он предоставляет множество очень полезных наборов данных в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 runtimepython 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
Если вы хотите использоватьpythonСделать запрос, примеры также приведены в проектеexample_request.py, с использованиемrequestмодуль