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

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 한복 미니 #1

한복에 미니스커트 조합이면 어떨까 하는 생각에 생성해본 이미지. 생각보단 좋아서, 그리고 잘 나와서 올려본다.

이런게 AI 를 사용하는 이유라 생각한다. 한복에 미니스커트를 입힌건 학습한게 아니겠지만, 프롬프트를 주면 잘 조합해서 잘 만들어주니 말이다.

생성한 방법: Stable Diffusion - LoRA 적용시 얼굴 변경 문제

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - LoRA 적용시 얼굴 변경 문제

SD로 생성한 그림에 예쁜 옷을 입히기 위해 LoRA 를 사용하곤하는데, 이렇게 하면 얼굴이 변경되는 문제가 있다. LoRA 를 트레이닝 할 때 사용된 이미지에 얼굴이 있고 이게 이미지 생성시 반영되기 때문이다.

그래서 요즘 나오는 의복용 LoRA 에는 일부러 얼굴을 학습시키지 않는 경우도 있다. CivitAI 에서 봐도 이렇게 트레이닝된 LoRA 들이 꽤 보인다. 이런 LoRA 는 얼굴이 변경되지 않기 때문에 이미지 생성하기 편해진다. 문제는 예전에 작성된 LoRA 다. 이런건 답이 없다.

그래서 생각해낸게,

"540x960 에 Hires. fix 를 사용해 1080x1920 이미지를 생성"

하던걸

1. 540x960, Face Editor 사용 (Face Editor 용 프롬프트는 LoRA 제거한 프롬프트로 넣음)
2. img2img 에서 LoRA 제거한 프롬프트를 넣어 SD upscale.

와 같이 진행한다. 이렇게 하니 만족할만한 결과가 나왔다. 얼굴이 거의 LoRA 사용 전의 모습으로 나오기 때문이다. 아래는 그 예이다. 이 이미지에 사용된 LoRA 와 그 해시값은 아래와 같다.

Gini_S2: e2e472c06607, last1234: 301e2ea327fa, ggx_V11: cd7ed3536d8f

사용자 삽입 이미지

참고로 Face Editor 는 https://github.com/ototadana/sd-face-editor.git 를 사용했다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 접수원 #2

접수원 이미지 두번재 이미지 모음.

올리고 보니 포즈가 대부분 비슷하다는걸 느꼈다. 다음번엔 앉아있는걸 생성하는걸 도전해봐야하겠다.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 접수원 #1

인터넷에서 재미있어 보이는 LoRA 가 있어 적용해보았다. 접수원, 응접원 의상이다. 영어로는 receptionist 라고 한다.

주로 조끼, 셔츠, 펜슬 스커트, 구두 차림을 의미하는데 조끼를 입은 형상을 생성하기 힘들었다. 이 부분을 LoRA 로 채워준 셈이다.

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

주황색, 적색 헤어를 가진 캐릭터를 그려 보았다. 요즘 나오는 에니 실사 영화에서 예쁜 적발 캐릭터가 하나 없어진 아쉬움에 그려보았다.

전세계적으로 원래 적발도 꽤 흔한건 아니고, 꽤 많은 차별이 있어왔다고 알고 있다. 아니 있다. 역사적으로 이들도 꽤 많은 차별을 받아왔는데, 어느 에니에서 적발 캐릭터를 바꾼다는게 이해가진 않는다. 적발, 차별 정도로 인터넷 검색해보면 쉽게 검색된다. 적발은 아일랜드계에 많이 있는데 아일랜드와 영국의 역사를 참고하면 쉽게 짐작할 수 있다.

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

Stable Diffusion 에서는 적발이 묘사가 잘 안되는거 같아 오렌지 색으로도 프롬프트를 주어 작성했다.

사용자 삽입 이미지
사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion web UI 1.3.0 - 버그

2일전 배포된 Stable Diffusion web UI 1.3.0 에 버그가 제법 많은것 같다. 버그 리포트가 심심치않게 올라오고 있다. 곧 패치되겠지만 당장 실행안되는것부터 해결해야 한다. 필자의 경우 venv 생성시 pytorch 설치부터 안된다.

