Платформа обнаружения объектов Darknet и YOLO
Статьи
Общая информация
Даркнет-версия
MSCOCO Предварительно обученные веса
Здание
Гугл Колаб
Метод CMake в Linux
Метод Windows CMake
Использование даркнета
интерфейс командной строки
Обучение
Другие инструменты и ссылки
Дорожная карта
Краткосрочные цели
Среднесрочные цели
Долгосрочные цели
Darknet — это платформа нейронных сетей с открытым исходным кодом, написанная на C, C++ и CUDA.
YOLO (You Only Look Once) — это современная система обнаружения объектов в режиме реального времени, работающая в рамках Darknet.
Узнайте, как Hank.ai помогает сообществу Darknet/YOLO
Анонсируем Darknet V3 «Джаз»
Посетите веб-сайт Darknet/YOLO.
Пожалуйста, прочтите FAQ по Darknet/YOLO.
Присоединяйтесь к дискорд-серверу Darknet/YOLO
Бумага YOLOv7
Бумага Scaled-YOLOv4
Бумага YOLOv4
Бумага YOLOv3
Платформа Darknet/YOLO по-прежнему работает быстрее и точнее , чем другие платформы и версии YOLO.
Этот фреймворк полностью бесплатен и имеет открытый исходный код . Вы можете включить Darknet/YOLO в существующие проекты и продукты, в том числе коммерческие, без лицензии и оплаты.
Darknet V3 («Джаз»), выпущенный в октябре 2024 года, может точно воспроизводить видео набора данных LEGO со скоростью до 1000 кадров в секунду при использовании графического процессора NVIDIA RTX 3090, что означает, что каждый видеокадр считывается, изменяется размер и обрабатывается Darknet/YOLO за 1 миллисекунду или меньше.
Присоединяйтесь к серверу Discord Darknet/YOLO, если вам нужна помощь или вы хотите обсудить Darknet/YOLO: https://discord.gg/zSq8rtW
Версия Darknet/YOLO для ЦП может работать на простых устройствах, таких как Raspberry Pi, облачных серверах и серверах Colab, настольных компьютерах, ноутбуках и высокопроизводительных учебных установках. Для версии Darknet/YOLO с графическим процессором требуется графический процессор NVIDIA с поддержкой CUDA.
Известно, что Darknet/YOLO работает на Linux, Windows и Mac. См. инструкции по сборке ниже.
Оригинальный инструмент Darknet, написанный Джозефом Редмоном в 2013–2017 годах, не имел номера версии. Мы считаем эту версию 0.x.
Следующий популярный репозиторий Darknet, который поддерживал Алексей Бочковский в период с 2017 по 2021 год, также не имел номера версии. Мы рассматриваем эту версию 1.x.
Репозиторий Darknet, спонсируемый Hank.ai и поддерживаемый Стефаном Шареттом с 2023 года, был первым репозиторием с командой version
. С 2023 до конца 2024 года возвращалась версия 2.x «ДУБ».
Целью было попытаться как можно меньше сломать существующую функциональность, одновременно знакомясь с кодовой базой.
Переписали этапы сборки, чтобы у нас был один унифицированный способ сборки с использованием CMake как в Windows, так и в Linux.
Преобразовал кодовую базу для использования компилятора C++.
Улучшен файлchart.png во время тренировки.
Исправления ошибок и оптимизация, связанная с производительностью, в основном связанная с сокращением времени, необходимого для обучения сети.
Последняя ветвь этой кодовой базы — версия 2.1 в ветке v2
.
Следующий этап разработки начался в середине 2024 года и был выпущен в октябре 2024 года. Команда version
теперь возвращает 3.x «JAZZ».
Вы всегда можете проверить предыдущую ветку v2
, если вам нужно запустить одну из этих команд. Сообщите нам, чтобы мы могли изучить вопрос о добавлении недостающих команд.
Удалены многие старые и неподдерживаемые команды.
Множество оптимизаций производительности, как при обучении, так и во время вывода.
Legacy C API был изменен; приложения, использующие исходный API Darknet, потребуют незначительных изменений: https://darknetcv.ai/api/api.html.
Новый API Darknet V3 C и C++: https://darknetcv.ai/api/api.html.
Новые приложения и примеры кода в src-examples
: https://darknetcv.ai/api/files.html.
Несколько популярных версий YOLO для удобства были предварительно обучены на наборе данных MSCOCO. Этот набор данных содержит 80 классов, которые можно увидеть в текстовом файле cfg/coco.names
.
Для тестирования Darknet/YOLO доступно несколько других, более простых наборов данных и предварительно обученных весов, например LEGO Gears и Rolodex. Подробности смотрите в FAQ по Darknet/YOLO.
Предварительно обученные веса MSCOCO можно загрузить из нескольких разных мест, а также из этого репозитория:
YOLov2, ноябрь 2016 г.
YOLOv2-крошечный
YOLOv2-полный
YOLOv3, май 2018 г.
YOLOv3-крошечный
YOLOv3-полный
YOLOv4, май 2020 г.
YOLOv4-крошечный
YOLOv4-полный
YOLOv7, август 2022 г.
YOLOv7-крошечный
YOLOv7-полный
Предварительно обученные веса MSCOCO предоставляются только для демонстрационных целей. Соответствующие файлы .cfg
и .names
для MSCOCO находятся в каталоге cfg. Примеры команд:
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet_02_display_annotated_images coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg darknet_03_display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
Обратите внимание: ожидается, что люди будут обучать свои собственные сети. MSCOCO обычно используется для подтверждения того, что все работает правильно.
Различные методы сборки, доступные в прошлом (до 2023 г.), были объединены в одно унифицированное решение. Для Darknet требуется C++17 или новее, OpenCV, и он использует CMake для создания необходимых файлов проекта.
Вам не нужно знать C++ для сборки, установки и запуска Darknet/YOLO, точно так же, как вам не нужно быть механиком, чтобы водить машину.
Гугл Колаб
Линукс
Окна
Будьте осторожны, если вы следуете старым руководствам с более сложными шагами сборки или шагами сборки, которые не соответствуют тому, что указано в этом файле ознакомительных сведений. Новые этапы сборки, описанные ниже, начались в августе 2023 года.
Разработчикам программного обеспечения рекомендуется посетить https://darknetcv.ai/, чтобы получить информацию о внутреннем устройстве системы обнаружения объектов Darknet/YOLO.
Инструкции Google Colab такие же, как инструкции Linux. Доступно несколько блокнотов Jupyter, показывающих, как выполнять определенные задачи, например обучение новой сети.
Посмотрите блокноты в подкаталоге colab
и/или следуйте инструкциям Linux ниже.
Необязательно: если у вас современный графический процессор NVIDIA, на этом этапе вы можете установить либо CUDA, либо CUDA+cuDNN. Если установлен, Darknet будет использовать ваш графический процессор для ускорения обработки изображений (и видео).
Вам необходимо удалить файл CMakeCache.txt
из каталога build
Darknet, чтобы заставить CMake повторно найти все необходимые файлы.
Не забудьте перестроить Даркнет.
Даркнет может работать и без него, но если вы хотите обучить собственную сеть, потребуется либо CUDA, либо CUDA+cuDNN.
Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
Посетите https://developer.nvidia.com/rdp/cudnn-download или https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview, чтобы загрузить. и установите cuDNN.
После установки CUDA убедитесь, что вы можете запускать nvcc
и nvidia-smi
. Возможно, вам придется изменить переменную PATH
.
Если вы установите CUDA или CUDA+cuDNN позже или обновитесь до более новой версии программного обеспечения NVIDIA:
Эти инструкции предполагают (но не требуют!) систему под управлением Ubuntu 22.04. При необходимости адаптируйте его, если вы используете другой дистрибутив.
sudo apt-get install build-essential git libopencv-dev cmake mkdir ~/srccd ~/src git клон https://github.com/hank-ai/darknetcd даркнет сборка mkdir buildcd cmake -DCMAKE_BUILD_TYPE=Выпустить .. сделать пакет -j4 sudo dpkg -i darknet-<INSERT-VERSION-YOU-BUILT-HERE>.deb
Если вы используете более старую версию CMake , вам необходимо обновить CMake, прежде чем вы сможете запустить указанную выше команду cmake
. Обновление CMake в Ubuntu можно выполнить с помощью следующих команд:
sudo apt-get очистить cmake sudo snap установить cmake --classic
Если вы используете bash
в качестве командной оболочки, вам нужно будет перезапустить оболочку на этом этапе. Если вы используете fish
, она должна немедленно выбрать новый путь.
Продвинутые пользователи:
Если вы хотите создать установочный файл RPM вместо файла DEB, см. соответствующие строки в
CM_package.cmake
. Перед запускомmake -j4 package
вам необходимо отредактировать эти две строки:
SET (CPACK_GENERATOR "DEB")# SET (CPACK_GENERATOR "RPM")
Для таких дистрибутивов, как Centos и OpenSUSE, вам необходимо изменить эти две строки в
CM_package.cmake
на:
# SET (CPACK_GENERATOR "DEB")SET (CPACK_GENERATOR "RPM")
Чтобы установить установочный пакет после завершения сборки, используйте обычный менеджер пакетов вашего дистрибутива. Например, в системах на базе Debian, таких как Ubuntu:
sudo dpkg -i darknet-2.0.1-Linux.deb
При установке пакета .deb
будут скопированы следующие файлы:
/usr/bin/darknet
— это обычный исполняемый файл Darknet. Запустите darknet version
из CLI, чтобы убедиться, что она установлена правильно.
/usr/include/darknet.h
— это API Darknet для разработчиков C, C++ и Python.
/usr/include/darknet_version.h
содержит информацию о версии для разработчиков.
/usr/lib/libdarknet.so
— это библиотека, с которой можно ссылаться разработчикам C, C++ и Python.
/opt/darknet/cfg/...
— здесь хранятся все шаблоны .cfg
.
Теперь все готово! Darknet встроен и установлен в /usr/bin/
. Запустите это, чтобы проверить: darknet version
.
Если у вас нет
/usr/bin/darknet
, это означает, что вы его не устанавливали, а только собрали! Обязательно установите файл.deb
или.rpm
как описано выше.
Эти инструкции предполагают новую установку Windows 11 22H2.
Откройте обычное окно командной строки cmd.exe
и выполните следующие команды:
winget установить Git.Git winget установить Kitware.CMake winget установить nsis.nsis winget install Microsoft.VisualStudio.2022.Community
На этом этапе нам нужно изменить установку Visual Studio, чтобы включить поддержку приложений C++:
щелкните меню «Пуск» Windows и запустите «Установщик Visual Studio».
нажмите Modify
выберите Desktop Development With C++
нажмите Modify
в правом нижнем углу, а затем нажмите Yes
. После того, как все будет загружено и установлено, снова нажмите меню «Пуск» Windows и выберите Developer Command Prompt for VS 2022
. Не используйте PowerShell для этих действий, у вас возникнут проблемы!
Продвинутые пользователи:
Вместо запуска
Developer Command Prompt
вы можете использовать обычную командную строку или подключиться к устройству по протоколу SSH и вручную запустить"Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat"
.
Многие люди совершают одну и ту же ошибку и думают, что могут пропустить предыдущий шаг. Пожалуйста, не пропускайте этот шаг! Не используйте обычную командную строку или PowerShell! Перечитайте шаги выше, чтобы узнать, какой тип окна вы должны использовать. Каждый раз, когда вы хотите использовать Visual Studio из командной строки для компиляции кода C++, вы должны использовать командную строку разработчика Visual Studio, как описано выше.
После запуска командной строки разработчика, как описано выше, выполните следующие команды для установки Microsoft VCPKG, который затем будет использоваться для сборки OpenCV:
компакт-диск c:mkdir c:srccd c:src git-клон https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe интегрировать установку .vcpkg.exe интегрирует powershell.vcpkg.exe install opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
Будьте терпеливы на этом последнем этапе, так как его выполнение может занять много времени. Нужно скачать и собрать много вещей.
Продвинутые пользователи:
Обратите внимание, что существует множество других дополнительных модулей, которые вы можете добавить при сборке OpenCV. Запустите
.vcpkg.exe search opencv
чтобы просмотреть полный список.
Необязательно: если у вас современный графический процессор NVIDIA, на этом этапе вы можете установить либо CUDA, либо CUDA+cuDNN. Если установлен, Darknet будет использовать ваш графический процессор для ускорения обработки изображений (и видео).
Вам необходимо удалить файл CMakeCache.txt
из каталога build
Darknet, чтобы заставить CMake повторно найти все необходимые файлы.
Не забудьте перестроить Даркнет.
Даркнет может работать и без него, но если вы хотите обучить собственную сеть, потребуется либо CUDA, либо CUDA+cuDNN.
Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
Посетите https://developer.nvidia.com/rdp/cudnn-download или https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows, чтобы загрузить и установить cuDNN.
После установки CUDA убедитесь, что вы можете запускать nvcc.exe
и nvidia-smi.exe
. Возможно, вам придется изменить переменную PATH
.
После загрузки cuDNN разархивируйте и скопируйте каталоги bin, include и lib в C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/
. Возможно, вам придется перезаписать некоторые файлы.
Если вы установите CUDA или CUDA+cuDNN позже или обновитесь до более новой версии программного обеспечения NVIDIA:
CUDA должен быть установлен после Visual Studio. Если вы обновляете Visual Studio, не забудьте переустановить CUDA.
После успешного завершения всех предыдущих шагов вам необходимо клонировать Darknet и собрать его. На этом этапе нам также нужно сообщить CMake, где находится vcpkg, чтобы он мог найти OpenCV и другие зависимости:
компакт-диск c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKE_BUILD_TYPE=Выпуск -DCMAKE_TOOLCHAIN_FILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake .. msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
Если вы получаете сообщение об отсутствующих DLL-файлах CUDA или cuDNN, таких как cublas64_12.dll
, вручную скопируйте файлы CUDA .dll
в тот же выходной каталог, что и Darknet.exe
. Например:
скопируйте "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
(Это пример! Убедитесь, какую версию вы используете, и запустите команду, подходящую для того, что вы установили.)
После копирования файлов повторно запустите последнюю команду msbuild.exe
, чтобы сгенерировать установочный пакет NSIS:
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
Продвинутые пользователи:
Обратите внимание, что выходные данные команды
cmake
— это обычный файл решения Visual StudioDarknet.sln
. Если вы разработчик программного обеспечения, который регулярно использует графический интерфейс Visual Studio вместоmsbuild.exe
для создания проектов, вы можете игнорировать командную строку и загрузить проект Darknet в Visual Studio.
Теперь у вас должен быть файл, который вы можете запустить: C:srcDarknetbuildsrc-cliReleasedarknet.exe
. Запустите это для проверки: C:srcDarknetbuildsrc-cliReleasedarknet.exe --version
.
Чтобы правильно установить Darknet, библиотеки, включаемые файлы и необходимые библиотеки DLL, запустите мастер установки NSIS , созданный на последнем шаге. См. файл darknet-<INSERT-VERSION-YOU-BUILT-HERE>-win64.exe
в каталоге build
. Например:
darknet-<ВСТАВКА-ВЕРСИЯ-ВЫ-СОЗДАНА-ЗДЕСЬ>-win64.exe
Установка установочного пакета NSIS позволит:
Создайте каталог с именем Darknet
, например C:Program FilesDarknet
.
Установите приложение CLI, darknet.exe
и другие примеры приложений.
Установите необходимые сторонние файлы .dll
, например файлы OpenCV.
Установите необходимые файлы Darknet .dll
, .lib
и .h
чтобы использовать darknet.dll
из другого приложения.
Установите файлы шаблона .cfg
.
Теперь все готово! После завершения работы мастера установки Darknet будет установлен в C:Program FilesDarknet
. Запустите это, чтобы проверить: C:Program FilesDarknetbindarknet.exe version
.
Если у вас нет
C:/Program Files/darknet/bin/darknet.exe
, это означает, что вы его не устанавливали, а только собрали! Обязательно пройдите все панели мастера установки NSIS на предыдущем шаге.
Ниже приведен не полный список всех команд, поддерживаемых Darknet.
В дополнение к интерфейсу командной строки Darknet также обратите внимание на интерфейс командной строки проекта DarkHelp, который предоставляет альтернативный интерфейс командной строки Darknet/YOLO. Интерфейс командной строки DarkHelp также имеет несколько расширенных функций, которые недоступны непосредственно в Darknet. Вы можете использовать интерфейс командной строки Darknet и интерфейс командной строки DarkHelp вместе, они не являются взаимоисключающими.
Для большинства команд, показанных ниже, вам понадобится файл .weights
с соответствующими файлами .names
и .cfg
. Вы можете либо обучить свою собственную сеть (настоятельно рекомендуется!), либо загрузить нейронную сеть, которую кто-то уже обучил и бесплатно разместил в Интернете. Примеры предварительно обученных наборов данных включают в себя:
LEGO Gears (поиск объектов по изображению)
Rolodex (поиск текста на изображении)
MSCOCO (стандартное обнаружение объектов класса 80)
Команды для запуска включают в себя:
Перечислите некоторые возможные команды и параметры для запуска:
darknet help
Проверьте версию:
darknet version
Прогнозирование с помощью изображения:
V2: darknet detector test cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet_02_display_annotated_images cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
Выходные координаты:
V2: darknet detector test animals.data animals.cfg animals_best.weights -ext_output dog.jpg
V3: darknet_01_inference_images animals dog.jpg
DarkHelp: DarkHelp --json animals.cfg animals.names animals_best.weights dog.jpg
Работа с видео:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -ext_output test.mp4
V3: darknet_03_display_videos animals.cfg test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
Чтение с веб-камеры:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -c 0
V3: darknet_08_display_webcam animals
Сохраните результаты на видео:
V2: darknet detector demo animals.data animals.cfg animals_best.weights test.mp4 -out_filename res.avi
V3: darknet_05_process_videos_multithreaded animals.cfg animals.names animals_best.weights test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
JSON:
V2: darknet detector demo animals.data animals.cfg animals_best.weights test50.mp4 -json_port 8070 -mjpeg_port 8090 -ext_output
V3: darknet_06_images_to_json animals image1.jpg
DarkHelp: DarkHelp --json animals.names animals.cfg animals_best.weights image1.jpg
Запуск на конкретном графическом процессоре:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -i 1 test.mp4
Чтобы проверить точность нейронной сети:
Карта детектора даркнета вождение.данные вождение.cfg вождение_best.weights ... Имя идентификатора AvgPrecision TP FN FP TN Точность ErrorRate Специфичность повторного вызова FalsePosRate -- ---- ------------ ------ ------ ------ ------ -------- --------- --------- ------ ----------- ------------ 0 автомобиль 91,2495 32648 3903 5826 65129 0,9095 0,0905 0,8486 0,8932 0,9179 0,0821 1 мотоцикл 80,4499 2936 513 569 5393 0,8850 0,1150 0,8377 0,8513 0,9046 0,0954 2 велосипеда 89,0912 570 124 104 3548 0,9475 0,0525 0,8457 0,8213 0,9715 0,0285 3 человека 76,7937 7072 1727 2574 27523 0,8894 0,1106 0,7332 0,8037 0,9145 0,0855 4 много машин 64,3089 1068 509 733 11288 0,9087 0,0913 0,5930 0,6772 0,9390 0,0610 5 зеленый свет 86,8118 1969 239 510 4116 0,8904 0,1096 0,7943 0,8918 0,8898 0,1102 6 желтый свет 82,0390 126 38 30 1239 0,9525 0,0475 0,8077 0,7683 0,9764 0,0236 7 красный свет 94,1033 3449 217 451 4643 0,9237 0,0763 0,8844 0,9408 0,9115 0,0885
Чтобы проверить точность mAP@IoU=75:
darknet detector map animals.data animals.cfg animals_best.weights -iou_thresh 0.75
Пересчет якорей лучше всего производить в DarkMark, так как он запустится 100 раз подряд и выберет лучшие якоря из всех рассчитанных. Но если вы хотите запустить старую версию в Даркнете:
детектор даркнета Calc_anchors животные.данные -num_of_clusters 6 -ширина 320 -высота 256
Обучите новую сеть:
darknet detector -map -dont_show train animals.data animals.cfg
(также см. раздел обучения ниже)
Быстрые ссылки на соответствующие разделы FAQ по Darknet/YOLO:
Как мне настроить файлы и каталоги?
Какой файл конфигурации мне следует использовать?
Какую команду мне следует использовать при обучении собственной сети?
Самый простой способ аннотировать и обучать — использовать DarkMark для создания всех необходимых файлов Darknet. Это определенно рекомендуемый способ обучения новой нейронной сети.
Если вы предпочитаете вручную настраивать различные файлы для обучения пользовательской сети:
Создайте новую папку, в которой будут храниться файлы. В этом примере будет создана нейронная сеть для обнаружения животных, поэтому будет создан следующий каталог: ~/nn/animals/
.
Скопируйте один из файлов конфигурации Darknet, который вы хотите использовать в качестве шаблона. Например, см cfg/yolov4-tiny.cfg
. Поместите это в созданную вами папку. В этом примере у нас теперь есть ~/nn/animals/animals.cfg
.
Создайте текстовый файл animals.names
в той же папке, куда вы поместили файл конфигурации. В этом примере у нас теперь есть ~/nn/animals/animals.names
.
Отредактируйте файл animals.names
в текстовом редакторе. Перечислите классы, которые вы хотите использовать. В каждой строке должно быть ровно 1 запись, без пустых строк и комментариев. В этом примере файл .names
будет содержать ровно 4 строки:
собака кот птица лошадь
Создайте текстовый файл animals.data
в той же папке. В этом примере файл .data
будет содержать:
занятия = 4 поезд = /home/имя пользователя/nn/animals/animals_train.txt действительный = /home/имя пользователя/nn/animals/animals_valid.txt имена = /home/имя_пользователя/nn/animals/animals.names резервная копия = /home/имя пользователя/nn/animals
Создайте папку, в которой вы будете хранить изображения и аннотации. Например, это может быть ~/nn/animals/dataset
. Каждому изображению потребуется соответствующий файл .txt
, описывающий аннотации к этому изображению. Формат файлов аннотаций .txt
очень специфичен. Вы не можете создать эти файлы вручную, поскольку каждая аннотация должна содержать точные координаты аннотации. См. DarkMark или другое подобное программное обеспечение для аннотирования ваших изображений. Формат аннотаций YOLO описан в FAQ по Darknet/YOLO.
Создайте «поездные» и «действительные» текстовые файлы, указанные в файле .data
. В этих двух текстовых файлах необходимо индивидуально перечислить все изображения, которые Даркнет должен использовать для обучения и проверки при расчете процента mAP. Ровно одно изображение в строке. Путь и имена файлов могут быть относительными или абсолютными.
Измените файл .cfg
с помощью текстового редактора.
Убедитесь, что batch=64
.
Обратите внимание на подразделения. В зависимости от размеров сети и объема памяти, доступной на вашем графическом процессоре, вам может потребоваться увеличить количество подразделений. Лучшее значение — 1
поэтому начните с него. См. FAQ по Darknet/YOLO, если 1
вам не подходит.
Обратите внимание max_batches=...
. Хорошее значение для начала — 2000 x количество классов. В этом примере у нас 4 животных, поэтому 4 * 2000 = 8000. Это означает, что мы будем использовать max_batches=8000
.
Обратите внимание, steps=...
. Должно быть установлено значение 80% и 90% от max_batches
. В этом примере мы бы использовали steps=6400,7200
поскольку для max_batches
установлено значение 8000.
Обратите внимание width=...
и height=...
. Это размеры сети. Часто задаваемые вопросы Darknet/YOLO объясняют, как рассчитать лучший размер для использования.
Найдите все экземпляры строки classes=...
и измените ее, указав количество классов в вашем файле .names
. В этом примере мы бы использовали classes=4
.
Найдите все экземпляры строкового filters=...
в разделе [convolutional]
перед каждым разделом [yolo]
. Используемое значение: (число_классов + 5) * 3. В этом примере это означает (4 + 5) * 3 = 27. Поэтому мы будем использовать filters=27
в соответствующих строках.
Начни тренироваться! Выполните следующие команды:
компакт-диск ~/nn/животные/ Детектор даркнета -map -dont_show train животные.данные животные.cfg
Потерпи. Лучшие веса будут сохранены как animals_best.weights
. А за ходом обучения можно наблюдать, просмотрев chart.png
. Дополнительные параметры, которые вы можете использовать при обучении новой сети, см. в FAQ по Darknet/YOLO.
Если вы хотите видеть более подробную информацию во время обучения, добавьте параметр --verbose
. Например:
детектор даркнета -map -dont_show --verbose train животные.данные животные.cfg
Чтобы управлять проектами Darknet/YOLO, аннотировать изображения, проверять свои аннотации и создавать необходимые файлы для обучения с помощью Darknet, см. DarkMark.
Чтобы узнать о надежной альтернативе Darknet CLI, использовании мозаики изображений, отслеживании объектов в ваших видеороликах или надежном C++ API, который можно легко использовать в коммерческих приложениях, см. DarkHelp.
Посмотрите, поможет ли FAQ по Darknet/YOLO ответить на ваши вопросы.
Посмотрите множество обучающих видео и примеров на канале Стефана на YouTube.
Если у вас есть вопрос о поддержке или вы хотите пообщаться с другими пользователями Darknet/YOLO, присоединяйтесь к серверу разногласий Darknet/YOLO.
Последнее обновление 2 ноября 2024 г.:
замените qsort() на std::sort(), где он используется во время обучения (остаются некоторые другие неясные)
избавьтесь от check_mistakes, getchar() и system()
преобразовать Darknet для использования компилятора C++ (g++ в Linux, VisualStudio в Windows)
исправить сборку Windows
исправить поддержку Python
создать библиотеку даркнета
повторно включить метки для подсказок (код «Алфавит»)
повторно включить код CUDA/GPU
повторно включить CUDNN
повторно включить половину CUDNN
не жестко кодируйте архитектуру CUDA
улучшенная информация о версии CUDA
повторно включить AVX
удалите старые решения и Makefile
сделать OpenCV необязательным
удалить зависимость от старой библиотеки pthread
удалить приставку
переписать CMakeLists.txt, чтобы использовать новое обнаружение CUDA
удалите старый «алфавитный» код и удалите более 700 изображений в данных/метках.
создавать вне исходного кода
иметь лучший вывод номера версии
оптимизация производительности, связанная с обучением (текущая задача)
оптимизация производительности, связанная с выводом (текущая задача)
передача по ссылке, где это возможно
очистить файлы .hpp
переписать darknet.h
не приводите cv::Mat
к void*
, а используйте его как правильный объект C++
исправить или быть последовательным в использовании внутренней структуры image
исправление сборки для устройств Jetson на базе ARM
оригинальные устройства Jetson (вряд ли исправят, поскольку они больше не поддерживаются NVIDIA и не имеют компилятора C++17)
новые устройства Jetson Orin работают
исправить API Python в V3
необходима лучшая поддержка Python (кто-нибудь из разработчиков Python хочет помочь с этим?)
заменить printf() на std::cout (в процессе)
обратите внимание на поддержку старой камеры Zed
лучший и более последовательный анализ командной строки (в разработке)
удалите весь код char*
и замените его std::string
не скрывать предупреждения и очищать предупреждения компилятора (в процессе)
лучшее использование cv::Mat
вместо пользовательской структуры image
в C (в разработке)
заменить функциональность старого list
на std::vector
или std::list
исправлена поддержка одноканальных изображений в оттенках серого
добавить поддержку N-канальных изображений, где N > 3 (например, изображения с дополнительной глубиной или тепловым каналом)
текущая очистка кода (в процессе)
исправить проблемы CUDA/CUDNN со всеми графическими процессорами
переписать код CUDA+cuDNN
рассмотрите возможность добавления поддержки графических процессоров отличных от NVIDIA
повернутые ограничивающие рамки или какая-то «угловая» поддержка
ключевые точки/скелетоны
тепловые карты (в разработке)
сегментация