PaperReview

Recognition in Terra Incognita

Black940514 2026. 5. 20. 17:20

Recognition in Terra Incognita - 세미나 자료

저자: Sara Beery, Grant van Horn, Pietro Perona
발행년도: 2018년
인용수: None회
논문 링크: http://arxiv.org/abs/1807.04975v2
arXiv ID: 1807.04975




0. TL;DR


📌 핵심 요약
  • 카메라 트랩으로 촬영된 동물 이미지에서 "훈련 위치 vs 새 위치(cis vs trans)" 일반화 격차를 정량화한 최초의 벤치마크다.
  • SOTA 분류기는 trans-location에서 top-1 error가 92~140% 늘었다 — 같은 종, 같은 지역인데 배경만 바뀌어도 무너졌다.
  • "현재 CV 모델은 시각 개념을 추상화하지 않고 배경을 외운다"는 가설을 통제 실험으로 입증한 도메인 일반화 논문이다.


1. 왜 이 논문이 흥미로운가


ClarifAI는 알프스 초원에 선 소를 "Cow 0.99"로 맞췄지만, 같은 소를 해변으로 옮기자 "No Person, Beach"로 답했다. 논문 첫 페이지 Figure 1이 보여준 장면이다. 모델은 "소"라는 개념이 아니라 "풀밭에 서 있는 네발 짐승"을 학습했던 셈이라고 저자들은 지적했다.


저자들은 이 직관을 통제 실험으로 옮겼다. 고정형 카메라 트랩은 photographer bias가 없고 시점 변화도 거의 없어, 오직 배경 일반화만 순수하게 측정할 수 있는 드문 setup이라는 점에 주목했다. 제목 "Recognition in Terra Incognita(미지의 땅에서의 인식)"는 이후 DomainBed를 비롯한 OOD 벤치마크에서 표준 도메인 명칭으로 굳었다. 2017년 "AI가 인간 수준에 도달했다"는 분위기에 정면으로 reality check를 던진 논문으로 자리매김했다.




2. Problem & Why now


문제는 단순했다. detection·classification 모델이 훈련 분포 바깥의 새로운 환경(배경, 조명, 시점)에 얼마나 일반화하는지 정량 측정할 표준 벤치마크가 없었다. 모델이 "고양이"를 학습한 것인지, "거실 소파 위 털 뭉치"를 학습한 것인지 분리해 잴 척도가 부재했다.


ImageNet·COCO·PascalVOC는 photographer bias가 깊었다. 사람이 찍은 사진은 피사체가 중앙에 놓이고 클래스 분포도 비교적 균형이라, 환경 변화의 효과를 분리해 측정하기 어려웠다. iNaturalist나 CUB200 같은 자연 데이터셋도 사정은 비슷했다 — 누가, 어디서, 어떤 광선에서 찍었는지가 결과에 뒤섞여 들어갔다.


Snapshot Serengeti는 225개 위치·약 300만 장이라는 규모를 갖췄지만 sequence 단위 라벨만 제공했고 bbox가 없어 controlled experiment에 부적합했다. eMammal 기반 deep classification 후속 연구는 top-1 38.31%를 보고했으나 cis/trans 구분이 없는 단일 분포 평가였다고 저자들은 짚었다.


저자들이 내놓은 인사이트는 카메라 트랩이 도메인 일반화의 자연 실험실이라는 관점이었다. 카메라는 한자리에 고정돼 있고, 동물의 출현이 자동으로 트리거되며, 인간이 구도를 잡지 않는다. 위치 변수를 제외한 거의 모든 nuisance factor를 묶어두고 오직 "배경이 바뀌면 어떻게 되는가"만 물을 수 있는 환경을 만들었다.


이 setup 위에서 같은 종을 본 적 있는 위치와 본 적 없는 위치에서 각각 평가하는 cis/trans split이 제안됐다. 클래스 분포는 거의 동일하게 유지한 채 배경만 갈아치운다는 점이 프로토콜의 핵심이라고 저자들은 강조했다.




3. Background


