Diesmal geht es um das spannende Thema Bildsegmentierung bzw. wie es META nennt Segment Anything  Meta hat anfang April 2023 einen Beitrag sowie die Software zu ihrem Projekt Segment Anything ein Grundlagenmodell für die Bildsegmentierung online gestellt. META bzw. Facebook AI Research hat die Software und das Modell zur Bildsegmentierung als Open Source auf GitHub online gestellt. Mit dieser Veröffentlichung steht jetzt ein leistungsstarkes neuronales Netz zur Verfügung, dass sicher in vielen Bereichen eingesetzt werden kann. Denn die Bildsegmentierung ist eine wichtige Aufgabe im Bereich der Computer Vision und ermöglicht es, Bilder in verschiedene Regionen zu unterteilen und diese Regionen zu identifizieren. Auf Basis dieser Daten können z. B. Objekte erkannt werden oder eben auch Pfade für Roboterfahrzeuge geplant werden denen dieses Roboter anschließend folgen können ohne mit Objekten bzw. Hindernissen zusammen zu stoßen.

Das vorgestellte Modell namens “Segment Anything” basiert auf der Transformer-Architektur und wurde mit dem Ziel entwickelt, eine höhere Präzision bei der Segmentierung von Objekten zu erreichen. Im Vergleich zu anderen Modellen erreicht Segment Anything bessere Ergebnisse in Bezug auf die Genauigkeit der Segmentierung und die Fähigkeit, komplexe Szenen zu erkennen. Hier der Link auf die offizielle Veröffentlichung von diesem Projekt.

URL: Introducing Segment Anything: Working toward the first foundation model for image segmentation

Facebook AI Research stellt das Modell als Open-Source-Software zur Verfügung, so dass es von anderen Forschern und Entwicklern genutzt werden kann. Das Modell wird bereits in verschiedenen Anwendungen eingesetzt, darunter in der Objekterkennung und der Bildsegmentierung von medizinischen Bildern.

Insgesamt zeigt der Blog-Beitrag, wie Fortschritte im Bereich der Künstlichen Intelligenz dazu beitragen können, komplexe Aufgaben im Bereich der Bildverarbeitung und Computer Vision zu lösen und welche Möglichkeiten das neue Modell von Facebook AI Research bietet.

Live Demo – Segment Anything

Wer jetzt erst einmal die Möglichkeiten die Segment Anything bietet testen möchte ohne selber die Software zu installieren kann dazu die angebotene Live Demo einmal nutzen. In dem nachfolgenden Beispiel ist eine russische Shoab 0.5 Cluster Munition zu sehen die mit der live Demo sehr gut aus dem Hintergrund trotz Schattenwurf heraus gelöst bzw. freigestellt werden kann. Das Ergebnis ist dann nicht wie bei vielen ähnlichen Web-Services in der Auflösung eingeschränkt sondern in der vollen Auflösung erhältlich. Möchte man jetzt sich einen Datenbestand für das Training eines neuronalen Netzes aufbauen sind die manuellen Schritte noch nicht ganz ideal aber das Potential ist natürlich da und kann genutzt werden. Natürlich sind noch viele weitere Nutzungsmöglichkeiten gegeben die jetzt in der Hand der Anwender mit entsprechenden Ideen liegen.

Hier der Link auf die Live Demo wer selber einmal die Möglichkeiten ausprobieren möchte.

URL: https://segment-anything.com/demo#

live demo Shoab 0.5

live demo Shoab 0.5

Jetzt möchte ich aber im folgenden Abschnitt einmal die Installation von Segment Anything auf einem Ubuntu System eingehen.

Installation und Nutzung von Segment Anything

Ich bin der Anleitung auf GitHub gefolgt und habe für meine NVIDIA A6000 entsprechend die GPU Unterstützung von Torch genutzt. Hier aber zunächst einmal der Link auf die Projektseite deren Anleitung ich für mich genutzt hatte.

URL: Segment Anything

