본문 바로가기
AI · 인공지능/이미지 생성 AI

「Stable Diffusion」의 「나쁜 예를 모은 LoRA」를 조합해 고품질 이미지를 생성하는 기법이 등장

by 두우우부 2023. 8. 24.
반응형

 

2023년 7월에 공개된 「Stable Diffusion XL 1.0(SDXL 1.0)」은 기존의 Stability AI제 모델에 비해 고품질의 이미지를 생성할 수 있을 뿐만 아니라, LoRA에 의한 생성 이미지 조정도 대응하고 있습니다. 데이터 과학자 맥스 울프 씨는 "나쁜 예"를 모아 작성한 LoRA를 사용하여 SDXL 1.0에 의한 생성 이미지의 품질을 더욱 향상하는 방법을 고안해, LoRA 파일 및 무료 데모를 공개하고 있습니다.

I Made Stable Diffusion XL Smarter by Finetuning it on Bad AI-Generated Images | Max Woolf's Blog

I Made Stable Diffusion XL Smarter by Finetuning it on Bad AI-Generated Images

And then telling it to not generate those images!

minimaxir.com



LoRA는 참고가 되는 이미지를 모아 도안이나 복장 등을 추가 학습하는 것으로, 좋아하는 도안이나 복장을 포함한 이미지를 생성하기 쉽게 하는 구조입니다.

예를 들면, 「치아가 자란 실사판 소닉」의 이미지로 학습한 LoRA 파일을 SDXL 1.0에 적용하는 것으로 아래와 같이 「치아가 자란 실사판 소닉」의 이미지를 대량 생성할 수 있습니다.



Stable Diffusion은 프롬프트에 "트리거 워드"를 포함시켜 LoRA의 도안을 불러올 수 있는 구조를 갖추고 있습니다. 울프 씨는 AI에 의한 이미지 생성 시 자주 발생하는 「인체의 파탄」, 「수수께끼의 워터마크 삽입」, 「묘한 위치에서 이미지 잘림」등의 문제를 해결하는 방법으로서 「이미지 생성 AI가 저지르기 쉬운 실수를 학습한 LoRA를 작성하고, 작성한 LoRA의 트리거 워드를 네거티브 프롬프트로 지정해 이미지를 생성한다」라는 기법을 고안해 냈습니다.

울프 씨는 먼저 SDXL 1.0을 사용하여 low quality(저품질), error(오류), missing or extra fingers(잘못되었거나 너무 많은 손가락), watermark(워터 마크), ugly(추악한) 등의 단어를 포함하는 프롬프트를 사용하여 다음과 같은 파열된 이미지를 대량으로 생성, 또한 생성된 이미지를 학습 데이터로 지정하고, 트리거 워드를 "wrong"으로 설정한 LoRA 파일 「sdxl-wrong-lora」를 만들었습니다.



아래의 3장의 이미지는 모두 같은 프롬프트인 「A wolf in Yosemite National Park, chilly nature documentary film photography」를 입력한 예로,
좌측은 「sdxl-wrong-lora를 사용하지 않고, 네거티브 프롬프트도 지정하지 않는다」,
중앙은 「sdxl-wrong-lora를 사용하지 않고, 네거티브 프롬프트에 'wrong'을 입력」,
우측은 「sdxl-wrong-lora를 사용하고 네거티브 프롬프트에 'wrong'을 입력」
이라는 조건으로 생성된 이미지입니다. 


sdxl-wrong-lora를 사용하지 않고도 네거티브 프롬프트에 "wrong"을 입력하는 것만으로 배경이 좀 더 세밀해지긴 하지만,  sdxl-wrong-lora를 사용하면 배경이 더욱 풍부하고 세밀해지며 중앙에 그려진 늑대의 모습도 털에 생동감이 증가하고 있습니다.

울프 씨는 또한 sdxl-wrong-lora에 의해 생성된 이미지의 품질 향상 효과를 검증할 수 있는 데모도 준비하고 있습니다. 데모를 사용하려면 Google 계정에 로그인한 상태에서 다음 링크를 클릭하세요.

sdxl_wrong_comparison.ipynb - Colaboratory
https://colab.research.google.com/github/minimaxir/sdxl-experiments/blob/main/sdxl_wrong_comparison.ipynb

데모를 실행하는 방법은 간단하며 스크립트 왼쪽에 표시되는 실행 버튼을 왼쪽 상단부터 차례대로 클릭하기만 하면 됩니다.



마지막까지 처리에 성공하면 다음과 같이 마리오의 이미지가 2장 생성됩니다. 
좌측 이미지는 「sdxl-wrong-lora 미사용, 네거티브 프롬프트 무지정」,
우측 이미지는 「sdxl-wrong-lora 사용, 네거티브 프롬프트를 'wrong' 으로 지정」이라는 조건으로 생성되었고, 다른 조건은 동일합니다.

이미지를 비교하면 sdxl-wrong-lora를 사용한 오른쪽 이미지의 눈썹과 장갑이 왼쪽 이미지에 비해서 정확하게 묘사되고 있습니다.


"prompt"로 표시된 부분의 내용을 다시 작성하면 원하는 프롬프트로 이미지를 생성할 수 있습니다.

"hacking girl, japanese anime, illustration"이라는 프롬프트로 생성한 이미지가 아래입니다. 좌측은 배경이 혼란스럽고 뭘 그린건지 모르겠고, 여성의 허벅지 쪽 디스플레이에 파탄이 보이는 문제가 발생하고 있습니다만, sdxl-wrong-lora를 사용한 우측은 배경도 깔끔하고, 디스플레이의 파탄도 해소되고 있습니다.



그 밖에도 이미지를 생성해 본 결과, sdxl-wrong-lora를 사용한 이미지가 대체로 고품질의 이미지가 생성되었습니다.



아래 그림과 같이 구도가 크게 변화하는 경우도 있었습니다.



아래의 데모에서는 sdxl-wrong-lora를 사용하여 고품질의 이미지를 생성할 수 있습니다.
(접속자 수가 많은지, 좀 많이 느립니다)

sdxl_image_generation.ipynb
https://colab.research.google.com/github/minimaxir/sdxl-experiments/blob/main/sdxl_image_generation.ipynb

sdxl_image_generation.ipynb

Run, share, and edit Python notebooks

colab.research.google.com

또한 sdxl-wrong-lora는 아래 링크에 공개되어 있습니다.
minimaxir/sdxl-wrong-lora · Hugging Face
https://huggingface.co/minimaxir/sdxl-wrong-lora

minimaxir/sdxl-wrong-lora · Hugging Face

sdxl-wrong-lora A LoRA for SDXL 1.0 Base which improves output image quality after loading it and using wrong as a negative prompt during inference. You can demo image generation using this LoRA in this Colab Notebook. The LoRA is also available in a safet

huggingface.co

 

반응형