올해 아이돌 관련해서 가장 이슈가 있던 사건은 하이브-민희진 간의 갈등이다. 개인적으로 해외에서 뭔가 볼법한 일이 국내에서 일어나서 흥미로웠다. 민희진의 인터뷰에서 가장 흥미로웠던 것은 자신에 대한 확신이었고, 스포티파이의 스트리밍 실적을 보면 확실히 뉴진스가 블랙핑크, 피프티피프티를 제외하고 가장 뛰어났다.
(참고로 피프티피프티는 Cupid 만 성공을 했지만, 이곡의 세가지 버전을 합치면, 블랙핑크의 How You Like That 보다 스트리밍이 더 많다.)
아일릿이 신인이고 뉴진스와는 데뷔 연차가 조금은 차이나는데 생각보다 공격적인 태도를 보여서 Magnetic이 얼마나 성공했는지 문득 궁금해졌다. 그리고 자료를 정리하면서 뉴진스의 곡 중 흥행한 곡과, 에스파, 르세라핌, 베이비몬스터, 아일릿, 뉴진스 이렇게 다섯그룹의 스포티파이 스트리밍 실적을 차트로 만들어 보았다.
2024년 상반기 여자아이돌 스포티파이 음원 스트리밍
2024년 상반기 여자아이돌 스포티파이 음원 스트리밍
스포티파이 스트리밍 기준으로 아일릿 Magnetic의 데뷔는 지금까지 모든 여자 아이돌 중 가장 성공적이라고 볼 수 있을 정도의 스트리밍이 나왔다.
확실히 두번째 위치에 에스파의 Supernova가 있으며 세번째에 베이비몬스터와 르세라핌이 있다. 참고로 르세라핌의 EASY 보다는 Smart의 스트리밍이 더 많으며, 개인적으론 르세라핌의 Smart와 베이비몬스터의 SHEESH가 비슷할 것으로 생각이 된다.
EASY 다음으로는 에스파의 Armageddon, 그리고 뉴진스의 Hot Sweet, 마지막으로 Bubble Gum이 위치한다고 볼 수 있다.
아일릿 vs 뉴진스
ILLIT-Magnetic / NewJeans-Super Shy, OMG, Ditto
현재 진행중인 이슈를 떠나서 아일릿의 Magnetic은 뉴진스와 비교할 정도의 성공을 거두었다고 볼 수있다. Super Shy의 고점이 제일 높지만 그에 못지않은 스트리밍을 보여줬고 장기적으로 두 곡의 스트리밍은 비슷하지 않을까 추측된다. Ditto 보다는 분명히 실적이 좋을 가능성이 있고 상당한 롱런을 보여준 OMG 정도의 스트리밍 양을 보여줄지는 앞으로 추세가 결정할 것으로 생각된다.
선공개 싱글을 내는 이유
스포티파이의 스트리밍 차트를 보면 두번에 나누어서 음반을 내놓는 것이 흥행에 상당히 유리하다는 것을 볼수 있다. Super Shy의 최고점은 Get Up이 나왔을 때 달성됬고 Supernova또한 마찬가지 이다. EASY의 경우는 그럼에도 불구하고 하락새를 보여줬고, 그런 전략이 없는 이번 뉴진스의 싱글은 지금 추세가 이어질 것으로 보인다.
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
단원 김홍도가 유럽을 여행하면 어떤 그림을 그릴지 궁금하다면? 김홍도 그림으로 파인튜닝 한 모델을 가지고 유럽의 사진을 변환했습니다. 일단 유럽의 대표적인 도시의 풍경부터 변환을 해봤습니다. 계획상에는 유럽의 자연경관도 당연히 있습니다. 알프스나 유럽의 포도밭 그리고 이탈리아의 해안도 담을 예정입니다. 건축물보다 자연경관에서 어떠한 결과물이 나올지 궁금해지는데, 풍속화가 유명하긴 하지만 들어간 데이터는 자연을 그린 그림들이 많기 때문입니다.
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’ 이란 프롬프트 넣으면 한국화가 그려지는 것을 발견했습니다. 물론 결과물은 동일하지 않지만 뭔가 삽질한 기분이 들지 않을수가 없네요. 아아.