사전지식으로 domain adaptation, covariate shift, transfer learning의 개념이 깔린다. 아키텍처 측면에서는 Faster-RCNN(detection)과 Inception-v3(classification)가 baseline으로 쓰였고, 단순 background subtraction과의 비교도 일부 포함됐다고 저자들은 적었다.


관련 연구 계보를 따라가면 흐름이 뚜렷하다. ImageNet·COCO가 IID 가정 위에 세운 거대 벤치마크 시대를 열었고, Snapshot Serengeti가 카메라 트랩 도메인에 대규모 라벨을 입혔다. 그 뒤로 eMammal 기반 deep classification 연구가 카메라 트랩 영상에 CNN을 적용해 top-1 38.31%를 기록했고, 본 논문은 여기에 cis/trans split + per-instance bbox라는 두 가지 무기를 더했다.


직전 SOTA와 본 논문의 결정적 차이는 평가 프로토콜이었다. 기존 연구는 같은 위치 안에서 train/test를 나누거나 모든 위치를 섞어 평가했지만, 본 논문은 train에 등장한 적 없는 위치만 모아 별도 test set으로 묶었다. 같은 미국 남서부 지역, 같은 종 집합, 같은 카메라 모델인데 단지 카메라가 놓인 자리만 다른 set이다.


데이터셋 핵심 아이디어 라벨 단위 일반화 평가 한계
ImageNet/COCO 여러 사진가, 넓은 배경 분포 per-image bbox/class 같은 분포 내 평가 photographer bias, 배경/주체 분리 불가
Snapshot Serengeti 225 위치 카메라트랩 3M장 sequence 단위 species 일반화 측정 불가 bbox 없음, sequence 라벨 모호
eMammal CNN (직전 SOTA) 카메라트랩에 Inception 적용 per-image species 단일 split 평가 cis/trans 구분 없음
CCT-20 (본 논문) 20 위치 고정 카메라, cis/trans 분리 per-instance bbox cis vs trans 명시적 비교 같은 지역(SW US) 내 평가, open-set 미포함


4. Method


저자들이 풀려고 한 문제는 단순했다. "모델이 새 위치에서 얼마나 무너지는가"를 한 줄의 숫자로 환산하는 일이었다. 전체 파이프라인은 20개 카메라 위치에서 수집한 sequence(1~5프레임) 이미지를 위치 단위로 cis/trans 분할하고, Inception-v3 분류기와 Faster-RCNN 검출기를 학습한 뒤, 프레임 단위와 sequence 단위 두 가지 스케일에서 평가하는 구조였다. 입력은 raw camera trap 이미지, 출력은 cis vs trans 두 분포에서 측정된 top-1 error와 mAP, 그리고 그 격차였다.


flowchart LR
  A[20 loc<br/>57,868 img] --> B{Location split}
  B -->|10 loc · even days| C[Train 13.5K]
  B -->|10 loc · odd days| D[Cis-test 15.8K]
  B -->|9 loc| E[Trans-test 23.3K]
  C --> F[Inception-v3<br/>Faster-RCNN]
  F --> G[Frame eval]
  F --> H[Seq: MostConf / Oracle]
  G --> I[Cis vs Trans gap]
  H --> I

모듈 A: CCT-20 — 통제된 도메인 일반화 실험실


데이터셋의 출발점은 USGS·NPS가 미국 남서부 사막에 깔아둔 카메라 트랩이었다. 저자들은 140개 위치 중 20개만 뽑아 57,868장으로 좁혔다. 같은 지역(SW US)·같은 동식물군을 묶어둔 채 "오직 카메라가 놓인 자리"만 갈아끼우기 위한 선택이었다.


라벨은 16개 클래스(15종 + empty)였고, MTurk에서 이미지당 3~10명의 워커가 박스를 그렸다. Branson et al.의 crowdsourcing 합의 방식으로 ground truth box를 뽑고, IoU 임계값은 PascalVOC식 0.5로 고정했다. COCO식 IoU 평균은 박스 정밀도 편차가 크다는 이유로 배제했다고 저자들은 적었다.


