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

글쓴시간
분류 기술,IT/스테이블 디퓨전

Stable Diffusion - ControlNet

컨트롤넷. 특정한 구도로 Stable Diffusion 이미지 생성시 그려주는 SD 의 확장이다. 구도는 유사한 이미지를 사용해 입력해주거나, 새롭게 그려줄 수 있다. 그냥 윈도에 있는 그림판으로도 그려줄 수 있다. 그정도만 그려줘도 충분하다.

사용자 삽입 이미지

ControlNet 의 원리. 뭔소리인지는 나도 모르지만 뭔가 마지막 직전에 + 해주는 것 같다



- Stable Diffusion web UI 에서는 익스텐션 탭에 가면 쉽게 설치할 수 있다.

사용자 삽입 이미지
확장을 설치했으면, https://huggingface.co/lllyasviel/ControlNet/tree/main/models 에서 원하는 모델을 받은 후, (필자는 control_sd15_openpose.pth 을 받았다) \stable-diffusion-webui\extensions\sd-webui-controlnet\models 에 넣어준다.

설치후 UI 를 재로드 하면 (Apply and restart UI 를 클릭하면) txt2img 탭의 아래에 Control Net 패널이 보인다.


- 이미지를 생성하는 설정은 설치 전과 동일하게 한 후, 이미지넷에 구도에 참고할만한 이미지를 넣어준후 설정해준다. Model 에서 openpose 를 선택하고 바로 아래 Enable, Low VRAM 을 클릭한 후, 이후 Generate 를 누르면 이미지넷에 넣어준 이미지와 유사한 구도의 이미지가 생성된다.

사용자 삽입 이미지


- 이미지 생성시 메모리를 더 사용한다. 7.9 GB -> 8.9 GB 로 말이다. ControlNet 에서 사용하는 모델(.pth 파일)이 5.7 GB 정도 되는데 뭔가 최적화 되서 들어가는 듯. 아래화면은 512x512 이미지를 이미지넷을 사용해서 생성 중인 상태다.

사용자 삽입 이미지

생성할때 아래와 같이 콘솔에 표시된다.

Loading model: control_sd15_openpose [fef5e48e]
Loaded state_dict from [경로\stable-diffusion-webui\extensions\sd-webui-controlnet\models\control_sd15_openpose.pth]
ControlNet model control_sd15_openpose [fef5e48e] loaded.

- 요즘 나오는 AI 이미지는 이를 사용해서 만든다고 생각한다. ControlNet 을 사용해 시드번호를 일치시키지 않고도 손가락이 제대로 나오는 포즈를 고정시킬 수 있기 때문이다. SD 로 그리기 너무 어려웠는데 그나마 이걸 사용하면 손가락을 숨기기 쉬워진다.

- 신체 부위에서 손가락이 그리기 어려운 편에 속하는데 워낙 관절이 작은데다 꺾이는 곳이 많고, 그만큼 다양한 각도에서 보면 처음보는 구도가 나오기 때문이다. 일러스트레이터들은 자기 손가락으로 형태를 취해보고 그대로 그리면 되는데 AI 는 그걸 못하기 때문. 그래서 AI가 그린 포즈가 일정해졌다. 그리고 ControlNet 을 사용해 어느정도 고정시킬 수 있게 되었다. 또한 로라 같은걸 사용해 새로운 포즈와 그에 따른 손가락을 새롭게 학습시키는게 어렵진 않으니 그나마 다행.

- OpenPose 를 사용하는 경우 OpenPose 에디터 확장도 같이 설치하자.

사용자 삽입 이미지


글쓴시간
분류 문화,취미/영화
스즈메의 문단속

사용자 삽입 이미지

스즈메의 문단속을 보고 왔다. 우리나라는 2023년 3월 8일 개봉이지만, 일본에서는 2022년 11월 11일에 개봉한거라 2022년 영화다.

사용자 삽입 이미지

오랜만에 영화관에서 보고왔다. 굉장히 여운이 남는 작품. 끝나고 스탭롤 다 올라갈때까지 자리에 계속 있었다. 단연컨데 신카이 마코토의 작품 중에서 최고라고 꼽을 수 있겠다.

사용자 삽입 이미지

아직 개봉한지 얼마 안되어 스포할만한 내용은 안 쓰겠다.

