Identity Preservation
아이덴티티 보존은 생성된 이미지, 비디오 프레임, 추적 ID 전반에서 특정 인물이나 객체가 동일한 개체로 식별되도록 유지합니다.
아이덴티티 보존은 모델 출력 전반에서 특정 대상을 동일 인물로 알아볼 수 있게 유지하는 능력입니다. 생성된 여러 초상화에서 같은 얼굴을 유지하거나, 생성된 비디오의 첫 프레임부터 마지막 프레임까지 같은 캐릭터를 유지하거나, 버스 뒤로 걸어갔다가 다시 나타나는 보행자에게 같은 추적 ID를 부여하는 것이 그 예입니다. 이 용어는 두 분야에서 사용됩니다. 생성형 AI에서는 실제 사람이나 제품이 누구 또는 무엇인지를 바꾸지 않고 새로운 장면에 등장시키는 개인화 방법을 뜻합니다. 다중 객체 추적(MOT)에서는 가림, 교차, 카메라 변경 중에도 각 객체의 ID를 안정적으로 유지하는 것을 뜻합니다. 두 분야 모두 동일 인물에 대해서는 서로 가까이, 서로 다른 인물에 대해서는 멀리 위치하는 특징 벡터인 아이덴티티 임베딩으로 이를 측정합니다.
이미지 및 비디오 생성에서의 아이덴티티 보존#
텍스트-이미지 모델은 "a woman"이나 "a dog"의 생김새는 알고 있지만 특정 여성이나 개 한 마리의 생김새는 알지 못하므로, 개인화 방법으로 해당 정보를 추가합니다. 미세 조정 방식은 사진 몇 장으로 정보를 학습합니다. Google의 DreamBooth(2022)는 드문 토큰과 연결된 대상의 이미지 3~5장으로 전체 디퓨전 모델을 미세 조정합니다. 이때 클래스별 사전 보존 손실을 사용해 모델이 다른 개도 정상적으로 생성하도록 합니다. LoRA 어댑터는 같은 아이디어를 개인별 학습에 충분히 저렴하게 적용합니다.
인코더 기반 방식은 대상별 학습을 생략합니다. Tencent의 IP-Adapter(2023)는 별도의 교차 어텐션 레이어를 통해 이미지 임베딩을 디퓨전 모델에 입력합니다. InstantID(2024년 1월)는 얼굴 인식 네트워크의 임베딩과 5개의 얼굴 랜드마크를 조건으로 하는 ControlNet인 IdentityNet을 결합해 사진 한 장만으로 얼굴을 보존합니다. 아이덴티티 조건을 강화하면 결과물이 참조 이미지와 더 비슷해지는 동시에 참조 이미지의 포즈, 표정, 조명도 더 많이 복사됩니다. 따라서 이러한 도구에는 닮은 정도와 프롬프트가 장면을 바꿀 수 있는 범위 사이의 균형을 조절하는 강도 설정이 제공됩니다.
생성된 얼굴은 참조 사진과 출력 이미지의 ArcFace 임베딩 사이 코사인 유사도로 평가합니다. Jiankang Deng과 동료들이 CVPR 2019에서 소개한 ArcFace는 각도 마진을 적용해 얼굴 임베딩을 학습하므로, 초구면에서 아이덴티티가 명확히 분리됩니다. 비디오에는 프레임 간에 대상을 일관되게 유지하는 조건이 추가됩니다. VBench는 프레임 간 DINO 특징을 비교해 이를 대상 일관성으로 측정합니다. 비디오 생성에서 몇 초 동안 얼굴이 달라지는 캐릭터는 모든 단일 프레임이 사실적으로 보이더라도 이 평가를 통과하지 못합니다.
추적에서의 아이덴티티 보존#
추적기는 각 프레임의 탐지 결과를 기존 트랙과 매칭해 ID를 할당합니다. 각 바운딩 박스의 위치를 예측하는 칼만 필터와 교집합 대비 합집합(IoU) 매칭에 기반한 모션 정보만으로는 두 사람이 교차하거나 한 사람이 장애물 뒤로 사라질 때 문제가 생깁니다. 추적기가 두 사람의 ID를 바꾸거나 새 ID를 만들게 되며, 이러한 오류를 아이덴티티 스위치라고 합니다. 외형 특징을 사용하면 이 문제를 상당 부분 해결할 수 있습니다. Nicolai Wojke, Alex Bewley, Dietrich Paulus가 개발한 DeepSORT(2017)는 사람 재식별 데이터셋으로 학습한 네트워크의 임베딩을 모션 전용 SORT 추적기에 추가해 아이덴티티 스위치를 45퍼센트 줄였습니다. Ergys Ristani와 동료들이 2016년에 제안한 IDF1 지표는 올바른 아이덴티티가 할당된 탐지 결과의 비율을 계산해 아이덴티티 보존을 직접 평가합니다.
Ultralytics YOLO 추적은 기본적으로 TrackTrack(Shim과 동료들, CVPR 2025)을 사용합니다. TrackTrack은 사라진 트랙을 30프레임 동안 유지해(track_buffer) 객체가 돌아왔을 때 기존 ID를 다시 할당할 수 있게 하고, 새 ID를 만들기 전에 중복 ID를 억제합니다. 추적기 YAML에서 with_reid: True를 설정하면 외형 매칭이 추가됩니다. 기본적으로 탐지기의 자체 특징을 사용하며, 선택적으로 매개변수 280만 개의 YOLO26n-reid 모델과 같은 전용 인코더를 사용할 수 있습니다. 다음 코드 조각은 예시 비디오에서 ReID 사용 여부에 따른 사람 추적을 수행하고 각 실행에서 할당된 고유 ID 수를 계산합니다.
from ultralytics import YOLO
from ultralytics.utils import ROOT, YAML
# Copy the default TrackTrack config and turn on appearance re-identification
cfg = YAML.load(ROOT / "cfg/trackers/tracktrack.yaml")
cfg.update(with_reid=True, model="yolo26n-reid.onnx")
YAML.save("tracktrack_reid.yaml", cfg)
video = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
for tracker in ["tracktrack.yaml", "tracktrack_reid.yaml"]:
model = YOLO("yolo26n.pt") # fresh model so each run starts with no tracks
ids = set()
for result in model.track(video, tracker=tracker, classes=[0], stream=True, verbose=False):
if result.boxes.is_track:
ids.update(result.boxes.id.int().tolist())
print(f"{tracker}: {len(ids)} person IDs")이 짧은 클립에서는 두 실행 모두 사람 ID 3개를 할당하므로 외형 매칭이 결과를 바꾸지 않습니다. 외형 매칭은 사람이 프레임 밖으로 나갔다가 돌아오는 더 긴 영상에서 중요합니다. 같은 사람에 대해 고유 ID 수가 적을수록 아이덴티티 스위치가 줄어들며, 후속 집계는 이 결과에 영향을 받습니다. 돌아온 쇼핑객에게 새 ID를 부여하는 사람 수 집계 시스템은 그 쇼핑객을 두 번 집계합니다.