데이터의 결은 통상적인 ImageNet과 정반대다. 위치별 클래스 분포가 long-tailed하고, 같은 위치 안에서도 종 분포가 들쭉날쭉했다. 저자들이 이 raw 분포를 그대로 둔 이유는 명확했다. 생물학자가 실제로 마주하는 데이터를 흉내내야 일반화 측정이 현실적이라는 판단이다. 균형 잡힌 ImageNet 시뮬레이션은 이 논문의 목적 자체를 무너뜨린다.


서로 다른 세 위치에서 찍은 bobcat과 coyote — 같은 종인데 카메라가 달라지면 영상의 결이 완전히 바뀐다는 점을 보여준다


위 그림에서 행마다 위치와 카메라가 다른데 1·2행은 IR, 3행은 white flash를 쓴다는 사실이 한눈에 드러났다. 같은 bobcat이라도 어떤 컷은 야간 IR의 흐릿한 실루엣이고, 어떤 컷은 주광에 가까운 흰빛이다. 위치 변경이 단순한 "배경 픽셀 교체"가 아니라 센서 모달리티·조명·구도가 묶음으로 바뀌는 사건임이 이 한 장으로 정당화됐다. cis/trans split의 분리력이 어디서 오는지를 시각적으로 못박은 그림이다.


모듈 B: Cis/Trans split 프로토콜


핵심 trick은 분할 방식에 있었다. 9개 위치는 trans-test로, 1개는 trans-val로 통째로 빼두었다. 남은 10개 위치에서는 짝수 날(even days)을 train, 홀수 날(odd days)을 cis-test로 가르고, train 데이터의 5%를 cis-val로 떼어냈다. 최종 분량은 13,553 train / 3,484 cis-val / 15,827 cis-test / 1,725 trans-val / 23,275 trans-test로 정착됐다.


왜 단일 날짜가 아닌 odd/even interleave였을까. 저자들은 single-date split 실험에서 vegetation과 종 출현 분포의 계절 변화가 추가 generalization 노이즈로 새어들어왔다고 보고했다. 날짜를 interleave하면 식생 변화가 train과 cis-test 양쪽에 균등하게 흩어지고, 남는 차이는 위치(=배경) 하나로 수렴한다. 깔끔한 통제다.


모듈 C: Sequence 활용 정책 — MostConf vs Oracle


카메라 트랩은 트리거당 1~5프레임 sequence를 찍는다. 이 시간 정보를 모델이 얼마나 활용할 수 있는지를 묻기 위해 저자들은 두 가지 sequence 메트릭을 정의했다.


$$
\text{MostConf}(S) = \mathbb{1}!\left[\arg\max_{f \in S} , p(\hat{y}_f \mid f) \text{ 의 } \hat{y}_f = y_S\right]
$$


$$
\text{Oracle}(S) = \mathbb{1}!\left[\exists, f \in S : \hat{y}_f = y_S\right]
$$


첫 식은 sequence 전체에서 confidence가 가장 높은 프레임의 예측을 sequence의 답으로 채택하는 실전형 규칙이다. 두 번째 식은 한 프레임이라도 정답이면 맞춘 것으로 간주하는 낙관적 상한이다. Oracle은 deploy에서 쓸 수 없는 지표지만, "시간 정보가 잠재적으로 얼마나 많은 사례를 구제할 수 있는가"의 천장을 그어준다.


일반화 격차의 수식 정의


논문의 정체성 수식은 결국 이 한 줄로 정리됐다.


$$
\text{Gap}(%) = \frac{\text{Err}{\text{trans}} - \text{Err}{\text{cis}}}{\text{Err}_{\text{cis}}} \times 100
$$


이 수식이 의미하는 바는 절대 error가 아니라 상대 증가율로 일반화 능력을 잰다는 것이었다. 절대값으로 비교하면 어려운 데이터셋과 쉬운 데이터셋의 차이가 섞여버리지만, 상대 증가율은 모델이 "같은 종을 새 배경에서 얼마나 더 못 맞히는가"만 분리해서 보여준다. 이후 DomainBed 계열 OOD 벤치마크가 이 형태의 상대 격차를 받아쓰게 된 이유다.


