PaliGemma auf Android: Eine neue Ära der Vision Language Modelle durch Google und Hugging Face

Kategorien:
No items found.
Freigegeben:
September 5, 2024
PaliGemma Vision Language Model auf Android

Einführung in PaliGemma: Googles Vision Language Model auf Android

Die Integration von Vision Language Modellen in mobile Anwendungen hat einen bedeutenden Fortschritt gemacht. Mit der Veröffentlichung des PaliGemma Vision Language Models von Google auf Android durch die Hugging Face-Gradio Client API öffnet sich eine neue Welt der Möglichkeiten. Dieses Modell unterstützt Aufgaben wie Zero-Shot-Objekterkennung, Bildbeschreibung und visuelle Frage-Antwort-Systeme.

Was ist PaliGemma?

PaliGemma ist eine Familie von Vision Language Modellen, die von Google entwickelt wurde. Es kombiniert einen SigLIP-So400m Vision-Encoder und einen Gemma-2B Sprachdecoder. Der SigLIP-Teil des Modells kann sowohl Bilder als auch Text verstehen, während Gemma als Decoder für die Texterzeugung fungiert. Durch die Kombination dieser beiden Komponenten mittels eines linearen Adapters wird PaliGemma zu einem leistungsstarken multimodalen Modell.

Architektur und Modelltypen

Das PaliGemma-Modell ist in verschiedenen Varianten erhältlich:

- Pretrained (PT) Modelle: Diese Modelle sind vortrainiert und können für spezifische Aufgaben weiter verfeinert werden. - Mix Modelle: Diese Modelle wurden auf eine Mischung von Aufgaben feinjustiert und eignen sich für allgemeine Inferenz mit freien Textaufforderungen. - Fine-Tuned (FT) Modelle: Diese Modelle sind auf spezifische akademische Benchmarks feinjustiert und dienen hauptsächlich Forschungszwecken.

Diese Modelle kommen in drei verschiedenen Auflösungen (224x224, 448x448, 896x896) und drei verschiedenen Präzisionen (bfloat16, float16, float32) daher. Die Auswahl der richtigen Auflösung hängt von den spezifischen Anforderungen der Aufgabe ab. Höhere Auflösungen erfordern mehr Speicherplatz, bieten jedoch nur in speziellen Fällen wie OCR einen merklichen Qualitätsanstieg.

Funktionalitäten von PaliGemma

Bildbeschreibung

PaliGemma kann Bilder beschreiben, indem es auf eine Aufforderung hin Bildunterschriften erstellt. Verschiedene Aufforderungen können mit den Mix-Modellen ausprobiert werden, um ihre Reaktionen zu sehen.

Visuelle Frage-Antwort-Systeme

Das Modell kann Fragen zu einem Bild beantworten. Dazu wird die Frage zusammen mit dem Bild an das Modell übergeben.

Objekterkennung

Mit der Aufforderung „detect [entity]“ kann PaliGemma Objekte in einem Bild erkennen und die Positionen der Begrenzungsrahmenkoordinaten in Form von speziellen -Tokens ausgeben. Diese Tokens repräsentieren normalisierte Koordinaten, die in tatsächliche Bildkoordinaten umgewandelt werden können.

Referring Expression Segmentation

Bei der Referring Expression Segmentation wird das Modell aufgefordert, Entitäten in einem Bild zu segmentieren, indem natürliche Sprachbeschreibungen verwendet werden. Das Ergebnis ist eine Sequenz von Ortungs- und Segmentierungstokens.

Dokumentenverständnis

Die Mix-Modelle von PaliGemma zeigen bemerkenswerte Fähigkeiten im Dokumentenverständnis und in der logischen Schlussfolgerung.

Implementierung auf Android

Die Implementierung von PaliGemma auf Android mit der Hugging Face-Gradio Client API ermöglicht es Entwicklern, diese fortschrittlichen Modelle direkt in mobile Anwendungen zu integrieren. Dies ist besonders nützlich für Anwendungen, die eine leistungsstarke Bildanalyse und Sprachverarbeitung erfordern, wie z.B. intelligente Kamera-Apps, Augmented Reality und mehr.

Nutzung und Inferenz

Die Nutzung von PaliGemma kann wie folgt erfolgen:

```python from transformers import AutoProcessor, PaliGemmaForConditionalGeneration model_id = "google/paligemma-3b-mix-224" model = PaliGemmaForConditionalGeneration.from_pretrained(model_id) processor = AutoProcessor.from_pretrained(model_id) prompt = "What is on the flower?" image_file = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg?download=true" raw_image = Image.open(requests.get(image_file, stream=True).raw) inputs = processor(prompt, raw_image, return_tensors="pt") output = model.generate(**inputs, max_new_tokens=20) print(processor.decode(output[0], skip_special_tokens=True)[len(prompt):]) ```

Die Verwendung der Transformers-Integration von Hugging Face ermöglicht es auch, zusätzliche Werkzeuge wie PEFT (parameter efficient fine-tuning) zu nutzen und Modelle in sicheren Dateien (safetensors) zu serialisieren.

Fazit

Die Implementierung von PaliGemma auf Android stellt einen wichtigen Schritt in der Integration fortschrittlicher KI-Modelle in mobile Anwendungen dar. Diese Modelle bieten eine Vielzahl von Funktionen, die von der Bildbeschreibung über visuelle Frage-Antwort-Systeme bis hin zur Objekterkennung reichen. Mit der Unterstützung durch die Hugging Face-Gradio Client API können Entwickler nun diese leistungsstarken Modelle in ihren Anwendungen nutzen und somit das Nutzererlebnis erheblich verbessern.

Bibliografie

- https://github.com/huggingface/transformers/blob/main/docs/source/en/model_doc/paligemma.md - https://github.com/huggingface/blog/blob/main/paligemma.md - https://github.com/roboflow-ai/notebooks/blob/main/notebooks/how-to-finetune-paligemma-on-detection-dataset.ipynb - https://huggingface.co/spaces/big-vision/paligemma-hf/blob/main/app.py - https://github.com/huggingface/transformers/blob/main/src/transformers/models/paligemma/modeling_paligemma.py - https://github.com/huggingface/transformers/blob/main/src/transformers/models/paligemma/configuration_paligemma.py - https://github.com/joeyz0z/ConZIC - https://github.com/NSTiwari/PaliGemma/blob/main/ZeroShot_Object_Detection_in_videos.ipynb
Was bedeutet das?