paint-brush
So kolorieren Sie ein Schwarzweißfotovon@alexk0
465 Lesungen
465 Lesungen

So kolorieren Sie ein Schwarzweißfoto

von Aleksandr Korepanov4m2024/06/07
Read on Terminal Reader

Zu lang; Lesen

DeOldify ist ein Tool, mit dem Sie alte Fotos mit wenigen Klicks kolorieren können. Es ist kostenlos und Open Source und Sie müssen lediglich ein wenig Python-Code schreiben.
featured image - So kolorieren Sie ein Schwarzweißfoto
Aleksandr Korepanov HackerNoon profile picture
0-item

Wir alle besitzen einen Schatz an alten Fotos, die wir von unseren Eltern, Großeltern usw. geerbt haben. Oft sind diese Fotos schwarzweiß und manchmal möchten wir sie in Farbe zum Leben erwecken. Es gibt zahlreiche Websites im Internet, auf denen Sie dies mit nur wenigen Klicks direkt in Ihrem Browser tun können. Das Problem bei diesen Websites liegt jedoch in ihren zahlreichen Einschränkungen hinsichtlich Quantität und Qualität.


Darüber hinaus erfordern diese Dienste häufig eine Registrierung und Abonnements, was ziemlich frustrierend sein kann.


In diesem Beitrag möchte ich Ihnen zeigen, wie Sie mit dem fantastischen Tool DeOldify beliebig viele Fotos kolorieren können, ohne sich mit Einschränkungen, Registrierungen oder Abonnements herumschlagen zu müssen.


DeOldify bietet eine tolle Einführung , die Sie vielleicht verwenden, aber für unvorbereitete Personen kann es etwas schwierig erscheinen. Hier möchte ich Ihnen eine einfachere Möglichkeit zur Verwendung von DeOldify demonstrieren.

Vorbereiten der Umgebung

Um loszulegen, benötigen Sie einen Computer mit Linux oder macOS . Wenn Sie Windows verwenden, können Sie trotzdem mit dem Windows-Subsystem für Linux (WSL) fortfahren.


Es gibt eine Liste der erforderlichen Pakete für Ubuntu :

 sudo apt update sudo apt install python3-pip wget git ffmpeg libsm6 libxext6


Sie können die Liste als Referenz verwenden, wenn Sie eine andere Linux- Distribution haben.


Für macOS (leider ist dies eine ungefähre Liste, da ich kein klares macOS zum Testen habe):

 brew install python wget git ffmpeg libsm libxext


Der nächste Schritt besteht darin, einen separaten Ordner mit dem Namen „ Sandbox“ zu erstellen, in dem Sie alles erledigen. Sie können einen beliebigen anderen Namen wählen oder sich sogar dafür entscheiden, nichts zu erstellen und diesen Schritt ganz zu überspringen.

 # Optional mkdir Sandbox cd Sandbox


Dann klonen Sie DeOldify :

 git clone https://github.com/jantic/DeOldify.git


DeOldify hat keine Releases oder Tags, das heißt, wir arbeiten mit dem Master- Branch. Ich bin der Meinung, dass mit dem neuesten Master jederzeit alles funktionieren sollte. Aber nur für den Fall, hier ist eine Revisionsnummer, mit der ich alles getestet habe:


be725ca6c5f411c47550df951546537d7202c9bc . Wenn Sie möchten, können Sie es sich ansehen:

 # Optional cd DeOldify git checkout be725ca6c5f411c47550df951546537d7202c9bc cd ..


Installieren Sie anschließend alle Python-Abhängigkeiten:

 pip3 install --user -r DeOldify/requirements.txt pip3 install --user -r DeOldify/requirements-colab.txt pip3 install --user -r DeOldify/requirements-dev.txt


Erstellen Sie als Nächstes ein Verzeichnis für die Modelle und laden Sie das Modell herunter:

 mkdir -p DeOldify/models wget https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth -O DeOldify/models/ColorizeArtistic_gen.pth


Das ist es! Die Umgebung ist bereit; der schwierigste Teil liegt hinter uns. Jetzt schreiben wir ein bisschen Python-Code.

Alles einfärben

Die für uns interessanteste und nützlichste Funktion ist ModelImageVisualizer.plot_transformed_image() .


Wir müssen lediglich den entsprechenden Code schreiben.


Hier ist meine Implementierung:

 #!/usr/bin/python3 from deoldify import device from deoldify.device_id import DeviceId # choices: CPU, GPU0...GPU7 device.set(device=DeviceId.GPU0) from deoldify.visualize import * import warnings import sys import os warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?") # Play with this constant! render_factor = 35 input_dir = sys.argv[1] output_dir = sys.argv[2] if not os.path.isdir(input_dir): print("input directory is not a directory or not exist") sys.exit(1) if os.path.exists(output_dir): print("out directory is already exist") sys.exit(1) os.makedirs(output_dir) root_dir = Path(os.environ['PYTHONPATH']) colorizer = get_image_colorizer(root_folder=root_dir, artistic=True) for filename in os.listdir(input_dir): f = os.path.join(input_dir, filename) if os.path.isfile(f) and (f.endswith(".png") or f.endswith(".jpg") or f.endswith(".jpeg")): image_path = colorizer.plot_transformed_image( path=f, results_dir=Path(output_dir), render_factor=render_factor, compare=True, watermarked=False ) print("{} ready".format(image_path))


Sie können es beliebig kopieren, einfügen und ändern.


Das Skript liest alle .png , .jpg und .jpeg Bilder aus dem Verzeichnis, das als erstes Skriptargument übergeben wurde, und färbt sie ein. Die Ergebnisse werden in dem Verzeichnis gespeichert, das als zweites Skriptargument übergeben wurde. Beachten Sie, dass das Ausgabeverzeichnis nicht existieren darf; das Skript erstellt es selbst. Ich habe das Skript in der Datei Sandbox/runner.py gespeichert, Sie können aber auch einen anderen Speicherort und Namen verwenden, wenn Sie das bevorzugen.


Versuchen wir es! Ich habe ein Schwarzweißfoto in Sandbox/photos/in abgelegt und das Ausgabeverzeichnis ist Sandbox/photos/out :

 # from Sandbox directory PYTHONPATH=./DeOldify/ python3 runner.py photos/in/ photos/out/


Die Umgebungsvariable PYTHONPATH muss auf das Verzeichnis DeOldify verweisen.


Hier ist das Ergebnis:

Schwarzweißfoto

Koloriertes Foto

Originalfoto