안녕하세요 오늘은 TMLR(Transactions on Machine Learning Research)이라는 머신러닝 분야의 저널에 억셉된 FreeFuse라는 논문을 가져왔습니다!
최근 FLUX와 같은 Text-to-image모델들이 높은 생성 성능을 보여주면서 특정한 객체를 원하는 대로 생성하기위한 Personalized Generation연구도 활발하게 진행되고 있는데요!
이때 가장 많이 활용되는 방법들 중 하나가 다들 흔히 알고있다 싶이 바로 LoRA입니다!
덕분에 적은 파라미터만으로도 특정 대상의 특징을 모델에 반영할수가 있고, 또 여러 LoRA를 결합하면 하나의 이미지에 여러 대상을 생성하는것도 가능해졌죠!
여기서 문제는 각각은 잘 작동하던 LoRA도 여러개를 동시에 적용하면 서로의 특징이 짬뽕되어 섞이게 되거나 생성 품질이 확 떨어질수도 있다는 것입니다.
저자들은 이 Mulit-LoRA적용 시의 Feature Conflict 문제에 주목했습니다!
LoRA를 냅다 다시 학습하거나 복잡하게 합치는 대신 각 LoRA가 담당하는 이미지 영역에서만 작동하게 영향을 준다면 이 간섭을 해결할수 있지 않을까?! 라는 아이디어에서 출발합니다
이 아이디어에 기반해서 저자들은 추론 단계에서 LoRA의 적용 영역을 제어하는 FreeFuse라는 방법을 제안합니다!
그럼 바로 리뷰 시작하겠습니다
INTRO
앞서 간략하게 언급한것 처럼 여러 LoRA를 한번에 사용할 경우 각 로라마다 전체에 적용이 되기 때문에 간섭이 발생하게 되는데요.
기존에는 A LoRA와 B LoRA를 동시에 사용해왔습니다!
LoRA는 특정 subject를 생성하도록 모델을 Personalized하는데는 효과적이지만 이 개별LoRA가 잘 작동한다고 해서 여러개를 합쳤을때도 매번 잘 작동하는 것은 아니였습니다
예를 들어 서로 다른 인물을 학습한 LoRA를 동시에 활성화하면 두 사람의 얼굴이 섞이거나 한사람의 특징이 다른 사람에게 나타나는 등의 문제가 발생했는데요!
저자들은 이 문제를 LoRA간 Feature Conflict로 정의합니다!
그럼 왜 여러 LoRA를 그냥 합치면 안될까요?
먼저 LoRA는 기존 모델에 학습된 변화량을 추가하는 방식입니다!
특정 인물A와 B를 각각 학습한 LoRA가 있다고 가정해봅시다!
기존처럼 두 LoRA를 동시에 적용하면 다음과 같이 표현할 수 있습니다
이렇게 두 LoRA를 단순히 합치면 이미지 전체의 여러 위치에 두 변화랑이 모두 반영될수 있게 됩니다. 그 결과 A영역에서도 B의 특징이 영향을 미치게 되고, 반대로 B영역에서도 A의 특징이 영향을 미치게 되는 것이죠.
기존 연구들 역시 이러한 Feature Conflict 문제를 해결하기 위해 다양한 방법을 제안해 왔습니다! 대표적으로 LoRA를 재학습하거나 추가적인 파라미터를 학습하는 방법, 또는 외부 segmentation 모델이나 사용자가 직접 지정한 영역 정보를 활용하는 방법들이 있었는데요!
하지만 이러한 접근들은 추가적인 학습 비용이나 외부 모델, 사용자 개입이 필요하다는 한계가 있었습니다
특히 최근의 연구들 Noise Blending이나 Residual Blending을 통해 서로 다른 LoRA의 생성 정보를 융합하는 방식으로도 접근했지만, 이런 방법 역시 복잡한 추론과정으로 인해 latency가 증가하거나 전역적인 이미지의 조화(Global Coherence)가 저하되는 문제가 있었습니다

