Платформа обнаружения объектов Darknet и YOLO
!Логотипы Darknet и Hank.ai
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 по адресу https://discord.gg/zSq8rtW, чтобы получать помощь, обсуждения и общаться с другими пользователями.
Версия Darknet/YOLO для ЦП может работать на различных устройствах, включая Raspberry Pi, облачные серверы и серверы совместной работы, настольные компьютеры, ноутбуки и высокопроизводительные учебные устройства. Версия 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»: эта версия была представлена в 2023 году при поддержке Hank.ai и поддержке Стефана Шаретта. Это был первый раз, когда репозиторий Darknet включил команду версии.
— Целью было минимизировать сбои в работе существующего функционала при ознакомлении с кодовой базой.
- Ключевые изменения включали:
- Унифицированная система сборки CMake для Windows и Linux.
- Преобразование кодовой базы в компилятор C++.
- Улучшен файлchart.png во время тренировки.
- Исправлены ошибки и оптимизирована производительность, особенно для сокращения времени обучения.
— Последней ветвью этой кодовой базы была версия 2.1 в ветке v2.
4. Версия 3.x «JAZZ». Этот этап разработки начался в середине 2024 г. и запущен в октябре 2024 г. Теперь команда версии возвращает версию 3.x.
- Изменения в этой версии включают в себя:
- Удаление нескольких устаревших и неподдерживаемых команд.
- Комплексная оптимизация производительности как для обучения, так и для вывода.
— Модификации устаревшего API C, требующие незначительных корректировок для приложений, использующих исходный API Darknet. Обновленную документацию по API Darknet V3 C и C++ можно найти по адресу https://darknetcv.ai/api/api.html.
- Внедрение новых приложений и примеров кода в каталоге src-examples, доступном по адресу https://darknetcv.ai/api/files.html.
Примечание. В целях совместимости вы всегда можете получить доступ к предыдущей ветке версии 2, если вам нужно выполнить какую-либо из этих конкретных команд. Если вы обнаружите какие-либо недостающие команды, свяжитесь с нами, и мы рассмотрим их реинтеграцию.
MSCOCO Предварительно обученные веса
Для удобства несколько популярных версий YOLO были предварительно обучены на наборе данных MSCOCO. Этот набор данных содержит 80 классов, которые можно просмотреть в текстовом файле cfg/coco.names.
Помимо MSCOCO, вы можете найти другие предварительно обученные веса и более простые наборы данных для тестирования Darknet/YOLO, такие как LEGO Gears и Rolodex. Подробную информацию можно найти в FAQ по Darknet/YOLO.
Предварительно обученные веса MSCOCO доступны из разных мест, в том числе в этом репозитории:
1. YOLov2 (ноябрь 2016 г.)
- yolov2-tiny.weights
- yolov2-full.weights
2. YOLOv3 (май 2018 г.)
- yolov3-tiny.weights
- yolov3-full.weights
3. YOLOv4 (май 2020 г.)
- yolov4-tiny.weights
- yolov4-full.weights
4. YOLOv7 (август 2022 г.)
- yolov7-tiny.weights
- yolov7-full.weights
Предварительно обученные веса MSCOCO предоставляются в первую очередь для демонстрационных целей. Соответствующие файлы .cfg и .names для MSCOCO расположены в каталоге cfg.
Примеры команд:
`бить
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
Важно понимать, что рекомендуемой практикой является обучение собственных сетей. MSCOCO в основном используется для проверки правильности работы Darknet/YOLO.
Здание
Различные методы сборки, использовавшиеся в прошлом (до 2023 года), были объединены в единое решение. Для Darknet требуется C++17 или новее, OpenCV, а для создания файлов проекта используется CMake.
Помните, что сборка, установка и запуск Darknet/YOLO не требуют знаний C++. Это все равно, что водить машину, не будучи механиком.
Обратите внимание: если вы имеете в виду более старые руководства с более сложными этапами сборки или те, которые не соответствуют этому файлу ознакомительных сведений, действуйте осторожно. Новые инструкции по сборке, изложенные ниже, были представлены в августе 2023 года.
Чтобы получить представление о внутренней работе системы обнаружения объектов Darknet/YOLO, разработчикам программного обеспечения рекомендуется посетить https://darknetcv.ai/.
Гугл Колаб
Инструкции Google Colab идентичны инструкциям Linux. Доступно несколько блокнотов Jupyter, демонстрирующих выполнение конкретных задач, например обучение новой сети.
Изучите блокноты в подкаталоге colab или следуйте инструкциям Linux, приведенным ниже.
Метод CMake в Linux
Учебное пособие по сборке Darknet для Linux
1. Установите зависимости:
`бить
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Клонировать репозиторий Darknet:
`бить
mkdir ~/srccd ~/src
клон git https://github.com/hank-ai/darknet
компакт-диск даркнет
`
3. Создайте каталог сборки:
`бить
сборка mkdir buildcd
`
4. Настройте с помощью CMake:
`бить
cmake -DCMAKEBUILDTYPE=Выпустить ..
`
5. Создайте даркнет:
`бить
сделать -j4
`
6. Упакуйте и установите:
`бить
упаковка
sudo dpkg -i darknet-ВЕРСИЯ.deb
`
Необязательно: установка CUDA и cuDNN.
Для ускоренной обработки изображений и видео вы можете дополнительно установить CUDA или CUDA+cuDNN. Darknet будет использовать ваш графический процессор, если он доступен.
1. Установите CUDA:
- Загрузите и установите CUDA с https://developer.nvidia.com/cuda-downloads.
- Убедитесь, что вы можете выполнить nvcc и nvidia-smi. Возможно, вам придется изменить переменную PATH.
2. Установите cuDNN:
- Загрузите и установите cuDNN с https://developer.nvidia.com/rdp/cudnn-download или https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- установка-обзор.
Если вы устанавливаете CUDA или CUDA+cuDNN после первоначальной установки или обновления программного обеспечения NVIDIA:
1. Удалите CMakeCache.txt:
— Удалите файл CMakeCache.txt из каталога сборки Darknet, чтобы заставить CMake повторно обнаружить все зависимости.
2. Перестроить Даркнет:
- Повторите команду cmake и выполните действия, описанные выше.
Примечание. Эти инструкции предполагают использование Ubuntu 22.04, но могут быть адаптированы для других дистрибутивов.
Продвинутые пользователи:
Чтобы создать файл установки RPM вместо файла DEB, измените соответствующие строки в CM_package.cmake. Прежде чем запускать пакет make -j4, обновите эти две строки:
`cmake
НАБОР (CPACK_GENERATOR «DEB»)
НАБОР (CPACK_GENERATOR «ОБ/МИН»)
`
Для таких дистрибутивов, как Centos и OpenSUSE, измените строки так:
`cmake
НАБОР (CPACK_GENERATOR «DEB»)
НАБОР (CPACK_GENERATOR «ОБ/МИН»)
`
После сборки установите пакет с помощью менеджера пакетов вашего дистрибутива. Например, в системах на базе Debian:
`бить
sudo dpkg -i darknet-2.0.1-Linux.deb
`
Результат установки:
/usr/bin/darknet: стандартный исполняемый файл Darknet. Запустите версию даркнета, чтобы проверить правильность установки.
/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 на своем терминале, чтобы подтвердить успешную установку Darknet.
Метод Windows CMake
Инструкции по сборке Windows (предполагается Windows 11 22H2)
1. Установите зависимости:
`бить
winget установить Git.Git
winget установить Kitware.CMake
winget установить nsis.nsis
winget install Microsoft.VisualStudio.2022.Community
`
2. Измените установку Visual Studio:
- Откройте меню «Пуск» Windows и запустите «Установщик Visual Studio».
- Нажмите «Изменить».
- Выберите «Разработка настольных компьютеров с помощью C++».
- Нажмите «Изменить» в правом нижнем углу, а затем «Да».
3. Откройте командную строку разработчика:
- Откройте меню «Пуск» Windows и выберите «Командная строка разработчика для VS 2022». Не используйте PowerShell для этих действий.
4. Установите Microsoft VCPKG:
`бить
CDC:
mkdir c:srccd c:src
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
`
5. Необязательно: установка CUDA и cuDNN:
- Установите CUDA или CUDA+cuDNN для ускорения графического процессора.
- Выполните те же действия, что и в инструкциях Linux.
6. Клонировать Даркнет и собрать:
`ударить
компакт-диск 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):
1. Скопируйте библиотеки DLL CUDA:
- Вручную скопируйте файлы CUDA .dll в тот же выходной каталог, что и Darknet.exe. Например:
`бить
скопировать «C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll» src-cliRelease
`
2. Перезапустите msbuild.exe:
- Еще раз выполните последнюю команду msbuild.exe, чтобы создать установочный пакет NSIS.
Продвинутые пользователи:
Вместо командной строки разработчика вы можете использовать обычную командную строку или SSH и запустить «Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat».
Команда cmake создает файл решения Visual Studio (Darknet.sln). Если вы предпочитаете использовать графический интерфейс Visual Studio, загрузите проект, а не полагайтесь на инструменты командной строки.
Подтверждение: запустите версию C:srcDarknetbuildsrc-cliReleasedarknet.exe, чтобы проверить установку.
Установите с помощью мастера NSIS:
Запустите мастер установки NSIS, расположенный в каталоге сборки (например, darknet-VERSION.exe). Это будет:
- Создайте каталог Darknet (например, C:Program FilesDarknet).
- Установите приложение CLI, darknet.exe и другие примеры приложений.
- Установите необходимые сторонние файлы .dll (например, из OpenCV).
- Установите файлы Darknet .dll, .lib и .h для использования в других приложениях.
- Установите файлы шаблонов .cfg.
Подтверждение: после установки запустите версию C:Program FilesDarknetbindarknet.exe, чтобы убедиться, что Darknet готов.
Использование даркнета
интерфейс командной строки
Ниже приведен неполный список команд, поддерживаемых Darknet.
В дополнение к интерфейсу командной строки Darknet рассмотрите интерфейс командной строки проекта DarkHelp, предлагающий альтернативный интерфейс командной строки с расширенными функциями, недоступными напрямую в Darknet. Вы можете использовать оба интерфейса командной строки вместе.
Для большинства команд вам понадобится файл .weights вместе с соответствующими файлами .names и .cfg. Вы можете либо обучить свою собственную сеть (настоятельно рекомендуется), либо загрузить предварительно обученные сети, доступные в свободном доступе в Интернете. Примеры включают в себя:
LEGO Gears (обнаружение объектов по изображениям)
Rolodex (обнаружение текста на изображениях)
MSCOCO (стандартное обнаружение объектов класса 80)
Общие команды CLI Darknet:
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
`
- Рассчитать mAP@IoU=75:
`ударить
Карта детектора даркнета животные.данные животные.cfg животныеbest.weights -iouthresh 0.75
`
- Рассчитать якоря:
`ударить
детектор даркнета кальканчоры животные.данные -numof_clusters 6 -ширина 320 -высота 256
`
11. Обучите новую сеть:
`бить
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
Обучение
Основные ссылки на часто задаваемые вопросы по Darknet/YOLO:
Настройка файлов и каталогов
Выбор правильного файла конфигурации
Обучение пользовательской сетевой команды
DarkMark упрощает процесс аннотирования и обучения, автоматически создавая все необходимые файлы Darknet. Использование DarkMark настоятельно рекомендуется для обучения новой нейронной сети.
Ручная настройка обучения:
1. Создайте каталог проекта:
- Например, создайте каталог с именем ~/nn/animals/ для обнаружения животных.
2. Скопируйте файл конфигурации:
- Скопируйте подходящий файл конфигурации Darknet в качестве шаблона (например, cfg/yolov4-tiny.cfg) в каталог вашего проекта. Это создаст файл ~/nn/animals/animals.cfg.
3. Создайте файл Animals.names:
- Создайте текстовый файл с именем Animals.names в том же каталоге.
- Перечислите нужные классы, по одному в строке, без пустых строк и комментариев. Например:
`
собака
кот
птица
лошадь
`
4. Создайте файл Animals.data:
- Создайте текстовый файл с именем животные.данные. Содержание должно быть:
`
занятия = 4
поезд = /home/имя пользователя/nn/animals/animals_train.txt
действительный = /home/имя пользователя/nn/animals/animals_valid.txt
имена = /home/имя_пользователя/nn/animals/animals.names
резервная копия = /home/имя пользователя/nn/animals
`
5. Создайте каталог набора данных:
- Создайте каталог (например, ~/nn/animals/dataset) для хранения изображений и аннотаций. Для каждого изображения требуется соответствующий файл .txt, определяющий его аннотации. Формат специфичен и не может быть создан вручную. Используйте DarkMark или подобное программное обеспечение для аннотирования изображений. Формат аннотаций YOLO описан в FAQ по Darknet/YOLO.
6. Создайте файлы обучения и проверки:
- Создайте файлы Animalstrain.txt и Animalvalid.txt, упомянутые в файле .data. В этих файлах перечислены все изображения для обучения и проверки соответственно, по одному изображению в строке. Пути могут быть относительными или абсолютными.
7. Настройте файл .cfg:
- Откройте файл .cfg в текстовом редакторе.
- Убедитесь, что партия = 64.
- Настройте подразделения в зависимости от размеров сети и памяти графического процессора. Начните с подразделений = 1. Альтернативные значения можно найти в FAQ по Darknet/YOLO.
- Установите max_batches равным 2000 * количество классов (например, 8000 для 4 классов).
- Установите шаги на 80% и 90% от максимальных пакетов (например, 6400,7200 для максимальных пакетов=8000).
- Настройте ширину и высоту (размеры сети), используя рекомендации из часто задаваемых вопросов Darknet/YOLO.
- Замените классы=... на количество классов из вашего файла .names (например, классы=4).
- Измените фильтры =... в разделе [convolutional] перед каждым разделом [yolo]. Используйте формулу (количество классов + 5) * 3 (например, фильтры = 27 для 4 классов).
8. Начните обучение:
- Перейдите в каталог вашего проекта:
`бить
компакт-диск ~/nn/животные/
`
- Запустите команду обучения:
`бить
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
9. Мониторинг прогресса:
- Лучшие веса будут сохранены как животные_best.weights.
- Отслеживайте прогресс тренировки, просматривая файлchart.png.
- Дополнительные параметры обучения см. в FAQ по Darknet/YOLO.
10. Подробное обучение:
- Для более подробного вывода во время обучения включите параметр --verbose:
`бить
детектор даркнета -map -dont_show --verbose train животные.данные животные.cfg
`
Другие инструменты и ссылки
DarkMark: для управления проектами Darknet/YOLO, аннотирования изображений, проверки аннотаций и создания обучающих файлов.
DarkHelp: предоставляет надежный альтернативный интерфейс командной строки для Darknet, мозаику изображений, отслеживание объектов в видео и комплексный API C++ для коммерческих приложений.
Часто задаваемые вопросы по Darknet/YOLO: ценный ресурс для ответов на ваши вопросы.
Канал Стефана на YouTube: многочисленные обучающие материалы и примеры видеороликов.
Сервер Discord Darknet/YOLO: присоединяйтесь к сообществу для поддержки и обсуждений.
Дорожная карта
Последнее обновление: 30 октября 2024 г.
Завершенный:
Заменен qsort() на std::sort() во время обучения (за исключением нескольких оставшихся случаев).
Удалены check_mistakes, getchar() и system().
Преобразовал Darknet для использования компилятора C++ (g++ в Linux, VisualStudio в Windows).
Исправлена сборка Windows.
Включена поддержка Python.
Создал библиотеку Даркнета.
Снова включены метки прогнозов (с использованием «алфавитного» кода).
Повторно включен код CUDA/GPU.
Повторно включил CUDNN и половину CUDNN.
Удалена жестко закодированная архитектура CUDA.
Улучшена информация о версии CUDA.
Снова включил AVX.
Удалены старые решения и Makefile.
OpenCV сделан необязательным.
Удалена зависимость от старой библиотеки pthread.
Удален СТБ.
Переписан CMakeLists.txt для нового обнаружения CUDA.
Удален старый «алфавитный» код и удалено более 700 изображений в данных/метках.
Включена сборка вне исходного кода.
Улучшен вывод номера версии.
Реализована оптимизация производительности во время обучения (в процессе).
Реализована оптимизация производительности во время вывода (в процессе).
Там, где это возможно, используется передача по ссылке.
Очистил файлы .hpp.
Переписан darknet.h.
Избегал приведения cv::Mat к void* и использовал его как правильный объект C++.
Исправлено несогласованное использование внутренней структуры изображения.
Исправлены проблемы сборки для устройств Jetson на базе ARM (за исключением неподдерживаемых оригинальных моделей Jetson).
Устройства Jetson Orin работоспособны.
Исправлен API Python в версии V3.
Расширенная поддержка Python (приглашаем разработчиков Python внести свой вклад).
Краткосрочные цели:
Замените printf() на std::cout (в процессе).
Вернитесь к поддержке старых камер Zed.
Улучшите и обеспечьте согласованность анализа командной строки (в процессе).
Среднесрочные цели:
Удалите весь код char* и замените его на std::string.
Отобразить предупреждения и адресовать предупреждения компилятора (в процессе).
Оптимизировать использование cv::Mat вместо пользовательской структуры образа C (в разработке).
Замените старую функциональность списка на std::vector или std::list.
Исправлена поддержка одноканальных изображений в оттенках серого.
Добавить поддержку N-канальных изображений (N > 3).
Продолжить очистку кода (в процессе).
Долгосрочные цели:
Решите проблемы CUDA/CUDNN на всех графических процессорах.
Перепишите код CUDA+cuDNN.
Изучите поддержку графических процессоров сторонних производителей.
Реализуйте вращающиеся ограничивающие рамки или поддержку «угла».
Добавьте ключевые точки/скелетоны.
Внедрение тепловых карт (в разработке).
Внедрить функцию сегментации.