Re-ID 란?
Re-ID (Re-Identification) 기술은 여러 장면에서 촬영된 이미지에서 같은 사람을 인식하고 식별하는 기술이다. 주어진 이미지(검색할 이미지)와 데이터베이스의 이미지를 비교하여 같은 사람을 찾는 것이 주요 목표이다. 아래에 Re-ID의 과정을 단계별로 정리하였다.
우선 RE-ID 의 과정은 아래와 같이 진행 된다.
하나씩 내용을 보면서 이해해보자.
- 사람 검출 (Detection)
- 피처 추출 (Feature Extraction)
- 임베딩 (Embedding)
- 클러스터링 (Clustering)
- 트래킹 (Tracking)
- 검색 (Search)
1. 사람검출 (Detection)
Re-ID의 첫 번째 단계는 입력 이미지에서 사람을 탐지하는 것이다. 이 과정에서는 Object Detection 모델을 활용한다.
예를 들어, YOLO나 Faster R-CNN 같은 딥러닝 기반의 검출 모델을 사용하여 이미지에서 사람이 포함된 영역을 찾아낸다.
2. 피처 추출 (Feature Extraction)
검출된 사람 영역에서 CNN(Convolutional Neural Network)을 사용하여 피처 벡터(feature vector)를 추출한다.
이 피처 벡터는 사람의 외형적인 특징을 숫자로 표현한 것이다.
예를 들어:
- 옷 색깔: 파란 셔츠, 빨간 바지
- 가방 모양: 백팩, 크로스백
- 신발 종류: 운동화, 부츠
CNN은 이러한 정보를 바탕으로 이미지를 고차원 벡터로 변환하며, 이 벡터는 이미지의 중요한 정보를 담고 있다.
3. 임베딩 (Embedding) : 이미지를 숫자로 이해하기
딥러닝 모델은 이미지를 처리할 때, 우리 눈에 보이는 색상이나 형태를 숫자로 변환하여 이해한다. 이 과정에서 핵심 역할을 하는 것이 바로 CNN(Convolutional Neural Network)과 임베딩(Embedding)이다. 여기에서는 CNN이 이미지를 어떻게 숫자로 표현하고, 임베딩이 이를 활용해 이미지 간 유사성을 계산하는지 쉽게 설명해보겠다.
우선 임베딩이란, 이미지를 숫자 벡터(숫자들의 리스트)로 변환하는 과정을 말한다. 이 숫자 벡터는 이미지의 특징(특성)을 나타내며, 다른 이미지와 비교를 용이하게 하기 위해 임베딩 과정을 거친다.
임베딩 과정은 크게 두 단계로 이루어진다.
1) 이미지를 숫자로 이해하기
CNN은 이미지를 입력받아 중요한 특징을 찾아내고, 이를 숫자로 변환하여 피처 벡터를 생성한다.
예를 들어, 사람의 사진을 입력하면 다음과 같은 벡터가 생성될 수 있다:
[0.8, 1.2, 0.4, ...] # 512차원의 숫자 벡터
2) 벡터 정규화
CNN이 생성한 벡터는 크기(길이)가 일정하지 않을 수 있다.
예를 들어:
- 이미지 A: [0.8, 1.2, 0.4, ...] (길이 2.0)
- 이미지 B: [0.3, 0.5, 0.7, ...] (길이 1.5)
이처럼 벡터의 크기가 다르면 비교할 때 크기 차이가 영향을 줄 수 있다. 이를 해결하기 위해 벡터를 정규화(L2 Norm)하여 크기를 1로 맞춘다. 정규화된 벡터는 다음과 같은 형태가 된다.
[0.8, 1.2, 0.4, ...] → [0.4, 0.6, 0.2, ...] # 길이 = 1
4. 클러스터링 (Clustering)
정규화된 벡터는 벡터 공간에서 특정 위치를 차지한다. 이는 딥러닝 모델이 이미지의 특징을 숫자로 표현한 벡터를 좌표 공간의 한 점으로 나타낸다는 의미이다. 같은 사람의 이미지는 벡터 공간에서 가까운 위치에 모이고, 다른 사람의 이미지는 멀리 떨어진 위치에 나타난다. 이러한 벡터들을 클러스터링 알고리즘(예: K-Means, DBSCAN)을 사용해 같은 사람끼리 그룹화한다. 이것이 클러스터링이다.
1) 벡터를 공간에 매핑한다는 의미
- 벡터는 숫자들의 리스트로 표현되며, 각각의 숫자는 이미지의 특정한 특징(예: 색상, 모양, 질감 등)을 나타낸다.
- 예를 들어, 벡터 [0.4,0.6,0.2]는 3차원 공간에서 (x=0.4,y=0.6,z=0.2)라는 좌표로 나타난다.
- 딥러닝 모델은 더 많은 특징(512개 등)을 분석하며, 이 경우 벡터는 512차원 공간의 한 점으로 표현된다.
2) 정규화와 벡터 공간
위에 임베딩 부분에서 벡터 정규화를 진행하여 비교하는 부분이다.
- 정규화(L2 Norm)는 벡터의 크기(길이)를 일정하게 맞추는 작업이다.
- 정규화를 통해 모든 벡터의 크기를 1로 맞추면, 벡터 간 크기의 차이를 제거하고 방향만 비교할 수 있다.
- 정규화된 벡터는 단위 구(Unit Sphere)라는 일정한 범위 내에 위치하게 된다.
3) 벡터 간 유사성 비교
- 같은 사람의 이미지는 특징이 비슷하므로 벡터 공간에서 가까운 위치에 모인다.
- 다른 사람의 이미지는 특징이 다르므로 벡터 공간에서 멀리 떨어진 위치에 나타난다.
- 벡터 간 유사성은 거리(L2 Norm)를 통해 계산되며, 거리가 가까울수록 유사성이 높다.
4) 비유를 통한 이해
벡터 공간을 지도라고 생각하면 이해하기 쉽다.
- 각 벡터는 지도 위의 한 점이다.
- 서로 가까운 점들은 유사한 특징을 공유하며, 멀리 떨어진 점들은 다른 특징을 가진다.
- 정규화된 벡터는 이 지도에서 크기가 같은 점으로 나타난다
정규화된 벡터가 벡터 공간에 위치한다는 말은, 이미지의 특징을 숫자로 변환해 벡터 공간의 한 점으로 매핑한다는 뜻이다.
이를 통해 벡터 간 거리를 계산해 이미지의 유사성을 판단하며, 클러스터링 알고리즘을 활용해 같은 특징을 가진 이미지를 그룹화한다. 이 과정은 Re-ID 기술에서 같은 사람을 인식하거나, 유사한 이미지를 분류하는 데 필수적인 역할을 한다.
5. 트래킹 (Tracking)
클러스터링된 정보를 활용하여 사람이 이동하는 경로나 ID를 추적한다.
Re-ID의 트래킹 기능은 여러 장면에서 동일한 인물을 지속적으로 식별하는 데 중요한 역할을 한다.
트래킹의 핵심 과정
- 클러스터링 정보 활용
클러스터링된 벡터들은 같은 사람의 특징을 나타낸다. 이를 기반으로 트래킹 시스템은 특정 사람이 여러 카메라에 나타나는 경우에도 같은 ID로 연결할 수 있다. - ID 연결
트래킹 시스템은 시간의 흐름에 따라 특정 인물이 다른 장면에서 촬영된 경우라도, 이 벡터를 분석해 동일한 ID로 매칭한다. 예를 들어, CCTV A에서 나타난 사람이 몇 초 후 CCTV B에 등장했을 때, 트래킹 시스템은 이를 같은 사람으로 연결한다. - 이동 경로 추적
트래킹을 통해 특정 인물이 이동한 경로와 시간 정보를 확인할 수 있다.
6. 검색 (Search)
Re-ID의 최종 목적은 이미지 검색이다.
특정 인물의 이미지를 입력(쿼리)하면, 데이터베이스에서 같은 사람의 이미지를 찾아낸다.
Re-ID는 검색 정확도와 속도가 중요한 기준이 된다.
검색의 동작 과정
- 쿼리 벡터 생성
사용자가 입력한 이미지를 CNN을 통해 피처 벡터로 변환하고, 이를 정규화(L2 Norm)하여 벡터 공간에 매핑한다. - 데이터베이스와 비교
생성된 쿼리 벡터를 데이터베이스에 저장된 모든 벡터와 비교하여 유사성(거리)을 계산한다.
벡터 간의 거리가 가까울수록 같은 사람일 가능성이 높다. - 가장 유사한 결과 반환
유사성 계산 결과, 데이터베이스에서 쿼리와 가장 가까운 벡터에 해당하는 이미지를 사용자에게 반환한다.
검색 결과는 보통 유사도 순으로 정렬되며, 가장 유사한 이미지를 상위에 보여준다.
다음에는 위의 이론을 코드로 구현하여 설명하겠습니다.
감사합니다.
끝.
'딥러닝 (Deep Learning) > [08] - 프로젝트' 카테고리의 다른 글
LLMOps Platform 이란? (0) | 2025.04.28 |
---|---|
[05 RE-ID] - 기술 도입의 한계와 고려사항 그리고 해결책 (0) | 2024.12.19 |
[04 Segmentation] - Segmentation Models Pytorch 사용법 (5) | 2024.11.25 |
[04 Segmentation] - Semantic Segmentation 대회에서 사용하는 방법들 (1) | 2024.11.23 |
[04 Segmentation] - PyTorch 에서 메모리 부족할때 해결하는 방법! (Autocast, GradScaler) (1) | 2024.11.21 |