본문 바로가기
인공지능

스테이블 디퓨전 - 컨트롤넷으로 동작 따라하기(코랩 플랫폼)

by 에디터_가을여행 2023. 3. 17.

안녕하세요. 에디터 가을여행입니다.

Stable Diffusion은 쉽고 강력한 무료 이미지 생성툴이기에 많은 사람들이 이용하고 있지만 고성능 GPU를 요구하고 설치 과정이 복잡하기에 쉽게 접근하지 못하는 경향이 있습니다.

이제는 Stable Diffusion이 로컬 컴퓨터가 아닌 고성능 클라우드 기반 원격 노트북 환경 <코랩>에서 실행되고 구글 드라이브에 저장되며 Github와 같은 플랫폼에서 공유하거나 협업할 수 있습니다.

오늘 작업할 내용은 다음과 같습니다.

- 이 두 이미지를 합성하되 스파이더맨의 의상과 배경 분위기 등을 가져와서 메인 이미지인 BTS 지민의 동작에 입힐 예정입니다. 아래는 그 결과물입니다.


#1. 코랩 가입 및 사용준비하기

- 코랩은 무료이며 인터넷 연결만 있으면 어디서든 접속할 수 있는 장점이 있습니다. 위 링크를 따라 가입 진행을 합니다.

- 가입단계를 마치고 시작하기와 함께 새 노트를 생성할 수 있습니다. 새로 코드를 작성하거나 링크를 통해 다른 프로젝트에 연결 또는 공유를 받을 수 있습니다.

#2. Stable Diffusion 코랩에서 실행하기

- 위 링크를 타고 이동하면 코랩에서 WebUI Stable Diffusion을 실행할 수 있습니다.
- 단순히 위에 동그란 [플레이 버튼]을 눌러주시면 설치, 컴파일, 링크 작업을 수행합니다.

- 위와 같은 팝업창이 생성되고 '무시하고 계속하기' 누릅니다.

- 설치 및 컴파일, 링크 과정이 3분 정도 소요되고 마지막 줄에 세개의 링크를 생성하는데 두번째 링크를 클릭합니다. 이제 Stable Diffusion을 클라우드 컴퓨터에서 실행하고 접속해서 툴을 사용할 준비가 되었습니다.

#3. Stable Diffusion 사용하기

- Stable Diffusion을 실행한 화면입니다. 우리는 여기서 txt2img 탭과 Tagger 탭 정도만 사용하겠습니다.

- Prompt 메뉴 : 이미지를 적용하고 싶은 내용 등을 등록합니다.
> 추천 프롬프트 : (masterpiece), best quality, high resolution, perfect_finger, extremely detailed, (photorealistic), cinematic light,

- Negative Prompt : 제외하고 싶은 내용을 등록합니다.
> 추천 프롬프트 : (worst quality, low quality:1.2), sketches, monochrome, grayscale, signature, watermark, text, error, missing fingers, (nude, nsfw)

- [Tagger] 기능

- 이미지를 선택하거나 드래그해서 업로드하면 해당 이미지를 분석하여 그림에 맞는 프롬프트를 생성해 줍니다.
- 주로 이미지의 분위기나 상황 화질, 스타일에 대한 프롬프트를 뽑기 위함입니다.

- 스파이더맨을 업로드하고 그에 대한 분석을 보면 solo, 1boy, male focus, bodysuit, superhero, spider web print, silk, spider web, mask, hood, red bodysuit, midair, full body, building, looking at viewer, outdoors 등 을 확인할 수있습니다. 대상 이미지에 이 분위기와 스타일 및 느낌을 적용할 것이기에 hood와 mask는 제외하겠습니다. 이제 위에 [send to txt2img] 버튼을 누르고 이미지를 생성하러 [txt2img] 로 이동합니다.

- [txt2img] 기능
> 말그대로 입력한 프롬프트를 기준으로 이미지를 생성하는 기능입니다. 하위에 controlnet [preprocessor] 가 있습니다.

- 전체적인 인터페이스 설명

> Sampling Method : 이미지 스타일을 선택할 수 있습니다. 보통 DPM++ SDE Kararas를 이용합니다.