학습 전략도 한 가지 트릭이 있었다. 모든 실험에서 두 개의 best model을 저장했다. cis-val에서 최고를 찍은 모델(분포 내 best), trans-val에서 최고를 찍은 모델(일반화 best). early stopping 기준이 둘로 갈리는 이유는 자명하다. cis-val로만 검증하면 trans 성능이 더 나빠지는 시점을 지나칠 수 있기 때문이다. 두 모델을 따로 보존해 양 분포에서의 best case를 동시에 보고하는 정직한 셋업이었다.




5. Experiments


셋업은 두 갈래였다. Classification은 Inception-v3를 ImageNet으로 pretrain한 뒤 lr 0.0045·rmsprop·momentum 0.9·입력 299² 조건에서 fine-tune했다. augmentation은 ≥65% 영역 random crop, horizontal flip, color distortion. Detection은 Faster-RCNN을 ResNet-101과 Inception-ResNet-v2(atrous conv) 두 backbone으로 돌렸고, COCO pretrain·이미지 max dim 1024·SGD momentum 0.9·lr 0.0003에서 90k·120k step마다 10배 감쇠했다. 평가 메트릭은 IoU≥0.5 PascalVOC식 mAP다.


메인 결과는 충격적이었다. Table 1 기준 full image classification은 cis 19.06% → trans 41.04%, +115% error 증가였다. bbox crop으로 잘라 background 비중을 줄이자 cis 8.14% → trans 19.56%로 절대값은 낮아졌지만 격차는 오히려 +140%로 벌어졌다. 배경을 잘라내도 일반화는 더 나아지지 않았다. empty image를 제거해 "배경만 외우는" 효과를 줄여보려 한 시도도 cis 20.83% → 19.06%로 미미하게만 움직였다고 저자들은 적었다.


Sequence 정보를 얹으면 격차가 일부 줄었다. MostConf로 bbox classification은 cis 7.06% / trans 15.77%(+123%), Oracle은 5.52% / 12.06%(+118%)였다. 시간 정보가 어느 정도 구제하지만, Oracle 상한에서조차 92~118% 격차가 남았다는 점이 핵심이었다. 더 많은 프레임으로도 못 메우는 구조적 갭이 존재했다.


클래스당 학습 샘플 수와 error의 관계 — cis와 trans 곡선이 평행하게 어긋나 있어 단순 데이터 증량으로는 격차를 좁히기 어렵다는 사실이 드러난다


위 그림에서 best-fit line의 $r^2 = 0.261$로 fit이 강하지는 않았지만 추세는 또렷했다. cis-loc에서 5.33% bbox error에 도달하려면 클래스당 500 sample이면 충분한데, trans-loc에서 같은 error에 닿으려면 10,000 sample, 즉 20배가 필요했다. 곡선이 평행에 가깝게 위아래로 어긋난다는 점이 결정타다. 데이터를 아무리 부어도 격차의 기울기 자체가 좁혀지지 않는다는 뜻이며, 저자들은 이를 "scale-only 해법으로는 환경 변화를 못 메운다"는 직접 증거로 제시했다.


Detection 결과는 결이 달랐다. Table 2에서 sequence 없이도 ResNet 77.10 → 70.17 mAP, Inception 77.57 → 71.37 mAP로 error 증가는 30% 수준에 머물렀다. 분류기의 +115%와 비교하면 4분의 1 정도다. MostConf를 켜면 cis·trans가 모두 ~85% mAP로 수렴하면서 격차가 약 5%로 좁혀졌다. detection은 "물체가 있다 vs 없다"라는 더 추상적인 신호를 다루기에 배경 변화에 덜 민감하다는 해석이다. 다만 trans-loc의 PR curve는 recall 95% 지점에서 precision 1%까지 무너졌고, 운영점이 약하다는 한계는 남았다.


Ablation에서 가장 의미 있는 신호는 두 가지였다. 첫째, empty image 제거 실험이 효과가 거의 없다는 결과는 "모델이 배경을 외운다"는 가설을 강화했다. 둘째, 저자들은 Ganin et al.의 unsupervised DA를 multi-domain으로 확장해 적용했지만 baseline 대비 개선이 없었다고 한 줄로 보고했다. 안 통했다. 더 깊은 원인 분석 없이 future work로 넘긴 점이 이 논문의 약점이지만, 동시에 "단순 DA로는 안 된다"는 명료한 메시지이기도 했다.


