Платформа обнаружения объектов Darknet и YOLO
Логотипы !darknet и hank.ai
Darknet — это платформа нейронных сетей с открытым исходным кодом, написанная на C, C++ и CUDA.
YOLO (You Only Look Once) — это современная система обнаружения объектов в режиме реального времени, работающая в рамках Darknet.
Прочтите, как Hank.ai помогает сообществу Darknet/YOLO: https://hank.ai/
Анонсируем Darknet V3 «Джаз»: https://darknetcv.ai/
Пожалуйста, прочтите FAQ по Darknet/YOLO: https://darknetcv.ai/faq/
Присоединяйтесь к серверу Discord Darknet/YOLO: https://discord.gg/zSq8rtW
Статьи
1. Статья YOLOv7: https://arxiv.org/abs/2207.02670.
2. Бумага Scaled-YOLOv4: https://arxiv.org/abs/2103.05293
3. Статья YOLOv4: https://arxiv.org/abs/2004.10934.
4. Бумага YOLOv3: https://pjreddie.com/media/files/papers/YOLOv3.pdf.
Общая информация
Платформа Darknet/YOLO по-прежнему работает быстрее и точнее, чем другие платформы и версии YOLO.
Эта платформа полностью бесплатна и имеет открытый исходный код. Вы можете включить Darknet/YOLO в существующие проекты и продукты, в том числе коммерческие, без лицензии и оплаты.
Darknet V3 («Джаз»), выпущенный в октябре 2024 года, может точно воспроизводить видео набора данных LEGO со скоростью до 1000 кадров в секунду при использовании графического процессора NVIDIA RTX 3090. Это означает, что каждый видеокадр считывается, изменяется размер и обрабатывается Darknet/YOLO за 1 миллисекунду или меньше.
Версия Darknet/YOLO для ЦП может работать на простых устройствах, таких как Raspberry Pi, облачных серверах и серверах Colab, настольных компьютерах, ноутбуках и высокопроизводительных учебных установках. Для версии Darknet/YOLO с графическим процессором требуется графический процессор NVIDIA с поддержкой CUDA.
Известно, что Darknet/YOLO работает на Linux, Windows и Mac. См. инструкции по сборке ниже.
Даркнет-версия
1. Версия 0.x: оригинальный инструмент Darknet, написанный Джозефом Редмоном в 2013–2017 годах.
2. Версия 1.x: следующий популярный репозиторий Darknet, который поддерживал Алексей Бочковский в период с 2017 по 2021 год.
3. Версия 2.x «OAK»: репозиторий Darknet, спонсируемый Hank.ai и поддерживаемый Стефаном Шареттом, начиная с 2023 года. Это был первый репозиторий с командой версии. В этой версии внесены следующие изменения:
— Переписаны шаги сборки для единого подхода CMake как для Windows, так и для Linux.
— Преобразовал кодовую базу для использования компилятора C++.
— Улучшено создание файлаchart.png во время тренировки.
- Исправлены ошибки и оптимизирована производительность, связанная со временем обучения.
4. Версия 2.1: Последняя ветвь кодовой базы 2.x, найденная в ветке v2.
5. Версия 3.x «ДЖАЗ»: следующий этап разработки, выпущен в октябре 2024 года.
- Удалены многие старые и неподдерживаемые команды.
- Реализована оптимизация производительности для обучения и вывода.
— Изменен устаревший 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.
Вы всегда можете извлечь предыдущую ветку v2, если вам нужно запустить одну из команд из этой версии. Сообщите нам, если вы обнаружите какие-либо отсутствующие команды, чтобы мы могли добавить их обратно.
MSCOCO Предварительно обученные веса
Несколько популярных версий YOLO для удобства были предварительно обучены на наборе данных MSCOCO. Этот набор данных содержит 80 классов, которые можно увидеть в текстовом файле cfg/coco.names.
Для тестирования Darknet/YOLO доступно несколько других, более простых наборов данных и предварительно обученных весов, например LEGO Gears и Rolodex. Подробности смотрите в FAQ по Darknet/YOLO.
Предварительно обученные веса MSCOCO можно загрузить из нескольких разных мест, включая этот репозиторий:
YOLOv2 (ноябрь 2016 г.):
yolov2-tiny.weights
yolov2-full.weights
YOLOv3 (май 2018 г.):
yolov3-tiny.weights
yolov3-full.weights
YOLOv4 (май 2020 г.):
yolov4-tiny.weights
yolov4-full.weights
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, точно так же, как вам не нужно быть механиком, чтобы водить машину.
Гугл Колаб
Инструкции Google Colab такие же, как инструкции Linux. Доступно несколько блокнотов Jupyter, показывающих, как выполнять различные задачи, например обучение новой сети.
Посмотрите блокноты в подкаталоге colab или следуйте инструкциям для Linux ниже.
Метод CMake в Linux
Руководство по сборке Darknet для Linux
1. Необязательно: если у вас современный графический процессор NVIDIA, на этом этапе вы можете установить либо CUDA, либо CUDA+cuDNN. Если установлен, Darknet будет использовать ваш графический процессор для ускорения обработки изображений (и видео).
2. Установите необходимые пакеты:
`бить
sudo apt-get install build-essential git libopencv-dev cmake
`
3. Клонируйте репозиторий Darknet:
`бить
mkdir ~/srccd ~/src
клон git https://github.com/hank-ai/darknet
`
4. Создайте каталог сборки:
`бить
компакт-диск даркнет
сборка mkdir
сборка компакт-диска
`
5. Создайте файлы проекта CMake:
`бить
cmake -DCMAKEBUILDTYPE=Выпустить ..
`
Важно: вам необходимо удалить файл CMakeCache.txt из каталога сборки Darknet, чтобы заставить CMake повторно найти все необходимые файлы.
6. Создайте даркнет:
`бить
сделать пакет -j4
`
7. Установите пакет Darknet:
`бить
sudo dpkg -i darknet-ВЕРСИЯ.deb
`
Установка CUDA и cuDNN (необязательно)
Даркнет может работать без CUDA, но если вы хотите обучить собственную сеть, потребуется либо CUDA, либо CUDA+cuDNN.
1. Установите CUDA:
- Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
- Убедитесь, что вы можете запустить nvcc и nvidia-smi. Возможно, вам придется изменить переменную PATH.
2. Установите 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 или cuDNN
Если вы установите CUDA или CUDA+cuDNN позже или обновитесь до более новой версии программного обеспечения NVIDIA:
1. Восстановить Даркнет:
— Удалите файл CMakeCache.txt из каталога сборки Darknet.
- Запустите команды cmake и make еще раз.
Опытные пользователи
Чтобы создать установочный файл RPM вместо файла DEB, отредактируйте соответствующие строки в CM_package.cmake перед запуском пакета make -j4.
`cmake
# SET (CPACK_GENERATOR "DEB")
НАБОР (CPACK_GENERATOR «ОБ/МИН»)
`
Чтобы установить установочный пакет после завершения сборки, используйте обычный менеджер пакетов вашего дистрибутива. Например, в системах на базе Debian, таких как Ubuntu:
`бить
sudo dpkg -i darknet-2.0.1-Linux.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.
Запустите следующую команду, чтобы проверить установку:
`бить
даркнет-версия
`
Метод Windows CMake
Руководство по сборке Darknet для Windows
1. Установите необходимое программное обеспечение:
- Откройте обычное окно командной строки cmd.exe и выполните следующие команды:
`бить
winget установить Git.Git
winget установить Kitware.CMake
winget установить nsis.nsis
winget install Microsoft.VisualStudio.2022.Community
`
2. Измените установку Visual Studio:
- Нажмите меню «Пуск» Windows и запустите «Установщик Visual Studio».
- Нажмите «Изменить».
- Выберите «Разработка настольных компьютеров с помощью C++».
- Нажмите «Изменить» в правом нижнем углу, затем нажмите «Да».
3. Установите Microsoft VCPKG:
- После того, как все будет загружено и установлено, снова нажмите меню «Пуск» Windows и выберите «Командная строка разработчика для VS 2022». Не используйте PowerShell для этих действий!
- Выполните следующие команды:
`бить
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
`
Важно: будьте терпеливы на этом последнем этапе, так как его выполнение может занять много времени. Нужно скачать и собрать много вещей.
4. Необязательно: установите CUDA и cuDNN.
- Если у вас современный графический процессор NVIDIA, на этом этапе вы можете установить либо CUDA, либо CUDA+cuDNN. Если установлен, Darknet будет использовать ваш графический процессор для ускорения обработки изображений (и видео).
— Вам необходимо удалить файл CMakeCache.txt из каталога сборки Darknet, чтобы заставить CMake повторно найти все необходимые файлы.
- Не забудьте пересобрать Даркнет.
5. Установите CUDA:
- Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
- Убедитесь, что вы можете запустить nvcc.exe и nvidia-smi.exe. Возможно, вам придется изменить переменную PATH.
6. Установите cuDNN:
- Посетите https://developer.nvidia.com/rdp/cudnn-download или https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows, чтобы загрузить и установить cuDNN.
- После загрузки cuDNN разархивируйте и скопируйте каталоги bin, include и lib в C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[версия]/. Возможно, вам придется перезаписать некоторые файлы.
7. Клонируйте репозиторий Darknet и выполните сборку:
`бить
компакт-диск 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
`
8. Скопируйте библиотеки DLL CUDA (необязательно):
- Если вы получаете сообщение об отсутствующих DLL-файлах CUDA или cuDNN, таких как cublas64_12.dll, вручную скопируйте файлы CUDA .dll в тот же выходной каталог, что и darknet.exe. Например:
`бить
скопировать «C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll» src-cliRelease
`
9. Перезапустите msbuild.exe, чтобы создать установочный пакет NSIS:
`бить
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Опытные пользователи
Вместо запуска командной строки разработчика вы можете использовать обычную командную строку или подключиться к устройству по протоколу SSH и вручную запустить Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat.
При сборке OpenCV вы можете добавить множество других дополнительных модулей. Запустите .vcpkg.exe search opencv, чтобы просмотреть полный список.
Результатом работы команды cmake является обычный файл решения Visual Studio Darknet.sln. Вы можете игнорировать командную строку и загрузить проект Darknet в Visual Studio, если вы разработчик программного обеспечения, регулярно использующий графический интерфейс 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.
Запустите следующую команду, чтобы проверить установку после запуска мастера NSIS:
`бить
C: Версия Program FilesDarknetbindarknet.exe
`
Использование даркнета
интерфейс командной строки
Ниже приведен не полный список всех команд, поддерживаемых Darknet.
В дополнение к интерфейсу командной строки Darknet обратите внимание на интерфейс командной строки проекта DarkHelp, который предоставляет альтернативный интерфейс командной строки Darknet/YOLO. Интерфейс командной строки DarkHelp также имеет несколько расширенных функций, которые недоступны непосредственно в Darknet. Вы можете использовать как Darknet CLI, так и DarkHelp CLI вместе; они не являются взаимоисключающими.
Для большинства команд, показанных ниже, вам понадобится файл .weights с соответствующими файлами .names и .cfg. Вы можете либо обучить свою собственную сеть (настоятельно рекомендуется!), либо загрузить нейронную сеть, которую кто-то уже обучил и бесплатно разместил в Интернете. Примеры предварительно обученных наборов данных включают в себя:
LEGO Gears (поиск объектов по изображению)
Rolodex (поиск текста на изображении)
MSCOCO (стандартное обнаружение объектов класса 80)
Команды для запуска
1. Получите помощь:
`бить
помощь в даркнете
`
2. Проверьте версию:
`бить
даркнет-версия
`
3. Прогнозирование с использованием изображения:
- В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
`
4. Выходные координаты:
- В2:
`бить
Тест детектора даркнета животные.данные животные.cfg животныеbest.weights -extoutput собака.jpg
`
- В3:
`бить
darknet01inference_images животные собака.jpg
`
- Темная помощь:
`бить
DarkHelp --json животные.cfg животные.названия животных_лучшие.веса собаки.jpg
`
5. Работа с видео:
- В2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животныеbest.weights -extoutput test.mp4
`
- В3:
`бить
darknet03display_videos животные.cfg test.mp4
`
- Темная помощь:
`бить
DarkHelp животные.cfg животные.имена животных_лучшие.веса test.mp4
`
6. Чтение с веб-камеры:
- В2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животные_лучшие.веса -c 0
`
- В3:
`бить
darknet08display_webcam животные
`
7. Сохраните результаты в видео:
- В2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животныеbest.weights test.mp4 -outfilename res.avi
`
- В3:
`бить
darknet05processvideosmultithreaded животные.cfg животные.имена животных_лучшие.тест веса.mp4
`
- Темная помощь:
`бить
DarkHelp животные.cfg животные.имена животных_лучшие.веса test.mp4
`
8. Вывод JSON:
- В2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животныеbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
- В3:
`бить
darknet06imagestojson животные image1.jpg
`
- Темная помощь:
`бить
DarkHelp --json животные.названия животных.cfg животные_лучшие.веса image1.jpg
`
9. Запуск на конкретном графическом процессоре:
- В2:
`бить
Демонстрация детектора даркнета животные.данные животные.cfg животные_лучшие.веса -i 1 test.mp4
`
10. Проверка точности нейронной сети:
`бить
Карта детектора даркнета вождение.данные вождение.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
`
11. Проверка точности mAP@IoU=75:
`ударить
Карта детектора даркнета животные.данные животные.cfg животныеbest.weights -iouthresh 0.75
`
12. Пересчет якорей:
- DarkMark: Лучше всего пересчитывать привязки в DarkMark, так как он запускается 100 раз подряд и выбирает лучшие привязки из всех рассчитанных.
- Даркнет: Если вы хотите использовать старый метод в Даркнете:
`ударить
детектор даркнета кальканчоры животные.данные -numof_clusters 6 -ширина 320 -высота 256
`
13. Обучите новую сеть:
`ударить
компакт-диск ~/nn/животные/
детектор даркнета -map -dont_show train животные.данные животные.cfg
`
Обучение
Быстрые ссылки на соответствующие разделы часто задаваемых вопросов Darknet/YOLO
1. Как мне настроить файлы и каталоги?
2. Какой файл конфигурации мне следует использовать?
3. Какую команду мне следует использовать при обучении собственной сети?
Использование DarkMark для аннотаций и обучения (рекомендуется)
Самый простой способ аннотировать и обучать — использовать DarkMark, который создает все необходимые файлы Darknet. Это настоятельно рекомендуется для обучения новой нейронной сети.
Настройка файлов вручную для обучения пользовательской сети
Если вы предпочитаете ручную настройку, выполните следующие действия:
1. Создайте новую папку:
- Создайте новую папку для хранения файлов тренировок. Например, вы можете создать ~/nn/animals/, чтобы обучить сеть обнаружению животных.
2. Скопируйте шаблон файла конфигурации:
— Скопируйте один из файлов конфигурации Darknet из cfg/ в качестве шаблона. Например, вы можете использовать cfg/yolov4-tiny.cfg. Поместите это в созданную вами папку. Теперь у вас должен быть файл ~/nn/animals/animals.cfg.
3. Создайте файл Animal.names:
- Создайте текстовый файл с именем животные.имена в той же папке, что и файл конфигурации.
4. Отредактируйте файл Animal.names:
- Перечислите классы, которые вы хотите обнаружить, по одной записи в строке, без пустых строк и комментариев. Например:
`
собака
кот
птица
лошадь
`
5. Создайте файл Animals.data:
- Создайте текстовый файл с именем животные.данные в той же папке.
- Например, файл Animal.data может содержать:
`
классы=4
train=/home/username/nn/animals/animals_train.txt
valid=/home/username/nn/animals/animals_valid.txt
имена=/home/имя_пользователя/nn/animals/animals.names
резервная копия =/home/имя пользователя/nn/животные
`
6. Создайте папку набора данных:
- Создайте папку для хранения изображений и аннотаций. Например, вы можете создать файл ~/nn/animals/dataset.
7. Аннотируйте изображения:
- Для каждого изображения необходим соответствующий файл .txt с аннотациями. Формат этих файлов .txt специфичен и требует указания точных координат аннотаций. Используйте DarkMark или подобное программное обеспечение для аннотирования ваших изображений.
8. Создайте файлы Animalstrain.txt и Animalvalid.txt:
- В этих текстовых файлах перечислены изображения, используемые для обучения и проверки соответственно. Каждое изображение должно находиться на отдельной строке с относительными или абсолютными путями.
9. Измените файл конфигурации:
- Откройте файл Animals.cfg в текстовом редакторе и внесите следующие изменения:
- пакет = 64: убедитесь, что это значение установлено.
- Подразделения: Лучшее значение — 1. Возможно, вам придется увеличить это значение в зависимости от памяти вашего графического процессора и размеров сети.
- maxbatches: установите разумное значение, обычно в 2000 раз превышающее количество классов. В этом примере используйте maxbatches=8000 (4 класса * 2000).
- шаги: установите значения 80% и 90% от максимального количества пакетов. В этом примере используйте шаги = 6400,7200 (поскольку maxbatches = 8000).
- Ширина и высота: установите нужные размеры сети. См. FAQ по Darknet/YOLO, чтобы узнать, как выбрать лучший размер.
- классы: найдите все экземпляры этой строки и измените ее, чтобы она соответствовала количеству классов в вашем файле .names (в этом примере классы=4).
- фильтры: поиск всех экземпляров этой строки в разделах [convolutional] перед каждым разделом [yolo]. Используемое значение: (число классов + 5) 3. В этом примере используйте фильтры = 27 (4 + 5 3).
10. Начните обучение:
`бить
компакт-диск ~/nn/животные/
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
11. Мониторинг прогресса обучения:
- Потерпи! Лучшие веса будут сохранены как животные_best.weights.
- Следить за ходом обучения можно, просмотрев файлchart.png.
- Дополнительные параметры, которые вы, возможно, захотите использовать во время обучения, см. в FAQ по Darknet/YOLO.
12. Добавление детализации к результатам обучения:
`бить
детектор даркнета -map -dont_show --verbose train животные.данные животные.cfg
`
Другие инструменты и ссылки
DarkMark: для управления проектами Darknet/YOLO, аннотирования изображений, проверки аннотаций и создания файлов для обучения Darknet.
DarkHelp: надежная альтернатива CLI Darknet, использующая мозаику изображений, отслеживание объектов в видео и надежный API C++, который можно использовать в коммерческих приложениях.
Часто задаваемые вопросы по Darknet/YOLO: https://darknetcv.ai/faq/
Канал Стефана на YouTube: https://www.youtube.com/channel/UCYQ2k0L3X0c56l9gE2r1RQ
Discord-сервер Darknet/YOLO: https://discord.gg/zSq8rtW
Дорожная карта
Последнее обновление 30 октября 2024 г.:
Завершенный
Заменен qsort() на std::sort(), который использовался во время обучения (некоторые непонятные остались).
Удалены check_mistakes, getchar() и system().
Преобразовал Darknet для использования компилятора C++ (g++ в Linux, VisualStudio в Windows).
Исправлена сборка Windows.
Исправлена поддержка Python.
Создана библиотека Darknet.
Снова включены метки для прогнозов (код «Алфавит»).
Повторно включен код 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 работают.
Исправлен Python API в версии V3.
Улучшена поддержка Python. (Кто-нибудь из разработчиков Python хочет помочь с этим?)
Краткосрочные цели
Замените printf() на std::cout (в процессе).
Посмотрите на поддержку старых камер ZED.
Улучшите и сделайте согласованный анализ командной строки (в процессе).
Среднесрочные цели
Удалите весь код char* и замените его на std::string.
Не скрывать предупреждения и очищать предупреждения компилятора (в процессе).
Улучшите использование cv::Mat вместо пользовательской структуры изображения в C (в разработке).
Замените старую функциональность списка на std::vector или std::list.
Исправлена поддержка одноканальных изображений в оттенках серого.
Добавьте поддержку N-канальных изображений, где N > 3 (например, изображения с дополнительной глубиной или тепловым каналом).
Текущая очистка кода (в процессе).
Долгосрочные цели
Исправьте проблемы CUDA/CUDNN со всеми графическими процессорами.
Перепишите код CUDA+cuDNN.
Рассмотрите возможность добавления поддержки графических процессоров сторонних производителей.
Повернутые ограничивающие рамки или какая-то «угловая» опора.
Ключевые точки/скелетоны.
Тепловые карты (в разработке).
Сегментация.