윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - animePastelDream 사진

파스텔 풍 그림 그려주는 모델이다. 써본 것 중에 가장 괜찮은것 같다.

원래는 다른 이미지를 얻기 위한 프롬프트인데, 시드를 높이면서 이미지를 생성하면 아래와 같이 입력한 프롬프트와 다른 이미지를 그려주기도 한다. 그런데, 이게 맘에 드는 경우가 있다. 뭔가 과하게 학습되었다고 생각되는데, 그게 나름 괜찮다. 다른 모델들 보다 animePastelDream  이 조금 심한것 같긴 하다. 아래는 그 사진들이다. 1920 x 1080 해상도로 업스케일 했다. 윈도 바탕화면 용이다.

사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - FP16,  FP32 성능, 차이

FP16과 FP32 가 어떤 차이가 있을까 궁금해서 한번 테스트 했다. 결론을 먼저 말하자면, 그냥 FP16 사용하자. 사용하는데에는 결과물에 차이 없고 메모리를 더 적게 사용하기 때문에, FP16 사용해야 한다.

nVidia RTX 2060 에서 테스트했다. 참고로 20 시리즈는 FP16 이 FP32 보다 연산능력이 2배 좋다. 30 시리즈부터 FP16 과 FP32 연산능력이 동일하다.

이미지크기는  504 x 960 으로 했다.

① FP32 체크포인트, FP32 실행
chilloutmix_NiPrunedFp32Fix         FP32  5.1G -> 5.9G -> 7.7G -> 5.1G
Total progress: 100%|██████████████████████████████████████████████████████████████████| 28/28 [00:46<00:00,  1.48s/it]

② FP32 체크포인트, FP16 변환