학습 위치 수 N과 validation 위치를 바꿔도 cis/trans 격차가 흔들리지 않았다는 robustness 점검 결과


위 그림에서 N=1, 2, 3, 5, 10으로 위치 수를 바꿔도 trans 곡선의 기울기와 절편이 거의 그대로였다. 우측의 loss curve에서도 trans-val 1·2·3으로 validation을 갈아끼웠을 때 test loss가 안정적으로 유지됐다. 결국 본 논문의 격차 보고가 "위치 10개를 운 좋게 뽑은 결과"가 아니라 셋업에 robust한 신호라는 sanity check였다. 더 흥미로운 footnote는 supplementary에서 등장했다. 위치당 이미지를 1/4, 1/2, 전체로 늘려도 trans accuracy가 80.6%·83.0%·83.4%로 거의 평탄했다는 결과다. 위치 다양성이 아닌 위치당 데이터량을 늘리는 전략은 효과가 없었다.




6. 직관과 시각 자료


가장 마음에 박히는 정성 사례는 sequence 단위 trans-detection 실패 모음이었다. 단일 프레임만 보면 모델이 운 나쁘게 틀렸다고 둘러댈 수 있지만, sequence 전체에서 confidence가 끝까지 안 올라온 경우는 변명의 여지가 없다.


새 위치의 sequence에서 끝내 confidence 0.2를 못 넘긴 trans-detection 실패 — 빨강은 모델 예측, 파랑은 정답


위 이미지는 세 가지 다른 trans-loc sequence를 한데 모았다. 첫 두 sequence는 ROI가 작은 새가 잡혀 있는데 조명 또는 위장이 더해져 confidence가 모든 프레임에서 0.2를 못 넘었다. 세 번째 sequence는 opossum이 첫 프레임에만 희미하게 나타났고 이후 프레임에서는 시야 밖으로 나가버렸다. 이 그림이 드러낸 통찰은 두 가지였다. 첫째, sequence 정보가 만능이 아니라는 점이다. nuisance factor가 sequence 전체에 깔리면 시간 정보로도 구제 불가다. 둘째, 같은 종이라도 trans-loc에서는 ROI·조명·occlusion 같은 6대 nuisance factor가 결합해 등장하는 빈도가 높았다. 결국 모델이 학습한 것은 "동물의 시각 개념"이 아니라 cis-loc에서 자주 보던 nuisance 패턴 조합이었다는 결론으로 귀결됐다.


bobcat을 cat 또는 raccoon으로 오분류한 sequence — 익숙하지 않은 pose 하나가 fine-grained 구분을 통째로 무너뜨렸다


위 그림의 왼쪽 산점도에서 cis-loc과 trans-loc의 클래스별 test 샘플 수가 대각선에 가깝게 분포한다는 사실이 확인됐다. 즉, 두 분포의 클래스 빈도 자체는 닮아 있었다. trans에서 error가 폭증한 원인은 class imbalance가 아니라는 sanity check다. 우측의 line fit은 Fig. 5의 best-fit이 어떻게 그어졌는지를 보여주는 실제 예시다. 점들이 두 자릿수 분산을 갖고 흩어진 가운데 회귀선이 안정적으로 추세를 잡아냈다. 핵심 메시지는 분명하다. 격차의 원인은 데이터 양도, 클래스 분포도 아닌 오직 배경 그 자체라는 점을 이 그림이 도장처럼 찍었다. cis/trans라는 단순한 칼이 왜 OOD 벤치마크의 표준이 되었는지를 한 장으로 설명한 셈이다.




7. Critical View


