Платформа обнаружения объектов Darknet и YOLO
Даункоды и обновленный список общедоступных BitTorrent-трекеров.
Списки
Эти списки автоматически обновляются каждый день. Последнее обновление 31.10.2024:
У вас проблемы с DNS? В этих списках присутствуют те же трекеры, но с IP-адресами вместо доменов:
Примечания
Способствовать
Контакт
ngosang [@] hotmail [.es]
Сторонние инструменты
Сторонние онлайн-инструменты
пример:
Лицензия Апач-2.0
Оглавление
Платформа обнаружения объектов Darknet и YOLO
Статьи
Общая информация
Даркнет-версия
MSCOCO Предварительно обученные веса
Здание
Гугл Колаб
Метод CMake в Linux
Метод Windows CMake
Использование даркнета
интерфейс командной строки
Обучение
Другие инструменты и ссылки
Дорожная карта
Краткосрочные цели
Среднесрочные цели
Долгосрочные цели
Платформа обнаружения объектов Darknet и YOLO
Darknet — это платформа нейронных сетей с открытым исходным кодом, написанная в основном на C, C++ и CUDA.
YOLO (You Only Look Once) — это передовая система обнаружения объектов в реальном времени, работающая в рамках Darknet.
Прочтите о том, как Hank.ai поддерживает сообщество Darknet/YOLO.
Изучите веб-сайт 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/YOLO может обрабатывать каждый видеокадр (считывать, изменять размер и обрабатывать) за 1 миллисекунду или меньше.
Присоединяйтесь к серверу Discord Darknet/YOLO, если вам нужна помощь или вы хотите обсудить Darknet/YOLO: https://discord.gg/zSq8rtW
Версия Darknet/YOLO для ЦП работает на различных устройствах, включая Raspberry Pi, облачные серверы и серверы Colab, настольные компьютеры, ноутбуки и высокопроизводительные учебные устройства. Для версии с графическим процессором требуется графический процессор NVIDIA с поддержкой CUDA.
Известно, что Darknet/YOLO совместим с Linux, Windows и Mac. Подробности смотрите в инструкциях по сборке ниже.
Даркнет-версия
У оригинального инструмента Darknet, разработанного Джозефом Редмоном в период с 2013 по 2017 год, не было номера версии. Мы считаем эту версию 0.x.
Последующий популярный репозиторий даркнета, который поддерживал Алексей Бочковский с 2017 по 2021 год, также не имел номера версии. Мы рассматриваем эту версию 1.x.
Репозиторий Darknet, спонсируемый Hank.ai и поддерживаемый Стефаном Шареттом с 2023 года, был первым, включившим команду версии. С 2023 года до конца 2024 года он возвращал версию 2.x «OAK».
Основная цель заключалась в том, чтобы свести к минимуму нарушение существующей функциональности при одновременном ознакомлении с кодовой базой.
Ключевые изменения:
Унифицированная сборка: переписаны этапы сборки, чтобы создать единый согласованный метод с использованием CMake как для Windows, так и для Linux.
Миграция C++: преобразована база кода для использования компилятора C++.
Улучшенная диаграмма: улучшена визуализация файлаchart.png во время обучения.
Исправления ошибок и оптимизация: устранены многочисленные ошибки и реализована оптимизация производительности, в первую очередь направленная на сокращение времени обучения.
Последняя ветвь этой кодовой базы — версия 2.1, расположенная в ветке v2.
Следующий этап разработки начался в середине 2024 года и завершился выпуском версии 3.x «JAZZ» в октябре 2024 года.
Ключевые улучшения Darknet V3 («Джаз»):
Производительность: значительная оптимизация производительности как во время обучения, так и во время вывода.
Изменения API: изменен устаревший API C. Приложения, использующие оригинальный API Darknet, потребуют незначительных изменений. См.: https://darknetcv.ai/api/api.html.
Новый API: представлен новый API Darknet V3 C и C++: https://darknetcv.ai/api/api.html.
Обновленные примеры: добавлены новые приложения и примеры кода в каталоге src-examples: https://darknetcv.ai/api/files.html.
Вы всегда можете вернуться к предыдущей ветке v2, если вам нужно выполнить определенные команды. Пожалуйста, сообщите нам, если вы обнаружите какие-либо отсутствующие команды, чтобы мы могли рассмотреть возможность их обратного включения.
Удаление ключей Darknet V3 («Джаз»):
Устаревшие команды: удалено множество устаревших и неподдерживаемых команд.
MSCOCO Предварительно обученные веса
Для удобства несколько популярных версий YOLO были предварительно обучены на наборе данных MSCOCO. Этот набор данных включает 80 классов, которые можно найти в текстовом файле cfg/coco.names.
Помимо MSCOCO, для тестирования 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 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 необходимы, если вы собираетесь обучать собственную сеть.
1. Установите CUDA. Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
2. Установите cuDNN: посетите https://developer.nvidia.com/rdp/cudnn-download или https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-. обзор установки для загрузки и установки cuDNN.
После установки CUDA убедитесь, что вы можете запускать nvcc и nvidia-smi. Возможно, вам придется изменить переменную PATH.
Если вы установите CUDA или CUDA+cuDNN позже или обновите программное обеспечение NVIDIA до более новой версии:
Обновите CMake. Если ваша версия CMake устарела, обновите ее с помощью следующих команд:
`бить
sudo apt-get очистить cmake
sudo snap установить cmake --classic
`
Перезапустите оболочку: если вы используете bash в качестве командной оболочки, перезапустите оболочку. При использовании рыбы путь должен обновляться автоматически.
Создание Даркнета:
`бить
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git клон https://github.com/hank-ai/darknetcd даркнет
сборка mkdir buildcd
cmake -DCMAKEBUILDTYPE=Выпустить ..
сделать -j4
упаковка
sudo dpkg -i darknet-ВЕРСИЯ.deb
`
Продвинутые пользователи:
Установка RPM. Чтобы создать файл установки RPM вместо файла DEB, измените соответствующие строки в CM_package.cmake. Перед выполнением пакета make -j4 отредактируйте эти строки:
`cmake
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
Для таких дистрибутивов, как CentOS и OpenSUSE, измените строки так:
`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, вы только собрали Darknet, а не установили его. Убедитесь, что вы установили файл .deb или .rpm, как описано выше.
Метод Windows CMake
Эти инструкции предполагают новую установку Windows 11 22H2.
1. Предварительные условия для установки: откройте стандартную командную строку cmd.exe и выполните следующие команды:
`бить
winget установить Git.Git
winget установить Kitware.CMake
winget установить nsis.nsis
winget install Microsoft.VisualStudio.2022.Community
`
2. Измените Visual Studio. Настройте Visual Studio для поддержки приложений C++:
Нажмите меню «Пуск» Windows и запустите «Установщик Visual Studio».
Выберите «Изменить».
Выберите «Разработка настольных компьютеров с помощью C++».
Нажмите «Изменить» в правом нижнем углу, а затем нажмите «Да».
3. Командная строка разработчика. После завершения установки щелкните меню «Пуск» Windows и выберите «Командная строка разработчика для VS 2022». Не используйте PowerShell для этих действий, так как это может вызвать проблемы!
Продвинутые пользователи:
Вместо использования командной строки разработчика вы можете выбрать обычную командную строку или подключиться через SSH и вручную выполнить «Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat».
4. Установите 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.
Посетите 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.
5. Клонирование и сборка Darknet. После успешного выполнения предыдущих шагов клонируйте Darknet и создайте его. На этом этапе укажите местоположение VCPKG, чтобы CMake мог найти 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
`
Если вы столкнулись с ошибкой об отсутствии библиотек 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 позволит:
Создайте каталог под названием 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 отсутствует, Darknet только собирается, а не устанавливается. Обязательно заполните каждую панель мастера установки 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 раз подряд и выбирать лучшие якоря из всех рассчитанных вариантов. Однако, если вы хотите использовать старый метод Darknet:
`бить
детектор даркнета кальканчоры животные.данные -numof_clusters 6 -ширина 320 -высота 256
`
Обучение новой сети:
`бить
компакт-диск ~/nn/животные/
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
(Дополнительную информацию см. в разделе «Обучение» ниже.)
Обучение
Быстрые ссылки на соответствующие разделы FAQ по Darknet/YOLO:
Настройка файлов и каталогов: как мне настроить файлы и каталоги?
Файлы конфигурации: какой файл конфигурации мне следует использовать?
Команда обучения: какую команду следует использовать при обучении собственной сети?
Самый простой способ аннотировать и обучать — использовать DarkMark. Это упрощает процесс создания всех необходимых файлов Darknet. Использование DarkMark настоятельно рекомендуется для обучения новых нейронных сетей.
Если вы предпочитаете ручную настройку файлов для пользовательского обучения сети:
1. Создайте папку: создайте новую папку для хранения файлов. В этом примере мы создадим нейронную сеть для обнаружения животных; поэтому создается следующий каталог: ~/nn/animals/.
2. Скопировать файл конфигурации. Скопируйте файл конфигурации Darknet, который вы хотите использовать в качестве шаблона. Например, см. cfg/yolov4-tiny.cfg. Поместите его в созданную папку. В этом примере теперь у нас есть файл ~/nn/animals/animals.cfg.
3. Создайте животные.имена: создайте текстовый файл с именем животные.имена в той же папке, что и файл конфигурации. В этом примере теперь есть ~/nn/animals/animals.names.
4. Отредактируйте файлы Animals.names: отредактируйте файл Animal.names с помощью текстового редактора. Перечислите классы, которые вы собираетесь использовать. Каждый класс должен занимать отдельную строку, без пустых строк и комментариев. В этом примере файл .names будет содержать четыре строки:
`
собака
кот
птица
лошадь
`
5. Создайте Animal.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. В этих двух файлах необходимо по отдельности перечислить все изображения, которые Darknet будет использовать для обучения и проверки при расчете mAP%. Включите одно изображение в строку. Путь и имена файлов могут быть относительными или абсолютными.
8. Измените файл .cfg: воспользуйтесь текстовым редактором, чтобы изменить файл .cfg.
Убедитесь, что пакет = 64.
Обратите внимание на подразделения. В зависимости от размеров вашей сети и объема памяти графического процессора вам может потребоваться увеличить количество подразделений. Идеальное значение — 1, поэтому начните с него. См. FAQ по Darknet/YOLO, если 1 вам не подходит.
Обратите внимание на maxbatches=..... Хорошее начальное значение — это количество классов, умноженное на 2000. В этом примере у нас 4 животных, поэтому 4 * 2000 = 8000, что означает максимальное количество партий = 8000.
Обратите внимание, шаги=..... Установите значение 80% и 90% от максимального количества пакетов. В этом примере, если для параметра maxbatches установлено значение 8000, мы будем использовать шаги = 6400,7200.
Обратите внимание на ширину=... и высоту=..... Это размеры сети. Часто задаваемые вопросы 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
`
Другие инструменты и ссылки
Для управления проектами Darknet/YOLO, аннотирования изображений, проверки аннотаций и создания необходимых файлов для обучения с помощью Darknet см. DarkMark.
Чтобы найти надежную альтернативу Darknet CLI, использовать мозаику изображений, отслеживание объектов в видео или надежный C++ API для коммерческих приложений, изучите DarkHelp.
Проверьте, может ли FAQ по 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. Удалены приставки.
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.
30. Оригинальные устройства Jetson вряд ли будут исправлены, поскольку NVIDIA больше их не поддерживает (нет компилятора C++17).
31. Новые устройства Jetson Orin работоспособны.
32. Исправлен API Python в версии 3.
Краткосрочные цели:
1. Замените printf() на std::cout (в процессе).
2. Вернитесь к поддержке старой камеры Zed.
3. Улучшение и повышение согласованности анализа командной строки (в процессе).
Среднесрочные цели:
1. Удалите весь код char* и замените его на 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. Внедрите сегментацию.