위의 fig1은 여러 LoRA를 단순히 결합했을 때와 FreeFuse를 적용했을 때의 생성 결과를 비교한 그림입니다!
왼쪽의 기존방식에서는 6개의 LoRA를 동시에 적용하면서 Feature Conflict와 이미지 왜곡, Artifact 등이 발생하는 반면에 오른쪽의 FreeFuse(ours)에서는 각 subject의 특징을 나름 잘 유지하면서 하나의 장면으로 생성하는 모습을 보여줍니다
(추가적으로 오른쪽 아래에서 ControlNet, IP-Adapter, Style LoRA같은 기존 제어 모듈과도 함께 활용할 수 있다는 점을 보여줍니다)
저자들은 LoRA 자체가 아니라, 각 LoRA의 변화량이 자신과 관련 없는 영역까지 무분별하게 적용된다는 것에 집중합니다! 그렇다면 굳이 LoRA를 다시 학습하거나 복잡하게 융합할 필요가 있을까요? 저자들은 여기서 조금 다른 관점으로 접근합니다!
이에 따라 저자들은 이 문제를 공간적으로 분리하는 방법으로 접근합니다 !
A LoRA는 A의 영역에서만, B LoRA는 B의 영역에서만 작동하도록 하면 서로의 특징이 간섭하는 문제를 줄일 수 있지 않을까? 하는 것이죠!
저자들의 방법을 이 수식으로 단순화해서 보자면, 각 위치p에서 그 영역에 해당하는 LoRA의 변화량만 반영하자!는 것입니다
(여기서 M은 위치p가 속하는 mask를 말합니다)
그렇다면 어느 위치에 어떤 LoRA를 적용할지는 어떻게 알까요?
여기서 저자들의 핵심메소드 중의 하나인 FreeFuseAttn이 등장합니다!
사실 프롬프트에 있는 A라는 단어와 관련성이 높은 이미지 영역을 cross-attention으로 찾으면 이런 저런 복잡한 방법 없이 쉽게 될 것 같잖아요?
하지만 실제 attention map은 A가 해당되는 영역(subject) 전체를 매끄럽게 표시하지 못하는 경우가 많습니다 활성화 되는 영역이 군데군데 끊어지거나 중간에 빈 공간이 생기기도 하고 시각적으로 유사한 subject끼리는 서로의 영역이 겹치기도 하는 것이죠!
저자들은 이 문제를 해결하기 위해 cross-attention의 의미적인 정보와 이미지 토큰간의 유사도(Token Similarity)를 결합합니다
뒤쪽 method에서 구체적인 방법을 살펴보겠지만 직관적으로 먼저 이해해보자면,
cross-attention으로 해당 subject일 가능성이 높은 위치를 찾고 → 그 위치를 기준점(anchor)로 선택합니다 → 이후 이미지 토큰간의 유사도를 이용해서 주변의 관련 영역까지 확장합니다 → 이를 통해 연속적이고 완전한 subject mask를 생성하게 되는 것 입니다!
바로 이게 FreeFuseAttn의 핵심입니다! 생각보다 간단하죠?!
이렇게 초기 Denoising과정에서 각 subject의 위치를 찾아 마스크를 생성하고 이후 Routing에 필요한 정보를 준비하는 단계를 Phase 1: Subject Region Prediction이라고 합니다!
그럼 이렇게 마스크를 생성한뒤 냅다 각각의 로라를 적용하면 원하는대로 잘 될까요?
정답은 세모입니다
LoRA의 변화량이 다른 영역에 직접 적용되는 것은 막았지만 이미지와 텍스트 간의 Attention을 통해 다른 Subject의 특징이 영향을 미칠 가능성은 여전히 있기 때문인데요!
저자들은 LoRA의 적용 위치 뿐만 아니라 이미지와 텍스트 간의 이미적인 간섭까지 함께 제어하고자 합니다!
이를 위해 FreeFuse에서는 서로 다른 역할을 하는 두가지 제어 매커니즘을 사용합니다. 이 단계를 Phase 2: Router-Controlled and Bias-Guided Generation라고 지칭합니다!
먼저 첫번째는 Token-level Router입니다!
앞서 Phase1에서 얻은 subject mask를 바탕으로 특정 이미지 영역에 어떤 LoRA Residual을 적용할지 결정하는 역할을 합니다. 말 그대로 A 영역에는 A LoRA의 변화량만 반영하고 B영역에는 B LoRA의 변화량만 반영하도록 하는 것이죠!
두번째는 Attention Bias입니다!
Router가 LoRA의 영향범위를 공간적으로 제어 한다면 Attention Bias는 이미지의 각 영역이 관련없는 subject의 텍스트 정보에 영향을 받는 것을 억제하는 역할을 합니다.
즉 A영역이 B에 대한 설명을 참조하면서 B의 특징까지 생성하는 Concept Bleeding현상을 줄이려는 것이죠!
정리하자면 Token-Level Router는 LoRA Residual의 공간적 간섭을 줄이고, Attention Bias는 이미지와 텍스트 간 의미적 간섭을 완화하는 역할을 합니다!
그리고 여기서 한가지 중요한 점은 FreeFuse는 Phase 1에서 생성하던 이미지를 그대로 이어서 완성하는 방식이 아닙니다!
Phase 1에서는 기본 모델을 이용해 각 Subject의 영역을 추정하고 Phase2에서는 동일한 초기 latent에서 Denoising을 다시 시작함으로 Router와 Attention Bias를 적용합니다
즉 여러 Subject를 각각 완성한 뒤 합치는 것이 아니라 하나의 생성 과정에서 여러 LoRA의 영향을 제어하며 최종 이미지를 생성하는 것이죠!!
정리하자면 FreeFuse는 각 LoRA의 Residual을 해당 Subject 영역에만 적용하는 Adaptive Token-Level Routing을 통해, 여러 LoRA를 결합할 때 발생하는 Feature Interference를 줄이는 방법입니다!
이 과정에서 FreeFuseAttn으로 별도의 Segmentation 모델 없이 Subject Mask를 추정하고(Phase 1), Router와 Attention Bias를 활용해 개별 Subject의 특징을 유지하면서 하나의 이미지로 공동 생성하는 것이죠(Phase 2)!
다만 Training-free라고 해서 계산 비용이 없는 것은 아닙니다. FreeFuse는 마스크를 추출하는 Phase 1과 최종 이미지를 생성하는 Phase 2로 구성되어 있어 두 번의 Inference Pass가 필요합니다!
설명하다보니 좀 길어졌는데요 Method로 구체적으로 어떻게 구현됐는지 살펴봅시다!~
Method
이제 FreeFuse의 구체적인 방법을 살펴보겠습니다
앞서 살펴본것 처럼 FreeFuse의 핵심은 각 LoRA의 Residual을 해당 Subject 영역에만 적용하여 Feature Conflict를 줄이는 것인데요!
이번 method에서는 먼저 이러한 Spatial Routing이 실제로 왜 효과적인지를 분석하고 이후 FreeFuseAtten으로 Subject mask를 추출하는 방법과 이를 활용한 Router & Attention Bias의 동작과정을 순서대로 살펴보겠습니다!
전채적인 파이프라인은 아래의 fig2와 같습니다!

