Платформа обнаружения объектов Darknet и YOLO
Логотипы !darknet и hank.ai
Darknet — это платформа нейронных сетей с открытым исходным кодом, написанная на C, C++ и CUDA.
YOLO (You Only Look Once) — это современная система обнаружения объектов в режиме реального времени, работающая в рамках Darknet.
Узнайте, как Hank.ai помогает сообществу Darknet/YOLO
Анонсируем Darknet V3 «Джаз»
Посетите веб-сайт Darknet/YOLO.
Пожалуйста, прочтите FAQ по Darknet/YOLO.
Присоединяйтесь к дискорд-серверу Darknet/YOLO
Статьи
1. Бумага YOLOv7
2. Бумага Scaled-YOLOv4
3. Бумага YOLOv4
4. Бумага 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, облачных серверах и серверах совместной работы, настольных компьютерах, ноутбуках и высокопроизводительных учебных установках. Для версии Darknet/YOLO с графическим процессором требуется графический процессор NVIDIA с поддержкой CUDA.
Известно, что Darknet/YOLO работает на Linux, Windows и Mac. См. инструкции по сборке ниже.
Даркнет-версия
Оригинальный инструмент Darknet, написанный Джозефом Редмоном в 2013–2017 годах, не имел номера версии. Мы считаем эту версию 0.x.
Следующий популярный репозиторий Darknet, который вел Алексей Бочковский в 2017–2021 годах, также не имел номера версии. Мы рассматриваем эту версию 1.x.
Репозиторий Darknet, спонсируемый Hank.ai и поддерживаемый Стефаном Шареттом с 2023 года, был первым репозиторием с командой версий. С 2023 до конца 2024 года возвращалась версия 2.x «ДУБ».
Целью было попытаться как можно меньше сломать существующую функциональность, одновременно знакомясь с кодовой базой.
Ключевые изменения в версии 2.x:
Переписали этапы сборки, чтобы у нас был один унифицированный способ сборки с использованием CMake как в Windows, так и в Linux.
Преобразовал кодовую базу для использования компилятора C++.
Улучшен файлchart.png во время тренировки.
Исправления ошибок и оптимизация, связанная с производительностью, в основном связанная с сокращением времени, необходимого для обучения сети.
Последняя ветвь этой кодовой базы — версия 2.1 в ветке v2.
Следующий этап разработки начался в середине 2024 года и был выпущен в октябре 2024 года. Команда версии теперь возвращает 3.x «JAZZ».
Вы всегда можете проверить предыдущую ветку v2, если вам нужно запустить одну из этих команд. Сообщите нам, чтобы мы могли изучить вопрос о добавлении недостающих команд.
Ключевые изменения в версии 3.x:
Удалены многие старые и неподдерживаемые команды.
Множество оптимизаций производительности как при обучении, так и во время вывода.
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.
MSCOCO Предварительно обученные веса
Несколько популярных версий YOLO для удобства были предварительно обучены на наборе данных MSCOCO. Этот набор данных содержит 80 классов, которые можно увидеть в текстовом файле cfg/coco.names.
Для тестирования Darknet/YOLO доступно несколько других, более простых наборов данных и предварительно обученных весов, например LEGO Gears и Rolodex. Подробности смотрите в FAQ по Darknet/YOLO.
Предварительно обученные веса MSCOCO можно загрузить из нескольких разных мест, а также из этого репозитория:
1. YOLov2 (ноябрь 2016 г.)
* yolov2-tiny.weights
* yolov2-full.weights
2. YOLOv3 (май 2018 г.)
* yolov3-tiny.weights
* yolov3-full.weights
3. YOLOv4 (май 2020 г.)
* yolov4-tiny.weights
* yolov4-full.weights
4. YOLOv7 (август 2022 г.)
* yolov7-tiny.weights
* yolov7-full.weights
Предварительно обученные веса MSCOCO предоставляются только для демонстрационных целей. Соответствующие файлы .cfg и .names для MSCOCO находятся в каталоге cfg. Примеры команд:
`бить
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_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 ниже.
Метод CMake в Linux
Руководство по сборке Darknet для Linux
Необязательно: если у вас современный графический процессор NVIDIA, на этом этапе вы можете установить либо CUDA, либо CUDA+cuDNN. Если установлен, Darknet будет использовать ваш графический процессор для ускорения обработки изображений (и видео).
Вам необходимо удалить файл CMakeCache.txt из каталога сборки Darknet, чтобы заставить CMake повторно найти все необходимые файлы. Не забудьте перестроить Даркнет.
Даркнет может работать и без него, но если вы хотите обучить собственную сеть, потребуется либо CUDA, либо CUDA+cuDNN.
Установите CUDA (если используете графический процессор):
Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
Установите cuDNN (при использовании графического процессора):
Посетите 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.
Собираем и устанавливаем Даркнет:
Эти инструкции предполагают (но не требуют!) систему под управлением Ubuntu 22.04. При необходимости адаптируйте его, если вы используете другой дистрибутив.
`бить
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
клон git https://github.com/hank-ai/darknet
компакт-диск даркнет
сборка mkdir
сборка компакт-диска
cmake -DCMAKEBUILDTYPE=Выпустить ..
сделать -j4
упаковка
sudo dpkg -i darknet-ВЕРСИЯ.deb
`
Если вы используете более старую версию CMake:
Вам необходимо обновить CMake, прежде чем вы сможете запустить указанную выше команду cmake. Обновление CMake в Ubuntu можно выполнить с помощью следующих команд:
`бить
sudo apt-get очистить cmake
sudo snap установить cmake --classic
`
Если вы используете bash в качестве командной оболочки, вам нужно будет перезапустить оболочку на этом этапе. Если вы используете рыбу, она должна немедленно выбрать новый путь.
Продвинутые пользователи:
Если вы хотите создать установочный файл RPM вместо файла DEB, см. соответствующие строки в CM_package.cmake. Перед запуском пакета make -j4 вам необходимо отредактировать эти две строки:
`cmake
НАБОР (CPACK_GENERATOR «DEB»)
НАБОР (CPACK_GENERATOR «ОБ/МИН»)
`
Для таких дистрибутивов, как Centos и OpenSUSE, вам необходимо изменить эти две строки в CM_package.cmake на:
`cmake
НАБОР (CPACK_GENERATOR «DEB»)
НАБОР (CPACK_GENERATOR «ОБ/МИН»)
`
Чтобы установить установочный пакет после завершения сборки, используйте обычный менеджер пакетов вашего дистрибутива. Например, в системах на базе Debian, таких как Ubuntu:
`бить
sudo dpkg -i darknet-2.0.1-Linux.deb
`
При установке пакета .deb будут скопированы следующие файлы:
/usr/bin/darknet — это обычный исполняемый файл Darknet. Запустите версию darknet из 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/. Запустите это, чтобы проверить: версия даркнета.
Если у вас нет /usr/bin/darknet, это означает, что вы его не устанавливали, а только собрали! Обязательно установите файл .deb или .rpm, как описано выше.
Метод Windows CMake
Эти инструкции предполагают новую установку Windows 11 22H2.
Установите необходимые инструменты с помощью Winget:
`бить
winget установить Git.Git
winget установить Kitware.CMake
winget установить nsis.nsis
winget install Microsoft.VisualStudio.2022.Community
`
Измените установку Visual Studio:
1. Нажмите меню «Пуск» Windows и запустите «Установщик Visual Studio».
2. Нажмите «Изменить».
3. Выберите «Разработка настольных компьютеров с помощью C++».
4. Нажмите «Изменить» в правом нижнем углу, а затем нажмите «Да».
Откройте командную строку разработчика:
После того, как все будет загружено и установлено, снова щелкните меню «Пуск» Windows и выберите «Командная строка разработчика для VS 2022». Не используйте PowerShell для этих шагов, вы столкнетесь с проблемами!
Продвинутые пользователи:
Вместо запуска командной строки разработчика вы можете использовать обычную командную строку или SSH для входа в устройство и вручную запустить «Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat».
Установите Microsoft VCPKG:
После того, как командная строка разработчика заработает, как описано выше (не PowerShell!), выполните следующие команды для установки Microsoft VCPKG, который затем будет использоваться для сборки OpenCV:
`бить
CDC:
mkdir c:src
компакт-диск c: источник
клон git https://github.com/microsoft/vcpkg
компакт-диск 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 из каталога сборки Darknet, чтобы заставить CMake повторно найти все необходимые файлы. Не забудьте перестроить Даркнет.
Даркнет может работать и без него, но если вы хотите обучить собственную сеть, потребуется либо CUDA, либо CUDA+cuDNN.
Установите CUDA (если используете графический процессор):
Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
Установите cuDNN (при использовании графического процессора):
Посетите 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/[версия]/. Возможно, вам придется перезаписать некоторые файлы.
Важный:
CUDA должен быть установлен после Visual Studio. Если вы обновляете Visual Studio, не забудьте переустановить CUDA.
Клонируйте Darknet и создайте его:
После успешного завершения всех предыдущих шагов вам необходимо клонировать Darknet и собрать его. На этом этапе нам также нужно сообщить CMake, где находится vcpkg, чтобы он мог найти OpenCV и другие зависимости:
`бить
компакт-диск c: источник
клон git https://github.com/hank-ai/darknet.git
компакт-диск даркнет
сборка mkdir
сборка компакт-диска
cmake -DCMAKEBUILDTYPE=Выпуск -DCMAKETOOLCHAINFILE=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
`
Если вы получаете сообщение об отсутствующих библиотеках 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 Studio, Darknet.sln. Если вы разработчик программного обеспечения и регулярно используете графический интерфейс Visual Studio вместо msbuild.exe для создания проектов, вы можете игнорировать командную строку и загрузить проект Darknet в Visual Studio.
Теперь у вас должен быть файл, который вы можете запустить: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Запустите это, чтобы проверить: версию C:srcDarknetbuildsrc-cliReleasedarknet.exe.
Установите Darknet с помощью установщика NSIS:
Чтобы правильно установить Darknet, библиотеки, включаемые файлы и необходимые библиотеки DLL, запустите мастер установки NSIS, созданный на последнем шаге. См. файл darknet-VERSION.exe в каталоге сборки. Например:
`бить
даркнет-2.0.31-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.
Если у вас нет 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)
Команды для запуска:
Перечислите некоторые возможные команды и параметры для запуска:
`бить
помощь в даркнете
`
Проверьте версию:
`бить
даркнет-версия
`
Прогнозирование с помощью изображения:
* Версия 2:
`бить
Тест детектора даркнета cars.data cars.cfg cars_best.weights image1.jpg
`
* Версия 3:
`бить
darknet02displayannotatedimages cars.cfg image1.jpg
`
* Темная помощь:
`бить
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
`
Выходные координаты:
* Версия 2:
`бить
Тест детектора даркнета животные.данные животные.cfg животныеbest.weights -extoutput собака.jpg
`
* Версия 3:
`бить
darknet01inference_images животные собака.jpg
`
* Темная помощь:
`бить
DarkHelp --json животные.cfg животные.названия животных_лучшие.веса собаки.jpg
`
Работа с видео:
* Версия 2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животныеbest.weights -extoutput test.mp4
`
* Версия 3:
`бить
darknet03display_videos животные.cfg test.mp4
`
* Темная помощь:
`бить
DarkHelp животные.cfg животные.имена животных_лучшие.веса test.mp4
`
Чтение с веб-камеры:
* Версия 2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животные_лучшие.веса -c 0
`
* Версия 3:
`бить
darknet08display_webcam животные
`
Сохраните результаты на видео:
* Версия 2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животныеbest.weights test.mp4 -outfilename res.avi
`
* Версия 3:
`бить
darknet05processvideosmultithreaded животные.cfg животные.имена животных_лучшие.тест веса.mp4
`
* Темная помощь:
`бить
DarkHelp животные.cfg животные.имена животных_лучшие.веса test.mp4
`
JSON:
* Версия 2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животныеbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
* Версия 3:
`бить
darknet06imagestojson животные image1.jpg
`
* Темная помощь:
`бить
DarkHelp --json животные.названия животных.cfg животные_лучшие.веса image1.jpg
`
Запуск на конкретном графическом процессоре:
* Версия 2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животные_лучшие.веса -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:
`бить
Карта детектора даркнета животные.данные животные.cfg животныеbest.weights -iouthresh 0.75
`
Перерасчет якорей:
Пересчет якорей лучше всего производить в DarkMark, так как он запустится 100 раз подряд и выберет лучшие якоря из всех рассчитанных. Но если вы хотите запустить старую версию в Даркнете:
`бить
детектор даркнета кальканчоры животные.данные -numof_clusters 6 -ширина 320 -высота 256
`
Обучите новую сеть:
`бить
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
(также см. раздел обучения ниже)
Обучение
Быстрые ссылки на соответствующие разделы FAQ по Darknet/YOLO:
Как мне настроить файлы и каталоги?
Какой файл конфигурации мне следует использовать?
Какую команду мне следует использовать при обучении собственной сети?
Самый простой способ аннотировать и обучать — использовать DarkMark для создания всех необходимых файлов Darknet. Это определенно рекомендуемый способ обучения новой нейронной сети.
Если вы предпочитаете вручную настраивать различные файлы для обучения пользовательской сети:
1. Создайте новую папку:
* Создайте новую папку, в которой будут храниться файлы. В этом примере будет создана нейронная сеть для обнаружения животных, поэтому будет создан следующий каталог: ~/nn/animals/.
2. Скопируйте файл конфигурации Darknet:
* Скопируйте один из файлов конфигурации Darknet, который вы хотите использовать в качестве шаблона. Например, см. cfg/yolov4-tiny.cfg. Поместите это в созданную вами папку. В этом примере у нас теперь есть ~/nn/animals/animals.cfg.
3. Создайте текстовый файл Animal.names:
* Создайте текстовый файл Animal.names в той же папке, куда вы поместили файл конфигурации. В этом примере у нас теперь есть ~/nn/animals/animals.names.
4. Отредактируйте животные.имена:
* Отредактируйте файл Animal.names в текстовом редакторе. Перечислите классы, которые вы хотите использовать. В каждой строке должно быть ровно 1 запись, без пустых строк и комментариев. В этом примере файл .names будет содержать ровно 4 строки:
`
собака
кот
птица
лошадь
`
5. Создайте текстовый файл Animals.data:
* Создайте текстовый файл Animals.data в той же папке. В этом примере файл .data будет содержать:
`
занятия = 4
поезд = /home/имя пользователя/nn/animals/animals_train.txt
действительный = /home/имя пользователя/nn/animals/animals_valid.txt
имена = /home/имя_пользователя/nn/animals/animals.names
резервная копия = /home/имя пользователя/nn/animals
`
6. Создайте папку для изображений и аннотаций:
* Создайте папку, в которой вы будете хранить изображения и аннотации. Например, это может быть ~/nn/animals/dataset. Для каждого изображения потребуется соответствующий файл .txt, описывающий аннотации к этому изображению. Формат файлов аннотаций .txt очень специфичен. Вы не можете создать эти файлы вручную, поскольку каждая аннотация должна содержать точные координаты аннотации. См. DarkMark или другое подобное программное обеспечение для аннотирования ваших изображений. Формат аннотации YOLO описан в FAQ по Darknet/YOLO.
7. Создайте поезд и действительные текстовые файлы:
* Создайте «поездные» и «действительные» текстовые файлы, указанные в файле .data. В этих двух текстовых файлах необходимо индивидуально перечислить все изображения, которые Даркнет должен использовать для обучения и проверки при расчете процента mAP. Ровно одно изображение в строке. Путь и имена файлов могут быть относительными или абсолютными.
8. Измените файл .cfg:
* Измените файл .cfg с помощью текстового редактора.
* пакет=64: убедитесь, что пакет=64.
* подразделения: обратите внимание на подразделения. В зависимости от размеров сети и объема памяти, доступной на вашем графическом процессоре, вам может потребоваться увеличить количество подразделений. Лучшее значение — 1, поэтому начните с него. См. FAQ по Darknet/YOLO, если 1 вам не подходит.
maxbatches: Обратите внимание: maxbatches=.... Хорошее значение для начала — 2000 x количество классов. В этом примере у нас есть 4 животных, поэтому 4 2000 = 8000. Это означает, что мы будем использовать max_batches=8000.
* шаги: обратите внимание, шаги =.... Должно быть установлено значение 80% и 90% от максимального количества пакетов. В этом примере мы бы использовали шаги = 6400,7200, поскольку для параметра maxbatches установлено значение 8000.
* ширина и высота: обратите внимание на ширину=... и высоту=.... Это размеры сети. Часто задаваемые вопросы Darknet/YOLO объясняют, как рассчитать лучший размер для использования.
* классы: найдите все экземпляры строки class=... и измените ее, указав количество классов в вашем файле .names. В этом примере мы бы использовали классы = 4.
фильтры: поиск всех экземпляров строки filter=... в разделе [convolutional] перед каждым разделом [yolo]. Используемое значение: (число классов + 5) 3. В этом примере это означает (4 + 5) * 3 = 27. Поэтому мы будем использовать фильтры = 27 в соответствующих строках.
9. Начать обучение:
* Выполните следующие команды:
`бить
компакт-диск ~/nn/животные/
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
* Потерпи. Лучшие веса будут сохранены как животные_best.weights. А за ходом обучения можно наблюдать, просмотрев файлchart.png. Дополнительные параметры, которые вы можете использовать при обучении новой сети, см. в FAQ по Darknet/YOLO.
* Если вы хотите видеть более подробную информацию во время обучения, добавьте параметр --verbose. Например:
`бить
детектор даркнета -map -dont_show --verbose train животные.данные животные.cfg
`
Другие инструменты и ссылки
DarkMark: Чтобы управлять своими проектами Darknet/YOLO, аннотировать изображения, проверять свои аннотации и создавать необходимые файлы для обучения с Darknet, см. DarkMark.
DarkHelp: надежную альтернативу Darknet CLI для использования мозаики изображений, отслеживания объектов в ваших видео или надежный C++ API, который можно легко использовать в коммерческих приложениях, см. в DarkHelp.
Часто задаваемые вопросы о Darknet/YOLO: посмотрите, поможет ли FAQ о Darknet/YOLO ответить на ваши вопросы.
Канал Стефана на YouTube: посмотрите множество обучающих видео и примеров на канале Стефана на YouTube.
Сервер разногласий Darknet/YOLO: Если у вас есть вопрос в службу поддержки или вы хотите пообщаться с другими пользователями Darknet/YOLO, присоединяйтесь к серверу разногласий Darknet/YOLO.
Дорожная карта
Последнее обновление 30 октября 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++.
Исправьте или будьте последовательны в использовании внутренней структуры изображения.
Исправление сборки для устройств Jetson на базе ARM.
* Оригинальные устройства Jetson вряд ли будут исправлены, поскольку они больше не поддерживаются NVIDIA (нет компилятора C++17).
* Новые устройства Jetson Orin работают.
Исправить API Python в версии 3.
* Требуется лучшая поддержка Python (кто-нибудь из разработчиков Python хочет помочь с этим?)
Краткосрочные цели
Замените printf() на std::cout (в процессе)
Обратите внимание на поддержку старой камеры Zed.
Улучшенный и более последовательный анализ командной строки (в разработке)
Среднесрочные цели
Удалите весь код символов и замените его на std::string.
Не скрывать предупреждения и очищать предупреждения компилятора (в процессе)
Лучшее использование cv::Mat вместо пользовательской структуры изображения в C (в разработке).
Замените старую функциональность списка на std::vector или std::list.
Исправлена поддержка одноканальных изображений в оттенках серого.
Добавить поддержку