> Sampling Step : 얼마나 정교하게 그릴 것인지 50을 넘기지 않게 설정합니다. 숫자가 높을수록 디테일은 좋아지지만 그만큼 시간이 많이 소요될 수 있습니다.

> With, Height : 이미지의 사이즈를 설정합니다.
> Batch count : 한번에 몇장씩 생성C할 것인지 설정하는 메뉴입니다.

> CFG Scale : 프롬프트에 얼마나 자유도를 부여할지 설정합니다. 10을 넘기지 않게 설정하고 숫자가 작을수록 자유도가 높아지게 설정이 됩니다.

- Control Net 기능

> 먼저 동작이나 형태, 골격등을 표현하고 싶은 이미지를 등록합니다.
> Enable : 컨트롤넷 기능을 활성화 할것인지 여부입니다.
> Preprocessor : openpose, depth, hed, canny, pininet 정도를 사용합니다.
> Model : Preprocessor와 동일한 타입을 선택합니다.

- Preprocessor 상세 설명 :

/// openpose는 인물의 자세와 관절을 인식하는 모델입니다. openpose를 사용하면 텍스트로 입력한 인물의 자세와 표정을 이미지에 반영할 수 있습니다. 예를 들어 "a girl with a red dress and a blue hat" 라고 입력하고 openpose로 인물의 머리를 돌리거나 팔을 들게 할 수 있습니다

/// depth는 이미지의 깊이 정보를 인식하는 모델입니다. depth를 사용하면 텍스트로 입력한 이미지의 전경과 배경을 조절할 수 있습니다. 예를 들어 "a cat with a blue hat" 라고 입력하고 depth로 고양이가 가깝게 보이게 하거나 멀리 보이게 할 수 있습니다

/// hed는 이미지의 윤곽선을 인식하는 모델입니다. hed를 사용하면 텍스트로 입력한 이미지의 윤곽선을 강조하거나 약화시킬 수 있습니다. 예를 들어 "a man with a black suit and a red tie" 라고 입력하고 hed로 남자의 옷이나 얼굴의 윤곽선을 뚜렷하게 하거나 흐릿하게 할 수 있습니다

Weight : 등록한 이미지의 가중치를 얼마나 줄지 설정합니다. 1에 가까울수록 비슷하고 0에 가까울수록 창의적인 이미지를 생성하게 됩니다.

- Enable을 적용 안하고 프롬프트 설명만으로 생성된 이미지

 

- Openpose 기능을 적용한 예

- BTS 지민의 점프 동작을 따라하게 만들어 봅니다. 뼈대는 비슷하게 표현하는 것으로 보입니다. 뼈대를 세세하게 수정하려면 [Openpose Editor] 탭으로 이동합니다.

- Openpose로 생성한 이미지 결과물 입니다. 뼈대 골격에 주안점을 두었다고 보시면 됩니다. 전체적인 스타일과 묘사에 대한 것은 프롬프트를 따라가되 메인이 되는 캐릭터의 골격은 최대한 비슷하게 생성해 줍니다.

- Depth 기능을 적용한 예

- 이미지의 깊이에 주안점을 두고 있습니다. 전경과 배경의 깊이를 조절해 원근감이나 포커를 조정할 수 있습니다.

- Hed 기능을 적용한 예

- Hed를 이용하면 윤곽선을 뚜렷하게 또는 흐릿하게 할 수 있고 캐릭터 뿐만 아니라 배경에 대한 묘사까지 정밀하게 표현해낼 수 있습니다. 윤곽선에 주안점을 두었다고 보시면 됩니다.

Stable diffusion은 저 개인적으로 무료로 제공되는 수많은 기능과 편의성에 대해서는 만족하고 앞으로 기대가 되지만 일반 사용자가 접근하기에는 어렵지도 않지만 쉽지도 않다고 생각이 됩니다. Stable diffusion의 전반적인 내용과 Control Net 기능을 알아보았는데요 궁금한 사항이 있으시면 댓글 남겨주시기 바랍니다.

댓글