1. 음향 좋은 영화관에서 보는걸 추천. 음악도 매우 좋다.
2. 우연하게도 오늘 봤는데 영화에서도 오늘이 나왔다.
3. 나름 추억 돋는 음악도 나왔다. 중간에 음악어플로 가요를 돌려듣는게 있는데, 男と女のラブゲーム (남자와 여자의 러브게임) 이 특히 기억난다. 한 반정도는 어떤곡인지 알아들은것 같다. 이런 노래를 안다는건 나도 너무 나이가 들어가는 건감.

사용자 삽입 이미지

PV



OST 가 너무 좋다.

글쓴시간
분류 기술,IT/스테이블 디퓨전
듀얼 GPU 사용

아주 오래전엔 VGA 는 1개로 고정되어있었다. 도스 시절 이야기인데, int 10h 가 하나의 VGA 만 인식했기 때문. 물론 당시에는 당연하게 생각했지만, 요즘에는 그게 아니다. 여러개의 GPU 를 달아 사용할 수 있다.

- 여러개의 GPU 를 달아 마치 하나의 GPU로 인식시켜 어플리케이션에서 사용하려면 뭔가 특수한 기법이 필요해진다. 또한 여러개의 GPU 성능을 그대로 다 내도록 하려면 하드웨어적으로 뭔가 장치가 필요하다. PCIe 를 사용해 GPU 간 통신하는건 느리기 때문. 그래서 SLI (NV Link)나 CorssFire 와 같은 기술을 사용하곤 했다.

- 하나의 어플리케이션에서 시스템에 설치된 GPU 중 하나의 GPU 를 선택적으로 사용하려면 그건 별다른 기술 없이 윈도10에서 지원해준다. 단 드라이버가 설치되어야 한다. 요즘엔 CPU 에 내장되어있는 GPU 가 있기 때문에 이렇게 구성하기 쉽다.

- 이런 이야기를 하는게, 좀 성능 낮은 GPU 를 모니터 출력용으로 사용하고, GT 1030 을 CUDA  용으로만 사용해 메모리를 아끼려는 심산이었다. 윈도에서 기본으로 400MB 정도의 VRAM 을 사용하기 때문에 이거라도 아끼려고 했다.

아래 캡처본은 그렇게 한 결과다. 남아있던 Radeon HD 5500 를 달아 모니터를 연결해주고, GT 1030 에는 아무것도 연결하지 않았다. 그래서 아래와 같이 부팅 직후에는 GPU 메모리를 사용하지 않고 있다. 원래는 약 400MB 정도 점유하고 있었다.2 GB 에서 400 MB는 크다.

사용자 삽입 이미지

- 그 400MB 가량은 아래와 같이 HD 5500 에서 사용하고 있다.

사용자 삽입 이미지

이렇게 해서 SD 에서 768 x 768 이미지를 생성시킬 수 있었다. 기존에는 메모리 부족해서 이걸 못했다. 나름 만족. 하지만 --medvram 옵션을 줄 수 있을 정도는 안되었다. CUDA 메모리 부족으로 뜬다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion web UI

요즘 핫 한 이미지 생성 AI 프로그램이다. 2022년 8월에 나왔고 10월 경부터 핫해지기 시작했는데, 필자는 이제 시작해 보았다.

사용자 삽입 이미지

- 여태까진 PC 성능에 대해 욕심이 없었는데, 이걸 접하고 나니 욕심이 생긴다.내가 관심있는건 이걸 사용하는게 아니라 이걸 좀 더 "빠르게" 사용하는 거다. 쉽게 말하면 튜닝에 관심있다.

- 필자의 시스템에서 돌아가고 이미지 생성도 되긴 하지만, 업스케일 할때는 메모리 부족하다면서 오류내곤 한다. 그냥 업스케일 포기. GPU 메모리 2GB 에서도 실행되지만, 최소한 4GB 는 되어야 뭔가 제대로 돌릴 수 있을 것 같다. 권장은 8GB 다.

- 필자가 생각하는 최소 사양은 이렇다. 어쨌든 생성은 되는 수준이다. (필자가 이렇게 사용하고 있다)

CPU: Intel Core i3 이상
GPU: nVidia GeForce GT 1030 2GB
RAM: 16GB
SSD: 100GB 여유용량

- 이미지 생성시나 보정시에는 HDD 사용해도 되지만, 체크포인트 파일이 최소 2GB 이상이고 커다란 파일은 8GB에 달하기 때문에, 파일 로딩 시간이 30초 내외로 꽤 오래걸린다. (한번 로딩하면 다음 이미지 생성시에는 재사용하므로, 로딩시간이 없다. 따라서 크게 문제될건 아니다) 하지만 체크포인트를 병합하는 등의 작업을 하면 SSD 는 필수다.

