Rich Human Feedback for Text-to-Image Generation

Rich Human Feedback for Text-to-Image Generation 논문 리뷰
김호진's avatar
Jul 21, 2024
Rich Human Feedback for Text-to-Image Generation
읽은 이유
CVPR best paper, 자연스럽게 해결될 수 있지만 여전히 해결되지 않는 사람 손, 물체 위치를 못알아먹는 등에 대한 문제점들의 해결책이 될 수 있을까해서
회사에서 항상 문제로 고민했던 부분이기도한데, 이걸 건드리면서 best까지 받았길래 봤다
 
요약
7가지 rich human feedback(텍스트와 다른 부분의 이미지 히트맵, artifact 히트맵, 4가지 종류의 점수, 이미지에 잘못 반영된 텍스트 키워드) 데이터셋을 수집하고, 각각의 prediction할 수 있는 모델까지 학습해서 제시했다.
그 모델(특히 heatmap prediction)을 활용하는 방법(base모델 위에 finetuning, RL)을 제시하는게 주인줄 알았는데, 그건 아니었다. 그럼 잘못 읽은거긴 한데 매우 실용적인 데이터셋과 방법들을 제시했다는 점에서 의의가 커 best를 받지않았나 생각한다. 내용이 이해하기 쉽고 직관적이다. 논문을 잘 쓴 것 같음
 
Abstract
여전히 생성된 이미지들엔 아티팩트가 있고, text를 완벽히 반영하지 않고, 보기 좋지 못하다(low asthetic quality).
LM의 RLHF에 영감을 받아서, 이전의 작업들은 human feedback을 이미지에 대한 평가 점수로만 받아서 reward model을 학습하여 생성을 개선했다.
본 연구에서는 1) 이미지에서 어떤 region이 이상하거나 텍스트와 다른지, 2) 텍스트에서 어떤 단어가 반영이 안되었는지를 풍부한 피드백으로 수집했다. 18K개의 이미지에 대해
그리고 multimodal transformer를 학습해서 이 rich human feedback을 예측하는 모델을 만들었다. → 이것 자체가 퀄리티 향상에 활용될 수 있다. pre-process, post-process(필터링, 에러 히트맵 부분 재생성) 등에 바로 사용 가능하다
 
 
이미지 생성 너무 발전했지만 이전에 비해 극도로 좋아졌을 뿐, 여전히 부분적인 에러들이 많다. 생성된 이미지들 직접 평가해보니 아티팩트가 없고 에러가 없는 이미지는 전체의 10%정도밖에 안되더라.
지표들(IS, FID)은 이런걸 반영하지 못하고 있다.
 
현재까지 image generation에 reward modeling 사용된걸 보자
최근들어 많이 나오긴 했다.
  • Imagereward: Learning and evaluating human preferences for textto-image generation
    • 여러 이미지를 주고(아마 동일한 프롬프트에 대한 이미지겠지..?) 랭킹을 매기도록 하고, 퀄리티 항목에 맞게 점수도 매기도록 한 다음 이걸로 reward model을 학습해서 T2I model을 강화학습
  • 같은 프롬프트로 생성된 두장의 이미지 중 더 나은 이미지를 고르도록 해서 데이터를 모았다. → 아무래도 대량으로 모으기 쉬운 형태.
    • 이걸 기반으로 CLIP기반의 모델을 학습해서 더 나은 이미지를 선택하는 모델 제시
  • large scale의 생성된 이미지 중 사람이 선택한 이미지 정보 데이터셋을 바탕으로 calssifier를 학습해서 Human Preference Score를 출력하는 regression model 제시. 이걸로 SDM학습해서 성능도 높였다.
  • fine-grained metric을 평가한 데이터셋도 제안됨 - 12개의 평가 지표
이런 연구들이 대표적인데, 여전히 binary한 랭킹이나 단순한 preference 점수만이 활용되고 있다.
notion image
우리의 데이터셋은
  1. implausibility/artifact 혹은 텍스트와 일치하지 않는 부분을 이미지 위에 annotation한 값
  1. 사용된 text 위에, 반영되지 않거나 잘못된 단어들은 labeling한 값
  1. 4가지 종류의 디테일한 스코어
    1. image plausibility
    2. text-image alignment
    3. aesthetic
    4. overall rating
