Hepimizin ebeveynlerimizden, büyükanne ve büyükbabalarımızdan vb. aktarılan eski fotoğraflardan oluşan bir hazinesi var. Çoğu zaman bu fotoğraflar siyah beyaz oluyor ve bazen de onlara renkli olarak hayat vermek istiyoruz. Tarayıcınızda yalnızca birkaç tıklamayla bunu başarabileceğiniz çok sayıda çevrimiçi web sitesi vardır. Ancak bu sitelerle ilgili sorun, nicelik ve nitelik konusundaki birçok kısıtlamada yatmaktadır.
Ek olarak, bu hizmetler genellikle kayıt ve abonelik gerektirir ve bu da oldukça sinir bozucu olabilir.
Bu yazıda, fantastik araç DeOldify'ı kullanarak sınırlama, kayıt veya abonelik sıkıntısı olmadan istediğiniz sayıda fotoğrafı nasıl renklendirebileceğinizi paylaşmak istiyorum.
DeOldify'ın harika bir tanıtımı var ve bunu kullanabilirsiniz, ancak hazırlıksız kişiler için biraz zor görünebilir. Burada DeOldify'ı kullanmanın daha basit bir yolunu göstermek istiyorum.
Başlamak için Linux veya macOS çalıştıran bir bilgisayara ihtiyacınız olacak. Windows kullanıyorsanız Linux için Windows Alt Sistemini (WSL) kullanarak devam edebilirsiniz.
Ubuntu için gerekli paketlerin bir listesi var:
sudo apt update sudo apt install python3-pip wget git ffmpeg libsm6 libxext6
Başka bir Linux dağıtımınız varsa listeyi referans olarak kullanabilirsiniz.
MacOS için (ne yazık ki test için net bir macOS'um olmadığından bu yaklaşık bir listedir):
brew install python wget git ffmpeg libsm libxext
Bir sonraki adım, içindeki her şeyi yapmak için Sandbox adında ayrı bir klasör oluşturmaktır. Başka bir ad seçebilir, hatta hiçbir şey oluşturmamayı seçip bu adımı tamamen atlayabilirsiniz.
# Optional mkdir Sandbox cd Sandbox
Ardından DeOldify'ı klonlayın:
git clone https://github.com/jantic/DeOldify.git
DeOldify'ın herhangi bir sürümü veya etiketi yoktur, bu da ana dalla çalıştığımız anlamına gelir. Her an her şeyin en son ustayla çalışması gerektiğine inanıyorum. Ancak her ihtimale karşı, burada her şeyi test ettiğim bir revizyon numarası var:
be725ca6c5f411c47550df951546537d7202c9bc . İsterseniz şuraya göz atabilirsiniz:
# Optional cd DeOldify git checkout be725ca6c5f411c47550df951546537d7202c9bc cd ..
Bundan sonra tüm Python bağımlılıklarını yükleyin:
pip3 install --user -r DeOldify/requirements.txt pip3 install --user -r DeOldify/requirements-colab.txt pip3 install --user -r DeOldify/requirements-dev.txt
Daha sonra modeller için bir dizin oluşturun ve modeli indirin:
mkdir -p DeOldify/models wget https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth -O DeOldify/models/ColorizeArtistic_gen.pth
Bu kadar! Ortam hazır; işin en zor kısmı geride kaldı. Şimdi biraz Python kodu yazalım.
Bizim için en ilginç ve kullanışlı fonksiyon ModelImageVisualizer.plot_transformed_image() fonksiyonudur.
Tek yapmamız gereken etrafına kod yazmak.
İşte benim uygulamam:
#!/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))
İstediğiniz gibi kopyalayabilir, yapıştırabilir ve değiştirebilirsiniz.
Komut dosyası, ilk komut dosyası bağımsız değişkeni olarak iletilen dizindeki tüm .png
, .jpg
ve .jpeg
resimlerini okur ve bunları renklendirerek sonuçları ikinci komut dosyası bağımsız değişkeni olarak iletilen dizine kaydeder. Çıkış dizininin mevcut olmaması gerektiğini unutmayın; betik onu kendisi yaratır. Komut dosyasını Sandbox/runner.py
dosyasına kaydettim, ancak isterseniz farklı bir konum ve ad kullanabilirsiniz.
Hadi deneyelim! Sandbox/photos/in
içine siyah beyaz bir fotoğraf yerleştirdim ve çıktı dizini Sandbox/photos/out
:
# from Sandbox directory PYTHONPATH=./DeOldify/ python3 runner.py photos/in/ photos/out/
PYTHONPATH ortam değişkeni DeOldify dizinine başvurmalıdır.
İşte sonuç: