paint-brush
흑백 사진에 색상을 입히는 방법~에 의해@alexk0
615 판독값
615 판독값

흑백 사진에 색상을 입히는 방법

~에 의해 Aleksandr Korepanov4m2024/06/07
Read on Terminal Reader

너무 오래; 읽다

DeOldify는 몇 번의 클릭만으로 오래된 사진을 색칠할 수 있는 도구입니다. 무료이며 오픈 소스이며, 여러분이 해야 할 일은 약간의 Python 코드를 작성하는 것뿐입니다.
featured image - 흑백 사진에 색상을 입히는 방법
Aleksandr Korepanov HackerNoon profile picture
0-item

우리 모두는 부모님, 조부모님 등으로부터 물려받은 오래된 사진의 보물창고를 가지고 있습니다. 이러한 사진은 흑백인 경우가 많으며 때로는 컬러로 생생하게 표현하고 싶을 때도 있습니다. 브라우저에서 몇 번의 클릭만으로 이를 달성할 수 있는 온라인 웹사이트가 많이 있습니다. 그러나 이러한 사이트의 문제는 수량과 품질에 대한 많은 제한에 있습니다.


또한 이러한 서비스에는 등록 및 구독이 필요한 경우가 많으므로 상당히 실망스러울 수 있습니다.


이 게시물에서는 제한, 등록 또는 구독의 번거로움 없이 환상적인 도구인 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 디렉터리를 참조해야 합니다.


결과는 다음과 같습니다.

흑백 사진

컬러화된 사진

원본 사진