본문 바로가기
개발

사진 애니화 카툰화 만화화 등 이미지 변환기 설치하기

by developer's warehouse 2024. 1. 20.

이 글에서는 https://github.com/williamyang1991/DualStyleGAN을 오라클 클라우드에 설치하는 과정에 대해서 설명합니다. 

  • 오라클 클라우드
  • 환경설정 완료 후 실행 및 테스트

사진 애니화 카툰화 만화화 등 이미지 변환기 설치하기 썸네일

dual style gan 테스트 화면

 

 

오라클 클라우드


장비는 준비되어 있다고 가정합니다. 그리고, 장비에 메모리 부족을 막기 위해서 swap은 24G로 준비해 놓았습니다. 

무료로 사용하려다 보니 메모리를 1G 밖에 사용할 수 없어서 swap이라도 늘려놓았습니다. 

이미지 변환기는 아래 github에 작성된 논문 발표 내용을 이용해서 구축해 봅니다. 

https://github.com/williamyang1991/DualStyleGAN

제가 판단하기에는 변환 후 이미지가 가장 깔끔해 보였습니다. 

git clone https://github.com/williamyang1991/DualStyleGAN.git
cd DualStyleGAN
설명을 살펴보면, Anaconda 환경엣 yaml 파일을 가져다 설치하는것이 가장 편리합니다. 
이를 위해서 Anaconda를 설치합니다. 
All dependencies for defining the environment are provided in environment/dualstylegan_env.yaml. We recommend running this repository using Anaconda:
 
리눅스에서 Anaconda는 아래 링크에서 찾을 수 있습니다. 
https://docs.anaconda.com/free/anaconda/install/linux/

리눅스용 다운로드 페이지로 가면 아래와 같이 다운 받을 수 있는 링크를 복사할 수 있습니다. 

https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh

이를 복사하여 오라클 장비에서 wget으로 직접 다운 받습니다. 

wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh

그 뒤에 bash로 sh파일을 수행하면 

ubuntu@instance-20230810-1409:~/pkg$ bash Anaconda3-2023.07-2-Linux-x86_64.sh

라이선스 동의에 yes 하고 설치 위치를 결정하면 설치가 시작됩니다. 

아래 메시지에서 conda가 기본으로 초기화 되는 것이 싫으면 

conda  config --set auto_activate_base false 명령을 수행하면 된다고 하니 참고하세요.

installation finished. Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no] [no] >>> yes no change /home/eddy_lee/anaconda3/condabin/conda no change /home/eddy_lee/anaconda3/bin/conda no change /home/eddy_lee/anaconda3/bin/conda-env no change /home/eddy_lee/anaconda3/bin/activate no change /home/eddy_lee/anaconda3/bin/deactivate no change /home/eddy_lee/anaconda3/etc/profile.d/conda.sh no change /home/eddy_lee/anaconda3/etc/fish/conf.d/conda.fish no change /home/eddy_lee/anaconda3/shell/condabin/Conda.psm1 no change /home/eddy_lee/anaconda3/shell/condabin/conda-hook.ps1 no change /home/eddy_lee/anaconda3/lib/python3.11/site-packages/xontrib/conda.xsh no change /home/eddy_lee/anaconda3/etc/profile.d/conda.csh modified /home/eddy_lee/.bashrc ==> For changes to take effect, close and re-open your current shell. <== If you'd prefer that conda's base environment not be activated on startup, set the auto_activate_base parameter to false: conda config --set auto_activate_base false Thank you for installing Anaconda3! 

설치 마지막에 위와 같이 conda init을 할껀지 물어보는데 yes 하면 설치가 완료되고 설정 파일도 알아서 초기화 합니다. 

(base) ubuntu@instance-20230810-1409:~$ ls
DualStyleGAN  anaconda3  pkg

설치 완료되면 . ~/.bashrc를 해서 환경을 불러옵니다. 

(base) ubuntu@instance-20230810-1409:~$ ls
DualStyleGAN  anaconda3  pkg
(base) ubuntu@instance-20230810-1409:~$

아래 명령을 수행하고 한숨 자고 나면 될 거 같습니다.

(base) ubuntu@instance-20230810-1409:~$ cd DualStyleGAN/

(base) ubuntu@instance-20230810-1409:~/DualStyleGAN$ conda env create -f ./environment/dualstylegan_env.yaml

Collecting package metadata (repodata.json): |

중간에 cmake가 설치되어있지 않아서 dlib을 설치할 수 없었고 그래서, 에러가 발생하였습니다. 
에러를 처리하기 위해서 아래 명령을 수행합니다. 
sudo apt-get update
sudo apt-get install cmake
그리고, 
conda env list
명령을 수행하여 가상환경이 생성되었는지 여부를 확인합니다. 
만약 생성되었다면, 아래 명령을 통해서 가상환경으로 들어갑니다. 
conda activate dualstylegan_env
 
이제 가상환경으로 들어갔으니, 설치되지 못한 패키지들을 추가로 설치해야합니다. 
conda env update -f ./environment/dualstylegan_env.yaml
명령을 수행해서 나머지 패키지를 설치합니다. 
 
참고로 conda에서는 다음 명령으로 터미널이 열릴 때 마다 초기화 할 것인지 비활성화 할지 결정할 수 있다 합니다. 
# The base environment is activated by default
conda config --set auto_activate_base True

