Distinctive Image Features from Scale-Invariant Keypoints - 세미나 자료
저자:
발행년도: 2008년
인용수: 0회
논문 링크: [file:///Users/kimtaeyoun/Personal/skk/논문스터디/Distinctive Image Features from Scale-Invariant Keypoints.pdf](file:///Users/kimtaeyoun/Personal/skk/논문스터디/Distinctive Image Features from Scale-Invariant Keypoints.pdf)
0. TL;DR
- SIFT는 스케일·회전에 불변한 키포인트 검출과 128차원 gradient histogram descriptor를 하나의 파이프라인으로 묶어, 서로 다른 시점에서 찍은 이미지 간 대응점 찾기의 표준을 만들었다.
- DoG 극값 검출 → 서브픽셀 보간 → orientation 할당 → 4×4×8 descriptor라는 cascade filtering 구조로, 500×500 이미지 한 장에서 약 2,000개의 안정 feature를 뽑아냈다.
- 4만 개 키포인트 DB에서 최근접/차근접 거리비 0.8 컷으로 오매칭 90%를 걷어내고, Hough transform과 affine 최소자승 검증을 얹어 clutter와 occlusion 속에서도 물체를 인식했다.
1. 왜 이 논문이 흥미로운가
저자는 4만 개 feature가 들어 있는 데이터베이스에 낯선 이미지에서 뽑은 feature 하나를 던져도, 그 하나가 상당한 확률로 정답 짝을 찾아낸다고 보고했다. 그리고 물체 하나를 인식하는 데 필요한 최소 조건을 3개 매칭으로 잡았다. 이미지 전체를 비교하는 대신 국소 패턴 수천 개를 지문처럼 등록해두고 부분 일치로 신원을 확인하는 발상이, 배경이 어수선하고 물체 절반이 가려진 장면에서도 작동한다는 뜻이었다.
읽는 재미는 설계 결정이 하나같이 실험 곡선 위에 얹혀 있다는 점에서 나왔다. 옥타브당 스케일 3개, 사전 스무딩 $\sigma=1.6$, edge 제거 임계 $r=10$, descriptor 값 0.2 clipping, 매칭 거리비 0.8 — 어느 것도 우아한 정리에서 연역되지 않았고, 전부 32장 이미지에 인위적 변환을 가한 repeatability 측정에서 골라낸 값이었다.
나는 학부 때 OpenCV의 SIFT_create()를 아무 생각 없이 갖다 썼다. 파라미터를 건드릴 일도 없었다. 논문을 정독하고 나서야 그 기본값들이 어디서 온 숫자인지 알았고, 딥러닝 이전 시대에 사람이 손으로 feature를 설계한다는 것이 실제로 어떤 노동이었는지를 이만큼 정직하게 보여주는 텍스트가 드물다고 느꼈다.
2. Problem & Why now
풀어야 할 문제는 단순하게 진술됐다. 같은 물체를 다른 거리, 다른 각도, 다른 조명에서 찍은 두 이미지가 있을 때, 어느 픽셀 영역이 어느 픽셀 영역에 대응하는지를 신뢰할 수 있게 찾는 것. 저자는 이 correspondence 문제가 물체 인식, 다중 이미지 3D 복원, 스테레오 매칭, 모션 트래킹의 공통 하부 구조라고 못박으며 논문을 열었다.
그때까지의 주류는 코너 검출이었다. Moravec(1981)의 스테레오 매칭용 검출기를 Harris와 Stephens(1988)가 개선한 계보가 실무를 지배했다. 문제는 이들이 코너를 찾는 게 아니라 미리 정해둔 단일 스케일에서 모든 방향으로 gradient가 큰 지점을 찾는다는 데 있었다. 카메라가 두 걸음 물러서면 그 스케일에서 보이던 구조가 사라졌고, Harris 검출기는 이미지 크기 변화에 그대로 무너졌다.
그 위에 얹힌 매칭 전략도 각자의 취약점을 안고 있었다. Zhang(1995)과 Torr(1995)는 코너 주변의 correlation window로 후보를 고르고 기하 제약으로 outlier를 지웠지만, correlation window 자체가 회전과 affine 왜곡에 약했다. Schmid와 Mohr(1997)는 correlation 대신 회전 불변 descriptor를 써서 대규모 이미지 DB 인식을 처음으로 시연했으나, 검출기는 여전히 Harris였고 스케일 불변성은 없었다. 게다가 회전에 불변한 측정량만 골라 쓰느라 국소 패턴이 가진 정보를 상당 부분 버렸다.
저자가 잡은 인사이트는 두 갈래였다. 첫째, 스케일을 고정 파라미터가 아니라 선택해야 할 대상으로 재정의했다. Lindeberg(1993, 1994)가 정리한 scale selection 이론을 끌어와, 위치 2차원에 스케일을 더한 3차원 공간에서 극값을 찾는 문제로 바꿨다. 둘째, descriptor 쪽에서는 완전 불변을 포기했다. 대신 국소 feature의 상대 위치가 꽤 흔들려도 descriptor 값은 조금만 변하도록 설계해, 평면이 아닌 3D 물체의 시점 변화까지 흡수하는 여유를 확보했다.
3. Background
기반이 되는 개념은 scale space다. 이미지 $I$에 표준편차 $\sigma$의 가우시안을 합성곱해 얻은 $L(x,y,\sigma)$를 $\sigma$ 축으로 쌓아 올린 3차원 볼륨인데, Koenderink(1984)와 Lindeberg(1994)는 이런 연속 스케일 표현을 만들 수 있는 커널이 가우시안뿐임을 보였다.
여기서 스케일별로 크기를 맞춰준 scale-normalized Laplacian $\sigma^2\nabla^2 G$의 극값이 스케일 변화에 안정적인 위치를 준다는 것이 검출기의 이론적 근거가 됐다. 이 논문의 실용적 묘수는 인접한 두 가우시안의 차분(Difference-of-Gaussian)이 그 Laplacian을 사실상 공짜로 근사한다는 관찰이었다.
나머지 도구들도 당대에 이미 손에 있던 것들이다. 2×2 Hessian 고윳값의 비율로 코너와 에지를 가르는 Harris식 판정, gradient 방향을 각도 구간별로 누적하는 orientation histogram, 개별 매칭을 pose 파라미터 공간에 투표시키는 generalized Hough transform, 그리고 고차원 벡터의 근사 최근접 탐색을 위한 k-d tree. SIFT의 기여는 새 수학을 만든 데 있다기보다 이 부품들을 순서와 임계값까지 맞춰 하나의 실행 가능한 파이프라인으로 조립한 데 있었다.
계보를 세우면 Moravec(1981) → Harris & Stephens(1988) → Schmid & Mohr(1997) → Lowe(1999) → 본 논문(2004)으로 이어진다. 저자는 1999년 판에서 이미 스케일 불변 국소 feature를 제시했고, 이 논문은 그 작업의 안정성과 불변성을 개선하면서 파라미터 선택 근거를 실험으로 채운 확장판이라고 스스로 밝혔다.
직전 경쟁자는 완전 affine 불변 계열이었다. Baumberg(2000), Tuytelaars & Van Gool(2000), Mikolajczyk & Schmid(2002) 등은 국소 affine frame에서 이미지를 재샘플링해 평면 표면의 정사영 변화까지 흡수하려 했다. 저자의 반박은 두 가지다. 이들 역시 초기 위치와 스케일을 affine 불변이 아닌 방식으로 정하므로 완전 불변이 아니고, affine frame은 노이즈에 더 민감해 40도 이하 기울기에서는 오히려 scale-invariant feature보다 repeatability가 낮다는 것이다. 3D 물체는 어차피 30도 간격으로 학습 뷰를 찍어야 비평면 변화와 가림을 담을 수 있으니, 더 넓은 affine 불변성의 실익이 크지 않다는 논지였다.
| 방법 | 핵심 아이디어 | 불변성 | 성능·특징 | 한계 |
|---|---|---|---|---|
| Harris corner (1988) | 자기상관 행렬 고윳값 | 회전, 부분 조명 | 빠르고 널리 채택됨 | 스케일 변화에 매우 민감 |
| Schmid & Mohr (1997) | Harris + 회전 불변 descriptor | 회전 | 대규모 DB 인식 최초 시연 | 스케일 불변 없음, 정보 손실 |
| Harris-affine (2002) | 국소 affine frame 정규화 | 회전·스케일·affine | 40도 이상 기울기에서 우위 | 비용 높음, feature 수 적음, 소왜곡에 불안정 |
| SIFT (본 논문) | DoG 극값 + 4×4×8 gradient histogram | 스케일·회전·조명, 시점 부분 | 500×500에 약 2,000 feature, 50도 시점에서 매칭 50% 이상 | 완전 affine 불변 아님, 128차원 비용 |
4. Method
전체 파이프라인은 한 장의 이미지를 입력받아 위치·스케일·방향·128차원 벡터가 붙은 키포인트 목록을 뱉는다. 순서는 고정됐다. 입력 이미지를 2배로 확대하고 가우시안 피라미드를 쌓아 DoG 볼륨을 만들고, 각 픽셀을 26개 이웃과 비교해 극값 후보를 뽑고, 2차 Taylor 피팅으로 서브픽셀 위치를 잡으면서 저대비·에지 응답을 버리고, 남은 점마다 gradient orientation histogram으로 방향을 붙이고, 그 방향 기준으로 회전시킨 16×16 패치에서 4×4×8 히스토그램을 만든다.
인식 단계에서는 이 벡터를 BBF 근사 최근접 탐색으로 DB와 대조하고, Hough transform으로 pose 클러스터를 모으고, affine 최소자승으로 검증했다. 저자는 이 전체를 cascade filtering이라 불렀다. 비싼 연산은 앞 단계를 통과한 소수에만 적용한다는 뜻이었다.
flowchart TD
A[입력 이미지 2x 업샘플 + sigma=1.6 사전 스무딩] --> B[옥타브당 s+3장 Gaussian 피라미드]
B --> C[인접 차분으로 DoG 생성]
C --> D[26-이웃 비교로 극값 후보]
D --> E[3D 2차 Taylor 서브픽셀 보간]
E --> F["대비 컷 |D| < 0.03 + 에지 컷 r=10"]
F --> G[36-bin orientation histogram → 방향 할당]
G --> H[4x4x8 = 128차원 descriptor]
모듈 A: Scale-space extrema detection
스케일 공간은 $L(x,y,\sigma)=G(x,y,\sigma)*I(x,y)$로 정의됐고, 실제 검출은 그 위가 아니라 인접 두 레벨의 차분 위에서 일어났다. 옥타브(=$\sigma$의 두 배)를 정수 $s$개 구간으로 나눠 $k=2^{1/s}$를 쓰고, 옥타브마다 블러 이미지를 $s+3$장 만들어야 극값 탐색이 옥타브 전체를 빠짐없이 덮는다고 저자는 못박았다. 옥타브가 끝나면 $\sigma$가 두 배가 된 이미지를 행·열에서 한 픽셀씩 건너뛰며 리샘플해 다음 옥타브를 시작했다. 샘플링 정밀도는 그대로인데 연산량만 줄어든다.
$$D(x,y,\sigma) = \big(G(x,y,k\sigma)-G(x,y,\sigma)\big)*I(x,y) = L(x,y,k\sigma)-L(x,y,\sigma)$$
이 식이 SIFT의 첫 번째 정체성이다. DoG를 고른 이유가 두 개인데, 하나는 순전히 공짜라는 것이었다. 어차피 descriptor 계산에 블러 이미지 $L$이 필요하니 뺄셈 한 번이면 $D$가 나온다.
다른 하나는 이론적 정당화다. 열확산 방정식 $\partial G/\partial\sigma = \sigma\nabla^2 G$를 유한차분으로 근사하면 $G(k\sigma)-G(\sigma) \approx (k-1)\sigma^2\nabla^2 G$가 되고, 이는 Lindeberg가 진짜 스케일 불변성에 필요하다고 보인 scale-normalized Laplacian이 DoG 안에 이미 들어 있다는 뜻이었다. 상수 $(k-1)$은 모든 스케일에 공통이라 극값 위치를 바꾸지 않는다. $k=\sqrt{2}$처럼 꽤 큰 간격에서도 근사 오차가 검출 안정성에 거의 영향이 없었다고 저자는 보고했다.
극값 판정 자체는 조잡할 만큼 단순했다. 한 픽셀을 같은 스케일의 8개, 위아래 스케일의 각 9개, 총 26개 이웃과 비교해 전부보다 크거나 전부보다 작을 때만 후보로 남긴다. 대부분의 샘플이 첫 몇 번의 비교에서 탈락하므로 비용이 낮았다.
위 그림에서 X로 표시된 픽셀 하나가 동그라미로 표시된 26개 이웃 전체와 비교되는 구조를 확인할 수 있었다. 주목할 점은 비교 대상이 같은 이미지 평면에 갇혀 있지 않다는 것이다. 위아래 스케일의 9개씩이 포함되면서, 이 판정은 "이 위치에서 가장 두드러진 구조가 나타나는 크기"까지 함께 고르는 연산이 됐다. 스케일이 파라미터가 아니라 검출 결과의 일부가 되는 순간이다.
모듈 B: Keypoint localization
1999년 초판은 극값이 발견된 샘플점 좌표를 그대로 키포인트로 썼다. 이 논문은 Brown & Lowe(2002)의 3D 2차 피팅으로 그 자리를 정밀화했다. 샘플점을 원점으로 옮긴 Taylor 전개 $D(\mathbf{x}) = D + (\partial D/\partial \mathbf{x})^T\mathbf{x} + \frac{1}{2}\mathbf{x}^T(\partial^2 D/\partial\mathbf{x}^2)\mathbf{x}$를 미분해 0으로 두면 극값 오프셋이 나온다.
$$\hat{\mathbf{x}} = -\left(\frac{\partial^2 D}{\partial \mathbf{x}^2}\right)^{-1}\frac{\partial D}{\partial \mathbf{x}}$$
Hessian과 1차 미분은 이웃 샘플의 차분으로 근사하므로 3×3 선형계 하나만 풀면 된다. $\hat{\mathbf{x}}$가 어느 축에서든 0.5를 넘으면 극값이 다른 샘플점에 더 가깝다는 뜻이라, 샘플점을 옮겨 다시 보간했다. 그리고 여기서 얻은 $D(\hat{\mathbf{x}}) = D + \frac{1}{2}(\partial D/\partial\mathbf{x})^T\hat{\mathbf{x}}$가 그대로 저대비 필터가 됐다. 픽셀 값을 $[0,1]$로 두고 $|D(\hat{\mathbf{x}})| < 0.03$이면 버렸다.
대비 컷만으로는 부족했다. DoG는 에지를 따라 강하게 반응하는데, 에지 위의 점은 에지 방향으로 위치가 결정되지 않아 작은 노이즈에도 미끄러진다. 저자는 Harris에서 빌려온 트릭으로 이 문제를 처리했다. 2×2 Hessian $H$의 고윳값 $\alpha=r\beta$에 대해 $\mathrm{Tr}(H)^2/\mathrm{Det}(H) = (r+1)^2/r$이므로, 고윳값을 직접 구할 필요 없이 비율만 검사한다.
$$\frac{\mathrm{Tr}(H)^2}{\mathrm{Det}(H)} < \frac{(r+1)^2}{r}, \qquad r = 10$$
이 판정에 드는 비용을 저자는 키포인트당 부동소수 연산 20회 미만으로 계산했다. 값싼 검사를 앞에 두는 cascade 철학이 여기서 가장 노골적으로 드러났다. 233×189 이미지 하나에서 DoG 극값이 832개 나왔고, 대비 컷 후 729개, 곡률비 컷 후 536개가 남았다.
위 네 장면에서 각 필터가 무엇을 골라 버리는지 눈으로 확인할 수 있었다. (b)의 벡터 다발은 화면 전체에 균일하게 퍼져 있지만, (c)로 넘어가면 평탄한 배경 영역의 짧은 벡터들이 먼저 사라진다. (d)에서는 건물 윤곽선을 따라 줄지어 서 있던 점들이 정리됐다. 832→729→536이라는 감소폭 자체보다, 남은 536개가 전부 "두 방향 모두에서 곡률이 있는" 점이라는 사실이 뒤 단계의 안정성을 떠받쳤다.
모듈 C: Orientation assignment
키포인트의 스케일에 가장 가까운 블러 이미지 $L$을 골라, 픽셀 차분으로 gradient 크기 $m(x,y)$와 방향 $\theta(x,y)$를 미리 계산했다. 주변 샘플들의 방향을 36-bin 히스토그램에 누적하되, 각 표를 gradient 크기와 키포인트 스케일의 1.5배 $\sigma$를 갖는 가우시안 창으로 가중했다.
최고 peak의 80% 이상인 peak가 또 있으면 같은 위치·스케일에 방향만 다른 키포인트를 하나 더 만들었다. 전체의 약 15%만 이 복제를 받지만, 매칭 안정성에 기여하는 몫은 그 비율보다 컸다고 저자는 적었다. peak 위치는 인접 3개 값에 포물선을 맞춰 보간했다.
Schmid & Mohr가 택했던 회전 불변 측정량과의 차이가 여기서 갈렸다. 그쪽은 애초에 회전에 안 변하는 양만 골라 쓰느라 쓸 수 있는 측정량이 제한됐고 정보도 버렸다. 이쪽은 방향을 명시적으로 추정해 좌표계를 돌려버리는 쪽을 골랐다. 이후 모든 연산이 그 좌표계 안에서 일어나므로, descriptor 설계는 회전 문제에서 자유로워졌다.
모듈 D: 128차원 descriptor
descriptor는 키포인트 방향으로 회전시킨 16×16 샘플 배열에서 만들어졌다. 각 샘플의 gradient 크기에 descriptor 창 폭의 절반을 $\sigma$로 하는 가우시안 가중을 곱하고, 4×4 부영역마다 8방향 히스토그램을 누적해 $4\times4\times8=128$차원 벡터를 얻었다. 가우시안 창의 역할은 두 가지로 명시됐다. 창이 조금 움직였을 때 descriptor가 급변하지 않게 하는 것, 그리고 미정합 오차의 영향을 가장 크게 받는 바깥쪽 gradient의 비중을 낮추는 것.
왼쪽의 작은 화살표 하나하나가 픽셀 단위 gradient이고, 오른쪽의 굵은 화살표 8개가 한 셀의 방향 히스토그램이다. 그림은 8×8 샘플에서 2×2 배열을 만드는 축소판이지만, 실제 실험은 16×16 샘플에서 4×4 배열을 썼다. 핵심은 왼쪽 샘플 하나가 최대 4 샘플 위치까지 움직여도 여전히 오른쪽의 같은 히스토그램에 기여한다는 점이었다. 정밀한 위치를 버리고 그만큼의 이동 허용치를 산 거래다.
경계 효과는 trilinear interpolation으로 눌렀다. 각 gradient 표를 인접 bin들에 $1-d$ 가중으로 나눠 넣어(여기서 $d$는 bin 간격 단위로 잰 중심까지의 거리), 샘플이 셀 경계를 넘어갈 때 descriptor가 튀지 않게 했다.
조명 대응은 세 줄짜리 후처리로 끝냈다. 단위 길이 정규화가 곱셈형 대비 변화를 지우고, gradient가 픽셀 차분이라 덧셈형 밝기 변화는 애초에 영향이 없다. 남는 건 카메라 포화 같은 비선형 변화인데, 이건 일부 gradient의 크기만 크게 흔들고 방향은 덜 건드린다. 그래서 정규화된 벡터의 각 원소를 0.2로 clipping한 뒤 다시 정규화해, 큰 gradient의 크기 매칭 비중을 낮추고 방향 분포에 무게를 실었다. 0.2라는 숫자는 같은 3D 물체를 다른 조명에서 찍은 이미지들로 정한 값이었다.
학습 전략 — 학습이 없다
SIFT에는 loss도 파라미터 업데이트도 없다. 대신 저자는 야외 풍경·인물·항공·산업 이미지 32장을 모아 회전, 스케일, affine stretch, 밝기·대비 변화, 노이즈를 합성으로 가하고, 변환이 합성이라 정답 대응을 정확히 예측할 수 있다는 점을 이용해 모든 상수를 곡선 위에서 골랐다.
옥타브당 스케일 3개, $\sigma=1.6$, $r=10$, 대비 임계 0.03, clipping 0.2, 거리비 0.8 — 하나도 유도된 값이 아니었다. 이미지 도메인이 결과에 거의 영향을 주지 않았다는 관찰이 이 튜닝 절차를 정당화하는 유일한 근거였다.
5. Experiments
셋업은 위 32장 컬렉션을 축으로 돌아갔다. 스케일은 정답 대비 $\sqrt{2}$ 이내, 위치는 키포인트 스케일 $\sigma$ 픽셀 이내에 들어오면 repeatable로 셌고, descriptor 성능은 4만 개 키포인트 DB에서 최근접 이웃이 정답인 비율로 쟀다. DB 규모 실험만 112장으로 확장했다. 베이스라인 비교는 별도 표가 아니라 Mikolajczyk(2002)의 Harris-affine 수치를 인용하는 방식으로 처리됐다.
첫 결과는 옥타브당 스케일 수였다. 이미지를 무작위 각도로 돌리고 원본의 0.2~0.9배로 축소한 뒤 1% 노이즈를 얹어 매칭시켰더니, repeatability는 스케일 3개에서 최대였고 그 이상에서는 오히려 떨어졌다. 이유가 재밌다. 촘촘히 샘플링하면 극값이 더 많이 잡히지만, 그렇게 늘어난 극값들은 평균적으로 덜 안정해서 변환 이미지에서 다시 검출될 확률이 낮았다.
왼쪽 그래프의 두 곡선은 3에서 봉우리를 만들고 8까지 완만히 하강했다. 그런데 오른쪽 그래프를 보면 키포인트 총수는 물론이고 정답 매칭의 절대 개수도 계속 증가했다. 비율은 3에서 최적이지만 개수는 아니라는 뜻이다.
저자도 물체 인식의 성패가 정답 비율보다 정답 개수에 달린 경우가 많다며, 응용에 따라 더 많은 스케일 샘플이 최적일 수 있다고 인정했다. 이 논문이 3을 고른 근거는 계산 비용이었다. 사전 스무딩 $\sigma$ 실험도 같은 모양이었는데, repeatability가 $\sigma$에 따라 계속 오르는데도 비용 때문에 1.6에서 멈췄다. 대신 입력을 선형 보간으로 2배 확대해 잃어버린 고주파를 벌충했고, 이 한 줄로 안정 키포인트가 거의 4배 늘었다.
강건성 쪽 숫자는 더 인상적이다. ±10% 픽셀 노이즈(3비트 미만 정밀도에 해당)를 넣어도 orientation 할당은 95% 정확했고, 정답 매칭의 방향 분산은 무노이즈에서 2.5도, 10% 노이즈에서 3.9도였다. 검출·방향·매칭 세 곡선의 간격이 노이즈 축을 따라 거의 벌어지지 않았다는 것은, 실패의 주범이 descriptor가 아니라 초기 위치·스케일 검출이라는 뜻이었다. 시점 실험에서는 평면을 50도까지 기울여도 최종 DB 매칭이 50% 이상을 유지했다.
가로축 0도에서 50도까지, 세 곡선이 나란히 내려가는데 최하단의 DB 매칭 곡선이 50도에서 50% 선에 걸쳐 있었다. Harris-affine은 50도까지는 이보다 낮고 70도에서 40%를 지킨다는 게 저자가 인용한 대조군 수치다. 이 교차점이 §3에서 저자가 완전 affine 불변을 포기한 근거였다. 3D 물체는 학습 뷰를 30도 간격으로 찍는 게 정석이라 실전에서 필요한 각도 범위는 그보다 훨씬 좁다.
확장성 실험은 112장 DB를 로그 스케일로 늘리며 진행됐다. 30도 시점 회전과 2% 노이즈를 얹은 조건에서, 정답 최근접 비율은 distractor가 늘수록 완만히 감소했다.
점선(정답 최근접 비율)이 오른쪽으로 갈수록 내려가지만 기울기가 완만했다. 더 중요한 건 실선과의 간격이다. 실선은 위치·스케일·방향이 정확히 잡힌 키포인트 비율로, DB 크기와 무관하니 평평하다. 두 선의 간격이 대규모 DB에서도 좁게 유지됐다는 사실은, 매칭 실패의 원인이 feature가 덜 distinctive해서가 아니라 애초에 검출·방향 할당이 흔들려서라는 진단을 뒷받침했다.
Ablation의 중심은 descriptor 형상이었다. 방향 개수 $r$과 배열 폭 $n$을 바꿔가며 $rn^2$차원 벡터를 만들고, 50도 시점 왜곡 + 4% 노이즈라는 매칭 한계 근처 조건에서 4만 DB 정답률을 쟀다.
$n=1$, 즉 히스토그램 하나짜리 descriptor는 변별력이 형편없었다. 곡선은 $n=4$까지 가파르게 오르다 꺾였다. 방향 16개 곡선이 8개 곡선을 이기지 못한 것도 같은 이유였는데, descriptor가 커질수록 큰 DB에서의 변별력은 좋아지지만 형상 왜곡과 가림에 대한 민감도도 함께 커지기 때문이다. 128차원은 그 두 힘이 균형을 이룬 지점이었다. 더 쉬운 조건에서는 5×5 이상에서도 개선이 이어졌다는 단서를 저자가 덧붙였는데, 128이 보편 최적이 아니라 어려운 케이스 기준 최적이라는 고백에 가깝다.
인식 단계의 상수 하나도 곡선으로 정해졌다. 최근접/차근접 거리비 0.8은 거짓 매칭의 90%를 걷어내면서 정답의 5% 미만만 희생하는 지점이었다. BBF 탐색의 후보 200개 컷도 마찬가지로, 10만 키포인트 DB에서 완전 탐색 대비 약 2자릿수 속도 향상을 주면서 정답 손실은 5% 미만이었다. 0.8 컷 덕분에 애초에 이웃들이 뒤엉킨 어려운 케이스를 정확히 풀 필요가 없다는 점이 BBF와 잘 맞았다고 저자는 설명했다.
6. 직관과 시각 자료
SIFT에서 가장 반직관적인 설계는 매칭 신뢰도를 절대 거리로 재지 않았다는 점이다. 128차원 벡터 사이 유클리드 거리에 전역 임계를 걸면 될 것 같지만, 저자는 이게 작동하지 않는다고 잘라 말했다. descriptor마다 변별력이 다르기 때문이다.
어떤 키포인트는 텍스처가 풍부해 이웃과 멀찍이 떨어져 있고, 어떤 키포인트는 애초에 비슷한 것들 사이에 파묻혀 있다. 그래서 기준을 1등 거리가 아니라 1등과 2등의 비율로 바꿨다. 파노라마 스티칭을 처음 직접 구현했을 때 나도 절대 거리 임계를 먼저 시도했다가, 이미지 쌍마다 임계값을 다시 맞춰야 해서 포기했다. 비율 기준으로 바꾸니 그 손질이 사라졌다.
가로축은 최근접 거리를 차근접 거리로 나눈 값, 세로축은 확률밀도다. 실선(정답)은 0.20.4 부근에 몰려 있고, 점선(오매칭)은 0.81.0 쪽에 무겁게 쏠려 완만하게 퍼졌다. 두 분포가 겹치는 구간이 좁다는 게 이 그림의 전부다. 0.8에 선을 그으면 오매칭의 90%가 오른쪽에 남고 정답은 5% 미만만 잘려나갔다. 저자가 제시한 해석이 통계적으로 깔끔한데, 고차원 공간에서 오매칭이 하나 생기면 비슷한 거리의 다른 오매칭도 여럿 있기 마련이라, 2등 거리가 곧 그 지점의 오매칭 밀도 추정치 노릇을 한다는 것이다.
두 번째로 볼 것은 이 장치들이 실제 장면에서 어떤 그림을 만드는가다. 개별 feature는 틀릴 수 있다는 전제 위에 설계됐으므로, 최종 판정은 개수와 기하 일치로 넘어간다. 3개 이상이 같은 pose에 투표한 클러스터만 affine 최소자승으로 검증하고, Hough bin 오차 범위의 절반 안에 들지 않는 매칭은 outlier로 버린 뒤 다시 푸는 반복을 돌렸다.
왼쪽 학습 이미지의 장난감 기차와 개구리가, 가운데 600×480 장면에서는 다른 물체들 뒤에 상당 부분 가려져 있다. 사람 눈으로도 바로 찾기 어려운 배치다. 오른쪽 결과에서 작은 사각형이 인식에 쓰인 키포인트이고, 사각형 크기가 그 descriptor를 만든 이미지 영역 크기를 나타낸다. 바깥 평행사변형은 최종 affine 변환으로 투영한 학습 이미지 경계선이다. 물체 대부분이 가려졌는데도 노출된 일부에서 나온 매칭만으로 경계가 제자리를 잡았다. 이런 장면 하나를 2GHz Pentium 4에서 0.3초 안에 처리했다는 기록이 붙어 있다.
두 그림을 겹쳐 보면 SIFT의 실행 논리가 드러난다. descriptor는 4×4 히스토그램으로 위치를 일부러 뭉개 시점 변화를 흡수하고, 매칭은 절대 거리 대신 순위 격차로 신뢰도를 매기고, 인식은 개별 매칭을 믿지 않고 3개 이상의 기하 합의만 받아들인다. 세 층 모두가 "각 단계는 틀릴 수 있다"를 전제로 깔았다. 확실성을 한 곳에서 확보하는 대신 불확실성을 세 번 나눠 깎아내는 구조였다.
7. Critical View
가장 먼저 걸리는 대목은 저자 스스로 인정한 불완전 affine 불변성이다. descriptor는 4×4 뭉개기로 시점 변화를 흡수하지만, 그 앞단의 위치·스케일 결정은 affine 불변이 아닌 절차로 이뤄졌다. §5의 시점 곡선에서 50도 이후 매칭이 무너진 것도, DB 확장 실험에서 실패 원인이 distinctiveness가 아니라 localization으로 지목된 것도 같은 병목을 가리켰다. 저자가 내놓은 처방은 Pritchard-Heidrich식으로 affine 왜곡을 준 학습 뷰 4개를 추가하는 것이었는데, DB가 3배로 부풀어 오르는 대가를 치른다. 솔직히 이건 해법이라기보다 문제를 저장 공간으로 밀어낸 미봉책에 가까웠다.
두 번째는 평가 설계다. 32장 이미지에 회전·스케일·affine stretch·노이즈를 합성으로 가한 시뮬레이션이 거의 모든 파라미터 곡선의 근거였다. 정답 대응을 정확히 알 수 있다는 이점은 분명하지만, 실제 실패 모드는 그 목록에 없는 것들이다.
조명 방향이 바뀌면서 생기는 그림자 경계, 모션 블러, 카메라마다 다른 응답 곡선, JPEG 압축 아티팩트. descriptor의 0.2 clipping이 겨냥한 게 바로 비선형 조명인데, 정작 그 검증은 "같은 3D 물체를 다른 조명에서 찍은 이미지들"이라는 한 줄로 끝났다. 실제 인식 데모도 정성적 그림 몇 장이었고, 인식률을 재현 가능한 수치로 보고한 벤치마크는 없었다.
세 번째로 마법의 상수 문제. $\sigma=1.6$, $r=10$, 대비 임계 0.03, clipping 0.2, 거리비 0.8, BBF 후보 200개. 전부 같은 32장에서 나왔고, 도메인이 결과에 거의 영향을 주지 않았다는 관찰 한 줄이 일반화의 유일한 담보였다.
내가 §5를 읽으면서 가장 껄끄러웠던 건 옥타브당 스케일 3개를 고른 논리였다. 정답 매칭의 절대 개수는 계속 증가하는데 비율이 3에서 최대라는 이유로 3을 택했고, 물체 인식은 개수가 중요할 때가 많다고 저자 본인이 인정했다. 여기서 좀 헷갈렸다. 그러면 3은 최적값이 아니라 계산 예산이 정한 값이고, 그 사실이 논문에 최적화 결과처럼 실려 후속 20년의 기본값이 됐다.
구조적 한계도 짚어야 한다. gradient 히스토그램에 기대는 설계상 texture 없는 매끈한 물체에서는 뽑을 feature 자체가 없고, 창문이나 타일처럼 반복 패턴이 깔린 장면에서는 거리비 0.8 컷이 정답까지 함께 잘라낸다. 2등이 늘 1등만큼 가깝기 때문이다. 비강체 변형은 affine 검증 단계에서 통째로 배제된다. Hough 투표를 16 entry로 퍼뜨려 bin 경계 효과를 눌렀지만, pose 공간을 이산화한 데서 오는 오차 자체가 사라지지는 않았다.
재현성 쪽은 더 냉정하게 봐야 한다. 알고리즘 기술은 유사 구현이 가능할 만큼 상세했으나 32장 데이터셋도 코드도 공개되지 않아 표의 숫자를 그대로 재생산할 길은 없었다. 이 논문이 살아남은 건 논문 자체가 아니라 OpenCV와 VLFeat 구현이 사후에 만든 사실상의 표준 덕이었다.
후속 방향은 세 갈래로 갈렸다. 속도 축에서는 SURF와 ORB가 적분 이미지와 이진 descriptor로 128차원 부담을 덜었고, 정확도 축에서는 affine 정규화를 앞단에 얹거나 MSER·edge descriptor 같은 상보적 feature와 결합하는 시도가 이어졌다 — 후자는 저자도 직접 언급한 길이다.
그리고 세 번째 축이 결국 판을 갈아엎었다. LIFT, SuperPoint, LoFTR로 이어지는 학습 기반 계열은 저자가 곡선을 보며 손으로 골랐던 상수들을 데이터에 맡겼다. 흥미로운 건 이들이 SIFT의 파이프라인 형태를 거의 그대로 물려받았다는 점이다. 검출-방향-기술-매칭이라는 분업, 그리고 개별 매칭을 믿지 않고 기하 검증으로 걸러내는 2단 구조는 남았다. 학습이 대체한 건 아키텍처가 아니라 상수였다.
8. Take-aways
- 스케일은 고정 파라미터가 아니라 검출해야 할 미지수다 — 위치 2차원에 스케일을 더한 3D 극값 탐색.
- DoG는 계산 편의와 scale-normalized LoG 근사를 동시에 만족시킨 드문 선택이었다.
- Robustness는 완전 불변이 아니라 적당히 뭉개기에서 왔다 — 4×4 히스토그램과 0.2 clipping.
- 매칭 신뢰도는 절대 거리가 아니라 1등/2등 격차로 재고, 개별 매칭은 3개 이상의 기하 합의로만 인정한다.
- 상수 여섯 개를 곡선 보며 손으로 고른 논문이 20년을 버텼다 — 그 상수들을 학습이 대신한 지금, 파이프라인 형태는 왜 그대로 남았을까.
'PaperReview' 카테고리의 다른 글
| SuperPoint: Self-Supervised Interest Point Detection and Description (0) | 2026.09.03 |
|---|---|
| Harnessing Large Language Models for Training-free Video Anomaly Detection (0) | 2026.09.01 |
| Can Large Language Models Reason and Plan? (0) | 2026.08.05 |
| Deep Neural Networks and Tabular Data: A Survey (0) | 2026.06.24 |
| Problems with Shapley-value-based explanations as feature importance measures (0) | 2026.06.24 |