Платформа обнаружения объектов Darknet и YOLO
Darknet — это платформа нейронных сетей с открытым исходным кодом, созданная с использованием C, C++ и CUDA. Он служит основой для YOLO (You Only Look Once), передовой системы обнаружения объектов в реальном времени, известной своей скоростью и точностью.
Узнайте о том, как Hank.ai поддерживает сообщество Darknet/YOLO: [ссылка на блог Hank.ai]
Посетите официальный сайт Darknet/YOLO: [ссылка на сайт Darknet]
Погрузитесь в подробный FAQ по Darknet/YOLO: [ссылка на FAQ]
Общайтесь с активным сообществом Darknet/YOLO на Discord: [ссылка на сервер Discord]
Статьи
1. YOLOv7: [ссылка на статью]
2. Scaled-YOLOv4: [ссылка на статью]
3. YOLOv4: [ссылка на статью]
4. YOLOv3: [ссылка на статью]
Общая информация
Платформа Darknet/YOLO продолжает доминировать над другими платформами и версиями YOLO с точки зрения скорости и точности. Его природа с открытым исходным кодом и полная свобода от лицензионных сборов позволяют легко интегрировать его в существующие проекты и коммерческие продукты.
Darknet V3 («Джаз»), выпущенный в октябре 2024 года, демонстрирует выдающуюся производительность, обрабатывая видео набора данных LEGO с поразительной скоростью 1000 кадров в секунду с использованием графического процессора NVIDIA RTX 3090. Это соответствует времени обработки менее 1 миллисекунды на видеокадр.
Присоединяйтесь к активному серверу Discord Darknet/YOLO по адресу [ссылка на сервер Discord] для поддержки, обсуждений и совместного обучения.
Darknet/YOLO обслуживает широкий спектр устройств, от Raspberry Pi до высококлассных учебных устройств, поддерживая версии как с процессором, так и с графическим процессором. Для версии с графическим процессором требуется графический процессор 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 года.
Вы всегда можете получить доступ к предыдущей ветке «v2» для выполнения команд из этих версий. Пожалуйста, сообщите нам, если вы обнаружите какие-либо недостающие команды, и мы рассмотрим их реинтеграцию.
Значительные изменения в Darknet V3 включают в себя:
Удаление команд: Удаление устаревших и редко используемых команд.
Оптимизация производительности: улучшения производительности обучения и вывода.
Модификация устаревшего API: модификация устаревшего API C; приложения, использующие исходный API Darknet, могут потребовать незначительных изменений.
Новый API C/C++: введение нового API Darknet V3 C и C++.
Обновленный пример кода: включение новых приложений и примеров кода в каталог «src-examples».
Подробную информацию о новом API: [ссылка на документацию по API Darknet V3]
Изучите обновленный пример кода: [ссылка на файлы API Darknet V3]
MSCOCO Предварительно обученные веса
Несколько популярных версий YOLO для удобства были предварительно обучены на наборе данных MSCOCO. Этот набор данных включает 80 классов, которые легко идентифицировать в текстовом файле «cfg/coco.names».
Помимо MSCOCO, Darknet/YOLO предоставляет предварительно обученные веса для более простых наборов данных, таких как LEGO Gears и Rolodex, что позволяет вам экспериментировать с различными сценариями. Подробную информацию можно найти в FAQ по Darknet/YOLO.
Предварительно обученные веса MSCOCO доступны из нескольких источников, включая этот репозиторий:
YOLOv2 (ноябрь 2016 г.):
YOLOv2-tiny: [ссылка на веса]
YOLOv2-full: [ссылка на веса]
YOLOv3 (май 2018 г.):
YOLOv3-tiny: [ссылка на веса]
YOLOv3-full: [ссылка на веса]
YOLOv4 (май 2020 г.):
YOLOv4-tiny: [ссылка на веса]
YOLOv4-full: [ссылка на веса]
YOLOv7 (август 2022 г.):
YOLOv7-tiny: [ссылка на веса]
YOLOv7-full: [ссылка на веса]
Эти предварительно обученные веса в первую очередь предназначены для демонстрационных целей. Соответствующие файлы .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 для создания необходимых файлов проекта.
Для сборки, установки и запуска Darknet/YOLO не требуются знания C++, аналогично вождению автомобиля, не будучи механиком.
Гугл Колаб
Инструкции Google Colab идентичны инструкциям Linux. Несколько ноутбуков Jupyter демонстрируют различные задачи, например обучение новой сети.
Изучите блокноты в подкаталоге «colab» или следуйте инструкциям Linux ниже.
Метод CMake в Linux
Руководство по сборке Darknet для Linux
Необязательно: если у вас современный графический процессор NVIDIA, на этом этапе вы можете установить либо CUDA, либо CUDA+cuDNN. Если установлен, Darknet будет использовать ваш графический процессор для ускорения обработки изображений (и видео).
Вам необходимо удалить файл CMakeCache.txt из каталога сборки Darknet, чтобы заставить CMake повторно найти все необходимые файлы.
Не забудьте перестроить Даркнет.
Даркнет может работать и без него, но если вы хотите обучить собственную сеть, потребуется либо CUDA, либо CUDA+cuDNN.
1. Установите необходимые условия:
`бить
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Клонируйте репозиторий Darknet:
`бить
mkdir ~/srccd ~/src
git клон https://github.com/hank-ai/darknetcd даркнет
`
3. Создайте каталог сборки:
`бить
сборка mkdir buildcd
`
4. Настройте CMake:
`бить
cmake -DCMAKEBUILDTYPE=Выпустить ..
`
5. Создайте даркнет:
`бить
сделать -j4
`
6. Пакет Даркнет:
`бить
упаковка
`
7. Установите пакет:
`бить
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 package, настройте эти строки:
`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. Запустите «версию даркнета» из 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.
1. Установите необходимые компоненты с помощью Winget:
`бить
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 для этих действий, это вызовет проблемы!
- Опытные пользователи: вместо использования командной строки разработчика вы можете запустить обычную командную строку или ssh на устройстве и вручную выполнить «Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat».
4. Установите OpenCV с помощью VCPKG:
`бить
CDC:
mkdir c:srccd c:src
git-клон https://github.com/microsoft/vcpkgcd vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe интегрировать установку
.vcpkg.exe интегрирует PowerShell
.vcpkg.exe install opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
Будьте терпеливы на этом этапе, поскольку загрузка и создание зависимостей может занять значительное время.
Продвинутые пользователи:
— Обратите внимание, что существует множество других дополнительных модулей, которые вы можете добавить при сборке OpenCV. Запустите .vcpkg.exe search opencv, чтобы просмотреть полный список.
Необязательно: если у вас современный графический процессор NVIDIA, на этом этапе вы можете установить либо CUDA, либо CUDA+cuDNN. Если установлен, Darknet будет использовать ваш графический процессор для ускорения обработки изображений (и видео).
Вам необходимо удалить файл CMakeCache.txt из каталога сборки 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#download-windows, чтобы загрузить и установить cuDNN.
3. Проверьте установку CUDA:
После установки CUDA убедитесь, что вы можете запускать nvcc.exe и nvidia-smi.exe. Возможно, вам придется настроить переменную PATH.
4. Интегрируйте cuDNN:
Разархивируйте загруженный архив cuDNN и скопируйте каталоги «bin», «include» и «lib» в C:Program FilesNVIDIA GPU Computing ToolkitCUDA[версия]. Возможно, вам придется перезаписать существующие файлы.
5. Установите CUDA после Visual Studio:
- CUDA должен быть установлен после Visual Studio. Если вы обновляете Visual Studio, не забудьте переустановить CUDA.
6. Клонируйте Даркнет и создайте:
`бить
компакт-диск c: источник
git клон https://github.com/hank-ai/darknet.gitcd даркнет
сборка mkdir buildcd
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
`
7. Обработка отсутствующих библиотек DLL CUDA/cuDNN:
- Если вы столкнулись с ошибками, связанными с отсутствием библиотек DLL CUDA или cuDNN (например, cublas64_12.dll), вручную скопируйте соответствующие файлы CUDA .dll в тот же каталог, что и darknet.exe. Например:
`бить
скопируйте "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(Это пример. Проверьте свою версию CUDA и выполните соответствующую команду.)
- Повторно запустите последнюю команду msbuild.exe, чтобы создать установочный пакет NSIS.
Продвинутые пользователи:
Выходные данные команды 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 в каталоге сборки, например darknet-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. Он включает в себя несколько расширенных функций, недоступных напрямую в Darknet. Вы можете использовать как Darknet CLI, так и DarkHelp CLI одновременно; они не являются взаимоисключающими.
Для большинства приведенных ниже команд вам понадобится файл .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 ...
`
— Эта команда отобразит среднюю точность (AP) для каждого класса в наборе данных.
mAP@IoU=75:
`бить
Карта детектора даркнета животные.данные животные.cfg животныеbest.weights -iouthresh 0.75
`
— Эта команда вычисляет mAP при пороге IoU 0,75.
Расчет анкеров:
Лучший способ пересчета якорей — использовать DarkMark, поскольку он выполняет 100 последовательных вычислений и выбирает оптимальные якоря. Однако вы можете использовать старый метод Darknet:
`бить
детектор даркнета кальканчоры животные.данные -numof_clusters 6 -ширина 320 -высота 256
`
Обучение новой сети:
Базовая подготовка:
`бить
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
- Лучшие веса будут сохранены как животные_best.weights, а прогресс тренировки будет виден в файлеchart.png.
Подробное обучение:
`бить
детектор даркнета -map -dont_show --verbose train животные.данные животные.cfg
`
— Эта команда предоставляет более подробную информацию во время тренировки.
Обучение
Быстрые ссылки на соответствующие разделы FAQ по Darknet/YOLO:
Настройка файлов и каталогов: [ссылка на раздел часто задаваемых вопросов]
Выбор правильного файла конфигурации: [ссылка на раздел часто задаваемых вопросов]
Команда обучения: [ссылка на раздел FAQ]
Самый простой способ аннотировать и обучать — использовать DarkMark для создания всех необходимых файлов Darknet. Это рекомендуемый подход для обучения новой нейронной сети.
Настройка обучения вручную:
1. Создайте папку. Создайте новую папку для хранения файлов тренировок. Например, ~/nn/animals/.
2. Скопируйте файл конфигурации. Скопируйте файл конфигурации Darknet в качестве шаблона (например, cfg/yolov4-tiny.cfg) в свою папку. Теперь у вас есть ~/nn/animals/animals.cfg.
3. Создайте файл .names: Создайте текстовый файл Animals.names в той же папке.
- Отредактируйте файл, включив в него список классов, которые вы хотите обнаружить. Каждый класс должен быть на отдельной строке без пустых строк и комментариев. Например:
`
собака
кот
птица
лошадь
`
4. Создайте файл .data: Создайте текстовый файл Animals.data в той же папке.
- Файл .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/животные
`
5. Создайте папку изображений и аннотаций. Создайте папку (например, ~/nn/animals/dataset) для хранения изображений и аннотаций.
- Для каждого изображения требуется соответствующий файл .txt, содержащий аннотации. Формат аннотации специфичен; его нельзя создать вручную. Используйте DarkMark или подобное программное обеспечение для аннотирования изображений.
- Формат аннотаций YOLO описан в FAQ по Darknet/YOLO.
6. Создайте «поездные» и «действительные» файлы. Создайте «поездные» и «действительные» текстовые файлы, упомянутые в файле .data.
- В этих файлах перечислены изображения, используемые для обучения и проверки соответственно. Каждое изображение должно находиться на отдельной строке. Вы можете использовать относительные или абсолютные пути.
7. Измените файл конфигурации:
- Откройте файл .cfg в текстовом редакторе и внесите следующие изменения:
- пакет=64: обычно это значение подходит.
- подразделения: начните с подразделения = 1. Возможно, вам придется увеличить это значение в зависимости от объема памяти вашего графического процессора и размеров сети. Дополнительные сведения см. в FAQ по Darknet/YOLO.
- maxbatches: установите значение 2000 * количество классов. Например, для 4 классов maxbatches=8000.
- шаги: установите значение 80% и 90% от максимального количества пакетов. Например, при maxbatches=8000,steps=6400,7200.
- ширина и высота: это размеры сети. Обратитесь к часто задаваемым вопросам Darknet/YOLO для получения советов по расчету размеров.
- классы: измените строку классы=..., чтобы она соответствовала количеству классов в вашем файле .names (в этом примере классы=4).
- фильтры: измените строку filter=... в каждом разделе [convolutional] перед каждым разделом [yolo]. Значение рассчитывается как (количество классов + 5) * 3. Например, для 4 классов фильтры = 27.
8. Начать обучение:
`бить
компакт-диск ~/nn/животные/
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
- Обучение может занять некоторое время. Лучшие веса будут сохранены как животные_best.weights. Ход обучения виден в файлеchart.png. Дополнительные параметры обучения см. в FAQ по Darknet/YOLO.
- Если вам нужна более подробная информация об обучении, добавьте параметр --verbose:
`бить
детектор даркнета -map -dont_show --verbose train животные.данные животные.cfg
`
Другие инструменты и ссылки
DarkMark: этот инструмент помогает управлять вашими проектами Darknet/YOLO, аннотировать изображения, проверять аннотации и создавать необходимые файлы для обучения Darknet.
DarkHelp: надежный альтернативный интерфейс командной строки для Darknet, который предоставляет такие функции, как мозаика изображений, отслеживание объектов в видео и надежный API C++ для коммерческих приложений.
Часто задаваемые вопросы о Darknet/YOLO: ценный ресурс для ответов на ваши вопросы о Darknet/YOLO.
Канал Стефана на YouTube: здесь вы найдете множество руководств и видеороликов с примерами.
Сервер Darknet/YOLO Discord: присоединяйтесь к серверу, чтобы задавать вопросы поддержке и общаться с другими пользователями Darknet/YOLO.
Дорожная карта
Последнее обновление: 30 октября 2024 г.
Завершенный
Замените qsort(): заменен qsort() на std::sort() в соответствующих частях кодовой базы. (Некоторые оставшиеся экземпляры все еще используют qsort())
Удалите устаревшие функции: удалены check_mistakes, getchar() и system().
Кодовая база C++: преобразован Darknet для использования компилятора C++ (g++ в Linux, VisualStudio в Windows).
Сборка Windows: исправлен процесс сборки Windows.
Поддержка Python: исправлена интеграция Python.
Библиотека Даркнета: создана библиотека Даркнета.
Метки прогнозов: снова включены метки прогнозов (код «алфавит»).
Код CUDA/GPU: функциональность CUDA/GPU снова включена.
CUDNN: восстановлена поддержка CUDNN.
Половина CUDNN: повторно включена поддержка CUDNN половинной точности.
Архитектура CUDA: удалено жесткое кодирование архитектуры CUDA.
Информация о версии CUDA: улучшена информация о версии CUDA.
AVX: восстановлена поддержка AVX.
Удалены устаревшие файлы: удалены старые решения и Makefile.
Зависимость OpenCV: OpenCV стал обязательной зависимостью.
Библиотека pthread: удалена зависимость от старой библиотеки pthread.
STB: удалена зависимость от STB.
CMakeLists.txt: переписанный файл CMakeLists.txt для использования нового метода обнаружения CUDA.
Удалены устаревшие файлы: Удален старый «алфавитный» код и удалено более 700 изображений в данных/метках.
Сборка вне исходного кода: включены сборки вне исходного кода.
Номер версии: улучшен вывод номера версии.
Производительность обучения: оптимизация производительности обучения (текущая задача).
Производительность вывода: оптимизация производительности для вывода (текущая задача).
Передача по ссылке: используется передача по ссылке, где это возможно, для повышения эффективности.
Очистка кода: очищены файлы .hpp.
Переписан darknet.h: обновлен заголовочный файл API Darknet.
Использование cv::Mat: использовал cv::Mat как правильный объект C++ вместо приведения его к void*.
Структура изображения: исправлены несоответствия и проблемы, связанные с внутренней структурой изображения.
Поддержка Jetson: исправлены сборки для устройств Jetson на базе ARM.
- Старые устройства Jetson вряд ли будут исправлены из-за прекращения поддержки NVIDIA (нет компилятора C++17).
- Новые устройства Jetson Orin работают.
Python API в версии 3: исправлен API Python в Darknet V3.
Краткосрочные цели
Замените printf(): замените printf() на std::cout (в процессе).
Поддержка камеры Zed: пересмотрите и улучшите поддержку камеры Zed.
Анализ командной строки: реализация более надежного и последовательного анализа командной строки (в разработке).
Среднесрочные цели
Удалить код символа: удалите весь код символа и замените его на std::string.
Предупреждения компилятора: не скрывайте предупреждения и не устраняйте предупреждения компилятора (в процессе).
Использование cv::Mat: Расширено использование cv::Mat вместо пользовательской структуры изображения в C (в разработке).
Функциональность списка: замените старую функциональность списка на std::vector или std::list.
Поддержка изображений в оттенках серого: исправлена поддержка одноканальных изображений в оттенках серого.
Поддержка N-канальных изображений: добавьте поддержку изображений с более чем 3 каналами (например, каналами глубины или тепловыми каналами).
Текущая очистка кода. Продолжить текущую очистку кода (в процессе).
Долгосрочные цели
Проблемы CUDA/CUDNN. Устраните проблемы совместимости CUDA/CUDNN на разных графических процессорах.
Перезапишите код CUDA/CUDNN: перепишите код CUDA/CUDNN для повышения производительности и совместимости.
Поддержка графических процессоров сторонних производителей: изучите поддержку графических процессоров сторонних производителей.
Повернутые ограничивающие рамки: реализация поддержки повернутых ограничивающих рамок или информации об угле.
Ключевые точки/скелетоны: добавлена поддержка ключевых точек и скелетов.
Тепловые карты: реализация поддержки тепловых карт (в разработке).
Сегментация: добавьте поддержку сегментации.