Describe Anything : un outil open source pour générer des descriptions détaillées d'images et de zones vidéo

Introduction générale

Describe Anything est un projet open source développé par NVIDIA et plusieurs universités, dont le cœur est le modèle Describe Anything (DAM). Cet outil génère des descriptions détaillées basées sur des zones (telles que des points, des boîtes, des graffitis ou des masques) que l'utilisateur marque dans une image ou une vidéo. Il ne décrit pas seulement les détails d'une image fixe, mais capture également les changements de régions dans une vidéo au fil du temps.

Describe Anything:为图像和视频区域生成详细描述的开源工具

 

Liste des fonctions

  • Prise en charge de plusieurs méthodes d'étiquetage des régions : les utilisateurs peuvent spécifier la région de description d'une image ou d'une vidéo par des points, des boîtes, des gribouillis ou des masques.
  • Description d'images et de vidéos : générez des descriptions détaillées pour les images fixes ou analysez les changements dynamiques dans des zones spécifiques d'une vidéo.
  • Modèles et ensembles de données open source : les modèles DAM-3B et DAM-3B-Video sont disponibles pour soutenir le traitement conjoint des images et des vidéos.
  • Interface interactive : une interface web est fournie par Gradio, permettant aux utilisateurs de dessiner des masques et d'obtenir des descriptions en temps réel.
  • Prise en charge de l'API : fournir des interfaces de serveur compatibles avec l'OpenAI pour faciliter l'intégration dans d'autres applications.
  • DLC-Bench Evaluation : contient des outils d'analyse comparative spécialisés pour évaluer les performances des modèles décrits dans le domaine.
  • Intégration SAM : modèle Segment Anything (SAM) intégré en option avec génération automatique de masques pour améliorer l'efficacité opérationnelle.

 

Utiliser l'aide

Processus d'installation

Describe Anything peut être installé à partir d'un environnement Python, et il est recommandé d'utiliser un environnement virtuel pour éviter les conflits de dépendances. Voici les étapes détaillées de l'installation :

  1. Création d'un environnement Python: :
    En utilisant Python 3.8 ou une version ultérieure, créez un nouvel environnement virtuel :

    python -m venv dam_env
    source dam_env/bin/activate  # Linux/Mac
    dam_env\Scripts\activate  # Windows
  1. Installer Décrire n'importe quoi: :
    Il existe deux types de montage :

    • Installer directement via pip :
      pip install git+https://github.com/NVlabs/describe-anything
      
    • Clonez le dépôt et installez-le localement :
      git clone https://github.com/NVlabs/describe-anything
      cd describe-anything
      pip install -v .
      
  2. Installer Segment Anything (optionnel): :
    Si vous avez besoin de générer des masques automatiquement, vous devez installer la dépendance SAM :

    cd demo
    pip install -r requirements.txt
    
  3. Vérifier l'installation: :
    Une fois l'installation terminée, exécutez la commande suivante pour vérifier qu'elle a réussi :

    python -c "from dam import DescribeAnythingModel; print('Installation successful')"
    

Utilisation

Describe Anything peut être utilisé de différentes manières, notamment par le biais de scripts en ligne de commande, d'interfaces interactives et d'appels d'API. Vous trouverez ci-dessous une présentation détaillée des principales fonctionnalités :

1. interface interactive Gradio

