Background Remover

Fr, 13. August 2021, Ralf Hersel

Wir kennen das; man hat ein nettes Foto und möchte den unschönen Hintergrund durch einen anderen austauschen. Oder man will den Vordergrund freistellen, um diesen als transparentes PNG-Bild zu verwenden. Bisher war das eine (mehr oder weniger) von Erfolg gekrönte Arbeit in GIMP.

Mit dem Kommandozeilen-Werkzeug 'Background Remover' gelingt diese Aufgabe automagisch. Und zwar nicht nur bei Bildern, sondern auch bei Video-Aufnahmen. Grundlage dieser Magie ist die Machine-Learning Bibliothek pytorch. Wer eine CUDA-Architektur zu seinen Schätzen zählt, kommt mit diesem Werkzeug sehr schnell zu guten Ergebnissen, weil die Nvidia-GPU einen Grossteil der Berechnungen durchführt. Alle anderen überlassen die Arbeit der CPU und müssen etwas länger auf das Ergebnis warten.

Die Installation von Background-Remover ist etwas heikler als üblich. Dabei muss man auf die richtigen Versionen der benötigten Pakete achten. Mein Installationsversuch scheiterte an einer zu neuen Python-Version.

Die Voraussetzungen für eine erfolgreiche Installation sind:

  • python <= 3.6
  • python3.6-dev #or what ever version of python you using
  • torch and torchvision stable version (https://pytorch.org)
  • ffmpeg 4.4+

Die Anforderungen finde ich etwas seltsam: Python kleiner gleich 3.6, Python 3.6dev. Nun gut, pytorch und ffmpeg sind einfach zu installieren. Auf der Pytorch-Seite muss man genau gucken, was man installieren will. Dafür erhält man den Installationsbefehl auf dem Silbertablett präsentiert:

Die oben gezeigte Auswahl sollte für die meisten von euch passen; ausser ihr habt eine Nvidia-GPU, dann könnt ihr CUDA wählen. Das grösste Problem dürfte wohl die verlangte Python-Umgebung sein. Ich habe es ganz frech mit meiner Python-Version 3.9 versucht und bin am relativen Import von Python-Bibliotheken gescheitert. Daher schreibe ich hier nur vom Hören-Sagen und nicht aus eigener Erfahrung.

Falls es euch gelungen ist, das ganze Zeug zu installieren, kann man die Freistellung ausprobieren. Am besten nehmt ihr ein Bild mit einem eindeutigen Vordergrund, zum Beispiel dieses hier. Dann führt ihr folgenden Befehl in der Kommandozeile aus:

backgroundremover -i "/path/to/image.jpeg" -o "output.png"

Wenn als gut geht, habt ihr anschliessend die Datei 'output.png' auf der Platte und könnt das Ergebnis bestaunen. Habt Geduld, die KI braucht eine Weile, um den Job zu erledigen. Falls es nicht funktioniert, seht ihr vermutlich eine Python-Fehlermeldung im Terminal.

Quelle: https://github.com/nadermx/backgroundremover