git 에는 특정 태그로 되돌리는 기능이 있다. 이 기능을 사용해 1.2.1 으로 되돌린 후 사용하자. 아래와 같이 하면 된다.

# git tag
v1.0.0-pre
v1.1.0
v1.1.1
v1.2.0
v1.2.1
v1.3.0
v1.3.0-RC
# dir launch.py
2023-05-30  오후 12:45               953 launch.py
# git checkout v1.2.1
...
# dir launch.py
2023-05-30  오후 12:47            14,682 launch.py

이렇게 한 후 실행한다.

원래대로 돌아가려면 (특정 버전을 사용하지 않으려면)

# git switch -

를 사용한다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - xFormers 0.0.20

사용자 삽입 이미지
요즘에 가장 핫한 AI 알고리즘이 Transformer 라는 알고리즘이다. 대규모 언어 모델을 구현할때 많이 사용한다. xFormers 는 페이스북에서 만든 Transformers 기반의 성능향상 파이썬 모듈이다 nVidia CUDA 에 최적화되어있다. Stable Duffusion 에도 Transformers 가 있기 때문에, 이 부분을 성능향상시켜준다. 

사용자 삽입 이미지

Transformer 아키텍처.라고 한다.


몇일전에 xFormers 0.0.20 이 나왔다. 성능이꽤 많이 향상되었다고 해서, 한번 써 봤다.

2023.05.26 현재 Stable Diffusion webUI에서 소스 수정없이 설치되는 xFormers 버전은 0.0.17 이다. 조만간 0.0.20 을 사용하도록 변경할 것으로 생각한다.

필자는 RTX 2060 12G 을 사용하고 있다. nVidia 홈페이지에서 윈도11용 드라이버를 새로 받았고, Stable Diffusion 디렉토리의 venv디렉토리를 지우고, launch.py 를 수정해 xFormers 0.0.20 을 설치했다.

결론부터 말하자면, 꽤 만족할만한 성능 향상이 있었다. xFormers 0.0.17 으로 2:27 걸리던 이미지 생성시간이 XFormers 0.0.20 으로 업그레이드 하니 2:04 이 걸렸다. 20여초나 단축한 셈. 매우 많은 성능향상이다.

----

https://github.com/facebookresearch/xformers
글쓴시간
분류 기술,IT/스테이블 디퓨전
LoRA 적용시 오류 - output with shape {param} doesn't match the broadcast shape {param}

사용자 삽입 이미지

Traceback (most recent call last):
  File "C:\stable-diffusion-webui\extensions\a1111-sd-webui-lycoris\..\..\extensions-builtin/Lora\lora.py", line 215, in load_loras
    lora = load_lora(name, lora_on_disk.filename)
  File "C:\stable-diffusion-webui\extensions\a1111-sd-webui-lycoris\..\..\extensions-builtin/Lora\lora.py", line 176, in load_lora
    module.weight.copy_(weight)
RuntimeError: output with shape [4, 320, 1, 1] doesn't match the broadcast shape [4, 320, 3, 3]

이와같이 나오는 이유는 적용하려는 파일(.safetensor, .pt 파일)이 LoRA용 파일이 아니기 때문이다. 이런 파일은 LoRA 의 확장 규격을 사용한 거라, 현재 Stable Diffusion WebUI 에서 사용하려면 LyCORIS 사용해야한다. 파일이름, 파일 크기만 가지고는 LoRA 인지 LyCORIS 용인지 명확하게 구분이 안된다. (그래도 LyCORIS 용 파일은 파일 크기가 수십메라 정도로 작다)

프롬프트도 <lyco:***:1.0> 처럼 사용해야 한다. <lora:***:1.0> 이 아니다.

- 확장 LoRA 는 [*, *, 1, 1] 에서 [*, *, 3, 3] 과 같이 뒤의 2개 숫자가 1 에서 3으로 변경되었다. (이건 프로그래밍에서 4차원 배열 정도로 생각하면 된다) 이게 확장 LoRA 규격이다.

----

2023.05.26 추가

Stable Diffusion WebUI 를 최신 버전으로 패치하면 LoRA 로 적용 된다. (LyCORIS 쓸 필요 없다) 기존에는 [*, *, 3, 3] 형식의 LoRA 를 지원하지 않았다고 한다.