https://huggingface.co/papers/2404.02733

https://github.com/InstantStyle/InstantStyle


아시다시피 IP-Adapter는 이미지를 프롬프트처럼 쓸 수 있게 해 주는 기술이죠. 상당히 흥미로운 기술이긴 한데, 그 행동을 예측하기가 쉽지 않고 강도 등을 레퍼런스 이미지 별로 잘 조절해줘야 결과가 좋아지는 등 사용하는 데 좀 수고가 드는 물건이기도 합니다.


위의 논문에서는 이러한 '스타일 보존' 관련하여 기존의 기술들의 단점에 대해 이런저런 논의를 하고, 이를 완화할 수 있는 몇 가지 접근법을 소개합니다. 제가 IP-Adapter를 열심히 쓰고 있다 보니 관심이 가서 한번 슥 읽어보고, 저 나름대로 이해한 내용을 적어보고자 합니다.



논문의 저자들은 기존 기술의 문제점을 완화하는 방법으로서 크게 두 가지를 소개하네요.


1. 레퍼런스 이미지를 설명하는 캡션(프롬프트)을 사용해서, 이미지에서 '내용'에 대한 부분을 날리고 스타일의 특징만 남길 수 있다고 하네요. 즉


[레퍼런스 이미지로부터 계산한 특징] - [레퍼런스 이미지의 내용을 설명하는 프롬프트] = [레퍼런스 이미지가 지닌 스타일]


와 같이 계산할 수 있다는 얘기죠. 이렇게 계산한 특징을 사용하면, 레퍼런스 이미지의 내용(예컨대 '개를 그린 수채화'에서 '개' 부분)이 우리가 뽑고자 하는 이미지의 내용에 영향을 미치는 것(즉 '소녀를 그린 수채화'를 뽑고 싶은데 소녀가 퍼리나 개가 되는 상황)을 완화할 수 있다고 저자는 주장합니다.


(위의 Figure는 논문에서 발췌)


위 예시에서는 왼쪽의 레퍼런스 이미지의 스타일만 따와서 '검은 개'를 그리고 싶은데, 그냥 따오면 레퍼런스 이미지의 내용인 흰 고양이 및 풍선도 섞여버리게 됩니다. 하지만 레퍼런스 이미지의 내용을 설명하는 프롬프트인 '풍선, 흰 고양이'도 같이 주어져 있다면, 이를 이용하여 해당 내용을 제거하고 스타일만 사용할 수 있다는 얘기를 하는 듯합니다.



2. 기존의 IP-Adapter는 U-Net 구조 전체에 이미지 특징을 주입하는데, 논문의 저자들은 '스타일'을 담당한다고 여겨지는 특정 블럭에만 특징을 주입하면 '스타을 반영'하는 성능이 향상된다고 주장하네요.


(위의 Figure는 논문에서 발췌)



내용도 흥미롭지만, 무엇보다 기존의 CLIP 인코더 및 IP-Adapter 기술을 그대로 이용해서 약간만 손보면 곧바로 구현이 가능하기에 금방 적용할 수 있는 내용같습니다. 저자들이 GitHub에 친절하게 코드까지 올려놨으니, 이걸 WebUI나 ComfyUI의 확장으로 다듬어주기만 하면 곧바로 쓸 수 있지 않을까 싶네요.