Vous souhaitez pouvoir rechercher vos images ou vidéos sans écrire une ligne de code? Vous voulez extraire des informations de vos données en demandant en anglais simple? Maintenant, vous pouvez! ?
Voxelgpt est un plugin de cinquante ans qui combine la puissance des modèles de grande langue (LLMS) et de grands modèles multimodaux (LMM) avec le langage de requête de vision informatique de FiftyOne, vous permettant de filtrer, trier, trancher sémantiquement et poser des questions sur vos données en utilisant le langage naturel. Il peut même effectuer des calculs sur votre ensemble de données pour vous - avec approbation, bien sûr!
Vous pouvez essayer Voxelgpt en direct sur gpt.fiftyone.ai!
Voxelgpt est capable de gérer l'un des types de requêtes suivants:
Lorsque vous posez une question à Voxelgpt, elle interprétera votre intention et déterminera le type de requête que vous demandez. Si Voxelgpt n'est pas sûr, il vous demandera de clarifier.
Voxelgpt peut gérer les types de requêtes suivants sur votre ensemble de données:
Vous pouvez demander à Voxelgpt de rechercher vos ensembles de données. Voici quelques exemples de choses que vous pouvez demander:
Sous le capot, Voxelgpt interprète votre requête et la traduit dans la vue de l'ensemble de données correspondant. Voxelgpt comprend le schéma de votre ensemble de données, ainsi que des choses comme les exécutions d'évaluation et les index de similitude.
Il peut également inspecter automatiquement le contenu de votre ensemble de données afin de récupérer des entités spécifiques.
Voxelgpt peut répondre aux questions sur le schéma de votre ensemble de données, des courses cérébrales, des courses d'évaluation, etc. Voici quelques exemples:
Si votre ensemble de données contient un ou plusieurs champs fo.Detections
, Voxelgpt peut filtrer ou correspondre en fonction de la taille (relative et absolue) des boîtes de délimitation et du nombre de détections.
Si votre ensemble de données dispose d'un champ GeoLocation
, vous pouvez exécuter des requêtes géographiques sur votre ensemble de données. Voxelgpt peut effectuer le géocodage pour passer du nom de l'emplacement (ou description textuelle) à une paire (lon, lat)
, ou une liste de points (lon, lat)
définissant une région limite. Voici quelques exemples:
Si votre ensemble de données a un champ Date
ou DateTime
, Voxelgpt peut effectuer des requêtes temporelles telles que:
event
en lisant une heure de la journée entre 20h et 23h Voxelgpt a accès aux étapes d'agrégation à cinquante, il peut donc effectuer des agrégations comme count
, mean
, sum
, std
, min
, max
, values
et distinct
pour un champ ou une expression sur l'ensemble de données ou une vue dans l'ensemble de données. Voici quelques exemples:
cat
?confidence
dans mes prédictions?Voxelgpt peut effectuer des calculs sur votre ensemble de données, tels que:
Voici quelques exemples de requêtes de calcul que vous pouvez demander à Voxelgpt:
Si vous ne souhaitez pas autoriser Voxelgpt à exécuter des calculs, définissez la variable d'environnement:
export VOXELGPT_ALLOW_COMPUTATIONS=false
Vous pouvez également définir la taille minimale de l'ensemble de données à laquelle Voxelgpt doit demander la permission d'exécuter des calculs:
export VOXELGPT_APPROVAL_THRESHOLD=1000
La valeur par défaut est de 100 échantillons.
Voxelgpt n'est pas seulement un programmeur de paires; C'est aussi un outil éducatif. Voxelgpt a accès à l'ensemble des FiftyOne Docs, ainsi qu'à tous les articles de blog sur le blog Voxel51, et des transcriptions de vidéos sur la chaîne YouTube Voxel51. Il peut utiliser toutes ces ressources pour répondre à cinquante questions liées.
Voici quelques exemples de requêtes de documentation que vous pouvez demander à Voxelgpt:
Voxelgpt fournira des liens vers les ressources les plus utiles de la chaîne Docs, Blog et YouTube de Voxel51. Pour les vidéos YouTube, les liens pointeront directement vers l'horodatage le plus pertinent!
Voxelgpt peut répondre aux questions sur l'environnement dans lequel vous utilisez cinquante ans, notamment:
Voici quelques exemples de requêtes d'espace de travail que vous pouvez demander à Voxelgpt:
Enfin, Voxelgpt peut répondre aux questions générales sur la vision informatique, l'apprentissage automatique et la science des données. Il peut vous aider à comprendre les concepts de base et à apprendre à surmonter les problèmes de qualité des données.
Voici quelques exemples de requêtes d'apprentissage automatique que vous pouvez demander à Voxelgpt:
Si vous ne l'avez pas déjà fait, installez FiftyOne:
pip install fiftyone
Vous devrez également fournir une clé API OpenAI (en créer une):
export OPENAI_API_KEY=XXXXXXXX
Pour une utilisation avec votre déploiement privé Azure, voir ici
Si vous souhaitez uniquement utiliser Voxelgpt dans l'application FiftyOne, vous pouvez simplement l'installer comme plugin:
fiftyone plugins download https://github.com/voxel51/voxelgpt
fiftyone plugins requirements @voxel51/voxelgpt --install
Si vous souhaitez utiliser directement le module voxelgpt
ou développer le projet localement, vous voudrez cloner le référentiel:
git clone https://github.com/voxel51/voxelgpt
cd voxelgpt
Installez les exigences:
pip install -r requirements.txt
et rendre le plugin disponible pour une utilisation dans l'application FiftyOne en le synthérant dans votre répertoire de plugins:
# Symlinks your clone of voxelgpt into your FiftyOne plugins directory
ln -s " $( pwd ) " " $( fiftyone config plugins_dir ) /voxelgpt "
Vous voulez ajouter Voxelgpt au déploiement de vos cinquante équipes? Tu peux! Instructions ici.
Vous pouvez utiliser Voxelgpt avec votre déploiement privé Azure en définissant les variables d'environnement suivantes:
export OPENAI_API_TYPE=azure
export AZURE_OPENAI_ENDPOINT= < azure_endpoint >
export AZURE_OPENAI_KEY= < azure_api_key >
export AZURE_OPENAI_GPT35_DEPLOYMENT_NAME= < gpt35-deployment-name >
export AZURE_OPENAI_GPT4O_DEPLOYMENT_NAME= < gpt4o-deployment-name >
export AZURE_OPENAI_TEXT_EMBEDDING_3_LARGE_DEPLOYMENT_NAME= < embedding-deployment-name >
Si l'une des trois premières variables d'environnement n'est pas définie, VoxelGPT utilisera par défaut l'API OpenAI. Pour les trois dernières variables d'environnement, si l'une d'entre elles n'est pas définie de la ressource n'est pas trouvée, Voxelgpt sera par défaut en utilisant l'API OpenAI pour ce modèle spécifique.
Vous pouvez utiliser Voxelgpt dans l'application FiftyOne en chargeant n'importe quel ensemble de données:
import fiftyone as fo
import fiftyone . zoo as foz
dataset = foz . load_zoo_dataset ( "quickstart" )
session = fo . launch_app ( dataset )
Et puis soit:
+
à côté de l'onglet Échantillons et en choisissant VoxelgptPar exemple, essayez de poser les questions suivantes:
Conseil de pro: utilisez le mot clé now
pour incorporer vos invites précédentes comme contexte pour votre prochaine requête!
Vous pouvez également exécuter Voxelgpt en tant qu'opérateur en appuyant sur la touche ~
de votre clavier et en sélectionnant Ask VoxelGPT
dans la liste. Cela ouvrira un petit modal où vous pourrez saisir votre requête.
Si vous avez installé localement, vous pouvez également interagir directement avec Voxelgpt via Python.
Vous pouvez utiliser ask_voxelgpt_interactive()
pour lancer une session interactive où vous pouvez converser avec Voxelgpt via des invites input()
. Accédez au répertoire où se trouve Voxelgpt et exécute:
import fiftyone as fo
import fiftyone . zoo as foz
from voxelgpt import ask_voxelgpt_interactive
dataset = foz . load_zoo_dataset ( "quickstart" )
session = fo . launch_app ( dataset )
ask_voxelgpt_interactive ( dataset , session = session )
Conseil de pro: utilisez le mot clé now
pour incorporer vos invites précédentes en tant que contexte pour votre prochaine requête.
Comme d'habitude, vous pouvez inviter Voxelgpt avec n'importe quelle combinaison d'ensemble de données, de documentation et de requêtes générales de vision par ordinateur. Par exemple, une conversation peut ressembler:
You:
what is the difference between precision and recall?
VoxelGPT:
Precision and recall are two important metrics used to evaluate the
performance of a machine learning model in classification tasks. Precision
measures the proportion of true positive predictions among all positive
predictions made by the model. Recall, on the other hand, measures the
proportion of true positive predictions among all actual positive instances
in the dataset.
In other words, precision is the ability of the model to correctly identify
positive instances, while recall is the ability of the model to identify
all positive instances. A high precision means that the model is making
very few false positive predictions, while a high recall means that the
model is able to identify most of the positive instances in the dataset.
It is important to balance precision and recall when evaluating a model's
performance. A model with high precision but low recall may be missing
important positive instances, while a model with high recall but low
precision may be making too many false positive predictions.
In the context of the FiftyOne library, precision and recall can be
computed using the `fiftyone.utils.metrics` module, which provides
functions for computing various classification metrics. For example, the
`fiftyone.utils.metrics.binary_classification` function can be used to
compute precision and recall for binary classification tasks.
You:
does FiftyOne integrate with Label Studio?
VoxelGPT:
Yes, FiftyOne integrates with Label Studio. The integration allows you to
easily upload your data directly from FiftyOne to Label Studio for labeling.
You can get started with Label Studio through a simple pip install to get a
local server up and running. FiftyOne provides simple setup instructions
that you can use to specify the necessary account credentials and server
endpoint to use. FiftyOne provides an API to create projects, upload data,
define label schemas, and download annotations using Label Studio, all
programmatically in Python. All of the following label types are supported
for image datasets: Classification, Detections, Instance segmentations,
Polygons and polylines, Keypoints, Scalar fields, and Semantic segmentation.
Sources:
- https://docs.voxel51.com/integrations/index.html
- https://docs.voxel51.com/integrations/labelstudio.html
You:
show me predicted airplanes
VoxelGPT:
Identified potential algorithms: evaluation
No evaluation runs found.
Identified potential fields: predictions
Identified potential label classes: {'predictions': ['airplane']}
Identified potential view stages: ['match', 'filter_labels', 'match_labels', 'exclude_labels', 'filter_field']
Okay, I'm going to load dataset.filter_labels("predictions",F("label") == "airplane")
You:
now only show me the first 10 samples
VoxelGPT:
Identified potential algorithms: evaluation
No evaluation runs found.
Identified potential fields: predictions
Identified potential label classes: {'predictions': ['airplane']}
Identified potential view stages: ['match', 'limit', 'limit_labels', 'skip', 'sort_by']
Okay, I'm going to load dataset.match(F("predictions.detections.label").contains("airplane")).limit(10)
You: exit
En mode interactif, VoxelGPT charge automatiquement toutes les vues qu'il crée dans l'application, et vous pouvez y accéder via votre objet de session:
print ( session . view . count ( "predictions.detections" ))
Vous pouvez également utiliser ask_voxelgpt()
pour inviter Voxelgpt avec des requêtes individuelles:
from voxelgpt import ask_voxelgpt
ask_voxelgpt ( "Does FiftyOne integrate with CVAT?" )
Yes, FiftyOne integrates with CVAT, which is an open-source image and video
annotation tool. You can upload your data directly from FiftyOne to CVAT to add or
edit labels. You can use CVAT either through the hosted server at app.cvat.ai or
through a self-hosted server. In either case, FiftyOne provides simple setup
instructions that you can use to specify the necessary account credentials and
server endpoint to use. The tight integration between FiftyOne and CVAT allows
you to curate and explore datasets in FiftyOne and then send off samples or
existing labels for annotation in CVAT with just one line of code. To use CVAT,
you must create an account on a CVAT server. By default, FiftyOne uses app.cvat.ai.
If you haven’t already, go to app.cvat.ai and create an account now. Another option
is to set up CVAT locally and then configure FiftyOne to use your self-hosted server.
A primary benefit of setting up CVAT locally is that you are limited to 10 tasks and
500MB of data with app.cvat.ai.
Sources:
- https://docs.voxel51.com/integrations/cvat.html#examples
- https://docs.voxel51.com/tutorials/cvat_annotation.html#Annotating-Datasets-with-CVAT
- https://docs.voxel51.com/tutorials/cvat_annotation.html#Setup
- https://docs.voxel51.com/integrations/index.html#fiftyone-integrations
Lorsque Voxelgpt crée une vue en réponse à votre requête, elle est retournée:
import fiftyone as fo
import fiftyone . zoo as foz
dataset = foz . load_zoo_dataset ( "quickstart" )
view = ask_voxelgpt ( "show me 10 random samples" , dataset )
Identified potential view stages: ['match', 'limit', 'skip', 'take', 'sort_by']
Okay, I'm going to load dataset.take(10)
Voxelgpt est formé pour reconnaître certains mots clés qui l'aident à comprendre votre intention:
Mot-clé | Signification |
---|---|
show / display | Dit à Voxelgpt que vous voulez qu'il interroge votre ensemble de données et affiche les résultats |
docs / how / FiftyOne | Dit à Voxelgpt que vous voulez qu'il interroge les cinq documents. |
now | Utilisez votre historique de chat comme contexte pour interpréter votre prochaine requête. Par exemple, si vous demandez "Montrez-moi des images avec des gens" et demandez "maintenant montrez-moi les 10 plus uniques", Voxelgpt comprendra que vous voulez montrer les 10 images les plus uniques avec des gens |
help | Imprime un message d'aide avec des instructions d'utilisation |
reset | Réinitialise l'histoire de la conversation |
exit | Sort des séances de python interactives |
Les contributions sont les bienvenues! Consultez le Guide des contributions pour les instructions.
Voxelgpt utilise:
Voxelgpt fournit une prise en charge limitée pour les vidéos, les ensembles de données groupés et les supports 3D. Le filtrage de base, la requête et les agrégations fonctionneront toujours, mais ne vous attendez pas à des informations approfondies sur les données 3D.
Cette implémentation est basée sur un ensemble limité d'exemples, il peut donc ne pas généraliser bien à tous les ensembles de données. Plus votre requête est spécifique, meilleure sera les résultats. Si vous constatez que les résultats ne sont pas ce que vous attendez, faites-le nous savoir!
Si vous êtes arrivé jusqu'ici, nous apprécierions grandement si vous prenez un moment pour découvrir FiftyOne et nous donner une étoile!
FiftyOne est une bibliothèque open source pour construire des ensembles de données de haute qualité et des modèles de vision par ordinateur. C'est le moteur qui alimente ce projet.
Merci de votre visite! ?
Si vous voulez rejoindre une communauté à croissance rapide d'ingénieurs, de chercheurs et de praticiens qui aiment l'IA visuelle, rejoignez la communauté de FiftyOne Slack!