VIAME - это приложение компьютерного зрения, предназначенное для самостоятельного создания искусственного интеллекта, включая обнаружение объектов, отслеживание объектов, аннотацию изображений/видео, поиск изображений/видео, мозаику изображений, улучшение изображений, измерение размеров, многокамерную обработку данных, быстрое создание моделей. и инструменты для оценки различных алгоритмов. Первоначально ориентированный на анализ морских видов, VIAME теперь содержит множество общих алгоритмов и библиотек, а также полезен в качестве универсального набора инструментов компьютерного зрения. Он содержит ряд автономных инструментов для выполнения вышеперечисленных задач, структуру конвейера, которая может соединять узлы C/C++, Python и Matlab вместе в многопоточном режиме, а также несколько алгоритмов, лежащих поверх инфраструктуры конвейера. Наконец, часть алгоритмов была интегрирована как в настольные, так и в веб-интерфейсы пользователя для развертывания в различных типах сред, а открытый архив аннотаций и пример веб-платформы доступны на viame.kitware.com.
Краткое руководство пользователя, обучающие видеоролики и руководство разработчика являются более полными, но некоторые записи также перечислены ниже с разбивкой по отдельным функциям:
Обзор документации <> Установка <> Сборка <> Все примеры <> Интерфейс DIVE <> Интерфейс VIEW <> Поиск и быстрое создание модели <> Интерфейс командной строки детектора объектов <> Интерфейс командной строки отслеживания объектов <> Интерфейс командной строки обучения детекторов <> Оценка детекторов <> Обнаружение Форматы файлов <> Калибровка и улучшение изображения <> Регистрация и мозаика <> Стерео измерения и карты глубины <> Обзор конвейерной обработки <> Базовый класс и информация о конвейере <> Интеграция плагинов <> Примеры шаблонов плагинов <> Встраивание алгоритмов в C++
Полное руководство по установке и описание различных вариантов VIAME см. в кратком руководстве выше. Полная версия для настольного компьютера предоставляется в виде файла .msi, .zip или .tar. Альтернативно, автономные аннотаторы (без каких-либо алгоритмов обработки) доступны через более мелкие установщики (см. Автономный режим DIVE ниже). Наконец, файлы Docker доступны как для VIAME Desktop, так и для Интернета (ниже). Для полной установки на рабочий стол извлеките двоичные файлы и поместите их в выбранный вами каталог, например /opt/noaa/viame в Linux или C:Program FilesVIAME в Windows. При использовании пакетов, созданных с поддержкой графического процессора, убедитесь, что установлено достаточное количество видеодрайверов версии 465.19 или выше. Лучший способ установки драйверов зависит от вашей операционной системы. Это не требуется, если используются только ручные аннотаторы (или только классификаторы кадров). Двоичные файлы довольно велики с точки зрения дискового пространства из-за включения нескольких файлов моделей и программ по умолчанию, но если вы просто создаете нужные функции из исходного кода (например, для встроенных приложений), они намного меньше.
Требования к установке:
Рекомендации по установке:
Бинарные файлы для полного рабочего стола Windows:
Бинарные файлы для полного рабочего стола Linux:
Веб-приложения :
Дополнительные пакеты:
Образы Docker доступны по адресу: https://hub.docker.com. О контейнере по умолчанию, содержащем только основные алгоритмы и запускаемом через командную строку, см.:
комплектное ПО/через имя:gpu-алгоритмы-последние
Этот образ является обезглавленным (т. е. не содержит графического пользовательского интерфейса) и содержит установку VIAME для рабочего стола (не через Интернет) в папке /opt/noaa/viame. Ссылки на докер-контейнеры VIAME-Web см. в приведенном выше разделе документации по установке. Большинство дополнительных моделей не включены в экземпляр, но их можно загрузить, запустив скрипт download_viame_addons.sh в папке bin.
Эти инструкции предназначены для разработчиков или тех, кто заинтересован в создании последней ветки выпуска. Любой, кто заинтересован в запуске программного обеспечения «как есть», а не в его изменении, должен использовать установщики, перечисленные в предыдущем разделе, без необходимости выполнять сборку программного обеспечения. Более подробные инструкции по сборке можно найти здесь, но программное обеспечение может быть собрано либо как суперсборка, которая собирает большую часть своих зависимостей параллельно с собой, либо как автономное решение. Для сборки VIAME требуется как минимум Git, CMake и компилятор C++. Также рекомендуется установить Python и CUDA. При использовании CUDA предпочтительны версии 11.7 или 11.6 с CUDNN 8. Другие версии CUDA или CUDNN могут работать, а могут и не работать. Для дистрибутивов Python необходим как минимум Python3.6 или выше, а также установлен pip.
Чтобы выполнить сборку в командной строке в Linux, используйте следующие команды, заменяя только [каталог-источника] и [каталог-сборки] местами по вашему выбору. Хотя эти каталоги могут быть одинаковыми, хорошей практикой является наличие рядом с ним извлечения «src», а затем отдельного каталога «build»:
git clone https://github.com/VIAME/VIAME.git [source-directory]
cd [source-directory] && git submodule update --init --recursive
Затем создайте каталог сборки и запустите следующую команду cmake
(или воспользуйтесь графическим интерфейсом cmake, если вы не используете интерфейс командной строки):
mkdir [build-directory] && cd [build-directory]
cmake -DCMAKE_BUILD_TYPE:STRING=Release [source-directory]
После завершения команды cmake
вы можете настроить любые флаги сборки, используя «ccmake» или графический интерфейс cmake, а затем выполнить сборку с помощью следующей команды в Linux:
make -j8
Или, альтернативно, создав его в Visual Studio или выбранном вами компиляторе для Windows. В Linux '-j8' указывает сборке выполняться в многопоточном режиме с использованием 8 потоков. Это полезно для более быстрой сборки, хотя, если вы получите ошибку, ее может быть трудно увидеть, и в этом случае может потребоваться просто выполнить команду make. более полезно. Для Windows на данный момент наиболее протестированным компилятором является VS2019.
У viame есть несколько дополнительных аргументов, которые определяют, какие плагины будут созданы, например, перечисленные ниже. Если включен плагин, который зависит от другой зависимости, например OpenCV), тогда флаг зависимости будет принудительно включен. Если вы не уверены, что включать, лучше просто оставить флаги включения и отключения по умолчанию, которые будут реализовывать большинство (хотя и не все) функций. Вот основные компоненты, которые мы рекомендуем оставить включенными:
Флаг | Описание |
---|---|
VIAME_ENABLE_OPENCV | Создает OpenCV и базовые процессы OpenCV (видеоридеры, простые графические интерфейсы). |
VIAME_ENABLE_VXL | Создает VXL и базовые процессы VXL (видеоридеры, фильтры изображений). |
VIAME_ENABLE_PYTHON | Включает поддержку использования процессов Python (несколько алгоритмов). |
VIAME_ENABLE_PYTORCH | Устанавливает все процессы pytorch (детекторы, трекеры, классификаторы) |
И ряд флагов, которые контролируют, какие системные утилиты и оптимизации создаются, например:
Флаг | Описание |
---|---|
VIAME_ENABLE_CUDA | Включает оптимизацию CUDA (GPU) во всех пакетах. |
VIAME_ENABLE_CUDNN | Обеспечивает оптимизацию CUDNN (GPU) для всех процессов. |
VIAME_ENABLE_DIVE | Включает DIVE GUI (аннотации и обучение на нескольких последовательностях) |
VIAME_ENABLE_VIVIA | Создает графические интерфейсы VIVIA (ПРОСМОТР и ПОИСК аннотаций и поиск видео) |
VIAME_ENABLE_DOCS | Собирает документацию уровня класса Doxygen (помещает в дерево установки) |
VIAME_BUILD_DEPENDENCIES | Собрать VIAME как суперсборку, собрав все зависимости (по умолчанию). |
VIAME_INSTALL_EXAMPLES | Устанавливает примеры для вышеуказанных модулей в дерево установки/примеров. |
VIAME_DOWNLOAD_MODELS | Загружает предварительно обученные модели для использования с примерами и интерфейсами. |
И, наконец, ряд флагов, которые создают алгоритмы или интерфейсы с более специализированной функциональностью:
Флаг | Описание |
---|---|
VIAME_ENABLE_TENSORFLOW | Создает плагин детектора объектов TensorFlow. |
VIAME_ENABLE_DARKNET | Создает плагин детектора объектов Darknet (YOLO). |
VIAME_ENABLE_TENSORRT | Создает плагин детектора объектов TensorRT. |
VIAME_ENABLE_BURNOUT | Создает плагин классификатора пикселей на основе Burn-Out. |
VIAME_ENABLE_SMQTK | Создает плагины SMQTK для поддержки индексации и поиска изображений/видео. |
VIAME_ENABLE_KWANT | Создает инструменты обнаружения и отслеживания KWANT (оценки). |
VIAME_ENABLE_LEARN | Создает дополнительные методы для быстрого обучения. |
VIAME_ENABLE_SCALLOP_TK | Создает плагин детектора объектов на основе Scallop-TK. |
VIAME_ENABLE_SEAL | Создает мультимодальный графический интерфейс Seal. |
VIAME_ENABLE_ITK | Создает регистрацию кросс-модальных изображений ITK. |
VIAME_ENABLE_UW_CLASSIFIER | Создает плагин классификатора рыбы UW. |
VIAME_ENABLE_MATLAB | Включает поддержку и устанавливает все процессы Matlab. |
VIAME_ENABLE_LANL | Создает дополнительный (Matlab) детектор гребешков. |
ВИАМЭ ├── cmake # Файлы конфигурации CMake для подпакетов ├── docs # Файлы документации и руководство (предварительная компиляция) ├── configs # Все конфигурационные файлы и модели, запускаемые системой. │ ├── конвейеры # Все конфигурации конвейера обработки │ │ └── модели # Все модели, которые загружаются только на основе флагов. │ ├── prj-linux # Файлы проекта Linux по умолчанию │ └── prj-windows # Файлы проектов Windows по умолчанию ├── примеры # Все работоспособные примеры и примеры учебных пособий. ├── packages # Внешние проекты, используемые системой │ ├── kwiver # Обработка серверной инфраструктуры │ ├── fletch # Построитель зависимостей для вещей, которые не меняются часто │ ├── kwant # Инструменты подсчета очков и оценки детекторов │ ├── vivia # Базовые графические интерфейсы рабочего стола (v1.0) │ └── ... # Различные другие пакеты (обычно для алгоритмов) ├── плагины # Интегрированные алгоритмы или оболочки внешних проектов. │ └── ... # Ассорти плагинов (детекторы, карты глубины, фильтры и т. д.) ├── инструменты # Автономные инструменты или сценарии, часто основанные на вышеперечисленных. └── README.md # Вводная страница проекта, которую вы читаете └── RELEASE_NOTES.md # Список последних обновлений системы по версиям
Если у вас уже есть проверка VIAME и вы хотите сменить ветку или обновить код, важно перезапустить:
git submodule update --init --recursive
После переключения веток убедитесь, что у вас есть правильные хэши подпакетов в сборке. Очень редко вам также может потребоваться запустить:
git submodule sync
На всякий случай изменился адрес субмодулей. Вам нужно запускать эту команду только в том случае, если вы получаете ошибку «невозможно получить хеш #hashid».
VIAME выпускается под лицензией BSD-3.
Неисчерпывающий список соответствующих документов, использованных в проекте вместе с участниками, можно найти здесь.
VIAME был разработан при финансовой поддержке из нескольких источников, и особая благодарность перечисленным здесь.