- 이미지 생성시 CPU, GPU 사용량은 아래와 같다. GPU 메모리가 부족해 --lowvram 옵션을 주고, 성능 향상을 위해 --xformers 을 주어 실행한 결과다. 1장의 이미지를 생성하는데 기본 옵션 만으로 생성하면 2분 정도, 옵션을 수정하고, 고해상도, 생성 퀄리티를 높이면 30분 넘게도 걸린다. 따라서 새로운 세팅을 찾는건 어렵고, 대신 구글링해서 성공적인 이미지를 생성한 프롬프트를 조금씩 수정해서 사용해보고 있다. 나름 만족해하고 있다.

사용자 삽입 이미지

CPU 사용량


- 사용율을 모니터링 해보면, GPU 사용율이 주기적으로 올라갔다 내려갔다 한다. --lowvram 옵션을 주면 "SYSTEM MEM 데이터 일부를 GPU MEM에 로드 → 계산 → 계산 결과를 SYSTEM MEM에 저장 → SYSTEM MEM 데이터 일부를 GPU MEM에 로드 → 계산 → ..." 이런식으로 진행하기 때문이다. 즉 로드 및 저장시에는 계산하는게 없기 때문에, 사용율이 요동친다. 그리고 이때문에 5배이상 느려진다.

사용자 삽입 이미지

GPU 사용량


-  GPU 는 nVidia GeForce 950 2GB 도 가능할 걸로 생각한다. (해보진 않았다) 그 이하는 안된다. 권장하는 사양은 GPU nVidia GeForce RTX 3060 12GB 이다. 개발자는 nVidia GeForce RTX 3090 을 사용하는걸로 알려져있다.

- GPU 가 nVidia 제품이 아니라면 AVX2 가 지원되는 CPU 만으로도 실행해볼 수 있다. AVX2는 4세대 Core CPU 인 하스웰부터 지원한다. 단 이미지 생성 속도는 사용 못 할 정도로 너무 너무 느리다. 필자도 CPU만 사용해서 이미지 생성에  2시간 기다리다가 그냥 포기했다. 32코어나 64코어를 가진 CPU 라면 해볼만하지 않을까 생각한다.

- 생성해본 이미지를 올리고 싶지만 제대로 생성된게 별로 없다. 정말 정말 손가락을 제대로 못 그린다. 어떻게하던 손가락을 숨기는 포즈로 생성 해야 그나마 봐줄만하다. 아직은 이에 대한 명확한 해결책은 없는 상태다. 현재로써는 그냥 보정하거나, 시드 값을 달리해 손가락이 숨겨지는 포즈를 찾아보는 수밖에 없는 듯.

사용자 삽입 이미지

shuimobysim, girl, woman,bare shoulders, (ecchi:0.5), (trees:0.5), (flowers:0.6) ,(birds:0.2), (bamboo:0.1), lakes, Hangzhou, wuchangshuo, wuchangshuo in background, <lora:Moxin_10:0.8> Negative prompt: EasyNegative, mutated hands, (poorly drawn hands:1.331),(fused fingers:1.61051), (too many fingers:1.61051), bad hands, missing fingers, extra digit Steps: 28, Sampler: DPM++ SDE Karras, CFG scale: 2, Seed: 2643581225, Face restoration: CodeFormer, Size: 512x768, Model hash: 2537d1a815, Model: guofeng3_v32, ENSD: 31337

글쓴시간
분류 기술,IT/하드웨어 정보

nVidia Quadro K2000 - GPU-Z

사용자 삽입 이미지

싼 김에 당근에서 구매해본 GPU. 상당히 오래된 제품이기 때문에 싸긴 싸다. 하지만 드라이버 지원이 2022년 말로 끊겼기 때문에 더이상의 기대를 하면 안된다. GeForce GT 740 와 같은 GK107 칩을 사용하는 제품이다.

사용자 삽입 이미지

GK107 은 아래와 같은 기능을 지원한다.

NVENC: 1st Gen
NVDEC: 1st Gen
PureVideo HD: VP5
VDPAU: Feature Set D

싼김에 사긴 샀는데 케플러 아키텍처를 사용하는거라 조금 아쉽다. AI 학습에 활용할 수 없기 때문이다. 돈 더 들여서 파스칼 아키텍처 사용하는 제품으로 사용했더라면 하는 생각. 그래도 저렴하니 나름 만족한다.

사용자 삽입 이미지

윈도 10을 공식 지원한다. 따라서 작업관리자에 표시된다.

사용자 삽입 이미지

찍고보니 딱 10년 된 제품이다.