Данный репозиторий позволяет выполнять инференс моделей детектирования изображений Yolov4 как с помощью исходника, так и с помощью средств PyTorch.
Для моделей, обученных с помощью других исходников, может быть другой инференс.
Инференс моделей yolov4 в формате *.pt (pytorch) содержится в файле detector_inference_yolov4.ipynb. Отдельный скрипт не имеет смысла писать, так как необходим исходный код для построения модели.
Скрипт run_onnx.py позволяет делать инференс моделей yolov4 в формате *.onnx без исходного репозитория Yolov4. Содержит аргументы командной строки.
Ноутбук detector_inference_yolov4.ipynb содержит также дополнительный код для инференса моделей и сохранения моделей *.pt в формат *.onnx с помощью исходного репозитория Yolov4.
Репозиторий протестирован на 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 yolov4 python=3.8
- conda activate yolov4
Установка 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:
- Перейдите в каталог, в который хотите склонировать репозиторий Yolov4.
- Выполните команду: git clone https://github.com/WongKinYiu/PyTorch_YOLOv4.git
- Перейдите в скачанный репозиторий: cd PyTorch_YOLOv4
- Доустановите пакеты: pip install -r requirements.txt
Необходимо изображение, и модель детектирования yolov4 в формате *.pt или *.onnx.
Активируйте рабочую среду: conda activate yolov4
Откройте ноутбук detector_inference_yolov4.ipynb. В нем содержится весь пайплайн инференса моделей *.pt из репозитория Yolov4
В командной строке Anaconda:
-
Активируйте рабочую среду: conda activate yolov4
-
Перейдите в текущий репозиторий: cd yolov4_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 - размер входного изображения для модели, по умолчанию: [320, 320]
--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
-
После инференса на экране появляются предсказания модели.