안녕하세요.

Perturbed-Attention Guidance란 논문이 나와서 소개드립니다.

예전에 조금 유행했던 Self-Attention Guidance (SAG) 와 유사하게 샘플 퀄리티를 개선하는데, 더 개선된 버전입니다.

무엇보다 SAG보다 가이던스 스케일을 훨씬 크게 설정할 수 있고, 단독으로도 사용할 수 있습니다.


프로젝트 페이지: https://ku-cvlab.github.io/Perturbed-Attention-Guidance/

논문: https://arxiv.org/abs/2403.17377


논문 소개글 번역:


최근 연구에 따르면 확산 모델은 고품질 샘플을 생성할 수 있지만, 그 품질은 분류기 유도(CG) 및 분류기 없는 유도(CFG)와 같은 샘플링 유도 기술에 크게 좌우된다는 것이 입증되었습니다. 이러한 기법은 무조건적인 생성이나 이미지 복원과 같은 다양한 다운스트림 작업에는 적용되지 않는 경우가 많습니다. 이 백서에서는 무조건 및 조건부 설정 모두에서 확산 샘플 품질을 개선하는 새로운 샘플링 안내, 즉 교란주의 안내(PAG)를 제안하여 추가 훈련이나 외부 모듈의 통합 없이 이를 달성할 수 있도록 합니다. PAG는 노이즈 제거 프로세스 전반에 걸쳐 샘플의 구조를 점진적으로 개선하도록 설계되었습니다. 여기에는 구조 정보를 캡처하는 자기 주의 메커니즘의 능력을 고려하여 확산 U-Net에서 선택된 자기 주의 맵을 아이덴티티 매트릭스로 대체하여 구조가 저하된 중간 샘플을 생성하고 이러한 저하된 샘플로부터 노이즈 제거 프로세스를 안내하는 것이 포함됩니다. ADM과 안정적 확산 모두에서 PAG는 조건부 및 무조건 시나리오에서 놀라울 정도로 샘플 품질을 개선합니다. 또한 PAG는 빈 프롬프트가 있는 컨트롤넷, 인페인팅 및 디블러링과 같은 이미지 복원 등 CG나 CFG와 같은 기존 가이던스를 충분히 활용할 수 없는 다양한 다운스트림 작업에서 기준 성능을 크게 향상시킵니다.


사실 제가 이 논문의 저자 중 한명인데, ai 그림을 너무 좋아해서 이 분야에서 뭔가를 이루고 싶어서 꾸준히 공부하다 보니 논문까지 쓰게 됐네요.

실험을 많이 하면서 Stable Diffusion에서는 퀄리티가 크게 증가하는걸 확인했는데 정작 관심있는 anime 모델에서는 시간이 없어서 시도를 못해봤었습니다ㅜㅜ


현재는 comfyui node / webui extension은 없고 diffusers pipeline만 구현된 상태입니다.

diffusers pipeline: https://huggingface.co/hyoungwoncho/sd_perturbed_attention_guidance


아래는 huggingface 디스코드에서 이 파이프라인을 공유했을 때 다른 분이 anime 모델에서 시도해 본 결과인데, 상당히 잘 되는 것 같습니다.


이걸 보고 저도 diffusers에서 사용가능한 anime 모델로 몇 개 시도해봤는데요.

상당히 잘 되는 것 같습니다!

결과 몇 개를 보여드리겠습니다.


(왼쪽: baseline (no PAG), 오른쪽: PAG)

"a cute corgi"

"masterpiece, best quality, highres, 1girl"


재미있는 것은 원래 비조건부 생성 (프롬프트를 ""로 줘서 랜덤 생성하는 것)에서는 CFG를 적용할 수가 없어서 엄청 이상한 이미지들이 많이 나오는데, 저희 가이던스를 쓰면 비조건부 생성에서도 성능이 상당히 잘 나오는 것을 볼 수 있습니다.


baseline (no PAG) vs PAG

체리피킹되지 않은 seed=0 결과입니다!


궁금하신 분들은 colab을 만들어봤으니 한번 시도해보시면 좋을것같습니다!

Colab: https://colab.research.google.com/drive/1ghPuNoOOW0YPCis7My2afIbHxyD18kPg?usp=sharing

가이던스 선택 기준: anime 모델에서는 스케일이 달라서 실험이 좀 더 필요한데, 저희가 일반 모델에서 쓰는 값은 다음과 같습니다.
- PAG 단독: 5.0정도. 더 늘려도 무방합니다.

- CFG + PAG: PAG는 프롬프트를 더 따르도록 설계된 게 아니라 퀄리티를 높이게만 설계됐기 때문에 프롬프트를 안 따르는 것처럼 보일 때가 있습니다. (대신 좀 더 다양한 이미지가 나옵니다) 그럴 때는 CFG를 적절히 섞어주면 되는데 CFG 4.5에 PAG 5.0 정도가 괜찮은 것 같습니다. PAG는 3.0~7.0 정도로 더 시도해보면 더 잘 되는게 나올 수도 있습니다! CFG가 높을수록 프롬프트를 더 따릅니다.



다른 장점으로는 프롬프트를 안 넣는 게 자연스러운 태스크들 (inpainting, super-resolution 등) 에서도 원래는 CFG를 쓰려면 프롬프트를 넣어줘야 했는데, PAG는 프롬프트가 필요없기 때문에 프롬프트를 없이 이런 태스크들을 높은 퀄리티로 수행할 수 있습니다.


그리고 anime 태스크에서 좀 더 기대되는 적용사례로는 ControlNet과의 조합입니다. ContolNet을 사용할 때 포즈 컨트롤넷을 프롬프트 없이 생성하면 조금 어색한 경우가 종종 생기는데, PAG를 사용하면 훨씬 높은 퀄리티의 성능을 얻을 수 있습니다.



SAG와의 차이점을 좀 말씀드리면 SAG는 일반적으로 올릴 수 있는 가이던스 스케일의 범위가 제한되어 있는데, PAG는 더 넓은 범위를 지원합니다 (더 크게 올려도 이미지가 깨지지 않습니다) 자세한 건 논문 Appendix E.3 (53-54페이지) 에도 나와있습니다. 


관심가져주셔서 감사합니다!

자세한 사항은 프로젝트 페이지나 논문을 참고해주시면 감사하겠습니다.

프로젝트 페이지: https://ku-cvlab.github.io/Perturbed-Attention-Guidance/

논문: https://arxiv.org/pdf/2403.17377.pdf

작동 원리나 디테일같은 궁금한 것이 있으시면 물어봐주시면 답변드리겠습니다!

능력자 분들의 기여도 환영합니다. 혹시 comfyui node나 webui extension을 만드는 데 관심있는 분이 계시면 저희가 최대한 도와드리겠습니다!

여기서 정말 많은 도움을 받았는데 저도 정보글을 쓸 수 있는 날이 와서 기쁘네요ㅋㅋㅋ

감사합니다!