La principale motivation derrière la création rubrix
était de disposer d'un moteur de recherche visuel entièrement alimenté par l'intelligence artificielle, reliant des concepts dans les domaines du traitement du langage naturel et de la vision par ordinateur, ce que nous aimons appeler « recherche de similarité combinée ». Actuellement rubrix
a deux fonctionnalités principales :
Veuillez cliquer ici pour en savoir plus sur l'architecture et le fonctionnement rubrix
!
rubrix
en action Vous pouvez consulter certaines des images récupérées par rubrix
pour des exemples de requêtes ici.
Cette section décrit les conditions préalables et contient des instructions pour que le projet soit opérationnel.
Actuellement, rubrix
fonctionne parfaitement sous Linux et peut être configuré facilement avec tous les packages prérequis en suivant ces instructions :
Téléchargez la version appropriée de conda pour votre machine.
Installez-le en exécutant le fichier conda_install.sh
, avec la commande :
$ bash conda_install.sh
Ajouter conda
au profil bash :
$ source ~ /.bashrc
Accédez à rubrix/
(répertoire de niveau supérieur) et créez un environnement virtuel conda avec le fichier environment.yml
inclus à l'aide de la commande suivante :
$ conda env create -f environment.yml
Activez l'environnement virtuel avec la commande suivante :
$ conda activate rubrix
Pour installer le package avec les extras setuptools, utilisez la commande suivante dans rubrix/
(répertoire de niveau supérieur) contenant le fichier setup.py
:
$ pip install .
Une fois les prérequis installés, suivez ces instructions pour construire le projet :
Accédez au répertoire rubrix/index
.
Exécutez le script bash setup.sh
avec la commande suivante :
$ bash setup.sh
Qu'est-ce que cela fait ?
darknet/
dans rubrix/index
pour permettre la détection d'objets avec YOLOv4.assets/index.json
, qui est essentiellement un index d'image inverse mappant tous les objets sur lesquels YOLOv4 a été formé, aux images les contenant.assets/imageEmbeddingLocations.json
, qui mappe essentiellement toutes les images de la base de données aux vecteurs d'incorporation de phrases générés pour chacune des légendes de la base de données.assets/descriptors
.REMARQUE : L'exécution du script ci-dessus peut prendre entre 1,5 et 2 heures.
rubrix/assets
.rubrix/assets/index.json
et rubrix/assets/imageEmbeddingLocations.json
par rapport à la machine locale. Cela peut être fait comme suit :$ 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
et exécutez le script bash suivant : $ bash quick_setup.sh
Une fois ces étapes terminées, vous devriez pouvoir utiliser rubrix
.
rubrix/query/query_by_text
.rubrix/query/query_by_image_objects
.Vous pouvez également suivre un exemple concret pour cela ici.
Une alternative consiste à utiliser rubrix
comme application sur un navigateur Web.
rubrix/rubrix/web
.$ python app.py
C'est pour si vous souhaitez déployer rubrix
sur un serveur, par exemple un serveur Ubuntu Linux sur AWS
$ sudo docker build -t < YOUR-NAME > /rubrix .
$ sudo docker run -p 9000:80 < YOUR-NAME > /rubrix
La configuration idéale pour cela serait d'avoir une configuration de proxy inverse Apache/Nginx sur le système hôte, pointant vers le port 9000
dans ce cas, et Apache/Nginx du système hôte gérerait SSL. Cela vous permettrait de déployer l'application encore et encore sans vous soucier de refaire les certificats SSL.
environment.yml
car utiliser conda sur tout type d'environnement de production est un cauchemar. Les modifications qui y sont apportées ne seront pas reflétées dans le conteneur Dockerisé. Il n'y a pas de directives spécifiques pour contribuer, à l'exception de quelques directives générales que nous avons essayé de suivre, telles que :
Si vous voyez quelque chose qui pourrait être amélioré, envoyez une pull request ! Nous sommes toujours heureux d'examiner les améliorations, pour garantir que rubrix
, en tant que projet, est la meilleure version de lui-même.
Si vous pensez que quelque chose devrait être fait différemment (ou est tout simplement cassé), veuillez créer un problème.
Voir le fichier LICENSE pour plus de détails.