저자들이 가장 솔직하게 비워둔 자리는 "왜 안 됐는가"의 해명이었다. Ganin et al.의 multi-domain unsupervised DA를 확장해 적용했지만 baseline 대비 개선이 없었다는 보고는 단 한 줄로 처리됐다. 내가 이 대목을 읽을 때 솔직히 좀 헷갈렸다. 20개 위치라는 풍부한 domain label이 있는데도 adversarial alignment가 안 통한 이유가, gradient reversal의 학습 불안정 탓인지, feature가 이미 배경에 강하게 얽혀 풀리지 않는 탓인지 본문만으로는 가를 수 없었다. 음성 결과를 한 줄로 묻어둔 것은 후속 연구가 같은 함정을 다시 밟게 만든다.


평가 범위의 좁음도 짚어야 한다. CCT-20은 같은 American Southwest 사막권 안에서 위치만 바꾼 setup이다. 즉 측정된 격차는 "같은 생물군계 내 배경 교체"의 격차이지, 사막 → 열대우림 같은 biome shift의 격차가 아니다. 저자들이 "Terra Incognita"라는 거창한 이름을 붙였지만 실제로 밟은 땅은 사막 한 구역에 머물렀다고 보는 게 정확하다. open-set(새 종)은 아예 평가에 포함되지 않았고, 이 부분이 야생 모니터링의 실제 운영 시나리오와 가장 동떨어진 약점이다.


아키텍처 종속성도 의심해볼 필요가 있다. 모든 결론이 Inception-v3 + Faster-RCNN(ResNet-101 / Inception-ResNet-v2) 위에 서 있다. 2017~18년 기준으로는 합리적 선택이었지만, 저자가 "모델은 배경을 외운다"고 본 현상이 표현 능력의 한계인지 학습 신호의 한계인지를 한 아키텍처만으로 가르긴 어렵다. 이후 self-supervised pretraining, ViT, CLIP 계열이 이 격차를 얼마나 좁히는지가 자연스러운 후속 질문이 됐고, 실제로 DomainBed 계열 연구가 그 답을 부분적으로 채워나갔다.


재현성 측면은 양호한 편이었다. CCT-20 데이터셋과 라벨이 공개됐고, LILA BC를 통한 후속 확장도 이뤄졌으며, 학습 하이퍼파라미터(lr, optimizer, augmentation, step decay 시점)가 본문에 박혀 있었다. 다만 두 개의 best model(cis-val best / trans-val best)을 동시에 저장한 셋업이 일반화 격차 수치를 어느 쪽으로 보고하는지에 따라 인상이 달라진다는 점은 짚어둘 만했다. 저자가 정직하게 양쪽을 다 보고했지만, "Gap" 한 줄을 인용할 때 어느 모델 기준인지가 흐려지는 후속 인용이 적지 않았다.


후속 연구 방향은 세 갈래로 자연스럽게 갈렸다. 첫째, context decoupling — 배경과 객체 표현을 학습 단계에서 명시적으로 분리하려는 invariant feature learning 계열. 둘째, sequence 정보를 단순 confidence가 아닌 attention·memory로 활용하는 시간적 모델링. 셋째, MegaDetector처럼 species-agnostic detector를 먼저 돌리고 crop 위에서 분류하는 2-stage 파이프라인. 본 논문의 bbox crop 실험이 절대 error를 절반으로 낮춘 결과가 이 방향의 정당성을 일찌감치 보여줬다고 본다. 다만 crop 후에도 격차가 +140%로 더 벌어졌다는 사실은, crop이 만병통치약이 아니라 새로운 nuisance(작은 ROI·잘림)를 안고 들어온다는 경고이기도 했다.




8. Take-aways


  1. Cis/Trans split은 카메라 트랩이라는 자연 실험실 위에서 배경 일반화만 순수 측정하게 만든 단순한 칼이었다.
  2. Classification은 trans에서 top-1 error가 92~140% 늘어 무너졌지만, detection은 격차가 30%에 그쳤다.
  3. 데이터 20배·sequence Oracle 상한으로도 격차를 다 메우지 못했다 — scale-only 해법은 천장이 있었다.
  4. 저자들이 시도한 multi-domain adversarial DA는 baseline을 넘지 못했고, 왜 안 됐는지의 해명은 비어 있었다.
  5. 같은 사막 안에서만 측정된 "Terra Incognita"였다 — 진짜 미지의 땅은 그래서 어디부터인가.