학습목표
마스크는 챕터6에서 자세히 다뤄집니다. 여기서는 딱 두가지 핵심 스킬만 익힙시다.
a. 누끼따서 (마스크를 만들어서)
b. 갖다 붙히기
Plain Text
복사
워크플로우
인덱스 | 워크플로우 이름 | 실행가능한 링크 | 요약 |
4.4.1 | Mask by SAM | SAM을 통해 Mask를 만들 수 있는 기초적인 모듈입니다. | |
4.4.2 | Mask Cut and Paste | 마스크를 통해 Cut and paste를 수행하는 기초적인 작업입니다. |
a. mask (sam, rmbg, sam2)
SAM(Segmentation Anything Model)이라는 모델이 있습니다. 메타에서 개발한 모델입니다. 이것을 통해 Mask를 만들어주도록 합시다. 이 모듈을 그대로 복사하셔서 사용하시면 됩니다.
빨간색이 핵심적인 역할을 하고, 파란색들은 바꿀수 있는 값이나 바꿀일이 별로 없습니다. prompt 영역에 검출하고자 하는 객체를 영어로 써주면 되나, foreground(background의 반댓말)를 써도 동작합니다. 그 아래에 있는 threshold같은 경우에 0.3을 0.1 또는 1로 바꾼다고해서 무슨 변화가 생기거나 하는 경우는 거의 없습니다.
(단, SAM의 종류도 미세히 다르게 여러개가 있는데, 일반적인 상황에서 무난하게 동작하는 용량이 적은 모델을 사용해서 경량화를 목적했습니다. 단, 경량화를 하는 것보다 퀄리티가 중요할 경우에는 더 높은 용량의 모델을 사용할 수도 있습니다. 더 큰 용량의 모델을 사용하면 할 수록 모델이 동작하는 시간이 길어집니다.)
(SAM을 통해서 Mask를 만들어주는 방법이 있지만, SAM대신 RMBG-1.4 같은 모델을 쓸수도 있습니다. 유사한 역할을 하지만 RMBG-1.4모델의 경우 SAM과 달리 Foreground를 제외한 Background를 Remove하는 것이 목적이기 때문에, 쓰는방식 즉 구현체가 약간 다릅니다.)
b. cut and paste
위에서 배운 마스크를 통해 화분을 마스크 따보았으니 화분 영역을 제외하고 배경재생성을 한번 해보도록 합시다.
말 그대로, 저희가 ‘화분영역을 제외하고’라고 이야기했으니, 땄던 마스크를 invert 해줍니다. 그 반대 영역을 지정해주는 것입니다.
그리고나서 Set Latent Noise를 통해 Latent Image로 넣어줍니다. 이 영역을 Latent로 사용하겠다는 뜻입니다.
그렇게 이미지를 생성하고나면 정말 마스크 영역을 제외하고 생성이 되었으니 cut and paste를 통해 갖다붙혀주어야 합니다.
참고로 지금은 스킬만 배우고 있기 때문에 이미지 퀄리티가 좋지 않은 점에 대해서는 양해를 구합니다. 뒤에서 다른 스킬들을 배우면서 해소됩니다.
직접 차근차근 연결해보시면서 무엇을 어디에 어떻게 연결해야하나를 고민하시는 과정에서 실력이 늡니다. 설명을 드리겠습니다.
•
cut 해올때는 원본 이미지를 가져와서 sam으로 딴 마스크대로 잘라옵니다.
•
paste할때는 generate한 이미지에 cut으로 잘라붙힌 이미지를 sam으로 딴 마스크대로 붙혀넣습니다.
이상입니다. 여기에서는 챕터6에서 배우게 될 ‘마스크’에 대해서, 대충 이런거구나 파악한 정도로 이해해보시고 가볍게 넘어가시면 좋을 것 같습니다.