Dacon 구조물 안정성 예측 대회에 참가하면서 겪은 시행착오, 모델 선택의 근거, 그리고 단순한 추론 전처리 변경 하나로 LogLoss 0.02117 → 0.01756을 달성한 과정을 기록합니다.
1. 대회 개요와 문제 정의
이 대회의 과제는 블록으로 쌓은 구조물의 안정성(stable/unstable)을 예측하는 이진 분류 문제입니다. 각 샘플은 동일한 구조물을 front(정면)와 top(상단) 두 가지 뷰에서 촬영한 이미지 쌍으로 구성되어 있습니다.
데이터 규모:
- Train: 1,000개 (stable 50% / unstable 50%)
- Dev: 100개 (stable 52% / unstable 48%)
- Test: 비공개
평가 지표는 LogLoss입니다. LogLoss는 모델의 확률 예측이 실제 레이블과 얼마나 가까운지를 측정하는 지표로, 0에 가까울수록 좋습니다. 단순히 맞았느냐/틀렸느냐가 아니라 얼마나 확신을 가지고 맞았느냐를 평가하기 때문에, 확률 캘리브레이션이 매우 중요한 대회입니다.
LogLoss의 수식은 다음과 같습니다:
$$\text{LogLoss} = -\frac{1}{N}\sum_{i=1}^{N}\left[y_i \log(p_i) + (1-y_i)\log(1-p_i)\right]$$
여기서 $y_i$는 실제 레이블(0 또는 1), $p_i$는 모델이 예측한 unstable 확률입니다. 모델이 정답을 확신할수록(정답 클래스에 높은 확률을 부여할수록) LogLoss가 낮아지고, 오답에 높은 확률을 부여하면 로그 함수의 특성상 매우 큰 패널티를 받습니다.
2. 왜 Vision Transformer인가: CNN에서 ViT로의 전환
2.1 구조물 안정성 예측에서 ViT가 유리한 이유
구조물 안정성 예측은 일반적인 이미지 분류와 다른 특성을 가집니다. 블록의 공간적 배치 관계가 핵심입니다. 어떤 블록이 어디에 놓여 있고, 무게중심이 어떻게 분포하며, 블록 간 접촉면이 어떤 각도를 이루는지를 이해해야 합니다.
CNN(Convolutional Neural Network)은 로컬 패턴에 강합니다. 커널이 이미지의 작은 영역을 슬라이딩하면서 특징을 추출하기 때문에, 텍스처나 엣지 같은 로컬 피처를 잘 잡아냅니다. 하지만 이미지 전체에 걸친 글로벌 공간 관계를 파악하려면 매우 깊은 네트워크가 필요하고, 그래도 한계가 있습니다.
Vision Transformer(ViT)는 근본적으로 다르게 동작합니다. 이미지를 패치(patch) 단위로 분할한 뒤, Self-Attention 메커니즘으로 모든 패치 간의 관계를 직접 계산합니다.
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
이 수식에서 $Q$(Query), $K$(Key), $V$(Value)는 각각 패치 임베딩을 선형 변환한 것이고, $d_k$는 키 벡터의 차원입니다. 핵심은 모든 패치 쌍 사이의 유사도를 계산한다는 것입니다. 이미지 왼쪽 하단의 블록과 오른쪽 상단의 블록 사이의 관계도 single layer에서 직접 파악할 수 있습니다.
구조물 안정성에서 이것이 왜 중요한지 구체적으로 생각해보겠습니다. 예를 들어 8개 블록을 쌓은 탑이 있을 때:
- CNN 관점: 각 블록의 외형은 잘 인식하지만, 맨 아래 블록의 각도가 맨 위 블록의 안정성에 미치는 영향을 파악하려면 수십 개 레이어를 거쳐야 합니다.
- ViT 관점: 첫 번째 Attention 레이어부터 맨 아래 패치와 맨 위 패치의 관계를 직접 계산합니다.
이러한 장거리 의존성(long-range dependency) 포착 능력이 구조물 안정성 예측에서 ViT가 CNN을 압도하는 핵심 이유입니다.
2.2 ViT의 작동 원리
ViT의 전체 파이프라인은 다음과 같습니다:
- Patch Embedding: 입력 이미지를 고정 크기의 패치로 분할하고 각각을 벡터로 변환
- Positional Encoding: 각 패치에 위치 정보를 더해줌 (패치의 공간적 순서 보존)
- Transformer Encoder: Multi-Head Self-Attention + Feed-Forward Network를 $L$번 반복
- Classification Head: [CLS] 토큰 또는 Global Average Pooling → 최종 예측
EVA-Giant의 경우 이미지를 $14 \times 14$ 패치로 분할합니다. $336 \times 336$ 입력을 사용하면 $24 \times 24 = 576$개의 패치가 생성됩니다. 각 패치는 $14 \times 14 \times 3 = 588$ 픽셀의 정보를 담고 있으며, 이것이 고차원 벡터로 프로젝션됩니다.
3. EVA-Giant: 10억 파라미터 ViT의 세계
3.1 EVA 시리즈의 발전
EVA(Exploring the Limits of Masked Visual Representation Learning at Scale)는 BAAI(Beijing Academy of Artificial Intelligence)에서 개발한 대규모 ViT 모델입니다.
EVA의 핵심 아이디어는 이미지-텍스트 대비학습(CLIP)으로 사전학습된 ViT의 Feature를 타겟으로 한 Masked Image Modeling(MIM)입니다. 기존 MIM은 원본 픽셀을 복원하도록 학습했지만, EVA는 CLIP Feature를 복원하도록 학습합니다. 이렇게 하면:
- 원본 픽셀보다 의미적으로 풍부한 표현을 학습
- CLIP의 이미지-텍스트 정렬 지식이 자연스럽게 전이
- 단순 텍스처가 아닌 높은 수준의 시맨틱 정보에 집중
3.2 EVA-Giant의 스펙
이 대회에서 메인 백본으로 사용한 eva_giant_patch14_336.m30m_ft_in22k_in1k의 스펙:
| 항목 | 값 |
|---|---|
| 파라미터 수 | ~1.0B (10억) |
| 패치 크기 | 14×14 |
| 입력 해상도 | 336×336 |
| 임베딩 차원 | 1,408 |
| Transformer 레이어 | 40 |
| Attention Head | 16 |
| 사전학습 | Merged-30M → ImageNet-22K → ImageNet-1K |
30M 규모의 이미지-텍스트 쌍으로 MIM 사전학습 후, ImageNet-22K(1,400만 장)로 fine-tuning, 최종적으로 ImageNet-1K(128만 장)로 fine-tuning된 모델입니다. 이 단계적 사전학습(progressive pre-training)이 EVA-Giant가 다운스트림 태스크에서 강력한 전이 성능을 보이는 비결입니다.
3.3 왜 EVA-Giant를 선택했는가
대회 상위 솔루션을 분석한 결과, 대규모 ViT 백본이 압도적인 성능을 보였습니다. 소규모 데이터셋(1,100개)에서 1B 모델을 쓰는 것이 과적합 위험이 있지 않을까 우려할 수 있지만, ImageNet 사전학습의 풍부한 표현력이 소규모 데이터의 한계를 보완합니다.
직관적으로 설명하면: EVA-Giant는 이미 "물체의 형태, 공간 구조, 물리적 배치"에 대한 방대한 지식을 학습한 상태입니다. 우리가 하는 것은 이 지식을 "이 특정 블록 구조물이 안정적인가?"라는 질문에 답하도록 미세하게 조정하는 것뿐입니다.
4. Dual-View Architecture: 두 시점의 융합
4.1 왜 두 시점이 필요한가
구조물의 안정성은 3차원 공간에서의 물리적 특성에 의해 결정됩니다. 정면(front) 이미지 하나로는 깊이 방향의 기울어짐을 파악할 수 없고, 상단(top) 이미지 하나로는 수직 방향의 균형을 정확히 알 수 없습니다. 두 시점을 결합해야 3차원 구조를 더 완전하게 추론할 수 있습니다.
4.2 공유 백본(Shared Backbone) 전략
Front Image → [Backbone] → Feature F (1408-dim)
↘
Concat → Head → Prediction
↗
Top Image → [Backbone] → Feature T (1408-dim)
같은 백본을 공유합니다. 이것이 중요한 이유:
- 파라미터 효율성: 별도 백본을 쓰면 2B 파라미터가 필요하지만, 공유하면 1B로 충분
- 표현 일관성: 같은 Feature Space에서 두 뷰를 비교하므로 융합이 자연스러움
- 과적합 방지: 1,100개 데이터로 2B 모델을 학습하는 것은 과적합 위험이 극심
4.3 Simple Head: Concat → BN → MLP
최종적으로 사용한 헤드 구조:
Dropout(0.3)
Linear(feat_dim * 2, 256) # 2816 → 256
BatchNorm1d(256)
GELU()
Dropout(0.15)
Linear(256, 2) # 256 → 2 (stable/unstable)
Front Feature와 Top Feature를 단순 Concatenation한 후 작은 MLP로 분류합니다. 이것이 복잡한 Attention Gate Fusion보다 성능이 좋았던 이유는 데이터 규모와 관련이 있습니다. 1,100개라는 매우 작은 데이터셋에서는 복잡한 융합 모듈이 오히려 노이즈를 학습하게 됩니다. 단순한 구조가 일반화 성능에서 유리한 것은 Occam's Razor 원리와 일치합니다.
BatchNorm이 여기서 특히 효과적인 이유: Front와 Top Feature의 스케일이 다를 수 있는데, BN이 이를 정규화하여 학습을 안정화합니다.
5. 학습 전략:
5.1 Merge Dev 전략
가장 큰 성능 향상을 가져온 전략은 train + dev 데이터를 합쳐서 K-Fold 교차검증을 수행한 것입니다.
기존 접근: Train 1,000개로 학습, Dev 100개로 검증
변경 후: Train + Dev = 1,100개를 합쳐서 5-Fold CV
100개의 Dev 데이터를 검증 전용으로 놔두는 것은 이미 작은 데이터셋에서 10%나 되는 데이터를 버리는 셈입니다. 5-Fold CV에서는 각 Fold마다 880개로 학습하고 220개로 검증합니다. 5개 Fold를 모두 학습하면 전체 1,100개를 한 번씩은 학습 데이터로 활용하게 됩니다.
주의점: 이 전략을 사용하면 Dev LogLoss가 매우 낮게(0.0006 수준) 나옵니다. 이는 Dev 데이터의 4/5가 학습에 포함되기 때문이며, 실제 일반화 성능의 지표가 아닙니다. Test LogLoss가 진짜 성능입니다.
5.2 CrossEntropy vs Focal Loss
초기에는 Focal Loss + Label Smoothing을 사용했습니다. Focal Loss는 쉬운 샘플의 가중치를 줄이고 어려운 샘플에 집중하는 손실함수입니다:
$$\text{FL}(p_t) = -\alpha_t (1-p_t)^\gamma \log(p_t)$$
하지만 최종적으로 단순 CrossEntropy가 더 좋은 성능을 보였습니다. 이유를 분석하면:
- 데이터가 balanced(50:50)이므로 클래스 불균형 보정이 불필요
- 1,100개 수준에서는 "어려운 샘플"이 대부분 레이블 노이즈일 가능성이 높아, Focal Loss가 오히려 노이즈에 과적합
- Label Smoothing도 매우 작은 데이터에서는 확률 분포를 불필요하게 퍼뜨림
5.3 Mixup/CutMix 비활성화
Mixup과 CutMix는 두 샘플을 혼합하여 학습 데이터를 증강하는 기법입니다:
$$\tilde{x} = \lambda x_i + (1-\lambda) x_j, \quad \tilde{y} = \lambda y_i + (1-\lambda) y_j$$
이론적으로 강력한 정규화 효과가 있지만, 구조물 안정성 예측에서는 비활성화가 더 좋았습니다.
- 안정적인 구조물과 불안정한 구조물을 0.3:0.7로 섞으면, 결과 이미지는 물리적으로 의미가 없는 유령 같은 구조물이 됩니다
- 모델이 "이 중간 상태의 불안정 확률은 0.7"을 학습하지만, 실제로는 구조물은 안정하거나 불안정하거나 둘 중 하나입니다
- Dual-View에서 Front/Top을 독립적으로 혼합하면 두 뷰의 공간적 정합이 깨집니다
5.4 CosineAnnealingWarmRestarts
스케줄러로 CosineAnnealingWarmRestarts를 사용했습니다. 이 스케줄러는 학습률을 주기적으로 리셋합니다:
$$\eta_t = \eta_{\min} + \frac{1}{2}(\eta_{\max} - \eta_{\min})\left(1 + \cos\left(\frac{T_{\text{cur}}}{T_i}\pi\right)\right)$$
$T_0 = 10$, $T_{\text{mult}} = 2$로 설정하면:
- 0~10 epoch: 첫 번째 사이클 (LR: max → min)
- 10~30 epoch: 두 번째 사이클 (20 epoch, LR 리셋)
Warm Restart의 효과: LR이 다시 올라갈 때 모델이 로컬 최적값에서 탈출할 수 있습니다. 소규모 데이터에서 특히 유용한데, loss landscape이 울퉁불퉁(non-convex)하고 좁은 최적값에 빠지기 쉽기 때문입니다.
5.5 Differential Learning Rate
백본과 헤드에 서로 다른 학습률을 적용했습니다:
- Head LR: 2e-4 — 새로 초기화된 헤드는 빠르게 학습 필요
- Backbone LR: 2e-5 — 사전학습된 가중치는 미세하게만 조정 (10배 낮음)
이것은 Transfer Learning의 핵심 원리입니다. 사전학습된 백본의 초기 레이어는 범용적인 특징(엣지, 텍스처)을 추출하므로 크게 변경하면 안 되고, 후기 레이어와 헤드만 태스크 특화 학습을 해야 합니다.
6. 핵심 개선: Center Crop 추론 전략
6.1 문제 발견
학습 데이터의 이미지를 자세히 관찰하면, 구조물은 이미지 중앙에 위치하고 주변부는 체크무늬 배경이 넓게 차지하고 있습니다. Top View에서는 특히 구조물이 이미지의 매우 작은 영역만 차지합니다.
모델이 학습할 때는 RandomResizedCrop으로 다양한 영역을 보지만, 추론 시에는 전체 이미지를 그대로 Resize하고 있었습니다. 즉:
학습: 이미지의 72~100% 영역을 랜덤하게 크롭 → 구조물 중심으로 학습
추론: 이미지 100%를 그대로 사용 → 배경 정보가 상대적으로 더 많이 포함
이것은 Train-Test Distribution Mismatch입니다. 학습 시와 추론 시 모델이 보는 이미지의 구성이 다른 것입니다.
6.2 솔루션: CenterCrop 90%
해결책은 놀랍도록 단순합니다:
# 변경 전 (추론)
def get_val_transforms(img_size=384):
return A.Compose([
A.Resize(img_size, img_size),
A.Normalize(...),
ToTensorV2(),
])
# 변경 후
def get_val_transforms(img_size=384):
crop = int(img_size * 0.9)
return A.Compose([
A.CenterCrop(crop, crop), # 90% 영역만 사용
A.Resize(img_size, img_size),
A.Normalize(...),
ToTensorV2(),
])
원본 이미지의 상하좌우 5%씩을 잘라내고 중앙 90%만 사용합니다.
6.3 왜 이것이 효과적인가
이 간단한 변경이 LogLoss 0.02117 → 0.01756 (약 17% 개선)을 이끌어낸 이유를 분석합니다.
1) Signal-to-Noise Ratio 향상
이미지의 정보를 Signal(구조물)과 Noise(배경)로 나누면:
- 원본 이미지: Signal 비율 ~40%, Noise 비율 ~60% (특히 Top View)
- CenterCrop 90%: Signal 비율 ~50%, Noise 비율 ~50%
ViT의 Self-Attention은 모든 패치 쌍의 관계를 계산합니다. 배경 패치가 많으면 배경-배경, 배경-구조물 Attention 연산에 계산 예산이 낭비됩니다. 배경을 줄이면 구조물 패치 간의 Attention에 더 집중할 수 있습니다.
2) Train-Test 분포 정합
학습 시 RandomResizedCrop(scale=(0.72, 1.0))은 평균적으로 이미지의 ~86% 영역을 사용합니다. 추론 시 90% CenterCrop은 이 분포에 더 가깝습니다:
- 기존: 학습 ~86% vs 추론 100% → 14% 갭
- CenterCrop: 학습 ~86% vs 추론 90% → 4% 갭
3) Attention Map 집중도 향상
ViT의 [CLS] 토큰이 각 패치에 주목하는 정도(Attention Weight)를 생각하면, 배경 패치가 적을수록 구조물 패치에 대한 Attention이 상대적으로 강화됩니다. 이는 Softmax의 특성에 의한 것입니다:
$$\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}}$$
분모의 배경 패치 항이 줄어들면, 구조물 패치에 대한 확률이 자연스럽게 올라갑니다.
6.4 TTA(Test-Time Augmentation)에도 적용
TTA는 추론 시 같은 이미지에 여러 변형을 적용한 후 예측을 평균하는 기법입니다. 기존 4가지 TTA 변형 모두에 CenterCrop을 기본 적용했습니다:
| TTA 변형 | 변경 전 | 변경 후 |
|---|---|---|
| Base | Resize | CenterCrop 90% → Resize |
| HFlip | Resize → HFlip | CenterCrop 90% → Resize → HFlip |
| Brightness | Resize → BC | CenterCrop 90% → Resize → BC |
| Tight Crop | CenterCrop 90% → Resize | CenterCrop 90% → Resize (동일) |
모든 TTA 변형의 기저가 CenterCrop 90%가 되면서, 앙상블의 각 예측이 모두 구조물 중심으로 정렬됩니다.
7. 5-Fold Ensemble: (테스트 진행중)
7.1 앙상블
5-Fold CV로 학습하면 5개의 독립적인 모델이 생성됩니다. 각 모델은 서로 다른 880개로 학습되었으므로 약간씩 다른 예측을 합니다. 이들의 평균은 개별 모델보다 안정적인 예측을 제공합니다.
수학적으로, 각 모델의 예측을 $f_i(x)$, 실제 값을 $y$라 하면:
$$\text{Var}\left[\frac{1}{n}\sum_{i=1}^{n} f_i(x)\right] = \frac{1}{n^2}\sum_{i,j}\text{Cov}(f_i, f_j)$$
모델들이 서로 독립적(낮은 Covariance)이라면, 앙상블의 분산은 개별 모델의 $\frac{1}{n}$ 수준으로 줄어듭니다. 실제로는 같은 아키텍처를 사용하므로 완전히 독립은 아니지만, 서로 다른 데이터 분할로 학습했기 때문에 상당한 분산 감소 효과가 있습니다.
7.2 Multi-Seed 앙상블으로의 확장
5-Fold 앙상블을 넘어서, seed를 바꿔서 같은 과정을 반복하면 모델 수를 3배로 늘릴 수 있습니다:
- Seed 42: fold 0~4 → 5개 모델
- Seed 123: fold 0~4 → 5개 모델
- Seed 777: fold 0~4 → 5개 모델
총 15개 모델의 앙상블은 5개보다 더 안정적인 예측을 합니다. seed가 다르면 K-Fold 분할이 달라지고, 따라서 각 모델이 보는 학습/검증 데이터가 달라집니다. 이는 Bagging(Bootstrap Aggregating)과 유사한 효과를 냅니다.
8. 개선 과정 타임라인
Phase 1: 기본 파이프라인 구축 (LogLoss ~0.05)
- DINOv2 ViT-L 백본 + Attention Gate Fusion Head
- Focal Loss + Label Smoothing
- Mixup/CutMix 적용
- 단순 Resize 추론
Phase 2: 솔루션 개선 (LogLoss 0.02117)
| 변경 | 효과 |
|---|---|
| EVA-Giant 백본 (1.0B) | 표현력 대폭 향상 |
| merge_dev (1100개 전체 활용) | 데이터 활용 극대화 |
| CrossEntropy Loss | 깔끔한 확률 분포 |
| Mixup/CutMix 제거 | 물리적 의미 보존 |
| Simple Head (Concat→MLP) | 과적합 방지 |
| CosineAnnealingWarmRestarts | 로컬 최적값 탈출 |
| Head LR 2e-4, BB LR 2e-5 | 효율적 전이학습 |
| 5-Fold + 4 TTA 앙상블 | 분산 감소 |
Phase 3: Center Crop 추론 전략 (LogLoss 0.01756)
| 변경 | 효과 |
|---|---|
| Val/추론 CenterCrop 90% | Signal-to-Noise 향상 |
| 전체 TTA에 CenterCrop 기본 적용 | 예측 일관성 향상 |
단 하나의 전처리 변경으로 17% 개선. 이것은 모델 아키텍처나 학습 전략의 변경이 아니라 추론 시 입력 데이터를 어떻게 전처리하느냐의 문제였습니다. 때로는 가장 단순한 변경이 가장 큰 효과를 가져옵니다.
💡 핵심은 주어진 문제에 따라 달라진다는 겁니다. 만약 이미지 분포가 여러 방향이면 이 방법은 통하지 않았을 겁니다.
9. 관련 논문 가이드
이 프로젝트에서 사용한 기술들의 원론 논문을 정리합니다. 논문 이름을 구글링하면 사이트가 바로 나옵니다. 저도 천천히 공부해봐야겠습니다.
Vision Transformer 기초
| 논문 | 핵심 내용 |
|---|---|
| An Image is Worth 16x16 Words (Dosovitskiy et al., 2020) | ViT 원논문. 이미지를 패치로 분할하여 Transformer에 입력하는 아이디어 제시 |
| DeiT: Training data-efficient image transformers (Touvron et al., 2021) | 적은 데이터로 ViT를 효과적으로 학습하는 Knowledge Distillation 전략 |
EVA 시리즈
| 논문 | 핵심 내용 |
|---|---|
| EVA: Exploring the Limits of Masked Visual Representation Learning at Scale (Fang et al., 2022) | CLIP Feature를 타겟으로 한 MIM 사전학습. EVA-Giant 1.0B 모델 |
| EVA-02: A Visual Representation for Neon Genesis (Fang et al., 2023) | EVA의 후속. MIM + distillation 개선, EVA02-Large 등 |
DINOv2
| 논문 | 핵심 내용 |
|---|---|
| DINOv2: Learning Robust Visual Features without Supervision (Oquab et al., 2023) | 자기지도학습 ViT. LVD-142M 대규모 큐레이션 데이터셋. 공간 구조 이해 특화 |
학습 기법
| 논문 | 핵심 내용 |
|---|---|
| Mixup: Beyond Empirical Risk Minimization (Zhang et al., 2018) | Mixup 원논문 |
| CutMix: Regularization Strategy to Train Strong Classifiers (Yun et al., 2019) | CutMix 원논문 |
| Focal Loss for Dense Object Detection (Lin et al., 2017) | Focal Loss 원논문 |
| SGDR: Stochastic Gradient Descent with Warm Restarts (Loshchilov & Hutter, 2017) | CosineAnnealingWarmRestarts의 근간 |
추론 및 앙상블
| 논문 | 핵심 내용 |
|---|---|
| Test-Time Augmentation — 특정 단일 논문보다는 Kaggle 커뮤니티에서 발전한 실전 기법 | 추론 시 여러 변형의 평균으로 예측 안정화 |
| Ensemble Methods: Foundations and Algorithms (Zhou, 2012) | 앙상블 학습의 이론적 기반 |
10. 회고 및 다음 단계
배운 점
- 데이터를 자세히 관찰하라: CenterCrop 아이디어는 이미지를 직접 들여다보고 "배경이 너무 넓다"는 관찰에서 나왔습니다. 어떤 복잡한 모델 변경보다 효과적이었습니다.
- Train-Test 분포를 맞춰라: 학습과 추론의 전처리가 달라지면 모델이 아무리 좋아도 성능이 저하됩니다. RandomResizedCrop으로 학습했으면, 추론도 비슷한 크롭 비율로 맞춰야 합니다.
- 단순함의 힘: Simple Head > Attention Gate, CrossEntropy > Focal Loss, No Mixup > Mixup. 데이터가 작을수록 단순한 접근이 유효합니다.
남은 시도
- Multi-Seed 앙상블: seed 3개 × 5-fold = 15개 모델 앙상블로 추가 분산 감소
- Temperature Scaling: 추론 시 확률 캘리브레이션 (temperature 0.8~1.2 탐색)
- 다중 백본 앙상블: EVA-Giant + DINOv2 + SigLIP 같은 이종 백본 앙상블로 다양성 극대화
'4. [팀] 프로젝트 및 공모전 > 4-4 구조물 안정성 물리 추론 AI 경진대회(DACON)' 카테고리의 다른 글
| [공모전] Vision AI 최종 실험 개인 "연구" 블로그 (2) (0) | 2026.03.30 |
|---|---|
| [공모전] Vision 시각화 검증 상세 분석 "개인 연구용" 블로그 (0) | 2026.03.24 |
| [DACON 공모전] Dinov2_large 모델 분석 및 학습 진행 상황 스터디 (0) | 2026.03.12 |
