Giter VIP home page Giter VIP logo

yolov5_inference's Introduction

Инференс модели детектирования

Данный репозиторий позволяет выполнять инференс моделей детектирования изображений 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.

Установка

Установка для инференса без исходного репозитория:

  1. Установите на компьютер менеджер виртуальных сред Anaconda.
  2. Откройте командную строку 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

Остальные библиотеки установятся при первом запуске инференса.

Дополнительная установка для инференса из исходного репозитория Yolov5:

В командной строке Anaconda:

  • Перейдите в каталог, в который хотите склонировать репозиторий Yolov5.
  • Выполните команду: git clone https://github.com/ultralytics/yolov5
  • Перейдите в скачанный репозиторий: cd yolov5
  • Доустановите пакеты: pip install -r requirements.txt

Входные данные

Необходимо изображение, и модель детектирования yolov5 в формате *.pt.

Инференс моделей *.pt

В командной строке Anaconda:

  • Активируйте рабочую среду: conda activate yolov5
  • Перейдите в текущий репозиторий: cd yolov5_inference
  • Запустите в командной строке скрипт: python run.py Программа предложит ввести путь к изображению, на котором необходимо выполнить инференс, а также - путь к модели. Эти данные можно не вводить, а просто нажать Enter, тогда будут выбраны значения по умолчанию для инференса модели детектирования коррозии:
    *.png
    *.pt
    Пути могут быть указаны как с помощью прямых, так и обратных слешей.
  • После инференса на экране появляются предсказания модели.

Инференс моделей *.onnx

В командной строке 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

  • После инференса на экране появляются предсказания модели.

yolov5_inference's People

Contributors

uralskayamariya avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.