# The base environment is not activated by default
conda config --set auto_activate_base False

# The above commands only work if conda init has been run first
# conda init is available in conda versions 4.6.12 and later

환경설정 완료 후 실행 및 테스트


conda 환경이 모두 성공적으로 설치되면, cpu용으로 코드를 변경합니다. 해당 github 페이지에 다음과 같이 자세히 설명이 나와있습니다. 

Scripts to convert rosinality/stylegan2-pytorch to the CPU compatible format

If you would like to use CPU for testing, please make the following changes:

  1. Change model.stylegan.op to model.stylegan.op_cpu
  2.   from model.stylegan.op import conv2d_gradfix
  3. Change model.stylegan.op to model.stylegan.op_cpu
  4.   from model.stylegan.op import FusedLeakyReLU, fused_leaky_relu, upfirdn2d, conv2d_gradfix

If using GPUs, changing the above lines back to the original ones.

위의 두 코드에서 op를 op_cpu로 변경해 줍니다. 

다음으로 미리 학습된 모델을 제공하므로 google drive에서 모델을 다운 받습니다. 

encoder는 필수이고 나머지는 원하는 모델을 다운받으면 됩니다.

encoder는 무려 1.1G 용량을 가지고 있습니다. 

Pretrained Models

Pretrained models can be downloaded from Google Drive or Baidu Cloud (access code: cvpr):

Model Description
encoder Pixel2style2pixel encoder that embeds FFHQ images into StyleGAN2 Z+ latent code
encoder_wplus Original Pixel2style2pixel encoder that embeds FFHQ images into StyleGAN2 W+ latent code
cartoon DualStyleGAN and sampling models trained on Cartoon dataset, 317 (refined) extrinsic style codes
caricature DualStyleGAN and sampling models trained on Caricature dataset, 199 (refined) extrinsic style codes
anime DualStyleGAN and sampling models trained on Anime dataset, 174 (refined) extrinsic style codes
arcane DualStyleGAN and sampling models trained on Arcane dataset, 100 extrinsic style codes
comic DualStyleGAN and sampling models trained on Comic dataset, 101 extrinsic style codes
pixar DualStyleGAN and sampling models trained on Pixar dataset, 122 extrinsic style codes
slamdunk DualStyleGAN and sampling models trained on Slamdunk dataset, 120 extrinsic style codes
fantasy DualStyleGAN models trained on Fantasy dataset, 137 extrinsic style codes
illustration DualStyleGAN models trained on Illustration dataset, 156 extrinsic style codes
impasto DualStyleGAN models trained on Impasto dataset, 120 extrinsic style codes

The saved checkpoints are under the following folder structure:

checkpoint
|--encoder.pt                     % Pixel2style2pixel model
|--encoder_wplus.pt               % Pixel2style2pixel model (optional)
|--cartoon
    |--generator.pt               % DualStyleGAN model
    |--sampler.pt                 % The extrinsic style code sampling model
    |--exstyle_code.npy           % extrinsic style codes of Cartoon dataset
    |--refined_exstyle_code.npy   % refined extrinsic style codes of Cartoon dataset
|--caricature
    % the same files as in Cartoon
...

모델을 다운 받은 후 예제를 수행해보려고하니 cuda관련 에러가 나타납니다. 

해당 파일(style_transfer.py)에서 device 변수에 'cuda'로 되어있는 것을 'cpu'로 바꿔서 cpu를 사용하도록 수정 후 다시 동작 시키니 정상 동작합니다. 

참 중간에 libGL 에러가 나서 sudo apt-get install libgl1-mesa-glx 명령으로 설치해 주었습니다. 

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

 
재접속 시에는 conda 환경을 activate해야합니다. 그러기 위해서는 conda 환경이 무엇이 있는지 알아야 합니다. 
다음 명령을 이용해서 conda 환경을 확인할 수 있습니다 .
 

Conda 가상환경을 확인하려면, 터미널(또는 명령 프롬프트)에서 다음 명령어를 입력하세요:

bash
conda env list

또는 다음 명령어를 사용할 수도 있습니다:

bash
conda info --envs

이 명령어를 실행하면 현재 설치되어 있는 모든 conda 가상환경의 목록과 해당 환경의 경로가 출력됩니다. 활성화 된 가상 환경은 별표(*)로 표시됩니다.

conda 환경을 확인했으면 이제 conda activate "환경이름"을 수행해서 해당 환경으로 들어가면 됩니다.

여기까지 하고 테스트 돌려 보니 성공했다는 메시지가 나옵니다. 

(dualstylegan_env) ubuntu@instance-20230810-1409:~/DualStyleGAN$ python3 style_transfer.py Load options align_face: False content: ./data/content/081680.jpg data_path: ./data/ exstyle_name: refined_exstyle_code.npy model_name: generator.pt model_path: ./checkpoint/ name: cartoon_transfer output_path: ./output/ preserve_color: False style: cartoon style_id: 53 truncation: 0.75 weight: [0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] wplus: False ************************************************************************************************** Loading pSp from checkpoint: ./checkpoint/encoder.pt Load models successfully! Generate images successfully! Save images successfully!
 
이미지 변환완료 모습


오~ 변환이 잘 되는군요.. 근데.. 시간이.. 너무 오래 걸리긴 하네요.. 오늘은 여기까지 하겠습니다. 
facebook twitter kakaoTalk kakaostory naver band shareLink