Zunächst einmal habe ich im Terminal Fenster den folgenden Befehl ausgeführt um Toch in einer Version >= 1.8 wie gefordert zu installieren mit der entsprechenden CUDA 11.x Unterstützung. Dazu habe ich noch torchaudio installiert auch wenn das nicht gefordert ist.

Befehl: pip3 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

Anschließend habe ich Segment Anything als solches mit dem folgenden Befehl auf meinem Rechner installiert.

Befehl: git clone git@github.com:facebookresearch/segment-anything.git

Befehl: cd segment-anything

Befehl: pip install -e .

Jetzt fehlt noch das von META trainierte Modell als solches das die Segmentierung vornimmt. Dieses muss noch extra herunter geladen werden und belegt ca. GB an Platz wenn alle drei verfügbaren Netze herunter geladen werden. Die Netze selber gibt es hier zum Download.

Download Check Points: https://github.com/facebookresearch/segment-anything#model-checkpoints

Ich für meinen Teil habe einfach einmal alle drei Netze herunter geladen und im Ordner models gespeichert.

  • ViT-H SAM
  • ViT-L SAM
  • ViT-B SAM

Segment Anything nutzen

Jetzt ist alles soweit eingerichtet und ich empfehle sehr noch Jupyter Notebook auf dem Rechner zu installieren falls noch nicht geschehen. Denn das mitgelieferte Notebook “automatic_mask_generator_example.ipynb” ist einfach klasse um das Projekt einmal selber auszuprobieren.

Befehl: pip3 install jupyter

Jetzt im Terminal Fenster in den Ordner wechseln in dem Segment Anything abgelegt wurde und den folgenden Befehl ausführen um Jupyter Notebook zu starten.

Befehl: jupyter notebook

Jetzt sollte sich der Browser öffnen und ihr bekommt folgende Ordnerstruktur zu sehen. Dort in den Ordner notebooks wechseln und das Notebook “automatic_mask_generator_example.ipynb” auswählen.

Jetzt öffnet sich das Notebook und ihr könnt in diesem die einzelnen Funktionen ausführen.

Jypiter Notebook segment anything

Jypiter Notebook segment anything

Wenn ihr eigene Bilder verwenden möchtet, dann müsst ihr diese im Ordner images ablegen und entsprechend das default Bild mit dem Dateinamen “dog.jpg” mit dem Namen von eurem Bild bzw. dem Pfad zu diesem ersetzen.

segment anything set file path

segment anything set file path

Wichtig ist, das ihr bei dem Pfad zu dem neuronalen Netz den Pfad angebt unter dem das Netz bei euch auf dem Rechner abgelegt ist.

Segment Aanything model path

Segment Aanything model path

Jetzt einfach wie gewohnt das Notebook durchlaufen lassen und etwas warten bis das Bild analysiert also die Segmentierung des Bildes erfolgt ist. Das Ergebnis sah dann bei mir wie folgt aus.

shoab picture 5.0 segmented

shoab picture 5.0 segmented

Zusammenfassung

Ich bin von der Veröffentlichung dieses neuronalen Netzes beeindruckt und freue mich sehr, dass META dieses uns allen zur Verfügung gestellt hat. Es wird sicher Anwendung finden und vielleicht tauchen auch wieder spezielle Netze auf dessen Basis auf die bestimmte Klassen von Objekten sehr gut segmentieren können. Es wird sicher in Zukunft ein paar schöne Anwendung auf Basis des Segment Anything Netzes geben. Wenn ich so überlege was alles passiert ist in den letzten Wochen und Monaten dann würde ich jetzt wenn ich an die Bezeichnungen der verschieden Generationen denke von folgendem sprechen.

  • Traditionalisten (1922 – 1945)
  • Baby Boomer (1946 – 1964)
  • Generation X (1965 – 1979)
  • Generation Y / Millennials (1980 – 1994)
  • Generation Z (1995 – 2010)
  • Generation Alpha (ab 2010)
  • Generation AI (ab 2023)
  • Generation AGI (ab 202X)