Платформа обнаружения объектов Darknet и YOLO
Darknet — это платформа нейронных сетей с открытым исходным кодом, написанная на C, C++ и CUDA. YOLO (You Only Look Once) — это современная система обнаружения целей в реальном времени, работающая в рамках Darknet.
Узнайте, как Hank.ai помогает сообществу Darknet/YOLO
Анонсируем Darknet V3 «Джаз»
Посетите сайт Darknet/YOLO.
Пожалуйста, прочтите FAQ по Darknet/YOLO.
Присоединяйтесь к серверу Discord 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 за 1 миллисекунду или меньше /YOLO Чтение, изменение размера и обработка .
Если вам нужна помощь или вы хотите обсудить Darknet/YOLO, присоединяйтесь к серверу Discord Darknet/YOLO: https://discord.gg/zSq8rtW
Версия Darknet/YOLO с процессором может работать на простых устройствах, таких как Raspberry Pi, облачных серверах и серверах для совместной работы, настольных компьютерах, ноутбуках и высококачественном учебном оборудовании. Для версии Darknet/YOLO с графическим процессором требуется CUDA-совместимый графический процессор от NVIDIA.
Известно, что Darknet/YOLO хорошо работает на Linux, Windows и Mac. См. инструкции по сборке ниже.
Даркнет-версия
Оригинальные инструменты Darknet, написанные Джозефом Редмоном в 2013–2017 годах, не имели номеров версий. Мы считаем эту версию 0.x.
Следующий популярный репозиторий даркнета, который вел Алексей Бочковский с 2017 по 2021 год, также не имеет номера версии. Мы считаем, что это версия 1.x.
Репозиторий Darknet, спонсируемый Hank.ai и поддерживаемый Стефаном Шареттом с 2023 года, является первым репозиторием, имеющим команду версии. С 2023 до конца 2024 года он возвращается к версии 2.х «ДУБ».
Цель — постараться как можно меньше нарушать существующую функциональность, одновременно знакомясь с базой кода.
1. Перепишите шаги сборки, чтобы у нас был единый способ сборки для Windows и Linux с помощью CMake.
2. Преобразуйте базу кода для использования компилятора C++.
3. Улучшен файлchart.png во время тренировки.
4. Исправления ошибок и оптимизация производительности, в основном связанная с сокращением времени, необходимого для обучения сети.
Последняя ветвь базы кода — это версия 2.1 в ветке v2.
Следующий этап разработки начнется в середине 2024 года и будет выпущен в октябре 2024 года. Команда версии теперь возвращает 3.x «JAZZ».
Вы всегда можете извлечь предыдущую ветку v2, если вам нужно запустить следующую команду. Сообщите нам, чтобы мы могли изучить возможность добавления недостающих команд.
1. Удалены многие старые и неподдерживаемые команды.
2. Множество оптимизаций производительности, включая процессы обучения и вывода.
3. Традиционный API C был изменен; приложения, использующие исходный API Darknet, должны будут внести незначительные изменения: https://darknetcv.ai/api/api.html.
4. Новый API Darknet V3 C и C++: https://darknetcv.ai/api/api.html.
5. Новые приложения и пример кода в src-примерах: 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-крошечный
-YOLOv2-полный
2. YOLov3, май 2018 г.
- YOLOv3-крошечный
-YOLOv3-полный
3. YOLov4, май 2020 г.
- YOLOv4-крошечный
-YOLOv4-полный
4. 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 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, точно так же, как вам не нужно быть механиком, чтобы водить машину.
Гугл Колаб
Инструкции Google Colab такие же, как инструкции Linux. Существует несколько блокнотов Jupyter, показывающих, как выполнять определенные задачи, например обучение новой сети.
См. блокнот в подкаталоге colab или следуйте инструкциям Linux ниже.
Метод CMake в Linux
Руководство по сборке Darknet для Linux
Необязательно: если у вас современный графический процессор NVIDIA, вы можете сейчас установить CUDA или CUDA+cuDNN. Если установлен, Darknet будет использовать ваш графический процессор для ускорения обработки изображений (и видео).
Вам необходимо удалить файл CMakeCache.txt в каталоге сборки 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 clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKEBUILDTYPE=Release .. make -j4 package sudo dpkg -i darknet-ВЕРСИЯ.deb
`
Если вы используете более старую версию CMake, вам необходимо обновить CMake перед запуском приведенной выше команды cmake. Обновление CMake в Ubuntu можно выполнить с помощью следующей команды:
`бить
sudo apt-get purge cmake sudo snap install cmake --classic
`
Если вы используете bash в качестве командной оболочки, вам нужно будет перезапустить оболочку на этом этапе. Если вы используете рыбу, она должна немедленно выбрать новый путь.
Продвинутые пользователи:
Если вы хотите создать установочный файл RPM вместо файла DEB, см. соответствующие строки в CM_package.cmake. Перед запуском пакета make -j4 вам необходимо отредактировать эти две строки:
`бить
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
Для таких дистрибутивов, как Centos и OpenSUSE, вам необходимо изменить эти две строки в CM_package.cmake на:
`бить
КОМПЛЕКТ (CPACKGENERATOR "DEB")SET (CPACKGENERATOR "RPM")
`
Чтобы установить установочный пакет после его сборки, используйте обычный менеджер пакетов вашего дистрибутива. Например, в системе на базе Debian, такой как Ubuntu:
`бить
sudo dpkg -i darknet-2.0.1-Linux.deb
`
При установке пакета .deb будут скопированы следующие файлы:
1. /usr/bin/darknet — обычный исполняемый файл Darknet. Запустите версию darknet из CLI, чтобы убедиться, что она установлена правильно.
2. /usr/include/darknet.h — API Darknet для разработчиков C, C++ и Python.
3. /usr/include/darknet_version.h содержит информацию о версии для разработчиков.
4. /usr/lib/libdarknet.so — библиотека для разработчиков C, C++ и Python.
5. /opt/darknet/cfg/... — это место, где хранятся все шаблоны .cfg.
Теперь все готово! Darknet встроен и установлен в /usr/bin/. Для проверки выполните следующую команду: версия даркнета.
Если у вас нет /usr/bin/darknet, вы его не устанавливали, а просто собрали! Обязательно установите файл .deb или .rpm, как описано выше.
Методы Windows CMake
Эти инструкции предполагают новую установку Windows 11 22H2.
Откройте обычное окно командной строки cmd.exe и выполните следующую команду:
`бить
winget install Git.Git winget install Kitware.CMake winget install nsis.nsis winget install Microsoft.VisualStudio.2022.Community
`
На этом этапе нам необходимо изменить установку Visual Studio, чтобы включить поддержку приложений C++:
1. Откройте меню «Пуск» Windows и запустите программу установки Visual Studio.
2. Нажмите «Изменить».
3. Выберите разработку настольных компьютеров с использованием C++.
4. Нажмите «Изменить» в правом нижнем углу, затем нажмите «Да».
После того, как все будет загружено и установлено, снова щелкните меню «Пуск» Windows и выберите «Командная строка разработчика для VS 2022». Не используйте PowerShell для выполнения этих действий, у вас возникнут проблемы!
Продвинутые пользователи:
Вместо запуска командной строки разработчика вы можете использовать обычную командную строку или войти в систему устройства с помощью ssh и запустить «Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat» вручную.
После того, как у вас запустится командная строка разработчика, как описано выше (не PowerShell!), выполните следующую команду, чтобы установить Microsoft VCPKG, а затем используйте ее для сборки OpenCV:
`бить
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe интегрировать установку .vcpkg.exe интегрировать powershell.vcpkg.exe установить 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.
Посетите 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/[версия]/. Возможно, вам придется перезаписать некоторые файлы.
Если вы установите CUDA или CUDA+cuDNN позже или обновите программное обеспечение NVIDIA до более новой версии, выполните следующие действия:
CUDA должен быть установлен после Visual Studio. Если вы обновляете Visual Studio, не забудьте переустановить CUDA.
После успешного завершения всех предыдущих шагов вам необходимо клонировать Darknet и собрать его. На этом этапе нам также нужно сообщить CMake, где находится vcpkg, чтобы он мог найти OpenCV и другие зависимости:
`ударить
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKEBUILDTYPE=Release -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
`
Если вы получаете сообщение об отсутствующей 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 Studio, Darknet.sln. Если вы разработчик программного обеспечения, который часто использует графический интерфейс Visual Studio вместо msbuild.exe для создания проектов, вы можете игнорировать командную строку и загрузить проект Darknet в Visual Studio.
Теперь у вас должен быть следующий файл, который вы можете запустить: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Для проверки выполните следующую команду: Версия C:srcDarknetbuildsrc-cliReleasedarknet.exe.
Чтобы правильно установить Darknet, библиотеки, включаемые файлы и необходимые библиотеки DLL, запустите мастер установки NSIS, созданный на последнем шаге. Проверьте файл darknet-VERSION.exe в каталоге сборки. Например:
`бить
даркнет-2.0.31-win64.exe
`
Установка установочного пакета NSIS позволит:
1. Создайте каталог с именем Darknet, например C:Program FilesDarknet.
2. Установите приложение CLI, darknet.exe и другие примеры приложений.
3. Установите необходимые сторонние файлы .dll, например файлы OpenCV.
4. Установите необходимые файлы Darknet .dll, .lib и .h, чтобы использовать darknet.dll из другого приложения.
5. Установите файл шаблона .cfg.
Теперь все готово! После завершения работы мастера установки Darknet будет установлен в C:Program FilesDarknet. Для проверки выполните следующую команду: Версия C:Program FilesDarknetbindarknet.exe.
Если у вас нет C:/Program Files/darknet/bin/darknet.exe, значит, вы его не устанавливали, а просто собрали! Обязательно заполните каждую панель мастера установки NSIS, как описано в предыдущих шагах.
Использование даркнета
интерфейс командной строки
Ниже приведен не полный список всех команд, поддерживаемых Darknet.
В дополнение к интерфейсу командной строки Darknet обратите внимание на интерфейс командной строки проекта DarkHelp, который представляет собой альтернативу интерфейсу командной строки Darknet/YOLO. DarkHelp CLI также имеет несколько расширенных функций, недоступных напрямую в Darknet. Вы можете использовать интерфейс командной строки Darknet и интерфейс командной строки DarkHelp вместе, они не являются взаимоисключающими.
Для большинства команд, показанных ниже, вам понадобится файл .weights с соответствующими файлами .names и .cfg. Вы можете либо обучить свою собственную сеть (настоятельно рекомендуется!), либо загрузить из Интернета нейронную сеть, обученную другими и доступную бесплатно. Примеры наборов данных для предварительного обучения включают в себя:
1. LEGO Gears (находите предметы на изображениях)
2. Ролодекс (найти текст на изображении)
3. 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
`
Чтобы проверить точность нейронной сети:
`ударить
карта детектора даркнетаdrive.datadrive.cfgdrive_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 Animals.data Animals.cfg (также см. раздел обучения ниже)
`
тренироваться
Быстрые ссылки на соответствующие разделы FAQ по Darknet/YOLO:
1. Как мне настроить файлы и каталоги?
2. Какой профиль мне следует использовать?
3. Какую команду следует использовать при обучении собственной сети?
Использование DarkMark для создания всех необходимых файлов Darknet — это самый простой способ аннотировать и обучать. Это определенно рекомендуемый способ обучения новых нейронных сетей.
Если вы хотите вручную настроить различные файлы для обучения пользовательской сети, сделайте следующее:
1. Создайте новую папку для хранения этих файлов. В этом примере будет создана нейронная сеть для обнаружения животных, поэтому будет создан следующий каталог: ~/nn/animals/.
2. Скопируйте один из файлов конфигурации Darknet, который вы хотите использовать в качестве шаблона. Например, см. cfg/yolov4-tiny.cfg. Поместите его в созданную вами папку. В этом примере у нас теперь есть ~/nn/animals/animals.cfg.
3. Создайте текстовый файл Animal.names в той же папке, куда вы поместили файл конфигурации. В этом примере у нас теперь есть ~/nn/animals/animals.names.
4. Используйте текстовый редактор для редактирования файла Animals.names. Перечислите категории, которые вы хотите использовать. Вам нужна ровно одна запись в каждой строке, без пустых строк и комментариев. В этом примере файл .names будет содержать ровно 4 строки:
`
собака
кот
птица
лошадь
`
5. Создайте текстовый файл 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. В этих двух текстовых файлах необходимо перечислить все изображения, которые Darknet должен использовать для обучения и проверки mAP% соответственно. В каждой строке ровно одно изображение. Пути и имена файлов могут быть относительными или абсолютными.
8. Воспользуйтесь текстовым редактором, чтобы изменить файл .cfg.
- Убедитесь, что партия = 64.
- Обратите внимание на подразделения. В зависимости от размера сети и объема памяти, доступной на графическом процессоре, вам может потребоваться увеличить количество подразделений. Оптимальное значение — 1, поэтому начните с него. Если 1 вам не подходит, см. FAQ по Darknet/YOLO.
- Обратите внимание: maxbatches=.... При запуске хорошее значение для количества категорий — 2000. В этом примере у нас 4 животных, поэтому 4 2000 = 8000. Это означает, что мы будем использовать maxbatches=8000.
- Обратите внимание, шаги =.... Должно быть установлено значение 80% и 90% от максимального количества пакетов. В этом примере мы будем использовать шаги = 6400,7200, поскольку для параметра maxbatches установлено значение 8000.
- Обратите внимание, что ширина=... и высота=.... это размеры сети. Часто задаваемые вопросы Darknet/YOLO объясняют, как рассчитать оптимальный размер для использования.
- В каждом разделе [yolo], предшествующем разделу [convolutional], найдите все экземпляры строк filter=.... Используемое значение: (количество категорий + 5) 3. Это означает, что для данного примера (4 + 5) 3 = 27. Поэтому мы используем фильтры=27 в соответствующих строках.
9. Начни тренироваться! Выполните следующую команду:
`бить
компакт-диск ~/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.
Чтобы узнать о мощном альтернативном CLI Darknet для сшивания изображений, отслеживании объектов в видео или о мощном API C++, который можно легко использовать в коммерческих приложениях, см. DarkHelp.
Ознакомьтесь с часто задаваемыми вопросами Darknet/YOLO, чтобы узнать, поможет ли он ответить на ваш вопрос.
Ознакомьтесь с множеством руководств и видеороликов с примерами на канале Стефана на YouTube.
Если у вас есть вопросы по поддержке или вы хотите пообщаться с другими пользователями Darknet/YOLO, присоединяйтесь к серверу Discord Darknet/YOLO.
дорожная карта
Последнее обновление: 30 октября 2024 г.:
Завершенный
1. Замените qsort() на std::sort() во время обучения (еще существует какой-то другой непонятный код)
2. Удалите check_mistakes, getchar() и system().
3. Преобразуйте Darknet для использования компилятора C++ (g++ в Linux, VisualStudio в Windows).
4. Исправить сборку Windows
5. Исправлена поддержка Python.
6. Создайте библиотеку даркнета
7. Снова включите метки подсказок (код «Алфавит»)
8. Снова включите код CUDA/GPU.
9. Повторно включите CUDNN.
10. Снова включите половину CUDNN.
11. Не кодируйте архитектуру CUDA жестко.
12. Улучшена информация о версии CUDA.
13. Снова включите AVX.
14. Удалите старое решение и Makefile.
15. Сделайте OpenCV необязательным
16. Удалите зависимость от старой библиотеки pthread.
17. Удалить STB
18. Перепишите CMakeLists.txt, чтобы использовать новый инструментарий CUDA.
19. Удалите старый «алфавитный» код и удалите более 700 изображений в данных/метках.
20. Создание за пределами исходного кода
21. Улучшен вывод номера версии.
22. Оптимизация производительности, связанная с обучением (текущие задачи)
23. Оптимизация производительности, связанная с выводом (текущие задачи)
24. Используйте ссылки по значению, когда это возможно.
25. Очистите файлы .hpp.
26. Переписать darknet.h
27. Не конвертируйте cv::Mat в void*, вместо этого используйте его как правильный объект C++.
28. Исправьте или сохраните последовательное использование внутренних структур изображений.
29. Исправление сборки для устройств Jetson на базе ARM.
- Оригинальные устройства Jetson вряд ли будут исправлены, поскольку они больше не поддерживаются NVIDIA (нет компилятора C++17).
- Работает новое устройство Jetson Orin
30. Исправьте API Python в версии 3.
31. Требуется улучшенная поддержка Python (кому-нибудь из разработчиков Python нужна помощь?)
краткосрочные цели
1. Замените printf() на std::cout (в разработке)
2. Изучите поддержку старых камер Zed.
3. Улучшенный и более последовательный анализ командной строки (в разработке)
среднесрочные цели
1. Удалите все коды символов* и замените их на std::string.
2. Не скрывать предупреждения и очищать предупреждения компилятора (в процессе)
3. Лучше использовать cv::Mat вместо пользовательских структур изображений в C (работа в стадии разработки).
4. Замените старую функциональность списка на std::vector или std::list.
5. Исправлена поддержка одноканальных изображений в оттенках серого.
6. Добавьте поддержку N-канальных изображений, где N > 3 (например, изображения с дополнительной глубиной или горячими каналами).
7. Текущая очистка кода (в процессе)
долгосрочные цели
1. Исправьте проблемы CUDA/CUDNN на всех графических процессорах.
2. Перепишите код CUDA+cuDNN.
3. Рассмотрите возможность добавления поддержки графических процессоров сторонних производителей.
4. Повернутая ограничительная рамка или своего рода «угловая» опора.
5. Ключевые моменты/скелет
6. Тепловая карта (в процессе)
7. Сплит