Related posts
본 프로젝트는 Cross-modal Ship Re-Identification via Optical and SAR Imagery: A Novel Dataset and Method (ICCV 2025) 논문의 개선점을 모색 및 가설 실험하는 것을 목표로 합니다.
링크: https://arxiv.org/abs/2506.22027
본 연구의 대상 논문은 ICCV 2025에 공개된 Cross-modal Ship Re-Identification via Optical and SAR Imagery: A Novel Dataset and Method이며, 문제 설정은 optical 위성 영상과 SAR 위성 영상 사이에서 같은 선박 ID를 다시 찾는 cross-modal ship ReID입니다. Optical 영상은 색상, 윤곽 정보가 비교적 직관적으로 보이는 반면, SAR 영상은 speckle noise, 낮은 시각적 세부 정보 때문에 optical과 매우 다른 형태의 관측값을 제공합니다. 따라서 같은 선박이라도 optical과 SAR feature가 자연스럽게 가까워지기 어렵고, 특히 SAR를 query로 사용하는 SAR to Optical 검색은 optical query보다 더 불확실한 문제가 됩니다. TransOSS는 이 문제를 해결하기 위해 optical과 SAR를 완전히 별도 모델로 처리하지 않고, 입력 초반에는 modality별 tokenizer를 분리하고 이후 transformer encoder는 공유하는 구조를 사용합니다. Cross-modal dual-head tokenizer는 optical patch와 SAR patch를 각각 다른 선형 층으로 embedding하여 저수준 modality 차이를 흡수하고, shared transformer encoder는 두 modality의 feature를 같은 embedding space로 정렬합니다. 또한 modality information embedding은 입력이 optical인지 SAR인지 모델에 알려주며, ship size embedding은 선박의 실제 크기와 비율 정보를 추가하여 resize 과정에서 사라질 수 있는 물리적 단서를 보완합니다. 학습은 optical-SAR pair 기반 contrastive pretraining 이후, HOSS train split에서 ID loss와 triplet loss를 이용해 supervised ReID fine-tuning을 수행하는 two-stage 방식입니다. 다만 논문이 최종 retrieval 평가에서 사용하는 거리는 query/gallery feature 사이의 Euclidean distance입니다. 하지만 방식은 optical query로 SAR gallery를 찾는 방향, SAR query로 optical gallery를 찾는 방향, 두 방향의 난도와 불확실성은 대칭적이지 않습니다. 본 실험의 목적은 TransOSS backbone 자체를 크게 바꾸기 전에, 최종 거리 계산 단계에서 query/gallery modality와 품질 정보를 반영한 asymmetry-aware distance(이하 aa distance)가 성능 개선 가능성을 보이는지 검증하는 것입니다.

Cross-modal Dual-head Tokenizer: 광학 이미지와 SAR 이미지는 물리적 특성이 매우 다르기 때문에, 각각 별도의 선형 층을 가진 Dual-head 구조를 사용하여 독립적으로 임베딩합니다.
참고) HOSS ReID(Hybrid Optical and SAR Ship Re-Identification) 데이터셋


$\mathcal{L}_{\text{pre}} = \frac{\text{ce} \left[ (O \cdot S^T) \times \sqrt{\tau} \right] + \text{ce} \left[ (S \cdot O^T) \times \sqrt{\tau} \right]}{2}$

$\mathcal{L}_{\text{triplet}} = \max (d(a, p) - d(a, n) + \text{margin}, 0)$

