ChatGPT를 포함한 다양한 인공지능 모델이 소개되면서, 특히 언어 모델 분야에서도 많은 발전이 이루어졌다. 그렇지만 그림 인공지능 모델에 비해 언어 모델은 상대적으로 일반 사용자들이 접근하기 어렵다는 단점이 있고, 그래서 그걸 극복하려는 다양한 방법을 사람들이 모색을 했다. 이 글에서는 언어 모델을 가볍게 체험해 볼 수 있는 방법들을 소개하고자 한다.
그림 인공지능에서의 automatic1111-WebUI나 ComfyUI 같이 언어 생성 모델을 사용할 수 있게 만드는 프로그램이다. 그림 인공지능의 WebUI의 언어 모델 버전을 목표로 시작된 프로젝트로, 초기에는 애니메이션 캐릭터와 대화하는 기능이 주력이다. 챗봇의 기본 프로필 사진이 애니메이션 그림이었지만 지금은 그런 흔적이 사라진 상태다. 로컬에 설치를 할 수 있지만 Colab에서도 돌릴 수 있다.
기본적인 파인튜닝 기능도 제공하고 있으며 허깅페이스에서 모델을 다운로드하는 기능도 제공한다. Colab에서 돌릴 시 직접 모델 파일을 계정에 올리기보다는 실행 후 여기서 제공하는 기능으로 모델을 다운로드하는 것을 추천한다.
LLMs (언어 생성 모델)
ChatGPT 이후 여러 모델이 나왔는데 주로 어떤 모델이 있는지, 그리고 대용량 원본 언어 모델 대신에 양자화된 모델의 링크를 정리다. 양자화란 모델의 크기를 줄이거나 처리 속도를 올리기 위한 방법인데, 컴퓨터의 성능이 제한적인 사용자들에게 매우 유용한 방법이다. 물론, 성능이 충분하다면 원본 모델을 사용하면 되지만, Colab으로 돌릴 시 GGUF로 변환된 모델을 사용하는 것을 추천한다. 다만 품질은 원본에 비해 떨어진다고 볼 수 있다.
참고로 이러한 작업을 전문적으로 해주는 허깅페이스 유저가 있다. 바로 ‘theBloke’라는 사용자인데, 유명한 모델은 웬만해선 이분이 다 변환을 해서 업로드가 되어있습니다. 아래의 링크는 모두 이 유저가 올린 모델과 연결된다. 요구되는 VRAM 용량에 맞게 파일을 다운로드면 되는데, Colab에서 무료로 제공하는 GPU는 테슬라 T4로 램이 15G이기 때문에 이 이하의 용량을 요구하는 모델을 받으면 된다.
LLAMA3 – 메타
며칠 전에 공개된 라마3 GGUF 링크를 남긴다. 참고로 theBloke라는 사용자가 아닌 QuantFactory라는 사용자가 변환한 것이다. 참고로 아래 소개된 모델 쓸 필요 없이 이것만 쓰면 된다고 할 정도로 성능이 인상적이다.
개인적으로 조금씩 네 가지를 써봤는데 잠깐만 썼기에 제대로 파악한 것은 아니지만 각각의 모델별로 크게 성능 차이가 있다고 느끼지는 못했다.
qlora, 파인튜닝
Text Gen WebUI에서도 Lora가 가능하지만 그냥 학습을 하면 상당히 높은 성능의 GPU가 필요하게 된다. 하지만 qlora라는 방식으로 파인튜닝을 하면 상대적으로 저성능의 GPU에서 학습이 가능하다. 위의 두개는 GGUF로 학습하는게 아닌 원본 모델을 불러와서 학습하는 자료이며
qlora를 할 수 있도록 하는 프로그램(이나 Colab)은 많지만 Axolotl이 가장 많이 쓰이는 것으로 보인다.
Traditional Korean Painting Model production history (based on SDXL)
(Translated from English using DeepL)
하이퍼네트워크와 SD1.5 기반의 모델을 만들고 난 뒤 몇 달 지나지 않아 SDXL이란 모델이 나왔습니다. 그 당시 SD2.1 기반의 모델은 작업을 하지 않았습니다. 그 이유는 컨트롤넷을 사용하기 어려운 점과 명확하게 SD1.5 보다는 낫지 않았기 때문에 꺼려졌습니다. 프롬프트에 따른 변화는 명확하게 줄 수 있고, 알려진 피사체에 대한 재현은 좀 더 나아 보이지만 높아진 사양에 비해서는 명확한 이점은 없었습니다. 하지만 SDXL의 경우 컨트롤넷과 여러 가지 기능이 바로 지원될 것이라고 이야기와 지원되는 해상도에 대비해서 그렇게 많은 사양을 요구하지 않았기에 시도를 해보았습니다.
A few months after creating the hypernetwork and the SD1.5-based model, a model called SDXL came out. At that time, I didn’t work on the SD2.1-based model because I was reluctant to use ControlNet and because it wasn’t clearly better than SD1.5. You can definitely change things based on prompts, and the reproduction of known subjects looks a little bit better, but there was no clear advantage over the higher specs. But with SDXL, they said that ControlNet and a bunch of other things would be supported out of the box, and they didn’t ask for that many specs for the supported resolutions, so I gave it a shot.
데이터 준비 / Prepare data
SD1.5 모델에서는 크게 두 개의 데이터를 준비했었습니다. 수묵화 데이터와 김홍도 그림이었습니다. 이번에는 좀 더 화가의 수를 늘렸습니다. 공유마당에 있는 화가 중 상위 7명을 선정했고 디지털 K-art 데이터를 추가했습니다.
In the SD1.5 model, we prepared two types of data. This time, we increased the number of painters. We selected the top 7 painters in the shared yard and added digital K-art data.
조선시대 화가의 그림은 수량이 적기 때문에, 그림을 조각내고 좌우 반전을 통해서 그림 장수를 늘렸습니다. 총 5684장.
Since the paintings of Joseon Dynasty painters are few in number, the paintings were fragmented and reversed to increase their longevity. 5684 paintings in total.
강세황 / kangsehwang 520장 / 520 paintings (원본 그림 130장)
김홍도 / kimhongdo 1768장 / 1768 paintings (원본 그림 487장)
신윤복 / sinyunbok 452장 / 452 paintings (원본 그림 72장)
심사정 / simsajeong 652장 / 652 paintings (원본 그림 133장)
안중식 / anjungsik 410장 / 410 paintings (원본 그림 69장)
장승업 / jangseungeop 496장 / 496 paintings (원본 그림 88장)
11246장 중 6253장으로 줄였습니다. aihub에 있는 자료는 정말 엄청나게 많기 떄문에, 일단 그중 라벨링이 되어있는 데이터로 줄였습니다. 그렇게 11246장이 나왔으며 그 중 정사각형에 가까운 이미지를 골라서 내서 6253장이 나왔습니다.
So out of the 11,246 images, I narrowed it down to 6,253. There’s a lot of data on AIHUB, so I just narrowed it down to the data that was labeled, and that gave me 11,246 images, and I picked out the ones that were close to a square, and that gave me 6,253 images.
한국 전통 수묵화 화풍별 제작 데이터 / Production data for traditional Korean ink paintings by styleLink
5860장의 이미지를 정사각형으로 잘라낸 자료를 사용했습니다. 이 데이터도 엄청 많기 때문에 수량을 늘릴 수 있으나 조선시대 화가의 데이터와 비슷한 양으로 설정했습니다.
I used a baseline of 5860 images cropped into squares. This is a lot of data, so you can increase the quantity, but I set it to a similar amount to that of a Joseon painter.
데이터셋 규모를 비슷하게 설정한 이유 / Reasons for similar dataset sizes
SD1.5에서의 경험이 반영되어 있는데, 김홍도 그림과 수묵화 데이터 의 양이 다른 상태에서 파인튜닝을 하면 두 컨셉의 이미지가 잘 나올때의 설정이 달랐습니다. 구체적으로 CFG scale이 전자는 6-7에서 최상이며 후자는 3-4에서 최상의 결과물이 나왔습니다. 또 파인튜닝이 많이 될수록 최적의 CFG scale이 낮아지는 경향을 보았는데, 비슷한 정도를 학습시키기 위해 크기를 비슷하게 맞추었습니다.
This reflects our experience in SD1.5, where we found that fine-tuning with different amounts of Kim Hong-do painting and ink drawing data resulted in different settings for the best images of the two concepts. Specifically, we found that the CFG scale was best at 6-7 for the former and 3-4 for the latter. We also found that the optimal CFG scale tended to decrease as the amount of fine-tuning increased, so we tried to keep the scales similar in order to train to a similar degree.
캡션 생성 / Create captions
캡션을 만드는데 CLIP Interrogator 2.4를 사용하였습니다. 설정은 git-large-coco, ViT-H-14/laion2b_s32b_b79k를 했는데, 샘플 몇 개를 골라 종류별로 뽑아보고 괜찮다고 생각된 설정을 선택했습니다.
I used CLIP Interrogator 2.4 to create the captions. The settings were git-large-coco, ViT-H-14/laion2b_s32b_b79k, and I picked a few samples to play around with and chose the ones I thought looked good.
그리고 위의 캡션을 생성한 후 몇 가지 텍스트를 추가했습니다. 각 화가의 영문 이름을 추가한 뒤 whtjs이란 텍스트를 추가했습니다. 그리고 K-art에는 gksrnr 이란 텍스트를, 그리고 수묵화에는 tnanr 이란 텍스트와 화풍의 영문 이름을 추가했습니다.
And after creating the caption above, I added some text: I added the English name of each painter, then added the text whtjs, then added the text gksrnr for K-art, then added the text tnanr for ink paintings, then added the English name of the painting style.
전체적인 캡션은 아래와 같이 구성되어 있습니다.
The overall caption is configured as follows
data
captions
강세황 / kangsehwang
whtjs, kangsehwang, + Captions created by CLIP Interrogator 2.4
김홍도 / kimhongdo
whtjs, kimhongdo, + …
신윤복 / sinyunbok
whtjs, sinyunbok, + …
심사정 / simsajeong
whtjs, simsajeong, + …
안중식 / anjungsik
whtjs, anjungsik, + …
장승업 / jangseungeop
whtjs, jangseungeop, + …
허련 / heoryeon
whtjs, heoryeon, + …
디지털 K-art 데이터 / Digital K-art data
gksrnr, + …
수묵화 백묘법 / traditional Korean ink paintings baengmyo
tnanr, baengmyo, + …
수묵화 구륵법 / traditional Korean ink paintings gureuk
tnanr, gureuk, + …
수묵화 몰골법 / traditional Korean ink paintings molgol
tnanr, molgol, + …
파인 튜닝 / Fine Tuning
SD학습법 5가지 글에 있는 프로그램 중 kohya-ss를 사용했습니다. 이전에 사용하던 StableTuner는 SDXL지원이 없었으며 정신적 후속작인 One Trainer는 클라우드를 지원하지 않았습니다.
Of the programs in this article, I used kohya-ss. My old StableTuner didn’t have SDXL support, and its spiritual successor, One Trainer, didn’t support the cloud.
Runpod에서 학습을 했으며 사용된 RTX 6000 Ada를 사용했습니다. 비용은 125$가 쓰였습니다. 시행착오를 제외하고 예상되는 비용은 80$로 예상됩니다. 그리고 저는 learning rate를 낮게 설정해서 학습을 했기에 실제 비용을 줄일 수 있는 여지는 좀 더 있을 것으로 생각됩니다.
I did the learning on Runpod and used a used RTX 6000 Ada, which cost me 125$. Excluding trial and error, the expected cost is expected to be 80$. And I did the learning with a low learning rate, so I think there is some room to reduce the actual cost.
학습 진행 과정 / Progression of Fine Tuning
조금씩 학습시키면서 데이터셋을 바꾸어서 다음 학습을 이어갔습니다. 각 스텝마다 모델을 저장한 뒤 이미지를 출력하여 테스트했습니다. 이미지는 학 화가별, 화풍별로 뽑아보았고, 주제는 산, 남자, 여자, 고양이, 나무, 집 이렇게 여섯 가지로 뽑았습니다. 각 이미지가 2d의 그림으로 나오는지 테스트한 뒤 괜찮은 결과가 나온 모델을 선택하고 학습을 이어 나갔습니다. 아래는 그 과정을 나타낸 표와 차트입니다.
After each step, I saved the model and tested it by outputting images. The images were selected by artist and painting style, and the subjects were six: mountains, men, women, cats, trees, and houses. I tested each image to see if it came out as a 2D picture, then selected the model with good results and continued training. Below is a table and chart showing the process.
그림에 표시되지 않은 설정은 아래와 같습니다. The settings not shown in the figure are as follows
mixed_precision: bf16 optimizer: Adafactor save_every_n_epochs: 1 save_precisio: bf16 train_batch_size: 16 or 32 train_text_encoder: false training image repeats: 1 full bf16 training
중간에 몇 가지 고비가 있습니다. 학습할수록 품질이 감소하던 구간이 두 번 이었습니다. 그럴 때마다 품질이 나빠지더라도 학습을 진행한 뒤 결과를 테스트했습니다.
There are some bumps in the road. There were two stretches where the quality decreased as we learned, and each time, we kept learning even though the quality got worse and then tested the results.
또한 k-art의 데이터는 잘 학습이 되지 않았습니다. 입력된 데이터에 비해서 결과물이 상당히 아쉬웠는데, 이 부분은 학습시킬수록 개선이 되지 않아서 2d 이미지가 나오는 선에서 학습을 그만두었습니다. 또한 자료가 부족한 화가의 결과물은 제대로 나오기가 어려웠습니다. 안중식 화가의 작품이 그러했습니다. 그리고 심사정 화가의 작품은 어째서인지 여성의 그림으로만 채워지는 현상이 나오기도 했습니다. 캡션에서 어떤 인물과 겹친 것은 아닌가 추측됩니다.
Also, K-ART’s data was not trained well, and the results were quite disappointing compared to the input data, which did not improve as we trained it, so we stopped learning at the point where 2D images appeared. Also, it was difficult to get good results from painters who lacked data. This was the case with Ahn Jung-sik’s work, and for some reason, Shim Seong-jung’s work was filled with only women’s paintings. I’m guessing that the captions overlapped with some figures.
위의 이미지는 아래의 설정으로 나온 이미지 입니다. The image above was created with the settings below.
seed: 12345
steps: 30
cfg: 8
sampler_name: dpmpp_2m
scheduler: karras
denoise: 1.0
사용 가이드 / User Guide
트리거 단어 리스트 / Trigger Words List
참고로 화가의 실제 그림체를 제대로 반영하지는 못합니다.
Note that this is not a true representation of the painter’s actual painting style.
트리거 단어 / Trigger Words
효과 / Effects
whtjs
조선시대 화가의 평균적인 화풍을 구현합니다. Emulates the average painting style of a Joseon era painter.
kangsehwang
가장 단순한 형태로 그려집니다. It is drawn in its simplest form.
kimhongdo
가장 품질이 뛰어납니다. The highest quality.
sinyunbok
두 번째로 품질이 뛰어납니다. Second highest quality.
simsajeong
그림에서 여성의 얼굴이 나올 확률이 높습니다. A woman’s face is more likely to be in the image.
anjungsik
가장 품질이 좋지 않습니다. The lowest quality.
jangseungeop
두 번째로 품질이 좋지 않습니다. Second worst quality.
heoryeon
가장 색상이 적은 결과물이 나옵니다. The result is the one with the least colour.
gksrnr
현대적인 형태를 만듭니다. 신체 오류가 자주납니다. Creates modern shapes. Body errors are frequent.
tnanr
아래 세 가지 수묵화 기법의 평균적인 모습을 만듭니다. Produces an average look of the three ink painting techniques below.
baengmyo
whtjs의 결과와 유사하게 나올 때가 많습니다. The results are often similar to those of ‘whtjs’
gureuk
얇은 경계가 있는 느낌으로 그림이 나옵니다. The result is a picture with a thin border.
molgol
경계가 없는 결과물을 만들어 냅니다. Produces results that have no boundaries.
사용 팁 / Usage Tips
일반적으로 CFG scale이 높을수록 품질이 좋지 않습니다. 10 이상으로 설정하는 것은 추천하지 않습니다. 다만 짧은 단어는 영향을 거의 받지 않는 것으로 보입니다. In general, the higher the CFG scale, the worse the quality. We don’t recommend setting it above 10. However, shorter words seem to be less affected.
긴 문장을 입력할수록 일반적인 사진으로 나올 가능성이 높습니다. 그렇다고 트리거 단어의 가중치를 늘린다고 하더라도 결과물이 더 나아지지 않습니다. The longer sentences you type, the more likely you are to get a generic photo, and increasing the weight of the trigger word doesn’t make the result any better.
추천하는 CFG scale은 4-8 사이입니다. The recommended CFG scale is between 4-8.
품질이 떨어지는 트리거 단어를 단독으로 사용하지 마세요. Don’t use poor-quality Trigger Words in isolation.
트리거 단어 여러개를 동시에 사용해서 테스트를 하진 않았지만, 일반적으로 더 좋게 나올 것으로 추측됩니다. I haven’t tested using multiple trigger words at the same time, but I’m guessing it will generally work better.
이미지가 사진처럼 나올 경우 ‘painting’ 이나 ‘style’이란 프롬프트도 같이 사용하면 좀 더 나은 결과를 볼 수 있습니다. ex) kimhongdo painting If your image comes out looking like a photo, you may see better results if you also use the “painting” or “style” prompts. ex) kimhongdo painting
아직은 많이 사용하지 않아서 이후에 제시된 방법이 수정될 수 있습니다. I haven’t used it much yet, so the methods presented here may be modified in the future.
이미지를 768×768사이즈로 바꾼뒤, clip_interrogator를 통해 프롬프트를 만들었습니다. 이후 한국 수묵화 자료에 gksrnrghk라는 프롬프트를 붙이고, 김홍도 그림에는 rlaghdeh라는 프롬프트를 추가로 붙였습니다.
이 이미지를 다시 512×512사이즈로 바꾼 뒤 Stable Tuner를 이용해서 학습을 했습니다. 사용한 설정은 아래와 같습니다.
pretrained model: runwayml/stable-diffusion-v1-5
seed: 3434554
resolution: 512
train batch size: 24
num train epochs: 60
learning rate: 5e-6
원래 768 모델을 생각하고 제작했으나, 실행할 수 있는 환경이 제약이 크고 컨트롤넷을 사용할 수 없었기에 512모델 1.5버전으로 다시 작업을 했습니다.
자료가 이미 준비 되어있기 때문에 경우에 따라서는 (예산이라든지) 새롭게 학습 할 지도 모르겠습니다.
사용 가이드
한국 수묵화 데이터는 6000장 정도 김홍도 그림은 1000장 정도 사용되었습니다. 그런 이유인지, 한국 수묵화 스타일로 하려면 CFG Scale를 2-7 사이로 김홍도 그림의 스타일로 하려면 4-12사이를 추천합니다. 두개의 스타일 모두 활용할 경우 중간 값으로 하는 것을 추천합니다. 스텝수에도 영향을 받기 때문에 적절한 값을 찾는 것이 중요합니다.
작동을 잘 하지만 기법에 대한 프롬프트도 적용이 되어있으며 사용할 때는 아래 프롬프트를 사용하면 됩니다. (하지만 미묘한 차이만이 발생합니다.)
백묵법: baegmyobeob
몰골법: molgolbeob
구륵법: guleugbeob
김홍도 그림을 강조하고 싶으면 rlaghdeh style, rlaghdeh painting이란 프롬프트를 같이 사용하면 좀더 강조가 됩니다.
샘플 이미지
txt2img의 샘플이미지 입니다.
gksrnrghk, sky, tree
Steps: 40, Sampler: DPM++ 2M SDE Karras, CFG scale: 2.0, Seed: 1271864954, Size: 768×512, Model hash: a710c70889, Model: gksrnrghk_15_512_60, Clip skip: 2, Script: X/Y/Z plot, X Type: Prompt S/R, X Values: “gksrnrghk,\”gksrnrghk, rlaghdeh\”,rlaghdeh “, Y Type: CFG Scale, Y Values: “2,3,4,5,7,9,12,15”, Version: v1.3.0
2023년 6월 1일 수정. 코랩 차단 관련 내용 추가. 아마존 SageMaker Studio Lab 추
2023년 7월 17일 수정. 엘리스 프로젝트 관련 내용 추가. 아마존 SageMaker Studio Lab 하나더 추가.
좋은 그래픽 카드를 가지지 않은 사람들의 경우 대안으로 선택할 수 있는 방법이 몇 가지 있습니다. 코랩과 구름IDE를 써보는 것 입니다. 그리고 런포드(런팟)라는 대안 또한 있는데요. 런포드는 자체적으로 템플릿을 제공하기 때문에 거기서 적당한 것을 선택해서 사용하시면 됩니다. 여기서 소개될 TheLastBen의 경우 런포드 템플릿이 공식적으로 지원됩니다.
기본적으로 코랩이든 구름IDE이든 서버에 ipynb 파일을 업로드 해서 실행만 하면 끝납니다. 물론 몇 가지 설정을 해야 할 수도 있습니다. 몇 가지 설정에 따라 품질이 좀 달라질 수도 있지만 결국 동일한 Automatic1111 Webui를 돌린다는 점에서는 큰 차이는 없다고 생각합니다.
국내에서 많이 쓰이는 버전으로 보입니다. 개인적으로 저는 Deforum을 많이 쓰는데, 이게 작동이 되지 않습니다. 그래도 국내에서 쓰기엔 가장 편리한 버전이라고 생각합니다. 다만 현재는 업데이트 되지 않아 보이기도 합니다. 발생하는 오류에 대해서는 댓글을 통해 자료를 찾고 해결해야 할 것으로 보입니다.
제가 쓰는 버전입니다. 이 버전을 쓰는 이유는 Deforum이 작동하기 때문입니다. 위의 국내버전도 사용 가능했었는데, 어느 순간부터 문제가 생겼습니다. 사실 TheLastBen도 비슷한 오류가 생겼는데 Deforum측에서 버그를 고쳐줬는데 아마 이버전을 기준으로 고친 것으로 알고 있습니다. 그리고 자주 수정을 합니다. 이게 가끔 단점이기도 하네요.
조금 특이한 것이, 모델 별로 파일을 나누었다는 점이 있습니다. 원하는 모델에 맞게 쓰면 편리한 점은 있지만 굳이 라는 생각이 드네요. 이분은 텍스트 webui도 만드시는데 그 또한 비슷하게 모델별로 파일을 만들어 놨습니다. 편리하다면 편리하지만 불편한 점이 있긴 하죠.
요즘 ai그림 학습에 관한 이야기가 많아졌습니다. 학습에 관한 이야기에 앞서 각 ai 그림 서비스에 대해 언급하자면, 미드저니나 달리같은 인공지능 그림Ai는 특정 기업에서 개발을 하고 서비스를 하고 있습니다. 그런데 스테이블 디퓨전은 조금 특이합니다. 오픈 소스로 풀려서 개인들이 여러 기능을 추가하고 개발하고 있습니다.
그리고 이 스테이블 디퓨젼이 이제 XL 버전까지 발표가 되었습니다. 그리고 그걸 계기로 기존의 자료를 새롭게 정리했습니다. 그간 발표된 학습법을 정리하면 크게 카테고리를 5개로 나눌 수 있어 보입니다. 다만 이 기준으로 각 프로그램을 분류를 하니 중복된 경우가 많아서, 학습법 소개와 프로그램 소개 하는 부분을 분리했습니다.
관련 자료는 여기서 계속 업데이트 할 계획입니다.
수정내역
2023년 3월 16일 / LoCon 에 대한 내용 정리 중.
2023년 3월 17일 / thelastben 잘못된 설명 수정.
2023년 3월 18일 / LoRA 링크 추가
2023년 6월 2일 / EveryDream Trainer 2.0 추가
2023년 7월 16일 / LoRA에 SDXL 0.9 버전추가 (runpod에서 실행)
2023년 7월 18일 / oneTrainer 추가 (SDXL도 지원)
2023년 8월 6일 / 전체 문서 재정리
스테이블 디퓨전 학습 5가지
전체적으로 학습법을 구분하자면 아래와 같이 크게 5가지로 분류 할 수 있어 보입니다.
텍스트 인버전 / Textual Inversion
사용자가 제공한 객체나 스타일과 같은 개념에 대해 3-5개의 이미지만을 사용하여, 해당 개념을 새로운 “단어”로 표현하는 방법을 학습. 이러한 “단어”들은 자연어 문장으로 구성됨.
드림부스가 아닌 파인튜닝을 하는 방식들을 말합니다. 각각의 프로그램마다 다르다고 봐야겠지요. 개인적으론 드림부스보다 조금 더 학습이 잘된다고 생각하고 있습니다.
학습법의 결과물은 “텍스트 인버젼 < 하이퍼네트워크 << 로라 < 드림부스 < 기타 방식”으로 잘 나오는 것으로 보입니다.
이 글은 기본적으로 webui를 로컬이든 코랩이나 구름 또는 런포드에서 돌려본 적이 있으신 분들을 전제로 글이 작성되었습니다. ai그림 작업을 처음 하시는 분들에게는 부적합한 글이 될 수 있습니다. 또한 저는 전공자나 관련 업종 종사자가 아니기 때문에 용어 사용에서 부정확 하거나 틀린 점이 있습니다.
이러한 학습법을 사용할 수 있는 프로그램들을 정리하겠습니다.
학습 프로그램
Automatic1111 WebUI
지원 기능
텍스트 인버전
하이퍼네트워크
확장프로그램으로 (링크) SD1.5 버전의 드림부스와 LoRA 학습을 사용할 수 있습니다. 드림부스는 ShivamShiaro를 기반으로 합니다. LoRA는 cloneofsimo를 기반으로 하는것으로 보입니다.
위와 함께 완전 초기에 발표 된 프로그램 중 하나지만 Stable Tuner 보다 업데이트가 된지 오래됬습니다.
학습에 필요한 공통적인 준비물
학습시킬 이미지와 토큰. 추가로 정규화 이미지(드림부스나 LoRa, StableTuner사용 시 선택)
학습 시킬 이미지
여러분이 학습시킬 이미지입니다. 예를 들면 좋아하는 캐릭터의 이미지가 될 수도 있고 어떠한 작가의 그림체가 될 수도 있습니다.
토큰
일종의 태그라고 생각하고 있습니다. 태그와 완전 같지는 않지만 비슷하게 생각하면 될것 같습니다. 토큰이라고 적었는데 거창한건 아니고 파일명이 같거나(thelastben), 아니면 같은 파일명으로 된 txt파일 안에 태그나 설명이 들어가 있으면 됩니다.
Webui에 토큰을 편집하는 확장기능이 있습니다. 그리고 트레이닝 탭에 자동으로 토큰을 달아주는 기능이 있습니다. 파일명을 토큰으로 사용할 경우 윈도우에서 바꿀 그림파일들을 선택한뒤 F2를 누르면 일괄변경이 가능합니다.
정규화 이미지(선택)
드림부스나 LoRa, StableTuner등의 학습에서 필요한 이미지. 제가 추측하기로는 과도한 학습을 하지 않게 도와주는 이미지라고 볼 수 있습니다. 저는 학습시키지 않을 일반적인 사진 또는 그림이라고 생각하고 있습니다.
하이퍼네트워크와 드림부스 비교
참고로 드림부스와 StableTuner, LoRa 이렇게 셋은 그렇게 까지 많은 스타일의 차이는 없는 것으로 생각됩니다. 아래는 img2img기능을 사용했을 때 나온 차이 입니다.
하이퍼네트워크드림부스하이퍼네트워크드림부스
인스타 계정에(짭홍도 https://www.instagram.com/jjabhongdo/) 주로 img2img 또는 deforum을 이용한 이미지를 정리해서 올려 놓았는데, 중간에 있는 자판기기를 포함해서 이전에는 하이퍼넷트워크, 자판기 이후부터 파리까지 드림부스, 최근 이미지는 파인튜닝입니다.
학습에 관한 기타 의견
드림부스(LoRA, Stable Tuner포함)를 과도하게 학습시키지 마세요. 일반적으로 이미지 개수가 많지 않은 이상 하이퍼네크워크보단 시간이 적게 걸립니다.
어떤 학습법이든 처음부터 완벽하게 하기보다는 기본설정을 놔두거나 값을 낮춘 뒤 사용법을 익히는 것을 추천합니다.
Webui의 확장기능을 이용할 시 다른 곳에서는 되도 코랩에서는 안될 수도있습니다. 저의 경우 Deforum같은 확장기능이 되지 않고 있습니다.
하이퍼네트워크와 드림부스는 동시에 사용도 가능했던것 같습니다. 꼭 한가지만 고집해야하는 것은 아닌것 같습니다.
제가 링크를 남긴 곳을 통해 학습 방법을 익힐 수도 있지만 구글에서 학습에 대한 검색을 하면 한글로 된 자료를 많이 볼 수 있습니다. 가입해야만 볼 수 있는 곳도 있겠지만 그냥 볼 수 있는 페이지로도 충분하다고 생각합니다.
학습 프로그램 중 짙게 칠한 두 프로그램이 사실상 가장 많이 쓰이고 유지보수가 되는 프로그램으로 보입니다.
6월 5일 추가 / 최근에 미세조정(파인튜닝)한 모델을 공개했습니다. 그것에 대해선 이 글을 참고해 주세요.
ai 그림으로 유명한 스테이블 디퓨전에서 have i been trained? 이란 사이트를 만들었습니다. (학습에 사용된 이미지 검색하는 사이트) 김홍도나 한국화에 관한 단어를 검색하게 되었고, 빈약한 것을 발견하고 외쳤습니다. 그렇다! 여기가 빈땅이구나. 블루오션이다! 그리고 자료를 모으고 가공한다는 점에서 블로그 컨셉과도 잘 맞는다고 약간의 정신승리도 했습니다.
작업 과정
자료는 이전에 공유마당이란 사이트서 구하기로 마음을 먹고 ‘김홍도’라는 검색어를 넣었는데, 거의 대부분은 김홍도의 그림이지만 다른 분의 그림도 섞여 있었습니다. 그래서 따로 정리를 조금 해야 했습니다. 각 게시글의 주소를 모아 다른 작가의 주소는 지우고 난 뒤에 보니 400여 장. 갈 길이 머네요.
다른 작가의 그림개발자 모드로 주소를 수집한 뒤엑셀로 정리, 정리전 스샷
그런 다음 자료를 올리고 이런저런 설정을 해서 학습을 했습니다. 참고로 저는 AUTOMATIC1111 님의 WebUi를 사용했습니다. 빛과 소금 같으신 분. 저에겐 리사 수 같은 분이시죠. 아무튼 그렇게 40시간 정도를 돌렸습니다. 학습 강도는 컴퓨터가 터지지 않도록 0.0000005 정도를 넣었습니다. 중간중간 쉬는 시간도 있었습니다. 컴퓨터님이 아프면 돈이 나갑니다. 전 돈 없어요.
빛과 소금 AUTOMATIC1111학습 설정. 이정도 시간 걸릴줄 몰랐지.
Ai 그림 결과물
학습 초기 작품
처음에 작업을 시작했을 때는 그림 몇 장 안 넣고 돌렸습니다. 거기다 첫 번째는 스텝 수가 10 정도였던 걸로 기억합니다. 그래서 결과물이 좋지는 않았지만 그래도 신기하더군요.
염소와 집단군 이신가?누구신가요?
제대로 학습 시작 후
제대로 그림 400장 정도를 학습시키기 시작했습니다. 적어도 한국화스러운 모습이 나오기 시작했습니다. 적어도 다들 스텝 수가 30000은 넘어가는 상태에서 나온 이미지입니다.
산수화소나무와 새초대형 닭
학습 완료 이후
400여 장의 이미지를 좌우 반전에 부분부분 자동으로 자른 뒤, 230000스텝을 돌린 결과물로 작업을 했습니다. 원본 사진을 찍은 뒤 img2img 기능을 통해 그림을 제작했습니다. 제작 과정에서 사진을 보통 40장 정도 출력을 한 뒤 그중 괜찮은 것을 뽑은 자료인데, 생각보다 다들 품질이 나쁘지는 않지만 그렇다고 모든 그림이 좋았던 것은 아니었습니다. 손가락을 ai가 유독 못 그리는 것처럼 풍경에서도 잘 못 그리는게 많네요.
강, 나무 그리고 기암괴석 / 짭홍도원본사진 금호강, 아파트 / 가공나무 풍경1 / 짭홍도나무와 아파트 / 가공멀리 산이 보이는 대로 / 짭홍도집 뒤 / 가공
부족한 점은 많았고 생각보다 많은 그림을 뽑아서 추려야 했지만 그래도 그럴듯한 그림으로 바꾼다는 데에 만족을 하고 있습니다. 그림만이 아니라 동영상도 지금 제작해 보려고 하는데 결과가 어떻게 될지 궁금하기도 하네요. 무엇보다 이것보다 드림부스가 더 결과물이 좋다는데, 그 작업도 점진적으로 해보려고 생각 중입니다. 좀 더 자료를 잘 추려서 학습 제대로 시켜 봐야겠네요.
라고 다짐했는데,
스테이블 디퓨젼에 ‘korean painting’ 이란 프롬프트 넣으면 한국화가 그려지는 것을 발견했습니다. 물론 결과물은 동일하지 않지만 뭔가 삽질한 기분이 들지 않을수가 없네요. 아아.