Данный репозиторий позволяет выполнять инференс моделей детектирования изображений Yolov5 как с помощью исходного репозитория, так и с помощью средств PyTorch.
Для моделей, обученных с помощью других репозиториев, может быть другой инференс.
Не всегда удобно тащить за собой целый репозиторий, поэтому удобно делать инференс, используя небольшие фрагменты кода.
Скрипт run.py позволяет делать инференс моделей yolov5 в формате *.pt (pytorch). Не содержит аргументов командной строки.
Скрипт run_onnx.py позволяет делать инференс моделей yolov5 в формате *.onnx. Содержит аргументы командной строки.
Ноутбук detector_inference_yolov5.ipynb содержит выше перечисленные скрипты, а также дополнительный код для инференса тех же моделей и сохранения моделей *.pt в формат *.onnx с помощью исходного репозитория Yolov5.
Вместо * необходимо подставить свои значения.
Репозиторий протестирован на Windows 10.
Для поддержки GPU а компьютере должна быть установлена Cuda Toolkit 10.х или 11.х (протестировано на версиях 10.1, 11.4) и CudNN. Pytorch устанавливает Cuda Toolkit отдельно, при его установке можно выбрать версию cuda. Поэтому скорее всего, версия Cuda Toolkit, установленная на компьютере, не имеет значения.
Версия Pytorch должна быть >= 1.8.1.
Для теста использовались видеокарты Nvidia GeForce GTX 1060, GTX 1660 Ti.
- Установите на компьютер менеджер виртуальных сред Anaconda.
- Откройте командную строку Anaconda, создайте новую среду и установите необходимые библиотеки:
- conda create -n yolov5 python=3.8
- conda activate yolov5
Установка pytorch с Cuda Toolkit 10.1: - pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/cu101/torch_stable.html
- pip install onnxruntime pandas requests pyyaml tqdm matplotlib seaborn
Остальные библиотеки установятся при первом запуске инференса.
В командной строке Anaconda:
- Перейдите в каталог, в который хотите склонировать репозиторий Yolov5.
- Выполните команду: git clone https://github.com/ultralytics/yolov5
- Перейдите в скачанный репозиторий: cd yolov5
- Доустановите пакеты: pip install -r requirements.txt
Необходимо изображение, и модель детектирования yolov5 в формате *.pt.
В командной строке Anaconda:
- Активируйте рабочую среду: conda activate yolov5
- Перейдите в текущий репозиторий: cd yolov5_inference
- Запустите в командной строке скрипт: python run.py
Программа предложит ввести путь к изображению, на котором необходимо выполнить инференс, а также - путь к модели. Эти данные можно не вводить, а просто нажать Enter, тогда будут выбраны значения по умолчанию для инференса модели детектирования коррозии:
*.png
*.pt
Пути могут быть указаны как с помощью прямых, так и обратных слешей. - После инференса на экране появляются предсказания модели.
В командной строке Anaconda:
-
Активируйте рабочую среду: conda activate yolov5
-
Перейдите в текущий репозиторий: cd yolov5_inference
-
Запустите в командной строке скрипт: python run_onnx.py с аргументами командной строки. Обязательных аргументов нет.
Аргументы, которые можно указать:
--img_path - путь к файлу изображения, по умолчанию: "*.png"
--weights - путь к модели, по умолчанию: '*.onnx'
--classes_file - путь к списку классов, по умолчанию: 'names.names'
--score_thr - уровень достоверности идентификации рамок, по умолчанию 0.5
--nms_thr - граница отсечения рамок по площади перекрытия с разметкой (IoU), по умолчанию 0.45
--conf_thr - уровень достоверности идентификации классов, по умолчанию 0.45
--img_size - размер входного изображения для модели, по умолчанию: [640, 640]
--folder_to_save - имя папки, в которую нужно сохранить картинку результаты детектирования, по умолчанию: "*"
--name - имя картинки с результатом детектирования, по умолчанию: "*.png"
--save_txt - параметр, который определяет, нужно ли сохранять координаты рамок в текстовый файл. Это удобно, когда много детекций. По умолчанию текстовый файл не будет сохраняться. Если аргумент выбран, то текстовый файл сохранится в ту же папку, что и изображение, с тем же именем (по умолчанию: *.txt). Результаты в файл записываются в следующем виде:
left top width height conf classПример команды: python run_onnx.py --img_size 320 --nms_thr 0.5 --conf_thr 0.5 --save_txt
-
После инференса на экране появляются предсказания модели.