헥스 코드 한 줄로 객체 색을 지정하는 통합 이미지 생성·편집 모델
Paint-Anything: Unified Any-Color Control for Image Generation and Editing
무엇인가
전문 디자인 현장에서 요구되는 색 지정은 "파란색"이나 "빨간색" 같은 이름이 아니라 24비트 헥스 값이다. 브랜드 로고는 시그니처 블루의 정확한 코드로, 신상품 이미지는 지정된 레드의 코드로 나와야 한다. 이 논문은 이를 any-color control, 즉 사용자가 24비트 헥스 값으로 객체의 목표 색을 직접 지정하는 능력으로 정의한다. 기존 연구는 학습 가능한 컬러 프롬프트, CIELAB 정렬 텍스트 임베딩, RGB/헥스 문자열용 수치 색 인코더 같은 전용 색 표현을 도입하거나, 샘플링 가이던스·어텐션/밸류 조작 같은 학습 없는 추론 시점 기법에 의존했다. 저자들은 이런 설계가 색 전반으로 확장하기 어렵고 새 아키텍처로 옮기기 힘들며 추론 비용이 크다고 지적하며, 그 결과 any-color 생성과 컬러라이제이션과 편집이 하나의 능력이 아니라 각각 별개 문제로 다뤄져 왔다고 본다. 대신 이들은 LLM이 헥스 문자열을 색 의미로 파싱할 수 있다는 점에 주목한다. 작은 모델인 Qwen3-4B가 #F0FFF1이나 #E8D00A 같은 원시 헥스 문자열을 그럴듯한 색 설명으로 변환한다는 탐색 결과를 근거로, 헥스 문자열을 프롬프트에 네이티브한 수치 색 인터페이스로 쓰자는 것이다.
어떻게 동작하나
제안 모델 Paint-Anything은 색 지정을 전적으로 텍스트 프롬프트 안에서 처리한다. 프롬프트에 <color> #AABBCC </color> 형태의 명시적 스팬을 넣고, 텍스트 인코더는 파인튜닝 동안 동결한 채 인코딩 전에 색 스팬을 명확히 표시한다. 생성과 편집은 하나의 디노이징 목적함수를 공유한다. rectified flow 기반 모델에서 z_t = (1-t) z_0 + t ε, v* = ε - z_0 로 노이즈 latent를 만들고, 디노이저가 노이즈 타깃 latent, 타임스텝, 텍스트 토큰, 선택적 이미지 조건 토큰을 받아 velocity를 예측한다. 편집일 때는 소스 이미지를 VAE로 인코딩한 clean condition latent를 노이즈 latent와 시퀀스로 결합하며, 생성과 편집은 이 조건 latent가 붙는지 여부만 다르다. 전체 손실은 L = λ_t2i L_t2i + λ_edit L_edit + λ_rgb L_rgb 로, 세 항 모두 같은 flow-matching 손실을 쓴다.
무엇과 다른가
학습 데이터는 실제 이미지에서 객체 단위 헥스 감독을 뽑아내는 파이프라인으로 만든 Paint-500K다. VLM이 캡션과 관련된 객체와 바운딩 박스를 찾고, SAM3가 객체 마스크를 만들고, CIELAB 공간에서 MeanShift 클러스터링으로 대표색을 추정한다. 저자들은 RGB 공간에서 고정 K로 k-means를 돌리는 흔한 방식이 사람의 지각과 어긋나 지각적으로 비슷한 색을 갈라놓거나 다른 색을 합칠 수 있고, 객체마다 주된 색 개수가 달라 고정 K가 음영과 노이즈를 중복 라벨로 쪼갠다고 지적한다. MeanShift는 객체별 색 분포에 맞춰 클러스터 수를 정해 이런 중복 분할을 줄인다. 픽셀 커버리지로 클러스터를 걸러내고 가장 큰 클러스터가 해당 객체의 sRGB 헥스 라벨이 되며, VLM이 캡션을 <color>#HEX</color> 스팬으로 다시 쓴다. T2I 감독은 40만 쌍으로, 단일 객체 10만 개가 객체-색 지각을, 다중 객체 30만 개가 조합적 색 바인딩을 가르친다. 편집은 10만 쌍으로, 사전학습 편집 모델이 단일 객체 이미지를 다른 색으로 바꿔 소스를 만들고 원본 사진을 타깃으로 삼아 헥스 색 복원 지시와 짝짓는다. 소스만 생성되므로 타깃에는 생성 아티팩트가 없다.
어떻게 쓰나
여기에 단색 앵커라는 장치가 붙는다. 실제 이미지에서 측정한 색은 그림자 때문에 같은 객체가 여러 RGB 값으로 갈라져 근사값일 뿐이다. 그래서 24비트 RGB 값을 샘플링해 단색 이미지로 렌더링하고 대응하는 헥스 토큰이 담긴 프롬프트와 짝지은 pure-color anchor를 추가해, 헥스에서 RGB로 가는 깨끗한 저수준 신호를 제공한다. 단색 생성 궤적에서 색이 이른 시점에 안정화된다는 관찰에 따라 이 앵커는 고노이즈 구간에만 적용한다. 단색 샘플은 t ~ U(t_gate, 1.0)에서만 학습하고, 실제 이미지 T2I와 편집 샘플은 t ~ U(0,1) 전 구간을 쓴다. 최종 설정은 t_gate = 0.8이다.
전제와 한계
평가를 위해 Any Color Benchmark(ACBench)를 새로 제안한다. ACBench-T2I는 1000개 생성 프롬프트로 단일 객체 500개와 두 객체 500개로 나뉘고, ACBench-Edit는 500개 실제 이미지 리컬러링 프롬프트다. SAM3로 타깃 마스크를 얻고 마스크 위 평균 sRGB 벡터와 목표 RGB의 채널별 MAE를 계산한 뒤, s = 100 · max(0, 1 - max(0, MAE - 16)/48) 로 정규화한다. MAE 16 이하는 만점, 16에서 64 사이는 선형 감점, 64 이상은 0점이며 객체 위치를 찾지 못하면 0점이다. 기존 CompColor 벤치마크도 색 이름을 정규 헥스 값으로 바꾼 전이 프로토콜로 함께 평가한다.
결과는 FLUX.2-klein-base-4B와 Z-Image Base를 같은 레시피로 4000 스텝, 4개 GPU, Adam, 글로벌 배치 72, 학습률 2 × 10^-5로 파인튜닝해 얻었다. FLUX.2-4B에서 베이스 모델 대비 ACBench-T2I 점수가 85.3%, ACBench-Edit 점수가 28.3% 향상됐다. FLUX.2 계열에서 DiT 4B(텍스트 인코더 포함 총 8B)를 파인튜닝한 모델이 총 56B 모델을 ACBench-T2I에서 16.88점, ACBench-Edit에서 6.70점 앞선다. CompColor에서는 색 이름을 원시 헥스 문자열로 바꾸는 순간 FLUX.2-4B 베이스 평균이 0.72에서 0.38로 떨어지는데, 객체 단위 헥스 감독 후 헥스 프롬프트 평균이 두 배 이상으로 올라 베이스의 명명 색 평균을 넘어서고, 명명 색 평균 자체도 0.72에서 0.79로 개선된다. 특화 시스템과 비교하면 ACBench-T2I에서 ColorWave를 22.04점, ACBench-Edit에서 ColorBind/Edit를 15.19점 앞선다.
절제 실험은 레시피의 각 요소를 분리한다. 전체 파인튜닝이 rank-256 LoRA보다 크게 우수해 T2I 68.58 대 48.45, Edit 75.57 대 58.71, CompColor 0.79 대 0.54를 기록했다. 앵커 없이 맨 헥스로 학습하면 ACBench-T2I 44.06, ACBench-Edit 65.81에 그치지만 색 토큰 래핑을 넣으면 57.16과 73.89로 오른다. 래핑 상태에서 앵커를 게이팅 없이 추가하면 생성은 63.83으로 좋아지지만 편집은 70.39로 떨어진다. 고노이즈 게이팅을 적용하면 게이팅 없는 앵커 대비 ACBench-T2I가 4.75점, ACBench-Edit가 5.18점 오르고 CompColor도 개선된다. 임계값 0.7, 0.8, 0.9 모두 게이팅 없는 앵커보다 두 과제를 개선해 민감도가 낮다는 것도 확인했다.
저자들이 명시한 한계는 현재 학습 데이터에 팔레트 단위 감독이 없다는 점이며, 향후 팔레트 특화 감독을 추가하고 같은 통합 인터페이스를 더 넓은 색 제어 과제로 확장하는 것을 후속 작업으로 남긴다. 또한 NumColor는 평가 시점에 추론 코드와 체크포인트를 구할 수 없어 공개된 GenColorBench NCU 결과로만 비교했다는 전제가 붙는다. 실무에서 이 방법을 검토할 때 확인할 것은 세 가지다. 첫째, 학습 라벨이 그림자 때문에 근사값이고 이를 단색 앵커로 보완하는 구조라는 점, 둘째, 지표가 마스크 평균 sRGB 기반이라 객체 내부의 색 변이나 그라디언트는 반영하지 않는다는 점, 셋째, 프롬프트에 헥스를 직접 쓰는 방식이므로 별도 컬러 인코더나 추론 시점 최적화 없이 파인튜닝된 단일 모델로 생성과 편집을 함께 커버한다는 점이다.