우리 모두는 부모님, 조부모님 등으로부터 물려받은 오래된 사진의 보물창고를 가지고 있습니다. 이러한 사진은 흑백인 경우가 많으며 때로는 컬러로 생생하게 표현하고 싶을 때도 있습니다. 브라우저에서 몇 번의 클릭만으로 이를 달성할 수 있는 온라인 웹사이트가 많이 있습니다. 그러나 이러한 사이트의 문제는 수량과 품질에 대한 많은 제한에 있습니다.
또한 이러한 서비스에는 등록 및 구독이 필요한 경우가 많으므로 상당히 실망스러울 수 있습니다.
이 게시물에서는 제한, 등록 또는 구독의 번거로움 없이 환상적인 도구인 DeOldify를 사용하여 원하는 수의 사진을 색칠할 수 있는 방법을 공유하고 싶습니다.
DeOldify에는 놀라운 소개가 있어서 사용해도 되지만 준비가 안 된 사람들에게는 조금 어려워 보일 수도 있습니다. 여기서는 DeOldify 를 사용하는 더 간단한 방법을 보여드리고 싶습니다.
시작하려면 Linux 또는 macOS를 실행하는 컴퓨터가 필요합니다. Windows를 사용하는 경우에도 WSL(Linux용 Windows 하위 시스템)을 활용하여 계속 진행할 수 있습니다.
Ubuntu 에 필요한 패키지 목록은 다음과 같습니다.
sudo apt update sudo apt install python3-pip wget git ffmpeg libsm6 libxext6
다른 Linux 배포판이 있는 경우 이 목록을 참조로 사용할 수 있습니다.
macOS 의 경우(안타깝게도 테스트할 명확한 macOS 가 없기 때문에 대략적인 목록입니다):
brew install python wget git ffmpeg libsm libxext
다음 단계는 모든 작업을 수행할 Sandbox 라는 별도의 폴더를 만드는 것입니다. 다른 이름을 선택하거나 아무 것도 만들지 않고 이 단계를 건너뛸 수도 있습니다.
# Optional mkdir Sandbox cd Sandbox
그런 다음 DeOldify를 복제합니다.
git clone https://github.com/jantic/DeOldify.git
DeOldify에는 릴리스나 태그가 없습니다. 즉, 마스터 브랜치로 작업한다는 의미입니다. 나는 모든 것이 언제든지 최신 마스터와 함께 작동해야 한다고 믿습니다. 그러나 혹시라도 모든 것을 테스트한 개정 번호는 다음과 같습니다.
be725ca6c5f411c47550df951546537d7202c9bc . 원한다면 다음을 확인해 보세요.
# Optional cd DeOldify git checkout be725ca6c5f411c47550df951546537d7202c9bc cd ..
그런 다음 모든 Python 종속 항목을 설치합니다.
pip3 install --user -r DeOldify/requirements.txt pip3 install --user -r DeOldify/requirements-colab.txt pip3 install --user -r DeOldify/requirements-dev.txt
다음으로, 모델용 디렉터리를 만들고 모델을 다운로드합니다.
mkdir -p DeOldify/models wget https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth -O DeOldify/models/ColorizeArtistic_gen.pth
그게 다야! 환경이 준비되었습니다. 가장 어려운 부분은 우리 뒤에 있습니다. 이제 약간의 Python 코드를 작성해 보겠습니다.
우리에게 가장 흥미롭고 유용한 기능은 ModelImageVisualizer.plot_transformed_image() 입니다.
우리가 해야 할 일은 그 주위에 코드를 작성하는 것뿐입니다.
내 구현은 다음과 같습니다.
#!/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))
원하는 대로 자유롭게 복사하고 붙여넣고 수정하세요.
스크립트는 첫 번째 스크립트 인수로 전달된 디렉터리에서 모든 .png
, .jpg
및 .jpeg
이미지를 읽고 색상을 지정하여 두 번째 스크립트 인수로 전달된 디렉터리에 결과를 저장합니다. 출력 디렉터리는 존재하지 않아야 합니다. 스크립트가 자체적으로 생성합니다. 스크립트를 Sandbox/runner.py
파일에 저장했지만 원하는 경우 다른 위치와 이름을 사용할 수도 있습니다.
해 보자! 흑백 사진을 Sandbox/photos/in
에 넣었고 출력 디렉터리는 Sandbox/photos/out
입니다.
# from Sandbox directory PYTHONPATH=./DeOldify/ python3 runner.py photos/in/ photos/out/
환경 변수 PYTHONPATH는 DeOldify 디렉터리를 참조해야 합니다.
결과는 다음과 같습니다.