SAR 이미지는 광학 이미지에 비해 물체의 세부적인 질감이나 색상 정보를 포함하지 않으며, 이러한 내재적인 특징 부족은 SAR를 쿼리로 사용할 때 ReID 작업을 더 도전적으로 만듭니다.
$\mathcal{L}_{\text{pre}} = \frac{\text{ce} \left[ (O \cdot S^T) \times \sqrt{\tau} \right] + \text{ce} \left[ (S \cdot O^T) \times \sqrt{\tau} \right]}{2}$
기존 modality-shared transformer encoder가 사전 학습에 있어 SAR→optical, optical→SAR 방향으로 같은 가중치를 주어 단순 평균합니다. 이 부분에 착안해 pretrain-loss를 수정하는 방향을 고려했으나, shared encoder의 주 역할이 SAR, optical 두 모달리티 간 불변 특징 추출이기 때문에 다른 방법을 모색했습니다.
→ query-gallery feature 간 거리를 단순 유클리드 거리가 아닌 query 역할에 따른 보정항을 추가하는 방향을 선택했습니다.
공식 깃허브에서 제공한 모델로 추론을 진행했을 때 논문에 제시된 결과와 얼마나 유사한지 확인했습니다.
참고 사항:
| O2S | Optical query -> SAR gallery 검색 |
|---|---|
| S2O | SAR query -> Optical gallery 검색 |
| mAP | 전체 ranking을 보는 retrieval 지표 |
| Rank-1 | gallery의 1등 검색 결과가 정답인지 나타내는 지표 |
| All | optical/SAR query 전체를 쓰고, gallery도 전체를 사용 |
직접 추론한 결과와 논문에 나타난 결과가 크게 차이 나지 않았음을 확인했습니다.
| 평가 항목 | 논문 TransOSS | 공식 체크포인트 평가 | 차이 |
|---|---|---|---|
| All mAP | 57.4 | 57.36 | -0.04 |
| All Rank-1 | 65.9 | 65.91 | +0.01 |
| All Rank-5 | 79.5 | 79.55 | +0.05 |
| All Rank-10 | 85.8 | 85.80 | +0.00 |
| O2S mAP | 48.9 | 48.88 | -0.02 |
| O2S Rank-1 | 33.8 | 33.85 | +0.05 |
| S2O mAP | 38.7 | 38.74 | +0.04 |
| S2O Rank-1 | 29.9 | 29.85 | -0.05 |
논문대로 결과가 직접 재현되는지 사전학습 전 체크포인트를 논문대로 훈련시킨 다음, 공식 최종 checkpoint weights/HOSS_TransOSS.pth를 평가한 값과 비교했습니다.
학습 설정:
| 항목 | 값 |
|---|---|
| 시작 weight | weights/vit_b512_pre.pth |
| DDP | MODEL.DIST_TRAIN True |
| epoch | 200 |
| batch size | SOLVER.IMS_PER_BATCH=32 |
| sampler | softmax_triplet |
| optimizer | SGD |
| base LR | 0.0005 |
| scheduler | cosine scheduler |
| warmup epochs | 5 |
| checkpoint period | 10 |
| eval period | 10 |
| seed | 1234 |
재학습 baseline의 마지막 checkpoint는 공식 checkpoint보다 약간 낮습니다.
| 모델/체크포인트 | mAP | Rank-1 | Rank-5 | Rank-10 |
|---|---|---|---|---|
| 논문 TransOSS | 57.4 | 65.9 | 79.5 | 85.8 |
| 공식 체크포인트 baseline 재평가 | 57.36 | 65.91 | 79.55 | 85.80 |
| 재학습 TransOSS baseline epoch 200 | 56.5 | 63.6 | 78.4 | 86.4 |
가설의 효과를 가볍게 테스트할 목적으로 단순한 aa_distance을 구성하였습니다.
final_distance = (1 - blend) * baseline_distance + blend * qcar_distance
Probabilistic Embeddings for Cross-Modal Retrieval, CVPR 2021
query/gallery 역할별 uncertainty weight를 둡니다.
query_uncertainty_weight[optical, SAR]
gallery_uncertainty_weight[optical, SAR]
같은 SAR 이미지라도 query로 쓰일 때와 gallery 후보로 쓰일 때 retrieval 난도가 다를 수 있습니다. 특히 S2O에서는 SAR가 query가 되고 optical이 gallery가 되므로, modality, query라는 역할 자체가 중요합니다. 이 파라미터는 query modality와 gallery modality의 uncertainty 영향력을 분리합니다.
다음으로, direction bias를 둡니다.
direction_bias[query_modality, gallery_modality]
2 x 2 행렬이므로 네 방향에 별도 bias를 줄 수 있습니다.
optical -> optical
optical -> SAR
SAR -> optical
SAR -> SAR
--epochs 30 \\\\
--batch-size 128 \\\\
--num-instances 4 \\\\
--distance-blend 0.0 \\\\
--o2s-blend 0.5 \\\\
--s2o-blend 0.1 \\\\
| 실험 후보 | 설명 |
|---|---|
| 공식 체크포인트 baseline | 공식 HOSS_TransOSS.pth를 원본 Euclidean distance로 평가 |
| aa_distance only | aa distance만 사용 |
| aa_distance blend025 | 모든 query-gallery pair에 aa distance를 25%만 섞음 |
| aa_distance cross050 | cross-modal pair에만 aa distance를 50% 섞음 |
| aa_distance O2S0.5/S2O0.0 | O2S에만 50% aa 보정, S2O는 보정 없음 |
| aa_distance O2S0.5/S2O0.1 | O2S는 50%, S2O는 10% aa 보정 |
예. O2S0.5/S2O0.0
O2S0.5 = optical query -> SAR gallery pair에는 asymmetry-aware distance를 50% 섞음 S2O0.0 = SAR query -> optical gallery pair에는 asymmetry-aware distance를 안 섞고 baseline distance만 사용
test set split 구분
| Experiment | Split | mAP | R1 | R5 | R10 |
|---|---|---|---|---|---|
| 공식 체크포인트 baseline | All | 57.36 | 65.91 | 79.55 | 85.80 |
| 공식 체크포인트 baseline | O2S | 48.88 | 33.85 | 67.69 | 80.00 |
| 공식 체크포인트 baseline | S2O | 38.74 | 29.85 | 59.70 | 71.64 |
| aa_distance only | All | 44.15 | 40.34 | 70.45 | 80.11 |
| aa_distance only | O2S | 46.37 | 35.38 | 61.54 | 81.54 |
| aa_distance only | S2O | 35.42 | 28.36 | 56.72 | 70.15 |
| aa_distance blend025 | All | 61.15 | 67.61 | 80.11 | 88.07 |
| aa_distance blend025 | O2S | 49.34 | 33.85 | 67.69 | 81.54 |
| aa_distance blend025 | S2O | 38.78 | 29.85 | 59.70 | 73.13 |
| aa_distance cross050 | All | 61.12 | 63.64 | 80.11 | 85.80 |
| aa_distance cross050 | O2S | 50.28 | 36.92 | 69.23 | 81.54 |
| aa_distance cross050 | S2O | 38.02 | 26.87 | 59.70 | 73.13 |
| aa_distance O2S0.5/S2O0.0 | All | 60.31 | 64.20 | 79.55 | 85.23 |
| aa_distance O2S0.5/S2O0.0 | O2S | 49.57 | 36.92 | 69.23 | 83.08 |
| aa_distance O2S0.5/S2O0.0 | S2O | 38.74 | 29.85 | 59.70 | 71.64 |
| aa_distance O2S0.5/S2O0.1 | All | 61.58 | 65.34 | 80.11 | 86.93 |
| aa_distance O2S0.5/S2O0.1 | O2S | 49.73 | 36.92 | 69.23 | 83.08 |
| aa_distance O2S0.5/S2O0.1 | S2O | 38.66 | 29.85 | 58.21 | 73.13 |
distance_blend=0.0
o2s_blend=0.5
s2o_blend=0.1
| Split | Metric | Baseline | QCAR-A | 변화 |
|---|---|---|---|---|
| All | mAP | 57.36 | 61.58 | +4.22 |
| All | R1 | 65.91 | 65.34 | -0.57 |
| O2S | mAP | 48.88 | 49.73 | +0.85 |
| O2S | R1 | 33.85 | 36.92 | +3.07 |
| S2O | mAP | 38.74 | 38.66 | -0.08 |
| S2O | R1 | 29.85 | 29.85 | +0.00 |