Гатлинг
Что такое Гатлинг?
Gatling — это мощный инструмент нагрузочного тестирования с открытым исходным кодом, разработанный для обеспечения производительности и надежности. Он предлагает комплексное решение для моделирования реального поведения пользователей и измерения производительности ваших приложений в условиях стресса.
Мотивация
Гатлинг дает вам возможность:
1. Поймите ограничения вашего приложения. Выявляйте узкие места и проблемы с производительностью до того, как они повлияют на ваших пользователей.
2. Улучшите взаимодействие с пользователем. Убедитесь, что ваше приложение способно обрабатывать пиковый трафик и обеспечивает плавную работу для всех пользователей.
3. Получите ценную информацию: анализируйте результаты тестов, чтобы оптимизировать производительность, масштабируемость и надежность вашего приложения.
Вопросы, Помощь?
Получить помощь и поддержку вы можете:
1. Ознакомьтесь с официальной документацией: изучите подробные руководства, руководства и ссылки на API.
2. Присоединяйтесь к форуму сообщества Гатлинга: общайтесь с другими пользователями, делитесь опытом и обращайтесь за советом.
3. Сообщайте о проблемах. Если вы столкнулись с ошибкой, сообщите о ней в официальном репозитории Gatling GitHub.
Партнеры
Гатлинг сотрудничает с различными партнерами, чтобы предоставить комплексные решения для нагрузочного тестирования. Изучите партнерскую экосистему для получения специализированных услуг по интеграции и поддержке.
Платформа обнаружения объектов Darknet и YOLO
Darknet — это платформа нейронных сетей с открытым исходным кодом, написанная на C, C++ и CUDA, известная своей скоростью и эффективностью.
YOLO (You Only Look Once) — это современная система обнаружения объектов в реальном времени, которая легко интегрируется с платформой Darknet.
Исследуйте экосистему Darknet/YOLO:
1. Вклад Hank.ai: узнайте, как Hank.ai активно вносит свой вклад в сообщество Darknet/YOLO.
2. Официальный веб-сайт: доступ к последней информации, ресурсам и новостям на веб-сайте Darknet/YOLO.
3. Подробные часто задаваемые вопросы: найдите ответы на часто задаваемые вопросы о Darknet/YOLO.
4. Присоединяйтесь к серверу Discord: общайтесь с другими энтузиастами Darknet/YOLO, обсуждайте идеи и получайте поддержку.
Статьи
1. YOLOv7: узнайте о последних достижениях YOLOv7.
2. Scaled-YOLOv4: познакомьтесь с архитектурой Scaled-YOLOv4 и ее улучшениями производительности.
3. YOLOv4: ознакомьтесь с ключевыми особенностями и нововведениями YOLOv4.
4. YOLOv3: Узнайте о происхождении YOLO и основополагающих принципах YOLOv3.
Общая информация
Платформа Darknet/YOLO неизменно превосходит другие платформы и версии YOLO как по скорости, так и по точности.
Он полностью бесплатен и имеет открытый исходный код, что позволяет интегрировать его в ваши проекты и продукты без лицензионных ограничений.
Darknet V3 «Jazz», выпущенный в октябре 2024 года, демонстрирует выдающуюся производительность, обрабатывая видео набора данных LEGO со скоростью до 1000 кадров в секунду с использованием графического процессора NVIDIA RTX 3090.
Даркнет-версия
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 «JAZZ»: последняя версия, выпущенная в октябре 2024 г., включает в себя:
- Удалены устаревшие и неподдерживаемые команды.
- Обширная оптимизация производительности как для обучения, так и для вывода.
— Модифицированный API Legacy C.
- Новый API Darknet V3 C и C++.
— Расширены примеры кода и приложений в src-examples.
MSCOCO Предварительно обученные веса
Несколько популярных версий YOLO предварительно обучены на наборе данных MSCOCO, предоставляя 80 классов объектов, перечисленных в файле cfg/coco.names.
Для тестирования доступны другие наборы данных и предварительно обученные веса, в том числе:
Лего Шестеренки
Ролодекс
Загрузите предварительно обученные веса 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:
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 требуется C++17 или новее, OpenCV и используется CMake для автоматизации сборки.
Важное примечание. Эти инструкции обновлены для сборки Darknet после августа 2023 года. Если при использовании старых руководств у вас возникнут проблемы, обратитесь к этому README, чтобы узнать о последних этапах сборки.
Гугл Колаб
Следуйте инструкциям Linux ниже. Изучите блокноты Jupyter в подкаталоге colab для решения конкретных задач, например обучения.
Метод CMake в Linux
1. Установите необходимые зависимости:
- sudo apt-get install build-essential git libopencv-dev cmake
2. Клонируйте репозиторий Darknet:
- mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknet
3. Создайте каталог сборки:
- cd darknet mkdir buildcd build
4. Настройте и создайте Darknet:
- cmake -DCMAKEBUILDTYPE=Выпустить ..
- сделать пакет -j4
5. Установите пакет .deb:
- sudo dpkg -i darknet-VERSION.deb
6. Проверьте установку:
- даркнет-версия
Необязательно: установите CUDA или CUDA+cuDNN для ускорения графического процессора:
1. Загрузите и установите CUDA:
- https://developer.nvidia.com/cuda-downloads
2. Загрузите и установите cuDNN:
- https://developer.nvidia.com/rdp/cudnn-download
- https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview
3. Проверьте установку CUDA:
- НВКК
- nvidia-сми
4. Восстановите Даркнет:
- cmake -DCMAKEBUILDTYPE=Выпустить ..
- сделать пакет -j4
5. Установите обновленный пакет .deb:
- sudo dpkg -i darknet-VERSION.deb
Метод Windows CMake
1. Установите необходимые зависимости:
- winget установить Git.Git
- установка winget Kitware.CMake
- winget установить nsis.nsis
- установка winget Microsoft.VisualStudio.2022.Community
2. Измените установку Visual Studio:
- Откройте «Установщик Visual Studio».
- Выберите «Изменить».
- Выберите «Разработка настольных компьютеров с помощью C++».
- Нажмите «Изменить» и «Да».
3. Установите Microsoft VCPKG:
— Откройте командную строку разработчика для VS 2022 (не PowerShell).
- cd c:mkdir c:srccd c:src git clone 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,мир]:x64-windows
4. Клонируйте репозиторий Darknet:
- cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknet
5. Создайте каталог сборки:
- сборка mkdir buildcd
6. Настройте и создайте Darknet:
- 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. При необходимости скопируйте библиотеки CUDA DLL:
- Если вы столкнулись с отсутствующими ошибками CUDA DLL, скопируйте их в выходной каталог:
- скопируйте «C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll» src-cliRelease
8. Перезапустите msbuild, чтобы сгенерировать установочный пакет NSIS:
- msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
9. Запустите мастер установки NSIS:
- даркнет-ВЕРСИЯ.exe
10. Проверьте установку:
- Версия C:Program FilesDarknetbindarknet.exe
Необязательно: установите CUDA или CUDA+cuDNN для ускорения графического процессора:
1. Загрузите и установите CUDA:
- https://developer.nvidia.com/cuda-downloads
2. Загрузите и установите cuDNN:
- https://developer.nvidia.com/rdp/cudnn-download
- https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows
3. Разархивируйте cuDNN и скопируйте каталоги:
- C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[версия]
4. Восстановите Даркнет:
- Повторите шаги 6–8 после установки CUDA.
Использование даркнета
интерфейс командной строки
Команды:
помощь в даркнете
даркнет-версия
Прогноз изображения:
V2: тест детектора даркнета cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
Выходные координаты:
V2: тест детектора даркнета животные.данные животные.cfg животныеbest.weights -extoutput собака.jpg
V3: darknet01inference_images животные собака.jpg
DarkHelp: DarkHelp --json животные.cfg животные.названия животных_лучшие.веса собаки.jpg
Обработка видео:
V2: демо-версия детектора даркнета животные.данные животные.cfg животныеbest.weights -extoutput test.mp4
V3: darknet03display_videos животные.cfg test.mp4
DarkHelp: DarkHelp животные.cfg животные.названия животных_лучшие.веса test.mp4
Веб-камера:
V2: демо-версия детектора даркнета животные.данные животные.cfg животные_best.weights -c 0
V3: darknet08display_webcam животные
Сохранение результатов в видео:
V2: демо-версия детектора даркнета животные.данные животные.cfg животныеbest.weights test.mp4 -outfilename res.avi
V3: darknet05processvideosmultithreaded животные.cfg животные.названия животных_лучшие.весовой тест.mp4
DarkHelp: DarkHelp животные.cfg животные.названия животных_лучшие.веса test.mp4
Вывод JSON:
V2: демо-версия детектора даркнета животные.данные животные.cfg животныеbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson животные image1.jpg
DarkHelp: DarkHelp --json животные.названия животных.cfg животные_best.weights image1.jpg
Конкретный графический процессор:
V2: демо-версия детектора даркнета животные.данные животные.cfg животные_лучшие.веса -i 1 test.mp4
Точность:
Карта детектора даркнета вождение.данные вождение.cfg вождение_best.weights ...
Карта детектора даркнета животные.данные животные.cfg животныеbest.weights -iouthresh 0.75
Якоря:
детектор даркнета кальканчоры животные.данные -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. Создайте папку набора данных: сохраните изображения и соответствующие файлы аннотаций (.txt) в формате YOLO.
6. Создайте файлы Animalstrain.txt и Animalvalid.txt. Составьте список изображений для обучения и проверки.
7. Измените файл Animals.cfg:
- партия = 64
- подразделения = 1
- max_batches = 8000 (4 класса * 2000)
- шаги = 6400,7200
- ширина = ...
- высота = ...
- классов = 4
- Обновить значения фильтров (например, (4 + 5) * 3 = 27).
8. Начать обучение: cd ~/nn/animals/ darknet детектор -map -dont_show train Animals.data Animals.cfg
Параметры обучения:
--verbose для подробного вывода
Другие инструменты и ссылки
DarkMark: управление проектами, аннотации изображений и создание файлов для Darknet.
DarkHelp: альтернативный интерфейс командной строки, мозаика изображений, отслеживание объектов и надежный C++ API.
Часто задаваемые вопросы по Darknet/YOLO: обширный ресурс для часто задаваемых вопросов.
Канал Стефана на YouTube: обучающие материалы и примеры видеороликов.
Сервер Darknet/YOLO Discord: поддержка сообщества и обсуждения.
Дорожная карта
Завершенный:
std::sort() для qsort() во время обучения
Удаление check_mistakes, getchar() и system().
Поддержка компилятора C++ (g++ в Linux, VisualStudio в Windows)
Исправление сборки Windows
Исправление поддержки Python
Сборка библиотеки даркнета
Метки на предсказаниях (код «Алфавит»)
Повторное включение кода CUDA/GPU
CUDNN повторно включить
CUDNN наполовину повторно включается
Нежестко закодированная архитектура CUDA
Улучшена информация о версии CUDA.
AVX повторно включить
Удаление старых решений и Makefile
OpenCV как необязательная зависимость
Удаление старой зависимости от библиотеки pthread.
Удаление приставки
CMakeLists.txt переписан для нового обнаружения CUDA
Удаление «алфавитного» кода и изображений данных/меток.
Сборка вне исходного кода
Расширенный вывод номера версии
Оптимизация производительности для обучения и вывода
Передача по ссылке, где это возможно
Очищенные файлы .hpp
Переписан darknet.h
Использование cv::Mat вместо приведения void*
Исправления использования внутренней структуры изображения.
Исправление сборки для устройств Jetson на базе ARM.
Исправление API Python в версии 3
Краткосрочные цели:
std::cout для printf()
Поддержка камеры Zed
Улучшен анализ командной строки.
Среднесрочные цели:
Удаление кода char* в пользу std::string
Очистка предупреждений компилятора
Улучшено использование cv::Mat.
Замена старой функциональности списка на std::vector или std::list
Поддержка одноканальных изображений в оттенках серого.
Поддержка N-канальных изображений (N > 3)
Текущая очистка кода
Долгосрочные цели:
Исправления CUDA/CUDNN для всех графических процессоров.
Перезапись кода CUDA+cuDNN
Поддержка графических процессоров отличных от NVIDIA
Повернутые ограничивающие рамки и угловая поддержка
Ключевые точки и скелеты
Тепловые карты
Сегментация