Основной репозиторий Data.gov
Это основной репозиторий платформы Data.gov. Он используется в первую очередь для отслеживания работы команды, а также для размещения общего кода данных (шаблоны действий GitHub, исходящие данные и т. д.).
Если вам нужна документация для сред Cloud.gov, обратитесь к репозиториям приложений.
Действия и шаблоны GitHub
Несколько действий GitHub были переработаны для использования шаблонов из этого репозитория. Вы можете найти эти шаблоны здесь и примеры их вызова в Инвентаре и Каталоге.
Платформа обнаружения объектов Darknet и YOLO
Darknet — это платформа нейронных сетей с открытым исходным кодом, созданная с использованием C, C++ и CUDA.
YOLO (You Only Look Once) — это передовая система обнаружения объектов в реальном времени, работающая в рамках даркнета.
Узнайте, как 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. Это означает, что каждый видеокадр обрабатывается менее чем за 1 миллисекунду.
Присоединяйтесь к серверу Discord Darknet/YOLO для помощи и обсуждения: https://discord.gg/zSq8rtW
Версия Darknet/YOLO для ЦП может работать на различных устройствах, включая Raspberry Pi, облачные и колаб-серверы, настольные компьютеры, ноутбуки и высокопроизводительные учебные устройства. Для версии с графическим процессором требуется графический процессор NVIDIA с поддержкой CUDA.
Известно, что Darknet/YOLO работает на Linux, Windows и Mac. Инструкции по сборке представлены ниже.
Даркнет-версия
Версия 0.x: оригинальный инструмент Darknet, созданный Джозефом Редмоном в период с 2013 по 2017 год.
Версия 1.x: Популярный репозиторий Darknet, который поддерживал Алексей Бочковский с 2017 по 2021 год.
Версия 2.x («OAK»): репозиторий Darknet, спонсируемый Hank.ai и поддерживаемый Стефаном Шареттом, начиная с 2023 года. В этой версии появилась команда версии.
Версия 2.1: последняя ветвь кодовой базы версии 2, доступная в ветке v2.
Версия 3.x («ДЖАЗ»): последняя стадия разработки, выпущенная в октябре 2024 года.
Ключевые изменения в версии 3.x:
1. Удалены многие старые и неподдерживаемые команды.
2. Значительная оптимизация производительности как для обучения, так и для вывода.
3. Модифицированный устаревший C API; приложения, использующие оригинальный API Darknet, могут потребовать незначительных корректировок.
4. Представлен новый API Darknet V3 C и C++: https://darknetcv.ai/api/api.html.
5. Новые приложения и примеры кода в src-примерах: https://darknetcv.ai/api/files.html.
MSCOCO Предварительно обученные веса
Для удобства несколько популярных версий YOLO предварительно обучены на наборе данных MSCOCO. Этот набор данных содержит 80 классов, перечисленных в текстовом файле cfg/coco.names.
Для тестирования Darknet/YOLO доступны другие, более простые наборы данных и предварительно обученные веса, такие как LEGO Gears и Rolodex. Подробности можно найти в FAQ по Darknet/YOLO.
Вы можете скачать предварительно обученные веса MSCOCO из разных мест, включая этот репозиторий:
YOLOv2 (ноябрь 2016 г.)
YOLOv2-крошечный
YOLOv2-полный
YOLOv3 (май 2018 г.)
YOLOv3-крошечный
YOLOv3-полный
YOLOv4 (май 2020 г.)
YOLOv4-крошечный
YOLOv4-полный
YOLOv7 (август 2022 г.)
YOLOv7-крошечный
YOLOv7-полный
Примеры команд:
`
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
1. Необязательно: если у вас современный графический процессор NVIDIA, установите CUDA или CUDA+cuDNN. Darknet будет использовать ваш графический процессор для более быстрой обработки изображений и видео.
2. Удалите файл CMakeCache.txt из каталога сборки Darknet, чтобы заставить CMake повторно найти все необходимые файлы.
3. Восстановить Даркнет.
4. Установите CUDA (необязательно). Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
5. Установите cuDNN (необязательно): посетите https://developer.nvidia.com/rdp/cudnn-download или https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package. -manager-installation-overview для загрузки и установки cuDNN.
6. Проверьте установку CUDA: убедитесь, что вы можете запустить nvcc и nvidia-smi. Возможно, вам придется изменить переменную PATH.
7. Установите зависимости и клонируйте Darknet:
`бить
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git клон https://github.com/hank-ai/darknetcd даркнет
сборка mkdir
сборка компакт-диска
`
8. Настройте CMake:
`бить
cmake -DCMAKEBUILDTYPE=Выпустить ..
`
9. Создайте даркнет:
`бить
сделать пакет -j4
`
10. Установите Даркнет:
`бить
sudo dpkg -i darknet-ВЕРСИЯ.deb
`
11. Тестовая установка:
`бить
даркнет-версия
`
Дополнительные примечания:
Если вы используете более старую версию CMake, обновите ее перед запуском команды cmake:
`бить
sudo apt-get очистить cmake
sudo snap установить cmake --classic
`
Перезапустите оболочку, если используете bash, иначе fish должен автоматически обновить путь.
Чтобы создать файл установки RPM вместо файла DEB, измените файл CM_package.cmake.
После создания установочного пакета воспользуйтесь менеджером пакетов вашего дистрибутива, чтобы установить его (например, sudo dpkg -i darknet-2.0.1-Linux.deb в системах на базе Debian).
Метод Windows CMake
1. Установите необходимые инструменты:
`бить
winget установить Git.Git
winget установить Kitware.CMake
winget установить nsis.nsis
winget install Microsoft.VisualStudio.2022.Community
`
2. Измените установку Visual Studio:
- Откройте «Установщик Visual Studio».
- Нажмите «Изменить».
- Выберите «Разработка настольных компьютеров с помощью C++».
- Нажмите «Изменить» в правом нижнем углу, а затем «Да».
3. Откройте командную строку разработчика для VS 2022: не используйте PowerShell.
4. Установите Microsoft VCPKG:
`бить
компакт-диск c:mkdir c:srccd c:src
git-клон https://github.com/microsoft/vcpkgcd vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe интегрировать
установить .vcpkg.exe интегрировать powershell.vcpkg.exe установить opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
5. Необязательно: установите CUDA или CUDA+cuDNN (как в инструкциях Linux).
6. Удалите CMakeCache.txt (как в инструкции Linux).
7. Пересобрать Даркнет (как в инструкции по Linux).
8. Установите CUDA (необязательно). Посетите https://developer.nvidia.com/cuda-downloads, чтобы загрузить и установить CUDA.
9. Установите cuDNN (необязательно): посетите https://developer.nvidia.com/rdp/cudnn-download или https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows. чтобы загрузить и установить cuDNN.
10. Проверьте установку CUDA: убедитесь, что вы можете запустить nvcc.exe. Возможно, вам придется изменить переменную PATH.
11. Разархивируйте и скопируйте файлы cuDNN. После загрузки разархивируйте и скопируйте каталоги bin, include и lib в C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[версия]/. Возможно, вам придется перезаписать некоторые файлы.
12. Клонируйте Даркнет и создайте:
`бить
компакт-диск c: источник
git клон https://github.com/hank-ai/darknet.gitcd даркнет
сборка 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
`
13. Скопируйте библиотеки DLL CUDA (необязательно). Если вы столкнулись с ошибками, связанными с отсутствием библиотек DLL CUDA или cuDNN (например, cublas64_12.dll), вручную скопируйте библиотеки DLL CUDA в выходной каталог Darknet.exe:
`бить
скопировать «C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll» src-cliRelease
`
(Обязательно замените номер версии на тот, который вы используете.)
14. Повторно запустите команду msbuild.exe, чтобы сгенерировать установочный пакет NSIS:
`бить
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
15. Тестовая установка:
`бить
Версия C:srcDarknetbuildsrc-cliReleasedarknet.exe
`
16. Запустите мастер установки NSIS. При этом будет установлено приложение CLI, необходимые библиотеки DLL, библиотеки, включаемые файлы и файлы конфигурации шаблонов.
Дополнительные примечания:
Команда cmake создает файл решения Visual Studio (Darknet.sln). Для сборки проекта вместо msbuild.exe можно использовать графический интерфейс Visual Studio.
Установочный пакет NSIS (например, darknet-VERSION.exe) можно найти в каталоге сборки.
Использование даркнета
интерфейс командной строки
Ниже приведен неполный список всех команд Darknet.
Справка даркнета: отображение справочной информации.
Версия даркнета: проверьте версию даркнета.
Команды прогнозирования:
В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 ...
`
mAP@IoU=75:
`бить
Карта детектора даркнета животные.данные животные.cfg животныеbest.weights -iouthresh 0.75
`
Пересчитать якоря:
DarkMark (рекомендуется): используйте DarkMark, чтобы выполнить 100 последовательных вычислений и выбрать лучшие привязки.
Даркнет:
`бить
детектор даркнета кальканчоры животные.данные -numof_clusters 6 -ширина 320 -высота 256
`
Обучите новую сеть:
Использование DarkMark (рекомендуется): используйте DarkMark для создания всех необходимых файлов для обучения.
Ручная настройка:
1. Создайте новую папку для своего проекта (например, ~/nn/animals/).
2. Скопируйте файл конфигурации в качестве шаблона (например, cfg/yolov4-tiny.cfg) в папку.
3. Создайте текстовый файл Animal.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).
6. Аннотируйте свои изображения и создавайте соответствующие файлы аннотаций .txt с помощью DarkMark или аналогичного программного обеспечения.
7. Создайте файлы Animalstrain.txt и Animalvalid.txt, в которых будут перечислены изображения для обучения и проверки соответственно, по одному в строке.
8. Измените файл конфигурации:
- Установить пакет = 64.
- При необходимости корректируйте подразделения.
- Установите max_batches=8000 (или 2000 x количество классов).
- Установите шаги = 6400,7200 (80% и 90% от max_batches).
- Установите ширину и высоту в соответствии с размерами вашей сети.
- Обновите классы, указав количество классов в вашем файле .names.
— Обновите фильтры в каждом разделе [convolutional] перед разделами [yolo]: (numberofclasses + 5) * 3.
9. Начать обучение:
`бить
компакт-диск ~/nn/животные/
Детектор даркнета -map -dont_show train животные.данные животные.cfg
`
Дополнительные советы по обучению:
Используйте параметр --verbose для получения более подробной информации об обучении:
`бить
детектор даркнета -map -dont_show --verbose train животные.данные животные.cfg
`
Другие инструменты и ссылки
DarkMark: управляйте проектами Darknet/YOLO, комментируйте изображения, проверяйте аннотации и создавайте обучающие файлы.
DarkHelp: надежный альтернативный интерфейс командной строки Darknet, поддержка мозаики изображений, отслеживания объектов и API C++ для коммерческих приложений.
Часто задаваемые вопросы по Darknet/YOLO: обширный ресурс с ответами на распространенные вопросы.
Канал Стефана на YouTube: учебные пособия и примеры видеороликов в Darknet/YOLO.
Сервер Darknet/YOLO Discord: форум сообщества для поддержки и обсуждения.
Дорожная карта
Выполненные задачи:
Заменен 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.
Удалена зависимость от STB.
Переписал CMakeLists.txt, чтобы использовать новое обнаружение CUDA.
Удален старый код алфавита и удалены ненужные изображения.
Включены сборки из исходного кода.
Улучшен вывод номера версии.
Оптимизированное обучение и производительность вывода.
Реализована передача по ссылке, где это применимо.
Очистил файлы .hpp.
Переписал darknet.h.
Использовал cv::Mat как правильный объект C++ вместо приведения к void*.
Исправлены несоответствия в использовании внутренней структуры изображения.
Исправлены проблемы сборки для устройств Jetson на базе ARM (за исключением неподдерживаемых старых моделей).
Исправлен Python API в версии 3.
Краткосрочные цели:
Замените printf() на std::cout.
Изучите поддержку старых камер Zed.
Улучшите и стандартизируйте анализ командной строки.
Среднесрочные цели:
Удалите весь код char* и замените его на std::string.
Устраните предупреждения компилятора и обеспечьте единообразный стиль кода.
Расширьте возможности использования cv::Mat поверх пользовательской структуры образа C.
Замените старую функциональность списка на std::vector или std::list.
Исправлена поддержка одноканальных изображений в оттенках серого.
Добавьте поддержку N-канальных изображений (например, с дополнительными каналами глубины или тепловыми каналами).
Текущая очистка кода.
Долгосрочные цели:
Устраните проблемы CUDA/CUDNN на всех графических процессорах.
Перепишите код CUDA+cuDNN.
Изучите поддержку графических процессоров сторонних производителей.
Реализуйте вращающиеся ограничивающие рамки или поддержку «угла».
Добавьте ключевые точки/скелетоны, тепловые карты и поддержку сегментации.