1. Masking LoRA Outputs for Effective Subject Feature Preservation
먼저 왜 여러 LoRA의 Residual을 각 영역에만 적용하면 Feature Interference가 줄어들까요?
이를 설명하기 위해 저자들은 먼저 Subject Group이라는 개념을 정의합니다
하나의 이미지에 서로다른 두 인물 A,B를 생성한다고 가정해봅시다!
각 인물은 하나의 Subject Group에 해당하고 각 Group에는 하나 이상의 LoRA가 해당될 수 있습니다. (예를들어 인물 A를생성할때 A의 dentity LoRA뿐만 아니라 특정 Attribute를 학습한 LoRA까지 함께 적용할 수도 있겠죠?)
즉 같은 subject에 속한 여러 LoRA는 함꼐 적용하되 서로 다른 Subject Group의 LoRA는 분리하자!는 것입니다
그렇다면 이를 실제로 어떻게 적용할까요?
앞서 살펴본것처럼 기존 Multi-LoRA에서는 여러 LoRA의 Residual을 단순히 합산하기 때문에, 특정 위치의 이미지 토큰이 자신과 관련 없는 LoRA의 영향까지 받게됩니다
이를 해결하기 위해 저자들은 Spatial Masking Strategy를 사용합니다!!
아래 수식(1)을 살펴보겠습니다

수식이 조금 복잡해 보이지만, 하나씩 보면 생각보다 간단합니다!
- (p): 현재 처리하는 이미지의 Spatial Token 위치
- (x_p): 해당 위치에서 LoRA가 적용되는 Linear Layer의 입력 Feature
- (h_p): LoRA를 적용하지 않은 Base Model의 출력
- (h’_p): 선택된 LoRA Residual까지 반영한 최종 출력
- (R_s): Subject Group (s)가 담당하는 공간 영역
- (A_s): 해당 Subject Group에 할당된 LoRA 집합
- (\Delta\theta_a(x_p)): LoRA (a)가 추가하는 변화량(Residual)
여기서 가장 중요한 부분은 아래의 이부분 입니다!

이는 Indicator Function(지시함수)으로 단순하게 현재 토큰의 위치(p)가 해당 subject영역 (R_s)에 속하면 1, 속하지 않으면 0의 값을 가지게 됩니다!
즉 어떤 LoRA의 Residual을 적용하고 어떤 LoRA의 Residual은 차단할지 결정하는 역할을 하는 것이죠
따라서 각 인물에 하나씩 LoRA만 있다고 가정하면 위의 수식(1)은 아래처럼 단순해집니다!
토큰(p)가 인물 A의 영역에 있는 경우 : h'_p=h_p+\Delta\theta_A(x_p)
토큰(p)가 인물 B의 영역에 있는 경우 : h'_p=h_p+\Delta\theta_B(x_p)
생각보다 간단하죠!
기존의 단순한 multi-LoRA에서 모든 영역에 A와 B의 LoRA Residual이 함께 적용되었다면 FreeFuse에서는 A 영역에는 A LoRA만, B 영역에는 B LoRA만 직접적인 변화량을 추가하도록 제한하는 것입니다!
이를 통해 서로 다른 Subject의 LoRA Residual이 관련 없는 영역에 직접 적용되는 것을 막고, Feature Interference를 줄이려는 것이죠
여기까지 보면 공간적으로 LoRA를 분리하려는 원리가 이해는 되는데요!
하지만 앞의 수식처럼 LoRA Residual을 각 영역에만 적용한다고 해도 사실 Self-Attention에서는 이미지 전체 토큰들이 서로 정보를 주고 받습니다. 그렇다면 A영역의 특징이 self-attention을 통해 B의 영역으로 전달될수 있고, 그럼 결국 다시 간섭이 발생할수도 있지 않을까요?
실제로 저자들도 바로 이 부분을 다음으로 분석합니다!
먼저 self-attention의 기본적인 연산을 살펴보자면 아래의 수식(2)와 같습니다

