--- license: mit tags: - kaggle - image-retrieval - re-identification - jaguar - eva02 - dinov2 - arcface --- # Jaguar Re-Identification - Model Artifacts Kaggle "[Jaguar Re-Identification Challenge](https://www.kaggle.com/competitions/jaguar-re-id)" コンペティションの学習済みモデル重み・サブミッション・設定ファイルのバックアップ。 ## Best Score **Public LB 0.948** (exp004 + exp005 weighted ensemble, w=0.7/0.3) ## Contents ### Model Weights (`weights/`) | Experiment | Description | LB Score | File | Size | |------------|-------------|----------|------|------| | exp004/000 | EVA-02-L-448 + GeM + ArcFace + Jaccard Rerank + Optimal Blend (10ep) | **0.946** | `weights/exp004_0938_optimal_blending/000/best_model.pth` | ~1.2GB | | exp005/000 | Pseudo-Labeling fine-tune on exp004 (5ep) | 0.937 | `weights/exp005_pseudo_labeling/000/best_model_finetuned.pth` | ~1.2GB | | exp006/001 | DINOv2 ViT-L-518 + GeM + ArcFace (20ep) | 0.925 | `weights/exp006_dinov2/001/best_model.pth` | ~1.2GB | ### Submissions (`submissions/`) 各実験の推論結果 CSV (baseline, TTA, rerank, optimal_blend)。 ### Configs (`configs/`) 各実験の Hydra 設定ファイル (config.yaml + exp/*.yaml)。 ### Docs & Logs (`docs/`, `logs/`) - `docs/experiments.md`: 全実験結果・知見集約 - `docs/TODO.md`: タスク管理 - `docs/KAGGLE_DIRECTION.md`: コンペ固有ワークフロー - `logs/Log_*.md`: 日別開発ログ ## Experiment Summary | Experiment | Backbone | Epochs | Best Loss | Accuracy | LB | |------------|----------|--------|-----------|----------|----| | exp002/000 | MegaDescriptor-B-224 | 25 | - | - | 0.781 | | exp003/000 | EVA-02-L-448 | 10 | - | - | 0.921 | | exp003/001 | EVA-02-L-448 | 20 | 0.3035 | 96.78% | 0.913 | | **exp004/000** | **EVA-02-L-448** | **10** | **0.1355** | **98.47%** | **0.946** | | exp004/001 | EVA-02-L-448 | 20 | 0.0481 | 99.42% | 0.945 | | exp005/000 | EVA-02-L-448 (PL) | 5 | 0.0731 | 99.20% | 0.937 | | exp006/000 | DINOv2-L-518 | 10 | 0.3982 | 95.14% | 0.897 | | exp006/001 | DINOv2-L-518 | 20 | 0.0827 | 98.94% | 0.925 | | exp007/000 | EVA-02-L-448 (LwLR+W+EMA) | 10 | 4.4556 | 48.94% | - | | exp007/001 | EVA-02-L-448 (LwLR0.95+W+EMA) | 10 | 0.3466 | 95.56% | - | | exp007/002 | EVA-02-L-448 (W+EMA) | 10 | 0.1904 | 97.83% | - | | **Ensemble** | **exp004+exp005 (w0.7/0.3)** | - | - | - | **0.948** | ## Key Insights - **EVA-02 Large 448px** が最も効果的なバックボーン (MegaDescriptor-B-224 比 LB +0.140) - **Jaccard Re-ranking + Optimal Blending** (20% raw + 80% reranked) が後処理として有効 - **20ep 延長学習は微小改善〜悪化**: exp003は悪化 (0.921→0.913)、exp004はほぼ同等 (0.946→0.945) - **Layer-wise LR Decay は EVA-02 Large に有害**: decay_rate=0.95 でも全層同一LR に劣る - **Warmup + EMA は微小劣化**: 10ep では warmup の序盤学習遅延を回収しきれない ## Reproduction ### Code ```bash git clone git@github.com:nawta/Jaguar_Re_Identification.git cd Jaguar_Re_Identification git checkout lb-0.948 ``` ### Environment ```bash # Python environment uv sync # or Docker make build && make bash ``` ### Data Competition data is NOT included. Download from Kaggle: ```bash kaggle competitions download -c jaguar-re-id unzip jaguar-re-id.zip -d input/ ``` ### Training ```bash # Best single model (exp004) uv run python -m experiments.exp004_0938_optimal_blending.run exp=000 # Pseudo-labeling (exp005, requires exp004 weights) uv run python -m experiments.exp005_pseudo_labeling.run exp=000 # DINOv2 (exp006) uv run python -m experiments.exp006_dinov2.run exp=000 ``` ### Ensemble (LB 0.948) exp004 と exp005 の submission.csv を weighted average (w=0.7/0.3) で結合: ```python import pandas as pd df004 = pd.read_csv("output/experiments/exp004_0938_optimal_blending/000/submission.csv") df005 = pd.read_csv("output/experiments/exp005_pseudo_labeling/000/submission.csv") df_ens = df004.copy() df_ens["score"] = 0.7 * df004["score"] + 0.3 * df005["score"] df_ens.to_csv("submission_ensemble.csv", index=False) ``` ## Not Included - **Competition input data** (`input/`, ~17GB): Re-download via `kaggle competitions download -c jaguar-re-id` - **Inferior model weights**: exp002 (LB 0.781), exp003 (LB 0.921), exp007 (exp004 以下) - **Python virtual environment** (`.venv/`): Recreate via `uv sync` - **wandb logs**: Synced to [wandb.ai/nawta1998/jaguar-re-identification](https://wandb.ai/nawta1998/jaguar-re-identification)