AI Personal Learning
und praktische Anleitung
CyberKnife-Zeichenspiegel

Describe Anything: ein Open-Source-Tool zur Erstellung detaillierter Beschreibungen von Bildern und Videobereichen

Allgemeine Einführung

Describe Anything ist ein von NVIDIA und mehreren Universitäten entwickeltes Open-Source-Projekt, dessen Kernstück das Describe Anything Model (DAM) ist. Dieses Tool generiert detaillierte Beschreibungen auf der Grundlage von Bereichen (wie Punkte, Boxen, Graffiti oder Masken), die der Benutzer in einem Bild oder Video markiert. Es beschreibt nicht nur die Details eines Standbildes, sondern erfasst auch die Veränderung von Regionen in einem Video im Laufe der Zeit.

Describe Anything: ein Open-Source-Tool zur Erstellung detaillierter Beschreibungen von Bildern und Videoregionen-1


 

Funktionsliste

  • Unterstützt mehrere Methoden zur Kennzeichnung von Regionen: Benutzer können die Beschreibungsregion eines Bildes oder Videos durch Punkte, Kästchen, Kritzeleien oder Masken festlegen.
  • Bild- und Videobeschreibung: Generieren Sie detaillierte Beschreibungen für Standbilder oder analysieren Sie dynamische Veränderungen in bestimmten Bereichen eines Videos.
  • Open-Source-Modelle und -Datensätze: DAM-3B- und DAM-3B-Video-Modelle sind verfügbar, um die gemeinsame Bild- und Videoverarbeitung zu unterstützen.
  • Interaktive Schnittstelle: Über Gradio wird eine Webschnittstelle bereitgestellt, über die die Benutzer Masken zeichnen und Beschreibungen in Echtzeit abrufen können.
  • API-Unterstützung: Bereitstellung von OpenAI-kompatiblen Server-Schnittstellen zur einfachen Integration in andere Anwendungen.
  • DLC-Bench Evaluation: enthält spezielle Benchmarking-Tools zur Bewertung der Leistung der in diesem Bereich beschriebenen Modelle.
  • SAM-Integration: Optionales integriertes Segment Anything (SAM)-Modell mit automatischer Maskengenerierung zur Steigerung der betrieblichen Effizienz.

 

Hilfe verwenden

Einbauverfahren

Describe Anything kann aus einer Python-Umgebung heraus installiert werden. Es wird empfohlen, eine virtuelle Umgebung zu verwenden, um Konflikte mit Abhängigkeiten zu vermeiden. Hier sind die detaillierten Installationsschritte:

  1. Erstellen einer Python-Umgebung::
    Erstellen Sie mit Python 3.8 oder höher eine neue virtuelle Umgebung:

    python -m venv dam_env
    source dam_env/bin/activate  # Linux/Mac
    dam_env\Scripts\activate  # Windows
  1. Installieren Sie Describe Anything::
    Es gibt zwei Befestigungsmöglichkeiten:

    • Direkt über pip installieren:
      pip install git+https://github.com/NVlabs/describe-anything
      
    • Klonen Sie das Repository und installieren Sie es lokal:
      git clone https://github.com/NVlabs/describe-anything
      cd describe-anything
      pip install -v .
      
  2. Segment Anything installieren (optional)::
    Wenn Sie Masken automatisch erzeugen wollen, müssen Sie die SAM-Abhängigkeit installieren:

    cd demo
    pip install -r requirements.txt
    
  3. Überprüfen der Installation::
    Führen Sie nach Abschluss der Installation den folgenden Befehl aus, um den Erfolg zu überprüfen:

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

Verwendung

Describe Anything kann auf verschiedene Arten verwendet werden, z. B. über Befehlszeilenskripte, interaktive Schnittstellen und API-Aufrufe. Im Folgenden finden Sie eine detaillierte Beschreibung der wichtigsten Funktionen:

1. interaktive Gradio-Schnittstelle

Die Gradio-Benutzeroberfläche ist für Anfänger geeignet und ermöglicht es den Benutzern, Bilder hochzuladen und manuell Masken zu zeichnen, um Beschreibungen zu erhalten.

  • Schnittstelle starten::
    Führen Sie den folgenden Befehl aus, um den Gradio-Server zu starten:

    python demo_simple.py
    

    Wenn der Befehl ausgeführt wird, öffnet der Browser eine lokale Webseite (normalerweise die http://localhost:7860).

  • Verfahren::
    1. Bild hochladen: Klicken Sie auf die Schaltfläche Hochladen, um eine lokale Bilddatei auszuwählen.
    2. Maske zeichnen: Verwenden Sie das Pinselwerkzeug, um den gewünschten Bereich im Bild einzukreisen.
    3. Beschreibung abrufen: Klicken Sie auf "Senden", und das System erstellt eine detaillierte Beschreibung des Bereichs, z. B. "Ein Hund mit roten Haaren, der ein silbernes Halsband trägt, läuft".
    4. Optionale SAM-Integration: Wenn SAM aktiviert ist, erzeugt das System automatisch eine Maske, wenn Sie auf einen Punkt im Bild klicken.
  • caveat::
    • Stellen Sie sicher, dass das Bild im RGBA-Format vorliegt und die Maske über den Alphakanal verarbeitet wird.
    • Der Detaillierungsgrad der Beschreibung kann durch die Einstellung von Parametern angepasst werden (z. B. max_new_tokens) Kontrolle.

2. kommandozeilenbasierte Skripte

Befehlszeilenskripte eignen sich für die Stapelverarbeitung oder die Verwendung durch Entwickler und bieten mehr Flexibilität.

  • Bildbeschreibung::
    Führen Sie den folgenden Befehl aus, um eine Beschreibung für das Bild zu erstellen:

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

    Beispiel:

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

    Das System erzeugt eine Maske und gibt eine Beschreibung auf der Grundlage der angegebenen Punkte aus.

  • Video Beschreibung::
    Videobearbeitung mit föderalen Modellen:

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

    Geben Sie einfach den Bereich auf einem Rahmen an, und das System verfolgt und beschreibt automatisch die Bereichsänderungen.

  • Parametrisierung::
    • --temperatureKreativität: Steuert die Kreativität der Beschreibung, mit einem empfohlenen Wert von 0,2.
    • --top_pSteuert die Erzeugung von Diversität mit einem empfohlenen Wert von 0,9.
    • --max_new_tokensLänge der Beschreibung: Legen Sie die maximale Länge der Beschreibung fest; der Standardwert ist 512.

3) API-Aufrufe

