Основной мотивацией создания rubrix
было создание визуальной поисковой системы, полностью работающей на искусственном интеллекте, связывающей концепции в областях обработки естественного языка и компьютерного зрения, то, что мы любим называть «комбинированным поиском по сходству». На данный момент rubrix
имеет две основные функции:
Нажмите здесь, чтобы узнать более подробную информацию об архитектуре и о том, как работает rubrix
!
rubrix
в действии Вы можете просмотреть некоторые изображения, полученные rubrix
для примеров запросов, здесь.
В этом разделе описаны предварительные условия и содержатся инструкции по запуску проекта.
В настоящее время rubrix
безупречно работает в Linux и его можно легко настроить со всеми необходимыми пакетами, следуя этим инструкциям:
Загрузите подходящую версию conda для вашего компьютера.
Установите его, запустив файл conda_install.sh
с помощью команды:
$ bash conda_install.sh
Добавьте conda
в профиль bash:
$ source ~ /.bashrc
Перейдите в rubrix/
(каталог верхнего уровня) и создайте виртуальную среду conda с включенным файлом environment.yml
используя следующую команду:
$ conda env create -f environment.yml
Активируйте виртуальную среду с помощью следующей команды:
$ conda activate rubrix
Чтобы установить пакет с дополнительными функциями setuptools, используйте следующую команду в rubrix/
(каталог верхнего уровня), содержащем файл setup.py
:
$ pip install .
После установки необходимых компонентов следуйте этим инструкциям для сборки проекта:
Перейдите в каталог rubrix/index
.
Запустите сценарий bash setup.sh
с помощью следующей команды:
$ bash setup.sh
Что это делает?
darknet/
в rubrix/index
для включения обнаружения объектов с помощью YOLOv4.assets/index.json
, который по сути представляет собой индекс обратного изображения, сопоставляющий все объекты, на которых был обучен YOLOv4, с изображениями, содержащими их.assets/imageEmbeddingLocations.json
, который по существу сопоставляет все изображения в базе данных с векторами внедрения предложений, созданными для каждого из подписей в базе данных.assets/descriptors
.ПРИМЕЧАНИЕ. Выполнение приведенного выше сценария может занять от 1,5 до 2 часов.
rubrix/assets
.rubrix/assets/index.json
и rubrix/assets/imageEmbeddingLocations.json
относительно локальной машины. Это можно сделать следующим образом:$ conda activate rubrix
>> > from rubrix . utils import fix_paths_in_index
>> > path_to_index = < absolute / path / to / rubrix / assets / index . json >
>> > path_to_emb = < absolute / path / to / rubrix / assets / imageEmbeddingLocations . json >
>> > fix_paths_in_index ( path_to_index , path_to_emb )
rubrix/rubrix/index
и запустите следующий bash-скрипт: $ bash quick_setup.sh
После выполнения этих шагов вы сможете использовать rubrix
.
rubrix/query/query_by_text
.rubrix/query/query_by_image_objects
.Вы также можете последовать рабочему примеру здесь.
Альтернативой является использование rubrix
в качестве приложения в веб-браузере.
rubrix/rubrix/web
.$ python app.py
Это для случаев, когда вы хотите развернуть rubrix
на сервере, например, сервере Ubuntu Linux на AWS.
$ sudo docker build -t < YOUR-NAME > /rubrix .
$ sudo docker run -p 9000:80 < YOUR-NAME > /rubrix
Идеальной настройкой для этого было бы наличие обратного прокси-сервера Apache/Nginx в хост-системе, указывающего в данном случае на порт 9000
, и Apache/Nginx хост-системы будет обрабатывать SSL. Это сделано для того, чтобы вы могли развертывать приложение снова и снова, не беспокоясь о переделке SSL-сертификатов.
environment.yml
, потому что использование conda в любой производственной среде — это кошмар. Внесенные там изменения не будут отражены в Dockerized-контейнере. Никаких конкретных правил по внесению вкладов не существует, за исключением нескольких общих правил, которым мы старались следовать, таких как:
Если вы видите что-то, что можно улучшить, отправьте запрос на включение! Мы всегда рады видеть улучшения, чтобы гарантировать, что rubrix
, как проект, является лучшей версией самого себя.
Если вы считаете, что что-то следует сделать по-другому (или что-то просто сломано), создайте проблему.
Дополнительные сведения см. в файле ЛИЦЕНЗИИ.