즉 토큰 (p)가 다른 토큰들의 정보를 Attention Weight에 따라 가중합하여 자신의 표현을 업데이트한다는 의미입니다
(attention수식은 다들 아실거라 간단하게 넘어가겠습니다~~)
이렇게 보면 A 영역의 토큰이 B 영역의 토큰을 참조할 수도 있으니 앞서 Spatial Masking으로 차단했던 Feature Interference가 다시 발생할 가능성이 있는 것이죠
그런데 요 부분에서 저자들은 중요한 점을 하나 짚습니다!
FreeFuse는 서로 다른 영역 사이의 모든 정보 전달을 차단하려는 것이 아니라는 점입니다!
오히려 이런 전역적인 정보 교환(Global context exchange)은 전체 장면의 조화(Scene coherence)를 유지하는 데 필요하다는 것이죠!
따라서 FreeFuse는 Base Model의 Attention은 그대로 유지하면서 서로 관련 없는 영역에 Subject-specific LoRA Residual이 직접 주입되는 경로만 차단합니다
그럼 Attention을 통한 간접적인 feature간섭은 어떻게 할까요?
이를 설명하기 위해 저자들은 DiT모델에서 관찰되는 Spatial Locality(공간적 지역성)이라는 특성에 주목합니다!
쉽게 말하자면 이미지 토큰들이 항상 이미지 전체를 균등하게 참조하는 것이 아니라 같은 Subject영역에 있는 토큰들을 더 많이 참조하더라~ 하는 것 입니다!
이걸 수식으로 표현하면 아래의 수식(3)과 같습니다

보기에는 복잡해보이지만 의미는 간단한데,
왼쪽은 토큰 (p)가 자신과 같은 Subject 영역에 있는 토큰들에게 할당한 Attention weight의 합이고, 오른쪽은 다른 영역에 있는 토큰들에게 할당한 Attention weight의 합 입니다
즉 특정 subjecet영역에 있는 토큰은 다른 영역보다 자신과 같은 subject에 있는 토큰들을 훨씬 더 많이 참조한다는 것이죠!
(물론 모든 layer와 Denoising step에서 무조건적으로 성립하는 건 아니고, 저자들이 모델 내부의 어텐션을 분석하면서 관찰한 경향이라고 합니다)

