YOLOv12: инструмент с открытым исходным кодом для обнаружения целей на изображениях и видео в реальном времени

Общее введение

YOLOv12 - это проект с открытым исходным кодом, разработанный пользователем GitHub sunsmarterjie, ориентированный на технологию обнаружения целей в реальном времени. Проект основан на серии рамок YOLO (You Only Look Once), внедрение механизма внимания для оптимизации производительности традиционных сверточных нейронных сетей (CNN), не только в обнаружении повышенной точности, но и поддерживает высокую скорость вывода. YOLOv12 для различных сценариев, таких как системы наблюдения, автоматизированное вождение и анализ изображений, и т.д., чтобы обеспечить Nano, Small, Medium, Large и Extra-Large для удовлетворения различных вычислительных мощностей и требований приложений. Проект лицензирован под GNU AGPL-3.0, что позволяет пользователям бесплатно скачивать код и адаптировать его под свои нужды. В команду разработчиков входят исследователи из Университета Буффало и Китайской академии наук, а техническая документация и руководство по установке подробно описаны, чтобы пользователи могли быстро приступить к работе.

YOLOv12:实时图像和视频目标检测的开源工具

 

Список функций

  • Эффективное обнаружение целей в режиме реального времениНа графическом процессоре T4 YOLOv12-N достигает 40,6% mAP с задержкой вывода всего 1,64 мс.
  • Выбор нескольких моделейПять моделей (от Nano до Extra-Large) доступны для широкого спектра аппаратных сред, от маломощных устройств до высокопроизводительных серверов.
  • Оптимизация механизма внимания: Внедрение модулей Area Attention и R-ELAN для повышения точности обнаружения и снижения сложности вычислений.
  • Экспорт моделей: Поддержка экспорта обучающих моделей в формат ONNX или TensorRT для легкого развертывания в производственных средах.
  • Обучение по индивидуальному набору данных: Пользователи могут обучать модели на собственных наборах данных, подходящих для решения конкретных задач обнаружения целей.
  • Поддержка визуализации:: Интеграция инструментов наблюдения для удобного представления результатов тестирования и оценки производительности.

 

Использование помощи

Процесс установки

В настоящее время YOLOv12 не имеет отдельного пакета PyPI и должен быть установлен из источника на GitHub. Ниже приведены подробные шаги по установке для Linux (пользователям Windows или Mac потребуется изменить конфигурацию среды):

  1. Подготовка среды
    • Убедитесь, что в вашей системе установлен Python 3.11 или более поздняя версия.
    • Установите Git:sudo apt install git(на примере Ubuntu).
    • Дополнительно: установите драйвер NVIDIA GPU и CUDA (рекомендуется версия 11.8 или выше), чтобы ускорить обучение и выводы.
  2. склад клонов
    Загрузите репозиторий YOLOv12 локально, выполнив следующую команду в терминале:

    git clone https://github.com/sunsmarterjie/yolov12.git
    cd yolov12
  1. Создание виртуальной среды
    Используйте Conda или venv, чтобы создать отдельное окружение Python и избежать конфликтов зависимостей:

    conda create -n yolov12 python=3.11
    conda activate yolov12
    
  2. Установка зависимостей
    Установите необходимые зависимости для вашего проекта, включая PyTorch, flash-attn, supervision и т.д:

    wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
    pip install flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
    pip install -r requirements.txt
    pip install -e .
    
  3. Проверка установки
    Выполните следующую команду, чтобы проверить, правильно ли настроена среда:

    python -c "from ultralytics import YOLO; print('YOLOv12 installed successfully')"
    

Использование

Обучение пользовательских моделей

YOLOv12 поддерживает обучение на собственных наборах данных, подходящих для задач обнаружения целей на конкретных сценах. Операции выполняются следующим образом:

  1. Подготовка набора данных
    • Данные должны быть в формате YOLO (содержать папки с изображениями и метками, метки в виде файлов .txt, с указанием категорий целей и координат границ).
    • создать data.yaml файл, указав путь к обучающему набору, проверяющему набору и название категории. Пример:
      train: ./dataset/train/images
      val: ./dataset/val/images
      nc: 2  # 类别数量
      names: ['cat', 'dog']  # 类别名称
      
  2. Загрузите модель и обучите ее
    Используйте сценарий Python, чтобы загрузить предварительно обученную модель и начать обучение:

    from ultralytics import YOLO
    model = YOLO('yolov12s.pt')  # 可选 n/s/m/l/x 模型
    results = model.train(data='path/to/data.yaml', epochs=250, imgsz=640)
    
    • epochs: Количество тренировочных раундов, для достижения лучших результатов рекомендуется более 250.
    • imgsz: Введите размер изображения, по умолчанию 640x640.
  3. Посмотреть результаты тренировок
    После завершения обучения результаты сохраняются в runs/detect/train папку, включая веса моделей (best.pt), матрицы запутывания и т. д. Выполните следующий код, чтобы увидеть матрицу запутывания:

    from IPython.display import Image
    Image(filename='runs/detect/train/confusion_matrix.png', width=600)
    

Рассуждение и тестирование

Обученная модель может быть использована для обнаружения целей на изображениях или видео:

  1. Обнаружение одного изображения
    model = YOLO('path/to/best.pt')
    results = model('test.jpg')
    results.show()  # 显示检测结果
    results.save()  # 保存结果到 runs/detect/predict
    
  2. Обнаружение видео
    Используйте командную строку для обработки видеофайлов:

    python app.py --source 'video.mp4' --model 'path/to/best.pt'
    
  3. Оценка производительности
    Валидационный набор оценивается для получения таких метрик, как mAP:

    results = model.val(data='path/to/data.yaml')
    print(results.box.map)  # 输出 mAP@0.5:0.95
    

Экспорт моделей

Экспортируйте модель в формат, пригодный для использования в производственной среде:

model.export(format='onnx', half=True)  # 导出为 ONNX,支持 FP16 加速

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

Функциональное управление

  • Оптимизация механизма внимания
    Модуль "Внимание к области" в YOLOv12 не требует ручной настройки, а автоматически оптимизирует извлечение признаков в процессе обучения и вывода для улучшения обнаружения мелких целей. Пользователям достаточно выбрать подходящий размер модели (например, Nano для маломощных устройств), чтобы насладиться повышенной точностью этой функции.
  • обнаружение в реальном времени
    Выводы выполняются чрезвычайно быстро при работе на графических процессорах с поддержкой CUDA. Например, при запуске модели YOLOv12-N на GPU T4 обнаружение одного изображения происходит всего за 1,64 мс, а пользователи могут визуализировать кадр обнаружения и уровень достоверности в режиме реального времени с помощью инструмента наблюдения:

    results = model('image.jpg')
    results.plot()  # 显示带标注的图像
    
  • Многосюжетная адаптация
    Настраивая размер модели и обучающие данные, YOLOv12 можно легко адаптировать к различным задачам. Например, обнаружение пешеходов в системе наблюдения или распознавание транспортных средств и дорожных знаков при автономном вождении.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...