L'interface de Gradio est adaptée aux débutants et permet aux utilisateurs de télécharger des images et de dessiner manuellement des masques pour obtenir des descriptions.

  • Interface de lancement: :
    Exécutez la commande suivante pour démarrer le serveur Gradio :

    python demo_simple.py
    

    Lorsque la commande est exécutée, le navigateur ouvre une page web locale (généralement la page http://localhost:7860).

  • procédure: :
    1. Télécharger une image : cliquez sur le bouton Télécharger pour sélectionner un fichier image local.
    2. Dessiner un masque : utilisez l'outil pinceau pour entourer la zone d'intérêt sur l'image.
    3. Obtenir une description : cliquez sur Soumettre et le système générera une description détaillée de la zone, par exemple "Un chien roux, portant un collier argenté, en train de courir".
    4. Intégration SAM en option : lorsque SAM est activé, le système génère automatiquement un masque en cliquant sur les points de l'image.
  • mise en garde: :
    • Assurez-vous que l'image est au format RGBA et que le masque est traité par le canal alpha.
    • Le niveau de détail de la description peut être ajusté en réglant les paramètres (par ex. max_new_tokens) Contrôle.

2. les scripts en ligne de commande

Les scripts de ligne de commande sont adaptés au traitement par lots ou à l'utilisation par les développeurs et offrent une plus grande flexibilité.

  • Description de l'image: :
    Exécutez la commande suivante pour générer une description de l'image :

    python examples/dam_with_sam.py --image_path <image_file> --input_points "[[x1,y1],[x2,y2]]"
    

    Exemple :

    python examples/dam_with_sam.py --image_path dog.jpg --input_points "[[500,300]]"
    

    Le système génère un masque et produit une description basée sur les points spécifiés.

  • Description de la vidéo: :
    Traitement de la vidéo à l'aide de modèles fédérés :

    python examples/query_dam_server_video.py --model describe_anything_model --server_url http://localhost:8000 --video_path <video_file>
    

    Il suffit de spécifier la zone d'un cadre pour que le système suive et décrive automatiquement les changements de zone.

  • paramétrage: :
    • --temperature: Contrôle la créativité de la description, avec une valeur recommandée de 0,2.
    • --top_p: Contrôle la génération de diversité, avec une valeur recommandée de 0,9.
    • --max_new_tokensLongueur de la description : Définir la longueur maximale de la description, la valeur par défaut étant de 512.

3. appels API

Describe Anything fournit une API compatible avec l'OpenAI qui peut être intégrée dans d'autres applications.

  • Démarrer le serveur: :
    Exécutez la commande suivante pour démarrer le serveur DAM :

    python dam_server.py --model-path nvidia/DAM-3B --conv-mode v1 --prompt-mode focal_prompt
    

    Le serveur fonctionne par défaut sur le serveur http://localhost:8000.

  • Envoyer une demande: :
    Envoyez des requêtes en utilisant Python et le SDK OpenAI :

    from openai import OpenAI
    client = OpenAI(base_url="http://localhost:8000", api_key="not-needed")
    response = client.chat.completions.create(
    model="describe_anything_model",
    messages=[
    {"role": "user", "content": [
    {"type": "image_url", "image_url": {"url": "data:image/png;base64,<base64_image>"}},
    {"type": "text", "text": "Describe the region in the mask"}
    ]}
    ]
    )
    print(response.choices[0].message.content)
    

    l'interchangeabilité <base64_image> Encodage Base64 de l'image.

4. évaluation du banc DLC

DLC-Bench est un outil d'évaluation des modèles de description de zones.

  • Télécharger la base de données: :
    git lfs install
    git clone https://huggingface.co/datasets/nvidia/DLC-Bench
    
  • Évaluation opérationnelle: :
    Utilisez les commandes suivantes pour générer les résultats du modèle et les évaluer :

    python get_model_outputs.py --model_type dam --model_path nvidia/DAM-3B
    

    Les résultats sont mis en cache dans la base de données model_outputs_cache/ Dossier.

Fonction en vedette Fonctionnement

  • Prompting focalDAM utilise la technologie Focal Prompting pour combiner le contexte global de l'image et les détails de la zone locale afin de générer des descriptions plus précises. Les utilisateurs n'ont pas besoin d'ajuster manuellement les messages, le système les optimise automatiquement.
  • Gated Cross-AttentionLe modèle est capable, grâce à un mécanisme d'attention croisée, de se concentrer sur une région spécifique dans une scène complexe, en évitant l'interférence d'informations non pertinentes.
  • Description du mouvement vidéoIl suffit de marquer une zone sur une image pour que DAM suive et décrive automatiquement l'évolution de cette zone au cours de la vidéo, par exemple : "Les muscles de la jambe de la vache bougent vigoureusement avec sa foulée".

 

scénario d'application

  1. Analyse d'images médicales
    Les médecins peuvent utiliser Describe Anything pour annoter des zones spécifiques d'une image médicale, telle qu'un scanner ou une IRM, afin de générer une description détaillée pour faciliter le diagnostic. Par exemple, en étiquetant une zone anormale dans les poumons, le système pourrait décrire "une zone irrégulièrement ombrée avec des bords flous, peut-être une inflammation".
  2. l'urbanisme
    Les urbanistes peuvent télécharger une vidéo aérienne, étiqueter les zones de bâtiments ou de routes et obtenir des descriptions telles que "une large autoroute à quatre voies entourée de bâtiments commerciaux denses". Cela permet d'analyser l'agencement de la ville.
  3. création de contenu
    Les créateurs de vidéos peuvent utiliser Describe Anything pour générer des descriptions d'objets spécifiques dans un clip vidéo, par exemple "un aigle volant avec les ailes déployées et des montagnes enneigées en arrière-plan". Ces descriptions peuvent être utilisées pour le sous-titrage ou la scénarisation.
  4. données annotation
    Les scientifiques des données peuvent utiliser le DAM pour générer automatiquement des descriptions d'objets dans une image ou une vidéo, réduisant ainsi le besoin d'étiquetage manuel. Par exemple, l'étiquetage d'un véhicule dans un ensemble de données génère la phrase "voiture rouge, phares allumés".

 

QA

  1. Quels sont les formats d'entrée pris en charge par Describe Anything ?
    Les formats d'image courants tels que PNG, JPEG et les formats vidéo tels que MP4 sont pris en charge. L'image doit être en mode RGBA, le masque étant spécifié par le canal alpha.
  2. Comment puis-je améliorer la précision de mes descriptions ?
    Utilisez un masque plus précis (par exemple, généré automatiquement par SAM) et ajustez le paramètre temperature répondre en chantant top_p des paramètres permettant de contrôler la créativité et la diversité des descriptions.
  3. A-t-il besoin d'un GPU pour fonctionner ?
    Les GPU NVIDIA (par exemple RTX 3090) sont recommandés pour l'inférence accélérée, mais les CPU peuvent également être utilisés, à des vitesses plus lentes.
  4. Comment gérer les descriptions multi-images dans les vidéos ?
    Il suffit de marquer la région sur une image pour que le DAM suive et décrive automatiquement l'évolution de la région dans les images suivantes.
© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...