위의 그림(fig3)으로 이런 경향성을 분석한 실험결과를 확인해볼수 있습니다
100개의 샘플을 대상으로 Self-attention의 spatial locality(공간적 지역성)를 분석한 결과입니다
SAM3로 얻은 Subject Mask를 기준으로, 같은 Subject 내부의 Attention과 다른 Subject 영역으로 향하는 attention의 비율(Intra-Subject,Inter-Subject)을 측정했는데요
먼저 Block 0을 보면 Denoising step과 관계없이 attention ratio가 약 1.0 수준으로 나타나는 걸 볼수 있습니다.
이 부분은 초기 블록에서 특정 subject내부에만 집중하기보다는 전역적인 정보를 폭넓게 참조하고있다는 의미입니다. 저자들은 이러한 특성이 전체적인 layout을 형성하는데 필요하다고 설명합니다!
반면에 Block 12~18처럼 깊은 Layer로 갈수록 Attention Ratio가 크게 증가하는 것을 확인할수 있는데 (실제로 Block 18은 step21에서 이 비율이 8.22까지 증가하는 걸 볼수 있습니다!
즉 깊은 layer로 갈수록 다른 subject보다 자신과 같은 subject영역에 훨씬 더 많은 attention이 집중된다는 것이죠
여기서 중요한 점은 초기 layer에는 전체 장면을 구성하기 위한 전역적인 정보교환이 일어나고, 깊은 layer에서는 각각의 subject 내부에서 정보교환이 강하게 생기는 경향이 나타난다는 것 입니다!
즉 이러한 결과로 앞서 설명했던 이 Spatial Masking Strategy가 효과적으로 작동할 수 있다는 근거가 되는 것이죠!
하지만 여기서 한가지 의문이 더 남습니다!
초기 Block에서는 전역적인 정보를 활발하게 교환한다고 했잖아요?! 이때 만약 LoRA의 영향력이 크다면 서로 다른 subject의 특징도 강하게 섞일수도 있지않을까요?!
저자들은 이 부분을 확인하기 위해 각 transformer block에서 LoRA가 얼마나 큰 변화량을 만들어 내는지를 추가로 분석합니다! 아래의 fig4를 살펴보죠!

이 fig4는 FLUX의 Double-stream Block별 LoRA Perturbation Magnitude를 분석한 결과입니다!
(여기서 Perturbation은 LoRA가 기존 모델의 가중치나 Feature에 만들어내는 변화량이라고 이해하면 됩니다)
먼저 왼쪽의 (a)는 각 블록에서 LoRA가 가중치에 얼마나 큰 변화를 주는지를 비교한 결과입니다!
저자들은 초기 블록(0~3)과 중간(깊은)블록(10~18)을 비교했고 중간(깊은) Block에서 정규화된 LoRA weight Perturbation이 1.8배 더 크게 나타난다는 것을 확인했습니다
하지만 가중치의 변화량이 크다고 해서 실제 이미지 생성 과정에서도 반드시 그만큼의 영향을 주는 것은 아닐수 있습니다
그래서 오른쪽 (b)에서는 실제 추론 과정에서 LoRA가 만들어내는 Feature변화량을 측정합니다!
이때 LoRA Residual의 크기를 Base 모델의 feature의 크기로 나누어 상대적인 영향력을 비교했는데요!
결과적으로 중간(깊은) Block의 LoRA Residual이 초기 Block보다 2.67배 더 크게 나타났습니다!
즉 실제 생성과정에서도 LoRA의 영향력이 초기 Block보다 중간·깊은 Block에서 강하게 나타난다는 것이 되는거죠!
위의 fig3과 4의 분석을 통한 저자들의 주장은
결국 전역적인 정보 교환이 활발한 초기 Block에서는 LoRA의 영향력이 상대적으로 작고, LoRA의 영향력이 강해지는 깊은 Block에서는 이미 Attention이 공간적으로 지역화되어 있다는 것입니다
따라서 FreeFuse는 Base Model의 전역적인 attention을 유지하면서도, 각 Subject의 LoRA Residual이 관련 없는 영역에 직접 적용되는 것을 Spatial Masking으로 제한할 수 있습니다!
이를 통해 전체 장면의 문맥 정보는 공유하면서, 개별 Subject의 Feature Interference는 줄이는 것이죠!
바로 이것이 저자들이 Spatial LoRA Routing이 효과적인 방법이다!! 라고 주장하는 근거가 됩니다
2. Exploring Intrinsic Segmentation Capabilities in Flow Models while Multi-Concept Generation
그럼 별도의 Segmentation 모델 없이 어떤 영역에 어떤 Subject가 있는지 어떻게 알아낼까요?
직전 섹션에서 각 LoRA의 Residual을 공간적으로 분리하는 것이 왜 효과적인지 살펴보았습니다! 그런데 요것을 실제로 적용하려면 각 subject가 이미지의 어느영역에 위치하는지 알아야합니다!
저자들은 이를 위해 별도의 segmentation모델을 사용하는 대신 생성 모델 내부의 latent representation을 활용하는 방법에 주목합니다
기존의 연구들에서도 Diffusion모델의 내부 feature에 의미적인 segmentation정보가 포함되어 있다는 점이 확인되었는데요
저자들은 이러한 특성을 활용해서 FreeFuseAtten이라는 Subject mask 추출 방법을 제안합니다!
2.1. 언제 어디서 마스크를 추출해야할까?
먼저 저자들은 FLUX 내부에서 어떤 Denoising Step과 Transformer 블록이 subject의 위치를 가장 정확하게 나타내는지 분석합니다

위의 fig5의 오른쪽 그림 첫번째 행들을 보면 Denoising초기에는 공간 구조가 아직 충분히 형성되지 않았기 때문에 subject를 구분하기가 어렵고 후반으로 갈수록 세부적인 텍스쳐 생성이 강조되면서 의미적인 정보와의 정렬이 약해지는 것을 확인할수 있습니다
즉 Layout이 어느 정도 형성되었지만 아직 고정되지 않은 초기~중간 구간이 Mask를 추출하기에 적합하다는 것이죠!
또한 오른쪽 두번째 행(중간행)에서는 transformer블록별 similarity map을 비교한 것입니다!
저자들은 마지막 Double-stream 블록인 18블록에서 가장 뚜렷한 Semantic-Image Alignment가 나타난다고 설명합니다!
그렇다면 구체적으로 어느 step과 block을 사용하는게 가장 좋을까요?

위의 fig6에서는 300개 샘플을 대상으로 Denoising step과 Transformer block을 변경해가며 Subject localization 정확도를 비교합니다
(평가에는 Precision 10%를 사용하는데 요 부분은 활성화 점수가 가장 높은 상위 10%의 이미지 토큰중 실제 subject영역에 포함되는 비율입니다)
실험 결과 18블록,4스텝(총 28 Step 중 다섯 번째)에서 가장 높은 0.704를 기록했습니다
따라서 FreeFuseAttn은 해당 시점과 Block에서 Mask 추출에 필요한 Feature를 가져옵니다!
2.2. 기존 Cross-Attention만으로는 왜 부족할까?
그럼 이제 mask를 추출한 위치는 정했으니 실제로 subject의 영역을 찾아야합니다!
가장 직관적인 방법은 텍스트와 이미지 사이의 Cross-Attention을 활용하는 것입니다!
하지만 저자들은 기존 방법들에 몇 가지 문제가 있다고 지적합니다
먼저 ConceptAttn처럼 Concept을 독립적으로 인코딩하는 방식은 서로 비슷한 Subject를 구분할 때 문맥 정보가 부족해 Semantic Collapse가 발생할 수 있다고 합니다
반면에 Cross-attention은 Subject와 이미지 영역 사이의 의미적 정렬은 비교적 정확하지만, 활성화가 군데군데 끊어지거나 중간에 빈 공간이 생기는 Hole Phenomenon이 발생합니다.
Fig. 5 오른쪽 세 번째 행(마지막행)에서도 이러한 차이를 확인할 수 있는데요!
결국 어떤 Subject인지는 비교적 잘 찾지만, Subject 전체의 영역을 온전하게 찾아내지는 못하는 것이죠
저자들은 이러한 문제를 해결하기 위해 Cross-attention의 의미적 정보와 이미지 토큰 간의 유사도(Token Similarity)를 결합합니다
2.3. FreeFuseAttn은 어떻게 Mask를 생성할까?
이제 FreeFuseAttn의 구체적인 방법을 살펴보겠습니다!
전체 과정은 Concept Activation 계산 → Anchor 선택 → Token Similarity 기반 Mask 복원으로 이루어집니다
[ Concept별 Spatial Similarity 계산 ]
먼저 이미지 토큰의 쿼리 피처(Q)와 Concept(c)에 해당하는 텍스트토큰의 키 피쳐(K_c)를 이용해 유사도를 계산합니다

여기서 중요한 점은 일반적인 Cross-attention과 달리 텍스트 차원이 아닌 이미지의 Spatial dimension에 softmax를 적용한다는 것 입니다
즉 특정 Concept Token이 이미지의 어느 위치에서 강하게 활성화되는지 계산하려고 하는 것이죠!
이후 하나의 concept이 여러 텍스트 토큰으로 구성될수 있으므로 각 토큰의 spatial Response를 평균내서 concept 전체의 activation map을 구합니다

(여기서 L_c는 Concept (c)에 해당하는 텍스트 토큰의 개수입니다)
[ Discriminative Anchor 선택 ]
하지만 직전에 얻은 activateion map만으로는 서로 비슷한 Subject의 영역이 겹칠 수도 있습니다
요 문제를 해결하기 위해 저자들은 다른 Concept의 activation에 패널티를 부여하는 Discriminative Score를 아래의 수식(6)처럼 계산합니다!

(여기서 (M)은 전체 Concept의 개수이며, (S_j)는 다른 Concept의 Activation Map입니다)
즉 단순히 A의 활성화가 높은 위치를 찾는 것이 아니라 다른 Subject와 비교했을 때 A의 특징이 상대적으로 강한 위치를 찾는 것이죠!
Discriminative Score가 높은 상위 10%의 Spatial Token을 Anchor로 선택합니다
(예를들어 1024×1024 FLUX 이미지에서는 전체 4096개 Spatial Token 중 409개를 anchor로 선택합니다)
다만 아직 이 anchor들은 subject 전체를 나타내는 mask가 아니라, 해당 subject일 가능성이 높은 대표 위치들입니다!
[ Token Similarity 기반 Dense Mask 생성 ]
이제 선택한 anchor들을 바탕으로 subject 전체의 영역을 복원할 차례입니다

위의 수식(7)처럼 여기서 분수식의 분모 앞서 선택한 ancher집합이고, Z는 이미지 전체의 토큰피처, Z_p는 anchor위치의 피처입니다!
(또한 타우는 Temperature 파라미터로 4000을 사2.4.용하고 시그마는 Min-Max Scaling과 같은 Spatial normalization을 의미합니다)
수식이 좀 복잡해 보이지만 핵심만 보자면 간단합니다!
각 Anchor의 feature와 이미지 전체 토큰의 feature 유사도를 계산해서, 같은 subject에 해당할 가능성이 높은 영역을 찾아내는 것입니다
즉 anchor 주변을 단순히 넓히는 것이 아니라 feature가 유사한 이미지 토큰을 찾아 subject의 전체 영역을 복원하는 것이죠!
d이를 통해 기존 cross-attention에서 발생하던 희소한활성화와 Hole Artifact를 완화하면서 연속적인 subject마스크를 생성할수 있게 됩니다!
2.4. FreeFuseAttn이 실제로 더 정확할까?
그렇다면 이렇게 생성한 Mask가 기존 방법들보다 실제로 더 정확할까요?

위의 fig3의 오른쪽은 300개의 Dual-subject 생성 샘플을 대상으로 FreeFuseAttn과 기존 방법들의 Localization 성능을 비교한 결과입니다
(여기서는 SAM3로 생성한 Segmentation mask를 GT로 사용하고, 활성화 점수가 높은 상위 K% 토큰 중 실제 subject 영역에 포함되는 비율인 Precision@K를 평가했습니다)
실험 결과로 FreeFuseAttn은 비교한 모든 K Threshold에서 Cross-attention, ConceptAttn, SP-Attn 등의 기존 방법보다 높은 Precision을 기록했습니다
즉 Cross-Attention으로 의미적으로 확실한 Anchor를 찾고, Token 유사도로 subject 전체 영역을 복원하는 방식이 더 정확한 Mask 생성에 효과적이라는 것이죠!
마지막으로 저자들은 Subject를 설명하는 프롬프트의 구체성도 Mask 품질에 영향을 준다는 점을 확인했습니다! 앞서 살펴봤던 fig5의 왼쪽을 보면 순히 두 사람을 언급하는 것보다 각 인물의 옷 색상, 머리색, 나이 등 구별되는 attribute를 추가했을 때 더 명확한 similarity map이 형성되는 것을 확인할 수 있습니다!
즉 시각적으로 비슷한 subject라도 서로 구분되는 의미적인 단서를 충분하게 제공하면 더 정확한 anchor를 찾는데 도움이 된다는 것이죠!
여기까지 살펴본 FreeFuseAttn의 핵심은 Cross-attention으로 확실한 subject의 위치를 찾고 token 유사도를 활용해 전체 subject mask를 복원한다는 것 입니다!
이렇게 얻은 마스크는 Token-Level Router와 Attention Bias를 구성하는데 활용됩니다!
3. Router Controlled and Bias-Guided Generation
마지막으로 추출한 Subject Mask를 실제 생성 과정에서 어떻게 사용할까요?
앞에서 FreeFuseAttn을 이용해 각 Subject의 Mask를 추출하는 방법을 살펴보았습니다!
이제 이렇게 얻은 Mask를 실제 이미지 생성에 적용할 차례인데요!
먼저 저자들은 Subject Mask의 정확도를 높이기 위해 background prompt를 이용해 배경 영역까지 구분합니다. 이후 Morphological Opening/Closing으로 Mask의 노이즈와 빈 공간을 보정하고, territorial voting과 gravity aggregation으로 Subject 간 겹치는 영역을 해결합니다.
(Territorial Voting은 주변 토큰의 소속 정보를 참고하고, Gravity Aggregation은 같은 Subject의 영역이 모이도록 유도하는 기법입니다!- 자세하게 궁금하신 분들은 찾아보시길. . . )
이렇게 최종 Mask가 준비되면 fig.2의 Phase 2에서 두 가지 제어 메커니즘을 적용합니다!
- Token-Level Router: 각 subject 영역에 해당하는 LoRA Residual만 적용해 직접적인 feature interference를 억제합니다.
- Attention Bias: 이미지 토큰이 해당 subject prompt에 집중하도록 유도해 다른 subject의 특징이 섞이는 Concept bleeding을 줄입니다.
즉 Router는 LoRA의 공간적 간섭을, Attention Bias는 텍스트와 이미지 간 의미적 간섭을 제어하는 것이죠!여기서 Style LoRA처럼 이미지 전체에 영향을 주어야 하는 Adapter는 각 subject group에 공통으로 할당할 수 있으며 필요한 경우 background에도 적용합니다.
(실제 FLUX.1-dev에서는 19개의 Double-stream Block과 38개의 Single-stream Block에서 LoRA Residual Routing을 수행 한다고 합니다)
정리하자면 전체 추론은 두 단계로 진행됩니다.
Phase 1: 모든 LoRA를 비활성화하고 초기 Denoising 과정에서 Subject Mask를 추출합니다.
Phase 2: 동일한 초기 Latent에서 Denoising을 다시 시작하고, 모든 Step에서 Router와 Attention Bias를 적용해 최종 이미지를 생성합니다.
여기서 중요한 것은 Base Model의 Attention은 그대로 유지하고, 추가되는 LoRA Residual만 공간적으로 제어한다는 점입니다!
따라서 전체 장면의 문맥 정보는 공유하면서도 개별 Subject 간 직접적인 Feature Conflict를 줄일 수 있는 것이죠!
이렇게 FreeFuse의 전체 생성 과정이 완성됩니다!
Experiment
이제 FreeFuse가 실제로 기존 Multi-LoRA 방법들보다 얼마나 효과적인지 실험 결과를 살펴보겠습니다!
저자들은 총 15개의 LoRA(캐릭터 10개, 객체 5개)를 사용하고, LoRAShop, Multi-IP-Adapter, Multi-Redux, OmniGen, UMO와 성능을 비교했습니다.
특히 여러 캐릭터를 동시에 생성하거나 캐릭터와 객체를 함께 생성하는 상황에서 개별 Subject의 특징을 얼마나 잘 유지하는지를 중점적으로 평가합니다!
1. Main Results

먼저 Table 1은 기존 방법들과 FreeFuse의 정량적 성능을 비교한 메인 실험 결과입니다!
평가는 크게 Character/Object Similarity, Face Similarity, Prompt Following 및 Aesthetic Quality를 기준으로 진행했습니다.
결과를 보면 FreeFuse는 Character Similarity와 Face Similarity에서 전반적으로 가장 높은 성능을 보였는데요! 특히 얼굴의 Identity를 평가하는 ArcFace에서 0.4275를 기록하며 LoRAShop의 0.3886보다 높은 성능을 보였습니다.
Object Similarity에서도 좋은 결과를 보였으며, Prompt Following과 Aesthetic Quality는 일부 기존 방법보다 낮았지만 전반적으로 경쟁력 있는 수준을 유지했습니다.
저자들은 이를 통해 여러 LoRA를 동시에 적용하더라도 개별 Subject의 Identity를 효과적으로 보존하면서 전체 이미지 품질을 유지할 수 있다고 설명합니다!
2. Qualitative Results

이번에는 실제 생성 결과를 비교해 보겠습니다!
fig.7에서는 여러 캐릭터가 함께 대화하는 장면과 캐릭터가 특정 객체와 상호작용하는 장면을 보여줍니다.
기존 방법들은 서로 다른 캐릭터의 얼굴이나 외형적 특징이 섞이는 Identity Blending과 Feature Leakage가 발생하는 반면, FreeFuse는 각 캐릭터의 특징을 비교적 명확하게 유지하는 것을 확인할 수 있습니다.
저자들은 특히 서로 가까이 위치한 여러 Subject 사이에서도 개별 Identity를 유지할 수 있다는 점을 강조합니다!
추가로 Fig. 8에서는 실사 인물, 애니메이션 캐릭터, 3D 캐릭터, 객체 등 다양한 조합의 생성 결과를 통해 활용 가능성을 보여줍니다.

3. Ablation Study

그렇다면 FreeFuse의 어떤 구성요소가 실제 성능 개선에 기여했을까요?
tab.2에서는 FreeFuseAttn, Mask Postprocessing, Attention Bias, Token-Level Router를 각각 변경하거나 제거하여 성능을 비교합니다!
먼저 FreeFuseAttn을 일반 Cross-Attention으로 대체하거나 Postprocessing을 제거하면 Mask의 정확도가 떨어지면서 Identity 보존 성능도 감소했습니다. 또한 Attention Bias를 제거하면 Subject와 텍스트 사이의 의미적 정렬이 약해져 Feature Leakage가 증가한다고 설명합니다.
특히 눈여겨볼 결과는 Router를 제거한 경우인데요!
Router 없이 Attention Bias만 적용했을 때 ArcFace가 0.4275 → 0.2669로 크게 감소했습니다.
이는 단순히 Attention을 제어하는 것만으로는 충분하지 않으며, LoRA Residual을 Subject 영역별로 직접 제어하는 Token-Level Routing이 핵심적인 역할을 한다는 것을 보여주는 결과입니다!
4. Inference Efficiency

마지막으로 Table 3에서는 LoRA 개수에 따른 추론 시간을 비교합니다!
FreeFuse는 Subject Mask를 추출하기 위한 별도의 Inference Pass가 필요하기 때문에 단순 Multi-LoRA 방식보다는 시간이 더 소요됩니다. 하지만 기존 LoRA Fusion 방법인 LoRAShop과 비교하면 훨씬 효율적인데요!
실제로 LoRA 6개 기준 LoRAShop은 142.27초, FreeFuse는 67.96초가 소요되어 약 2.09배 빠른 추론 속도를 보였습니다.
저자들은 이를 통해 FreeFuse가 별도의 추가 학습 없이 여러 LoRA의 간섭을 줄이면서도, 기존 Training-free Fusion 방법 대비 효율적인 추론이 가능하다는 점을 강조합니다!
꽤 기네요..!
읽어주셔서 감사합니다!