이정도로 디테일한 피드백 데이터셋도 처음이고, 이걸로 image feedback prediction 모델 성능을 만든 것도 처음이다.
특히 아티팩트 리전을 그린 데이터셋은 있지만 misaligned keywords랑 region까지 한건 없음.
동일한 데이터를 중복되게 맡겨서 거기서 나온걸 평균내거나 교집합을 써어 완성했다.
 
notion image
ViT와 T5X를 비전, language pretrained 모델로 사용한다. 구조자체는 spotlight 모델 참고
output이 크게 heatmap, score, text로 나뉘는데 앞 두개는 평가에 이미지가 중요하고, 뒤 1개는 텍스트가 중요하지만 서로의 정보를 참고해야하니 중간에 self-attention이 들어간 구조
  1. 이미지를 ViT에 보내 high-level representation을 가진 image token을 얻는다
  1. 텍스트도 T5X dense vector로 임베딩된다.
  1. 둘을 concat한 다음 T5X의 self-attention encoder를 사용해서 encoding한다. 그럼 서로의 정보가 반영된 각 토큰들이 나온다. 일단 이미지 토큰은 reshape해서 feature map의 형태로 만든다.(seq length는 같으니?)
  1. for heatmap prediction : conv, deconv layer 사용해서 히트맵을 출력
  1. score : feature map을 conv, linear layer로 사용해서 scalar값 출력
  1. 잘못된 텍스트 예측
    1. figure에는 self-attention을 통과한 텍스트, 이미지 토큰을 같이 사용하는 것처럼 생겼는데 설명에서는 원본 텍스트와 통과한 vision 정보를 사용해서, T5X decoder에 넣은 다음 misaligned된 토큰에는 _0이 붙어있는 텍스트를 출력하도록 학습된다.
      1. e.g., a yellow 0 cat
        여기서 원본 텍스트 토큰이 들어가고, decoding 과정에서 vision 정보가 Cross Attention으로 들어가는지 같이 토큰으로 들어가는지는 모르겠다. 구현체도 없어서 확인이 어렵
 
headmap은 pixel-wise MSE loss, 스코어는 MSE loss, 키워드는 teacher-forcing cross-entropy loss를 섞어서 사용해서 학습했다.
 
notion image
notion image
구현은 두가지 다른 방법을 적용해봤는데
  1. Multi-head : 각 output마다 각각의 prediction head를 두는 방법
    1. → 총 7개의 head (artifact heatmap, 텍스트와 다른 부분 heatmap, 4종류의 점수, 잘못 반영된 키워드)
  1. Augmented prompt
    1. 각 예측하려는 output마다 그 task에 맞는 키워드를 텍스트에 붙인 다음 이걸로 output type을 구분하는 방법. ex) implausibility heatmap red cat.
      그래서 학습하는 단위는 3개만 존재한다. 그럼 weight가 공유됨
 
결과를 보면 알 수 있듯이, augmented prompt가 조금 더 나았다. 아무래도 각각의 head를 다 따로 학습하기엔 그렇게까지 dataset이 많지 않았기 때문이거나, 공유된 정보가 있거나 때문이지 않을까?(둘다긴 할듯)
 
학습한 모델을 활용한 예시들
notion image
고양이 - 동일한 모델인데 data point들의 score를 예측한다음 이걸 기반으로 필터링해서 좋음 이미지만 학습한 결과. 위는 예시지만 실제로 human 평가시 더 좋은 평가를 받음
링 - aesthetic score를 CG로 사용.(CFG가 아님)
이게 뭔가 싶었는데 Universal Guidance for Diffusion Models 라는 논문에서 학습된 외부 모델을 사용해서 retrain없이 inference time에서 바로 사용해서 특정한 guide를 부여하는 방법을 제시한걸로 보인다. 짧게봐서 이해는 못했지만 외부 condition을 classifier guidance의 class와 같이 사용하는데, noisy한 이미지에 대한 class 모델을 추가학습해야한다는 문제를 방지하기위해 DDIM의 계산방법을 사용한 것 처럼 보이긴한다,,
 
notion image
잘못된 히트맵은 재생성.
 
 
 
 
 
 
 
 
Share article
Subscribe to our newsletter
RSSPowered by inblog