Describe Anything bietet eine OpenAI-kompatible API, die sich zur Integration in andere Anwendungen eignet.

  • Starten Sie den Server::
    Führen Sie den folgenden Befehl aus, um den DAM-Server zu starten:

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

    Der Server läuft standardmäßig auf dem http://localhost:8000.

  • Anfrage senden::
    Senden Sie Anfragen mit Python und dem OpenAI SDK:

    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)
    

    Austauschbarkeit <base64_image> Base64-Kodierung für das Bild.

4. die DLC-Bench-Bewertung

DLC-Bench ist ein Benchmarking-Tool zur Bewertung von Flächenbeschreibungsmodellen.

  • Datensatz herunterladen::
    git lfs install
    git clone https://huggingface.co/datasets/nvidia/DLC-Bench
    
  • Operative Bewertung::
    Verwenden Sie die folgenden Befehle, um die Modellausgabe zu erzeugen und auszuwerten:

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

    Die Ergebnisse werden im Cache der model_outputs_cache/ Mappe.

Featured Function Bedienung

  • Focal PromptingDAM verwendet die Focal Prompting-Technologie, um den globalen Bildkontext und lokale Details zu kombinieren und so genauere Beschreibungen zu erstellen. Die Benutzer müssen die Prompts nicht manuell anpassen, das System optimiert sie automatisch.
  • Gated Cross-AttentionDas Modell ist in der Lage, sich auf eine bestimmte Region in einer komplexen Szene zu konzentrieren und dabei die Einmischung irrelevanter Informationen zu vermeiden.
  • Beschreibung der VideobewegungMarkieren Sie einfach einen Bereich auf einem Bild, und DAM verfolgt und beschreibt automatisch, wie sich dieser Bereich im Video verändert, z. B. "die Beinmuskeln der Kuh bewegen sich kräftig mit ihrem Schritt".

 

Anwendungsszenario

  1. Medizinische Bildanalyse
    Ärzte können mit Describe Anything bestimmte Bereiche auf einem medizinischen Bild, z. B. einem CT oder MRT, mit Anmerkungen versehen, um eine detaillierte Beschreibung zur Unterstützung der Diagnose zu erstellen. So könnte das System zum Beispiel einen anormalen Bereich in der Lunge als "unregelmäßig schattierten Bereich mit unscharfen Rändern, möglicherweise eine Entzündung" beschreiben.
  2. Stadtplanung
    Die Planer können ein Luftbildvideo hochladen, Gebäude- oder Straßenbereiche markieren und Beschreibungen wie "eine breite vierspurige Autobahn, umgeben von dichten Geschäftsgebäuden" erhalten. Dies hilft bei der Analyse des Stadtgrundrisses.
  3. Erstellung von Inhalten
    Videoersteller können Describe Anything verwenden, um Beschreibungen für bestimmte Objekte in einem Videoclip zu erstellen, z. B. "ein fliegender Adler mit ausgebreiteten Flügeln und schneebedeckten Bergen im Hintergrund". Diese Beschreibungen können für Untertitel oder Skripte verwendet werden.
  4. Datenkommentar
    Datenwissenschaftler können DAM verwenden, um automatisch Beschreibungen für Objekte in einem Bild oder Video zu generieren und so die Notwendigkeit einer manuellen Beschriftung zu verringern. Die Beschriftung eines Fahrzeugs in einem Datensatz erzeugt beispielsweise die Phrase "rotes Auto, Scheinwerfer an".

 

QA

  1. Welche Eingabeformate werden von Describe Anything unterstützt?
    Es werden gängige Bildformate wie PNG, JPEG und Videoformate wie MP4 unterstützt. Das Bild muss im RGBA-Modus vorliegen, wobei die Maske durch den Alphakanal bestimmt wird.
  2. Wie kann ich die Genauigkeit meiner Beschreibungen verbessern?
    Verwenden Sie eine präzisere Maske (z. B. automatisch über SAM generiert) und passen Sie die temperature im Gesang antworten top_p Parameter, um die Kreativität und Vielfalt der Beschreibungen zu kontrollieren.
  3. Benötigt es einen Grafikprozessor?
    NVIDIA-Grafikprozessoren (z. B. RTX 3090) werden für beschleunigte Inferenzen empfohlen, aber auch CPUs können mit geringerer Geschwindigkeit eingesetzt werden.
  4. Wie behandelt man Beschreibungen mit mehreren Bildern in Videos?
    Markieren Sie einfach die Region in einem Bild, und das DAM verfolgt und beschreibt automatisch, wie sich die Region in den nachfolgenden Bildern verändert.
Darf nicht ohne Genehmigung vervielfältigt werden:Leiter des AI-Austauschkreises " Describe Anything: ein Open-Source-Tool zur Erstellung detaillierter Beschreibungen von Bildern und Videobereichen
de_DEDeutsch