Die Hauptmotivation bei der Entwicklung von rubrix
bestand darin, eine visuelle Suchmaschine zu haben, die vollständig auf künstlicher Intelligenz basiert und Konzepte aus den Bereichen Verarbeitung natürlicher Sprache und Computer Vision verknüpft, was wir gerne „kombinierte Ähnlichkeitssuche“ nennen. Derzeit verfügt rubrix
über zwei Hauptfunktionen:
Bitte klicken Sie hier, um mehr Details über die Architektur und die Funktionsweise rubrix
zu erfahren!
rubrix
in Aktion Hier können Sie sich einige der von rubrix
abgerufenen Bilder für Beispielabfragen ansehen.
Dieser Abschnitt beschreibt die Voraussetzungen und enthält Anweisungen, um das Projekt zum Laufen zu bringen.
Derzeit funktioniert rubrix
einwandfrei unter Linux und kann mit allen erforderlichen Paketen einfach eingerichtet werden, indem Sie diese Anweisungen befolgen:
Laden Sie die entsprechende Version von Conda für Ihren Computer herunter.
Installieren Sie es, indem Sie die Datei conda_install.sh
mit dem folgenden Befehl ausführen:
$ bash conda_install.sh
conda
zum Bash-Profil hinzufügen:
$ source ~ /.bashrc
Navigieren Sie zu rubrix/
(Verzeichnis der obersten Ebene) und erstellen Sie eine virtuelle Conda-Umgebung mit der enthaltenen Datei environment.yml
mit dem folgenden Befehl:
$ conda env create -f environment.yml
Aktivieren Sie die virtuelle Umgebung mit dem folgenden Befehl:
$ conda activate rubrix
Um das Paket mit den Setuptools-Extras zu installieren, verwenden Sie den folgenden Befehl in rubrix/
(Verzeichnis der obersten Ebene), das die Datei setup.py
enthält:
$ pip install .
Nachdem die Voraussetzungen installiert wurden, befolgen Sie diese Anweisungen, um das Projekt zu erstellen:
Navigieren Sie zum Verzeichnis rubrix/index
.
Führen Sie das Bash-Skript setup.sh
mit dem folgenden Befehl aus:
$ bash setup.sh
Was bewirkt das?
darknet/
innerhalb rubrix/index
ein, um die Objekterkennung mit YOLOv4 zu ermöglichen.assets/index.json
, bei der es sich im Wesentlichen um einen inversen Bildindex handelt, der alle Objekte, auf denen YOLOv4 trainiert wurde, den Bildern zuordnet, die sie enthalten.assets/imageEmbeddingLocations.json
, die im Wesentlichen alle Bilder in der Datenbank den Satzeinbettungsvektoren zuordnet, die für jede der Untertitel in der Datenbank generiert werden.assets/descriptors
.HINWEIS: Die Ausführung des obigen Skripts kann zwischen 1,5 und 2 Stunden dauern.
rubrix/assets
.rubrix/assets/index.json
und rubrix/assets/imageEmbeddingLocations.json
relativ zum lokalen Computer geändert werden. Dies kann wie folgt erfolgen:$ 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
und führen Sie das folgende Bash-Skript aus: $ bash quick_setup.sh
Nach Abschluss dieser Schritte sollten Sie rubrix
verwenden können.
rubrix/query/query_by_text
aus.rubrix/query/query_by_image_objects
aus.Ein funktionierendes Beispiel hierfür können Sie auch hier nachvollziehen.
Eine Alternative besteht darin, rubrix
als Anwendung im Webbrowser zu verwenden.
rubrix/rubrix/web
.$ python app.py
Dies ist für den Fall gedacht, dass Sie rubrix
auf einem Server bereitstellen möchten, z. B. einem Ubuntu-Linux-Server auf AWS
$ sudo docker build -t < YOUR-NAME > /rubrix .
$ sudo docker run -p 9000:80 < YOUR-NAME > /rubrix
Das ideale Setup hierfür wäre ein Apache/Nginx-Reverse-Proxy-Setup auf dem Hostsystem, das in diesem Fall auf Port 9000
verweist, und Apache/Nginx des Hostsystems würde SSL verarbeiten. Auf diese Weise können Sie die Anwendung immer wieder bereitstellen, ohne sich Gedanken über die Neuerstellung von SSL-Zertifikaten machen zu müssen.
environment.yml
, da die Verwendung von Conda in jeder Art von Produktionsumgebung ein Albtraum ist. Dort vorgenommene Änderungen werden nicht im Docker-Container widergespiegelt. Es gibt keine spezifischen Richtlinien für Beiträge, abgesehen von einigen allgemeinen Richtlinien, die wir zu befolgen versucht haben, wie zum Beispiel:
Wenn Sie etwas sehen, das verbessert werden könnte, senden Sie eine Pull-Anfrage! Wir freuen uns immer über Verbesserungen, um sicherzustellen, dass rubrix
als Projekt die beste Version seiner selbst ist.
Wenn Sie der Meinung sind, dass etwas anders gemacht werden sollte (oder einfach nur kaputt ist), erstellen Sie bitte ein Problem.
Weitere Einzelheiten finden Sie in der LICENSE-Datei.