호돌찌의 AI 연구소
article thumbnail

저는 NLP만 많이 했는데 최근에 이미지 생성 분야 또한 관심을 가지고 있었습니다. 메타코드 Stable Diffusion 강의 서포터즈에 선정되어서 활동을 2주 동안 하고자 합니다. (좋은 기회 감사합니다!!)

오늘은 Stable Diffusion에서 text to image로 이미지를 생성할 때, 활용할 수 있는 ControlNet 기능들에 대해 알아보도록 하겠습니다. 

(Stable Diffusion, 이하 SD 설치하는 글은 너무 많아서 생략하고자 합니다. 설치가 되어있다고 가정하고 설명하겠습니다.)

 

 

ControlNet


 

DALLE나 Midjourney에서 이미지 생성을 할 경우, 모델의 포즈를 지정하려고 하면 소위 말하는 프롬프트를 깎는 시행착오가 필요합니다. 하지만 시간을 들여 프롬프트를 깎아낸다고 하더라도 제대로 반영이 될 지는 알 수 없습니다. Stable Diffusion(이하 SD)의 ContralNet 기능은 이 작업을 편하게 해결할 수 있다고 합니다. 오늘은 컴퓨터 비전 및 그래픽 분야에서 사용되는 개념인 openpose, segmentation, lineart, softedge, canny, depthSD에서 어떻게 활용하는지 알아보려고 합니다.

 

Openpose


 

Openpose는 원래는 실시간으로 인간의 자세을 추정하는데 사용되는 오픈 소스 도구입니다. SD에서는 원하는 포즈를 취하고 있는 샘플 사진을 업로드 한 뒤 openpose를 사용해 샘플 사진의 포즈를 체크, 체크한 포즈에 맞는 이미지를 생성할 수 있습니다. openpose 모델을 따로 또 다운받아야하는 번거로움이 있지만, 한번 세팅해 놓기만 하면 손쉽게 원하는 포즈와 딱 맞는 이미지를 생성할 수 있습니다. 이미지 생성하는데 있어서 랜덤으로 생성된 이미지를 핸들링하기 위해서는 반드시 이를 활용해야 합니다. 

 

Segmentation


 

Segmentation은 이미지를 구성하는 픽셀들을 분류하여 서로 다른 객체나 영역으로 구분하는 것을 뜻합니다. SD에서 openpose를 사용하면 포즈는 잘 잡아주는 반면, 옷이나 다른 기타 요소들은 샘플 이미지와 다르게 핏하지 않고, 헐렁한 옷을 입고 있거나 할 수 있습니다. 이미지 생성 대상의 포즈 뿐만 아니라 외곽선까지 딱 맞게 이미지를 생성하고 싶다면 segmentation을 활용해볼 수 있겠습니다.

 

Lineart, Softedge, Canny


 

Lineart, softedge, canny는 서로 비슷합니다. 모두 이미지 내의 경계, 윤곽, 또는 형태를 강조하거나 처리하는 데 중점을 두는 기술입니다. SD에서는 예를 들어 초상화를 샘플로 주었다고 하고 lineart, softedge, canny를 활용해 그림을 생성하게 하면, 샘플의 경계, 윤곽, 형태를 따라 그림을 생성해줍니다.

 

Depth에 대한 개념


 

Depth는 3D 환경을 이해하기 위해 2D 이미지에서 객체까지의 거리를 측정하고 실제 세계의 3차원적인 구조를 컴퓨터가 이해하고 재현할 수 있게 합니다. 하얀색일 수록 화면과 가깝다는 뜻이고, 검은색일 수록 화면과 멀다는 뜻입니다. SD에서 depth를 사용하여 이미지를 생성한다면 객체뿐만 아니라 이미지의 전체적인 부분에서 입체감을 효과적으로 표현할 수 있습니다.

 

Negative Embedding 이란


 

SD에서 이미지 생성 요청 시 특정 요소를 제외하고 싶을 때 negative prompting을 사용합니다. 하지만 부정적인 요소나 마음에 들지 않는 요소들을 이미지를 생성할 때마다 매번 입력하는 것도 공수가 많이 듭니다. 그럴 때 negative embedding을 추가하는 것으로 쉽게 제외하고 싶은 요소들을 필터링 할 수 있습니다. (도식화된 내용을 쉽게 설명해서 이해하기 쉽게 설명해줍니다.)

 

이번 글에서는 Stable Diffusion의 ControlNet 기능들에 대해 알아보았습니다. 이번 시간에 배운 요소들을 활용하여 이미지 생성, 특히 포즈 지정에 더 이상 애를 쓰지 않아도 될 것 같습니다. 다음 글에는 img2img 생성에 대해 알아보겠습니다. 감사합니다.

 


 

본 글은 메타코드 서포터즈 활동을 위해서 강의를 제공받아 작성하였습니다.

메타코드M은 빅데이터, AI 강의를 제공하는 플랫폼이자 IT 현직자 모임을 위한 커뮤니티입니다. 이곳에서는 다양한 IT 분야의 전문 지식과 실무 기술을 배울 수 있는 온라인 강의를 제공하고, 같은 분야에 관심이 있는 사람들과 소통할 수 있는 공간을 제공합니다. 빅데이터 자격증, 데이터 분석, 프로그래밍, 인공지능 등 다양한 분야의 강의와 현직자 커리어 특강을 통해 IT 분야의 전문 지식과 실무 기술을 배우고 커리어를 발전시킬 수 있습니다.

 

 SD 강의

https://mcode.co.kr/video/list2?viewMode=view&idx=84

 

메타코드M

빅데이터 , AI 강의 플랫폼 & IT 현직자 모임 플랫폼ㅣ메타코드 커뮤니티 일원이 되시기 바랍니다.

mcode.co.kr

 

https://www.youtube.com/@mcodeM

 

메타코드M

🔥강의 / 커뮤니티에 참여해 보세요!🔥 https://mcode.co.kr ⚡️강의 플랫폼 (1) 빅데이터 자격증 강의 - 빅데이터 분석기사 / SQLD / ADsP (2) 데이터분석 입문/실습 강의 (3) AI 개발/이론 강의 (4) ChatGPT

www.youtube.com

 

profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!