728x90

엔비디아에서 제공되는 stylegan2 ada라는 GAN모델을 window 10 환경에서 pytorch로 사용할 수 있도록 제공을 최근에 해줬기에 실습을 진행하고 블로그 글을 작성했습니다.

-컴퓨터 권장 사양

 

1. intel 최상급 cpu

(amd cpu는 진행을 해보았지만 intel omp 문제로 진행이 안되었습니다. 유의하시길 바랍니다.)

2. nvidia 30xx or tesla v100 이상급이 권장사양이지만 RTX 2070에서도 느리지만 학습이 잘 진행되었습니다.

 

 

- 구성환경

 

1. window 10

2. CUDA 11.2 (11.0 VER 이상이면 됩니다.)

3. Anaconda 3 가상환경 ( python 3.7 ver)

4. pytorch (CUDA 11.0 VER, window 10)

5. 기타라이브러리는 dataset_tool.py와 train.py를 실행했을 때 없다고 뜨는 모듈들을 설치하면 됨

 

- pytorch 다운로드 주소(이것도 아나콘다 가상환경에서 다운진행)

pytorch.org/

 

PyTorch

An open source deep learning platform that provides a seamless path from research prototyping to production deployment.

pytorch.org

- stylegan2 ada/NVlabs 깃헙 주소

github.com/NVlabs/stylegan2-ada-pytorch

 

NVlabs/stylegan2-ada-pytorch

StyleGAN2-ADA - Official PyTorch implementation. Contribute to NVlabs/stylegan2-ada-pytorch development by creating an account on GitHub.

github.com

 

아나콘다 가상환경에서 파이썬 3.7에 맞춰서 가상환경을 생성하시고, 가상환경을 활성화 한상태로 위의 github 주소에서 HTTPS방식으로 다운로드를 진행합니다. (anaconda 가상환경 프롬프트창에서 다운을 진행하시면 됩니다)

 

git clone https://github.com/NVlabs/stylegan2-ada-pytorch.git

위 명령어로 다운로드를 완료하셨으면 해당 디렉토리로 이동해주셔서 작업을 진행하시면 됩니다.

 

저는 kaggle에서 다운로드한 사과의 데이터set을 이용하여 실습을 진행하였습니다. (총 995 장의 사진)

 

첫번째 과정인 dataset이 준비가 완료되셨으면 아나콘다 프롬프트에서 간단한 명령어를 통해 진행이 가능합니다.

 

dataset을 stylegan2-ada 환경에 맞춰 변형을 시켜줄겁니다.

 

명령어는 아래와 같습니다.

#데이타셋 생성 명령어 

python dataset_tool.py --source dataset경로 --dest 변환된 파일들을 저장할 경로

위 명령어를 진행하면 밑에와 같은 사진처럼 결과가 나옵니다.

 

dataset을 stylegan2-ada에 맞춰서 변형이 완료되셨으면, 훈련을 진행하실 수 있습니다.

 

※이미지 변환과정에서 해당이미지로 오류가 발생된다면 해당번호의 사진을 제거한 후 진행하시면 됩니다.

 

생성된 데이타셋으로 훈련 명령어
python train.py --data 생성된 데이타셋 경로 --outdir 훈련된 파일 저장경로

※모든 경로는 모두다 다른 디렉토리에서 진행하셔야 합니다.

(위의 진행상황에서 모듈이 없다고 뜨는 것은 pip나 conda 명령어를 통해 설치하시면 됩니다)

 

저같은 경우는 1000훈련 파일부터 거의 유사하게 계속 나오는 것을 보고 1400번에서 멈추었습니다. 결과가 유사하게 나온다면 훈련을 종료하셔도 됩니다.

 

훈련이 끝나게되면 위의 이미지처럼 나오게되고 pkl 파일을 이용하여 이미지를 뽑아낼 수 있습니다.

github에서 제공해주는 명령어들을 전체다 돌려보면

 

# 잘림없이 선별 된 이미지 생성

python generate.py --outdir=이미지 저장할 경로 --trunc=1 --seeds=85,265,297,849 --network=pkl파일 경로

# 잘린 부분이있는 선별되지 않은 이미지 생성 

python generate.py --outdir=이미지 저장할 경로 --trunc=0.7 --seeds=600-605 --network=pkl파일 경로

# 클래스 조건부 이미지 생성 

python generate.py --outdir=이미지 저장할 경로 --seeds=0-35 --class=1 --network=pkl파일 경로

# 스타일 믹싱

python style_mixing.py --outdir=이미지 저장할 경로 --rows=85,100,75,458,1500 --cols=55,821,1789,293 --network=pkl파일 경로

- 경로를 지정할때에는 공백이 있어서는 안됩니다.  ex) --outdir = 경로 (x) --outdir=경로 (o)

위의 코드를 실행하면 밑에와 같은 결과가 나옵니다.

 

1. 잘림없이 선별 된 이미지

2. 잘린 부분이 있는 선별되지 않은 이미지

3. 클래스 조건부 이미지 생성

클래스 조건부 이미지의 경우 몇장까지 가능한지 실험하기 위해 1만장까지 진행해 보았지만 문제는 발생되지 않았습니다.

몇장의 이미지까지 진행이 가능한지는 알 수 없지만 1만장까지는 진행이 된다는 점 참고하시면 될 것 같습니다.

 

4. 스타일 믹싱

스타일 믹싱의 경우 선택한 col과 row가 각각 매칭되서 각각 변환을 이루어냅니다.

 

 

 

각각의 특징을 사진을 보고 자신이 사용하고자 하는 목적에 맞는 이미지를 찾으셔서 사용하면 될 것같습니다.

 

위의 포스팅은 밑의 해외 유튜브 영상을 참고하여 작성되었습니다.

 

www.youtube.com/watch?v=BCde68k6KXg

 

※CUDA init 과 같이 쿠다가 설치가 되어있는 상황에서 발생되는 오류가 있을 시 아래 패키지를 설치해 주시면 됩니다.

pip install ninja

 

※ 기본 램이 부족해도 GAN의 학습이 진행이 안되는 상황이 발생됩니다. 기본 16g 이상의 램을 사용하시는 것이 좋으며

램을 달수 없는 상황이시라면 HDD나 SSD의 용량을 RAM 메모리처럼 사용할 수 있게 하는 방법을 이용하여 진행하시면 됩니다.

윈도우즈 시스템 속성
고급탭 -> 성능 -> 고급 -> 변경

가상 메모리 파트를 변경을 클릭하고 페이징 파일 크기를 변경하면 된다. 페이징 파일은 windows에서 RAM처럼 사용하는 하드 디스크의 영역입니다.

- 사용자 지정 크기에서 처음 크기는 램 크기의 1.5배 최대크기는 처음 크기의 3배로 해주시면 됩니다.

 

- 예를 들어, 8GB의 램이라면 1GB가 1024MB이므로 1024x8x1.5=12288을 처음 크기에 입력해주고, 최대 크기는 그것의 3배인 36864를 입력해줍니다. 설정을 완료하고 컴퓨터를 재부팅합니다.

 

위의 에러해결 내용은 아래의 블로그 글을 참고하였습니다.

https://bskyvision.com/799

 

[python] 메모리 에러 해결법(MemoryError: Unable to allocate ## for an array with shape ## and data type ##)

저는 윈도우즈 10, 아나콘다 환경에서 파이썬 코드를 실행하다가 종종 다음과 같은 에러를 만났었습니다. 메모리에러 즉, 램(RAM) 메모리가 부족해서 생기는 오류입니다. 참고로 램은 주기억장치

bskyvision.com

 

728x90

+ Recent posts