chilloutmix_NiPrunedFp32Fix FP32 -> FP16  2.6 -> 10.1 -> 8.9G -> 3.0G
100%|████████████████████████████████████████████████████████████████████████████████| 28/28 [00:28<00:00,  1.01s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 28/28 [00:24<00:00,  1.15it/s]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 28/28 [00:24<00:00,  1.57it/s]

③ FP32 체크포인트, FP16 실행

chilloutmix_NiPrunedFp32Fix         FP16  3.0G -> 3.3G -> 5.1G -> 3.0G
Total progress: 100%|██████████████████████████████████████████████████████████████████| 28/28 [00:17<00:00,  1.61it/s]

④ FP16 체크포인트, FP16 실행

chilloutmix_NiPrunedFp16Fix         FP16  3.0G -> 3.3G -> 3.0G
Total progress: 100%|██████████████████████████████████████████████████████████████████| 28/28 [00:17<00:00,  1.62it/s] 

② 은 FP32로 학습한 체크포인트를 FP16 으로 수행하기 전에 FP16 으로 변환하는데, 처음 체크포인트 변환시 10.1G, VAE 변환시 8.9G 를 소비한다. 재 실행시에는 변환작업이 없다.

생성한 이미지

사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


메모리 사용


사용자 삽입 이미지



②③
사용자 삽입 이미지
사용자 삽입 이미지



사용자 삽입 이미지
사용자 삽입 이미지



------------

참고: GT1030, --lowvram

이미지크기: 384 x 768

① FP16 체크포인트, FP32 실행
chilloutmix_NiPrunedFp16Fix         FP32  1952MiB
Total progress: 100%|██████████████████████████████████████████████████████████████████| 20/20 [08:10<00:00, 25.61s/it]

② FP16 체크포인트, FP16실행
chilloutmix_NiPrunedFp16Fix         FP16  1350MiB
Total progress: 100%|██████████████████████████████████████████████████████████████████| 20/20 [05:10<00:00, 16.15s/it]
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - FP16 을 사용한 사진 네장

FP16 을 사용해서 생성했다. FP32 를 사용한 것과 차이는 느껴지지 않는다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - R-ESRGAN General 4xV3 스케일 업

매일매일 그림 생성하는 작업. 물론 다른일도 병행하고 있다. 단지 배치 돌려두고 다른 일 하다가 생성된 그림 검토하고, 맘에 드는건 스케일 업 해서 블로그에 게시한다.

생각외로 스케일 업이 쉽지 않다. 몇 번은 시도해봐야 하고, 다양하게 파라메터를 줘야 성공하는듯.

스케일 업할 때 자주 사용하는 옵션은 R-ESRGAN General 4xV3 이고 Upscale by 2, Denoising strenth 0.4 이다. 나머지는 기본값으로 사용한다.

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전

Stable Diffusion - SD 2.1  Replicant-V1.0 사진 #2

미세조정 중. 일부 키워드는 아예 먹히지 않는게 있다. 그래도 맘에 드는거 5장 추려서 올린다.

요즘에 사용하는 이미지 생성 방식은, 960 x 540 또는 540 x 960 크기의 그림을 스텝 20 정도로 100장 이상 배치로 생성한 후, 그중에 맘에 드는 구도가 있으면 동일한 설정으로 2배 스케일링 해서 뽑는다. 지금 사용하는건 스케일링 모델은 "R-ESRGAN General 4xV3" 인데, 나름 괜찮다. 스케일링하다가 심하게 깨지면 Denoising strength 를 0.5 이하로 줄여서 (기본값은 0.7이다) 다시 해보면 거의 원본대로 확대된다.

이미지의 메타 태그를 읽으면 프롬프트를 볼 수 있다.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지



글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - SD 2.1  Replicant-V1.0 사진

요즘에 주로 사용하는 모델이 Stable Diffusion 2.1 768 기반의 Replicant-V1.0 이라는 모델이다. SD 2.1 기반이라서 그런지 꽤 좋다. WD 1.5 Beta2 기반이라고 하는데, 나중에 WD 정식버전 나오면 갱신될거라 생각한다.

SD 1.x 버전과 SD 2.x 버전의 차이는 꽤 크다. 몇일전에 Unclip 버전이 나오기도 했는데 아직 사용하보진 못했다. 조만간 사용해볼 예정.

VRAM 이 많으니 1080p 이미지도 생성 가능한게 좋다. 하루에 1000장은 뽑는듯.

이미지 프롬프트는 이미지 파일 안에 있다.  PNG 메타태그 리더에서 읽어올 수 있다.

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - SD 2 사진 한장

업그레이드한 기념으로 SD 2를 사용해 보았다. 업그레이드 하기 전에는 사용하지 못했다. VRAM 부족으로 말이다.

샘플 이미지대로 프롬프트 넣고 만들었다. PNG 파일에 프롬프트 들어있으니 읽으면 된다. 비슷하게 잘 나온거 같아 올려본다.

사용자 삽입 이미지

확실히 SD 1.5 보다는 좀 더 디테일 있는 이미지를 쉽게 만들 수 있는듯 하다. 아직 체크포인트가 많지 않은게 아쉽다. 다른 것들도 빨리 호환되는 버전이 나왔으면 한다. WD 체크포인트가 지금 베타버전이니 조만간 나올거라 기대한다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 업그레이드 2차

- SD 를 사용할 PC를 업그레이드 했다.

CPU:  i3-6100 (변경없음)
M/B: H110 (변경없음)
MEM: DDR4 8GB (변경없음)
GPU: nVidia GT 1030 -> nVidia GT2060 12GB

가장 드라마틱하게 변한게 아닐까 생각한다. VRAM 부족으로 아예 못하는 작업이 있음을 확인한 후 계속 GPU 업그레이드를 노려왔다. 그리고 오늘 단행했다.

기존 9:21 걸리던 이미지 생성 작업이 GPU 만 바꿨을 뿐인데 2:24로 단축되었다. 마지막으로 --lowvram 옵션을 빼고 하니 0:53 으로 단축되었다.

즉 561 초 -> 144 초 -> 53 초로 약 1/10 정도로 단축된 셈이다.

이제 이미지 업스케일 옵션을 줄 수 있다. 1920x1080 해상도의 이미지 생성 가능해졌다. 얏호~! (여태까지는 VRAM 부족으로 못했다)

--lowvram 옵션을 빼고 --no-fp16 옵션을 주고 실행한다. --no-fp16 에 따른 이미지 화질차이는 그다지 느껴지진 않는다. 이미지 리사이즈가 화질에 꽤 큰 영향을 준다.

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 사진 한장

사진을 뽑는게는 슬슬 익숙해지는 듯. 최소 100장 뽑아서 그중에 맘에 드는거, 그나마 손가락이 잘 표현된 또는 손가락을 잘 숨긴 사진을 뽑아내면 거의 성공이다. 다른 부분은 큰 위화감 없이 출력해준다.

이미지 생성할 때는 보통 civitai 에 가서 샘플로 올라온 것 중에 맘에 드는걸 이리저리 프롬프트 수정해보고 뽑는다. 그래서 몇백장 뽑아보면 잘 뽑힌게 나온다. 아래 사진도 그렇게 뽑았다.

PNG 파일 안에 사용한 프롬프트 정보 담겨있다.

사용자 삽입 이미지

정말 좋은 구도에 좋은 손가락만 빼면 좋은 사진이 많긴 한데, 손가락때문에 못 올린다. 어케 손가락 부분만 보정해주는 AI 안나오남...
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 업그레이드 1차

- Stable Diffusion(이하 SD) 를 사용할 PC를 업그레이드 했다.

CPU:  i5-750 -> i3-6100
M/B: P55 -> H110
MEM: DDR3 16GB -> DDR4 8GB
GPU: nVidia GT 1030 (변경없음)

H110 마더보드에서 PCIe 3.0 을 지원하기 때문에 GT1030 의 성능을 다 내준다. 그래서 그만큼 빨라졌다. 아래 작업관리자 그래프에서 Copy 1 항목이 2배이상 빨라진 셈이다. 그래서 3D (CUDA 코어 연산) 부분의 사용율이 올라갔다. 체감상 이미지 1개 생성시 14 분 -> 9분 정도로 약 35% 향상이 있었다. (성능 향상 비율은 SD 에서 생성할 이미지에 따라 다르다) CPU 연산성능 향상에 따라 GPU 부하가 늘어난 것도 있겠지만, PCIe 속도 빨라진게 성능 향상의 주된 요소인것으로 생각한다. GT 1030 의 VRAM 이 2GB 이기 때문에, SD 를 실행시킬때 --lowvram 을 주어 실행시켰고 이 때문에 이미지 생성시 Copy 성능이 중요해졌다. --lowvram 옵션을 주지 않으면 Copy 성능은 중요하지 않다.

사용자 삽입 이미지

가장 아래 그림 그릴때의 성능 그래프. 512x1024 이미지 생성했다. 중간쯤에 그래프가 튀는건 이미지 생성의 최종단계 이기 때문이다.


요즘 사용하고 있는 체크포인트는 AbyssOrangeMix3 다. 판타지 풍 에니메이션 그림체를 잘 만들어주는거 같다. Mix 이기 때문에 2가지 이상의 체크포인트를 합해 만든거다. 이중에서 AOM3A1B 버전 사용하고 있다. 메모리도 적게 사용하는데 비해 맘에 드는 품질을 보여준다.

인터넷에서 본 키워드를 사용해 작성중이다. 그중 꽤 쓸만하다고 생각되는거 하나 업로드한다. "어머니가 섬그늘에 굴 따러 가면"를 오역한 "when mother raids ghoul on the darker side of the island" 프롬프트를 사용했다. (구체적인 키워드는 이미지에 있으므로, PNG 파일을 다운받아 Stable Diffusion 의 PNG Info 에서 보면 볼 수 있다)

사용자 삽입 이미지

사용자 삽입 이미지