Commit ·
d6c8a4f
0
Parent(s):
Initial commit: ICLR 2026 Representational Alignment Challenge
Browse filesPublic leaderboard for the Re-Align hackathon. Evaluation backend
lives in a separate private repository.
Assisted by Claude
- .gitattributes +35 -0
- .gitignore +17 -0
- .pre-commit-config.yaml +53 -0
- AGENTS.md +92 -0
- Makefile +13 -0
- README.md +184 -0
- app.py +573 -0
- cka-data/submissions.json +72 -0
- condaenv.4_q_6r3k.requirements.txt +1 -0
- configs/blue_team_model_registry.json +2963 -0
- configs/dataset_roots.example.json +4 -0
- configs/one_model_per_family.json +143 -0
- configs/red_team_stimuli_catalog.jsonl +0 -0
- configs/red_team_stimuli_catalog_1000.jsonl +1000 -0
- docs/evaluation_contract.md +140 -0
- docs/storage_layout.md +71 -0
- environment.yml +9 -0
- hackathon-data/blue_submissions.json +200 -0
- hackathon-data/red_submissions.json +362 -0
- pyproject.toml +13 -0
- requirements.txt +18 -0
- scripts/blue_family_smoke_test.py +100 -0
- scripts/blue_team_submit.py +107 -0
- scripts/generate_blue_registry.py +225 -0
- scripts/pipeline_smoke_test.py +70 -0
- scripts/red_team_smoke_test.py +143 -0
- scripts/run_local.sh +20 -0
- scripts/smoke_test_registry.py +230 -0
- scripts/smoke_test_submission.py +266 -0
- scripts/submit_blue_hf_dataset.py +36 -0
- scripts/submit_red_hf_dataset.py +36 -0
- scripts/validate_submission.py +71 -0
- scripts/verify_cka.py +55 -0
- slurm-verify-8056978.out +2 -0
- src/about.py +153 -0
- src/cka/__init__.py +11 -0
- src/cka/compute.py +75 -0
- src/cka/embeddings.py +29 -0
- src/cka/storage.py +46 -0
- src/display/css_html_js.py +243 -0
- src/display/formatting.py +27 -0
- src/hackathon/__init__.py +17 -0
- src/hackathon/data.py +121 -0
- src/hackathon/modal_client.py +155 -0
- src/hackathon/scoring.py +136 -0
- src/hackathon/storage.py +151 -0
- src/hackathon/validation.py +232 -0
- test_submissions/blue_submission.jsonl +2 -0
- test_submissions/red_submission.jsonl +8 -0
.gitattributes
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
scale-hf-logo.png filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
auto_evals/
|
| 2 |
+
venv/
|
| 3 |
+
__pycache__/
|
| 4 |
+
.env
|
| 5 |
+
.ipynb_checkpoints
|
| 6 |
+
*ipynb
|
| 7 |
+
.vscode/
|
| 8 |
+
.cursor/
|
| 9 |
+
|
| 10 |
+
eval-queue/
|
| 11 |
+
eval-results/
|
| 12 |
+
eval-queue-bk/
|
| 13 |
+
eval-results-bk/
|
| 14 |
+
logs/
|
| 15 |
+
activations/
|
| 16 |
+
|
| 17 |
+
.env
|
.pre-commit-config.yaml
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
|
| 2 |
+
#
|
| 3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
| 4 |
+
# you may not use this file except in compliance with the License.
|
| 5 |
+
# You may obtain a copy of the License at
|
| 6 |
+
#
|
| 7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
| 8 |
+
#
|
| 9 |
+
# Unless required by applicable law or agreed to in writing, software
|
| 10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
| 11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 12 |
+
# See the License for the specific language governing permissions and
|
| 13 |
+
# limitations under the License.
|
| 14 |
+
|
| 15 |
+
default_language_version:
|
| 16 |
+
python: python3
|
| 17 |
+
|
| 18 |
+
ci:
|
| 19 |
+
autofix_prs: true
|
| 20 |
+
autoupdate_commit_msg: '[pre-commit.ci] pre-commit suggestions'
|
| 21 |
+
autoupdate_schedule: quarterly
|
| 22 |
+
|
| 23 |
+
repos:
|
| 24 |
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
| 25 |
+
rev: v4.3.0
|
| 26 |
+
hooks:
|
| 27 |
+
- id: check-yaml
|
| 28 |
+
- id: check-case-conflict
|
| 29 |
+
- id: detect-private-key
|
| 30 |
+
- id: check-added-large-files
|
| 31 |
+
args: ['--maxkb=1000']
|
| 32 |
+
- id: requirements-txt-fixer
|
| 33 |
+
- id: end-of-file-fixer
|
| 34 |
+
- id: trailing-whitespace
|
| 35 |
+
|
| 36 |
+
- repo: https://github.com/PyCQA/isort
|
| 37 |
+
rev: 5.12.0
|
| 38 |
+
hooks:
|
| 39 |
+
- id: isort
|
| 40 |
+
name: Format imports
|
| 41 |
+
|
| 42 |
+
- repo: https://github.com/psf/black
|
| 43 |
+
rev: 22.12.0
|
| 44 |
+
hooks:
|
| 45 |
+
- id: black
|
| 46 |
+
name: Format code
|
| 47 |
+
additional_dependencies: ['click==8.0.2']
|
| 48 |
+
|
| 49 |
+
- repo: https://github.com/charliermarsh/ruff-pre-commit
|
| 50 |
+
# Ruff version.
|
| 51 |
+
rev: 'v0.0.267'
|
| 52 |
+
hooks:
|
| 53 |
+
- id: ruff
|
AGENTS.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# AGENTS.md - Engaging (OpenMind/BCS) Cluster Guide (Project-Agnostic)
|
| 2 |
+
|
| 3 |
+
This repo runs on MIT Engaging (EO) BCS resources. Use this file as the source of truth for job submission, storage, and path hygiene.
|
| 4 |
+
|
| 5 |
+
## Login nodes and OS
|
| 6 |
+
- Rocky 8 login nodes for BCS and MIT Rocky 8 partitions: `orcd-login001`..`orcd-login004` (or OOD Engaging Shell Access).
|
| 7 |
+
- CentOS 7 login nodes only for `sched_mit_hill`: `orcd-vlogin001`..`orcd-vlogin004` (OOD Engaging Legacy Shell).
|
| 8 |
+
- Do not run training or large jobs on login nodes; submit everything to Slurm.
|
| 9 |
+
- Do not use interactive nodes; use `sbatch` for all compute, installs, and env verification.
|
| 10 |
+
|
| 11 |
+
## BCS GPU partitions (Rocky 8)
|
| 12 |
+
- `ou_bcs_high`: 4h walltime, up to 1 GPU, 32 CPUs, 1 node; reserved for interactive use only.
|
| 13 |
+
- `ou_bcs_normal`: 12h walltime, up to 8 GPUs, 256 CPUs, 2 nodes; use for all batch jobs.
|
| 14 |
+
- `ou_bcs_low`: 12h walltime, up to 16 GPUs, 512 CPUs, 4 nodes; preemptible, require checkpointing.
|
| 15 |
+
- No Slurm account string is required for `ou_bcs_*` partitions; omit `#SBATCH --account`.
|
| 16 |
+
- Always use `ou_bcs_normal` for installs, experiments, and verification jobs.
|
| 17 |
+
|
| 18 |
+
## MIT partitions (Rocky 8, optional overflow)
|
| 19 |
+
- `mit_normal`, `mit_normal_gpu`, `mit_preemptible` (Rocky 8 only).
|
| 20 |
+
- Use `sched_mit_hill` only from CentOS 7 login nodes.
|
| 21 |
+
|
| 22 |
+
## Storage layout (summary)
|
| 23 |
+
- `/home/<user>`: small files, source code, 200 GB, snapshot backup.
|
| 24 |
+
- `/home/<user>/orcd/pool`: medium I/O, 1 TB, no backup.
|
| 25 |
+
- `/home/<user>/orcd/scratch`: fast scratch, 1 TB, no backup.
|
| 26 |
+
- `/orcd/data/<PI>/001`: shared lab storage, medium I/O, no backup.
|
| 27 |
+
- `/orcd/scratch/bcs/001` and `/orcd/scratch/bcs/002`: shared fast scratch, no backup.
|
| 28 |
+
- `/orcd/compute/bcs/001` and `/orcd/datasets/001`: public datasets (read-only).
|
| 29 |
+
|
| 30 |
+
## Path hygiene (important)
|
| 31 |
+
Avoid hard-coded absolute paths. Centralize via environment variables so scripts are portable across nodes.
|
| 32 |
+
|
| 33 |
+
Recommended pattern:
|
| 34 |
+
- `PROJECT_ROOT=/orcd/data/<PI>/001/<user>/<project>`
|
| 35 |
+
- `DATA_ROOT=/orcd/data/<PI>/001/<user>/datasets`
|
| 36 |
+
- `OUTPUT_ROOT=/orcd/scratch/bcs/001/<user>/<project>`
|
| 37 |
+
- `HF_HOME=/orcd/scratch/bcs/001/<user>/.cache/huggingface`
|
| 38 |
+
- `TORCH_HOME=/orcd/scratch/bcs/001/<user>/.cache/torch`
|
| 39 |
+
|
| 40 |
+
## Slurm template (BCS)
|
| 41 |
+
```bash
|
| 42 |
+
#!/bin/bash
|
| 43 |
+
#SBATCH --job-name=experiment
|
| 44 |
+
#SBATCH --partition=ou_bcs_normal
|
| 45 |
+
#SBATCH --time=12:00:00
|
| 46 |
+
#SBATCH --gpus=1
|
| 47 |
+
#SBATCH --cpus-per-task=8
|
| 48 |
+
#SBATCH --mem=32G
|
| 49 |
+
#SBATCH --output=/orcd/data/<PI>/001/<user>/<project>/logs/%x_%j.out
|
| 50 |
+
#SBATCH --error=/orcd/data/<PI>/001/<user>/<project>/logs/%x_%j.err
|
| 51 |
+
|
| 52 |
+
set -euo pipefail
|
| 53 |
+
set +u
|
| 54 |
+
source "$HOME/miniconda3/etc/profile.d/conda.sh"
|
| 55 |
+
set -u
|
| 56 |
+
conda activate <env-name>
|
| 57 |
+
|
| 58 |
+
export HF_HOME=/orcd/scratch/bcs/001/$USER/.cache/huggingface
|
| 59 |
+
export TORCH_HOME=/orcd/scratch/bcs/001/$USER/.cache/torch
|
| 60 |
+
export OUTPUT_ROOT=/orcd/scratch/bcs/001/$USER/<project>
|
| 61 |
+
|
| 62 |
+
python -u <script>.py --out_dir "${OUTPUT_ROOT}/runs/run_${SLURM_JOB_ID}"
|
| 63 |
+
```
|
| 64 |
+
|
| 65 |
+
For sweeps, use arrays and include `%A_%a` in log paths:
|
| 66 |
+
```bash
|
| 67 |
+
#SBATCH --array=0-65%8
|
| 68 |
+
```
|
| 69 |
+
|
| 70 |
+
## Common Slurm commands
|
| 71 |
+
- `sbatch <script.sh>`
|
| 72 |
+
- `squeue -u $USER`
|
| 73 |
+
- `sacct -j <job_id> --format=JobID,State,Elapsed,MaxRSS,AllocTRES`
|
| 74 |
+
- `scontrol show job <job_id>`
|
| 75 |
+
- `scancel <job_id>`
|
| 76 |
+
|
| 77 |
+
## Checkpointing and preemption
|
| 78 |
+
- Jobs on `ou_bcs_low` can be preempted. Always enable checkpoint writes and resume logic.
|
| 79 |
+
- Store checkpoints and final outputs on `/orcd/data/<PI>/001` (longer term) or `/home/<user>/orcd/pool`.
|
| 80 |
+
- Use `/orcd/scratch/bcs/001` or `/orcd/scratch/bcs/002` for intermediate outputs and large I/O.
|
| 81 |
+
|
| 82 |
+
## Launch tips
|
| 83 |
+
- Prefer `ou_bcs_normal` for installs and experiments; `ou_bcs_high` is often limited to one concurrent job.
|
| 84 |
+
- Do large conda installs on compute nodes (Slurm job), not on login nodes.
|
| 85 |
+
- Avoid `source ~/.bashrc` when using `set -u` (it can error on unbound vars); source `conda.sh` directly.
|
| 86 |
+
- Use `/bin/mkdir -p` in batch scripts to avoid shell aliases or unexpected failures.
|
| 87 |
+
- Set `CONDA_PKGS_DIRS=/orcd/scratch/bcs/001/$USER/.conda/pkgs` to speed installs and avoid home quota.
|
| 88 |
+
- Chain setup → run with `sbatch --dependency=afterok:<jobid> <script.sh>` to ensure env is ready.
|
| 89 |
+
|
| 90 |
+
## Local environment check
|
| 91 |
+
- Login nodes vary; check with `hostname`.
|
| 92 |
+
- Default base Python does not include GPU libraries; verify with `python -c "import torch"` via a short `sbatch` job after activating your env.
|
Makefile
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.PHONY: style format
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
style:
|
| 5 |
+
python -m black --line-length 119 .
|
| 6 |
+
python -m isort .
|
| 7 |
+
ruff check --fix .
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
quality:
|
| 11 |
+
python -m black --check --line-length 119 .
|
| 12 |
+
python -m isort --check-only .
|
| 13 |
+
ruff check .
|
README.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Re-Align Hackathon Leaderboard
|
| 3 |
+
emoji: 🥇
|
| 4 |
+
colorFrom: green
|
| 5 |
+
colorTo: indigo
|
| 6 |
+
sdk: gradio
|
| 7 |
+
app_file: app.py
|
| 8 |
+
pinned: true
|
| 9 |
+
license: apache-2.0
|
| 10 |
+
short_description: Submit Blue/Red hackathon JSON and rank by alignment scores.
|
| 11 |
+
sdk_version: 5.43.1
|
| 12 |
+
tags:
|
| 13 |
+
- leaderboard
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
# Overview
|
| 17 |
+
|
| 18 |
+
This app runs the Re-Align Hackathon leaderboards. Blue Team submissions select model sets
|
| 19 |
+
and are ranked by mean pairwise CKA. Red Team submissions select stimuli and are ranked by
|
| 20 |
+
divergence (1 - avg CKA) computed across cached dummy embeddings.
|
| 21 |
+
|
| 22 |
+
# Local run
|
| 23 |
+
|
| 24 |
+
```bash
|
| 25 |
+
conda env create -f environment.yml
|
| 26 |
+
conda activate iclr2026-challenge
|
| 27 |
+
python app.py
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
# Submission formats
|
| 31 |
+
|
| 32 |
+
## Blue Team JSON
|
| 33 |
+
|
| 34 |
+
```json
|
| 35 |
+
{
|
| 36 |
+
"models": [
|
| 37 |
+
{
|
| 38 |
+
"model_name": "vit_base_patch16_224",
|
| 39 |
+
"source": "dummy_cache",
|
| 40 |
+
"model_parameters": null
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"model_name": "resnet50",
|
| 44 |
+
"source": "dummy_cache",
|
| 45 |
+
"model_parameters": null
|
| 46 |
+
}
|
| 47 |
+
]
|
| 48 |
+
}
|
| 49 |
+
```
|
| 50 |
+
|
| 51 |
+
## Red Team JSON
|
| 52 |
+
|
| 53 |
+
```json
|
| 54 |
+
{
|
| 55 |
+
"differentiating_images": [
|
| 56 |
+
{
|
| 57 |
+
"dataset_name": "cifar100",
|
| 58 |
+
"image_identifier": "test/bear/image_0007.png"
|
| 59 |
+
},
|
| 60 |
+
{
|
| 61 |
+
"dataset_name": "imagenet1k",
|
| 62 |
+
"image_identifier": "val/n03445777/ILSVRC2012_val_00003572.JPEG"
|
| 63 |
+
}
|
| 64 |
+
]
|
| 65 |
+
}
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
# Hugging Face datasets (private only)
|
| 69 |
+
|
| 70 |
+
You can optionally host the model/stimulus selections as a Hugging Face Dataset and paste the
|
| 71 |
+
dataset link into the app. These datasets must be private (do not publish public submissions).
|
| 72 |
+
|
| 73 |
+
## Blue Team dataset
|
| 74 |
+
|
| 75 |
+
Expected column:
|
| 76 |
+
- `model_names`: list of model name strings
|
| 77 |
+
|
| 78 |
+
Example dataset row:
|
| 79 |
+
```json
|
| 80 |
+
{
|
| 81 |
+
"model_names": [
|
| 82 |
+
"vit_base_patch16_224",
|
| 83 |
+
"resnet50",
|
| 84 |
+
"convnext_base"
|
| 85 |
+
]
|
| 86 |
+
}
|
| 87 |
+
```
|
| 88 |
+
|
| 89 |
+
Create the dataset (example with `datasets` + `huggingface_hub`):
|
| 90 |
+
```bash
|
| 91 |
+
pip install datasets huggingface_hub
|
| 92 |
+
```
|
| 93 |
+
```py
|
| 94 |
+
from datasets import Dataset
|
| 95 |
+
from huggingface_hub import login
|
| 96 |
+
|
| 97 |
+
login(token="hf_...") # optional if you already ran `huggingface-cli login`
|
| 98 |
+
|
| 99 |
+
rows = [
|
| 100 |
+
{"model_names": ["vit_base_patch16_224", "resnet50", "convnext_base"]},
|
| 101 |
+
]
|
| 102 |
+
ds = Dataset.from_list(rows)
|
| 103 |
+
ds.push_to_hub("your-username/blue-team-submission", private=True)
|
| 104 |
+
```
|
| 105 |
+
|
| 106 |
+
Paste the dataset link into the app:
|
| 107 |
+
```
|
| 108 |
+
https://huggingface.co/datasets/your-username/blue-team-submission
|
| 109 |
+
```
|
| 110 |
+
|
| 111 |
+
## Red Team dataset
|
| 112 |
+
|
| 113 |
+
Expected column:
|
| 114 |
+
- `stimulus_id`: list of stimulus key strings (the keys shown in the app dropdown)
|
| 115 |
+
|
| 116 |
+
Example dataset row:
|
| 117 |
+
```json
|
| 118 |
+
{
|
| 119 |
+
"stimulus_id": [
|
| 120 |
+
"cifar100:test/bear/image_0007.png",
|
| 121 |
+
"imagenet1k:val/n03445777/ILSVRC2012_val_00003572.JPEG"
|
| 122 |
+
]
|
| 123 |
+
}
|
| 124 |
+
```
|
| 125 |
+
|
| 126 |
+
Create the dataset:
|
| 127 |
+
```bash
|
| 128 |
+
pip install datasets huggingface_hub
|
| 129 |
+
```
|
| 130 |
+
```py
|
| 131 |
+
from datasets import Dataset
|
| 132 |
+
from huggingface_hub import login
|
| 133 |
+
|
| 134 |
+
login(token="hf_...") # optional if you already ran `huggingface-cli login`
|
| 135 |
+
|
| 136 |
+
rows = [
|
| 137 |
+
{
|
| 138 |
+
"stimulus_id": [
|
| 139 |
+
"cifar100:test/bear/image_0007.png",
|
| 140 |
+
"imagenet1k:val/n03445777/ILSVRC2012_val_00003572.JPEG",
|
| 141 |
+
]
|
| 142 |
+
},
|
| 143 |
+
]
|
| 144 |
+
ds = Dataset.from_list(rows)
|
| 145 |
+
ds.push_to_hub("your-username/red-team-submission", private=True)
|
| 146 |
+
```
|
| 147 |
+
|
| 148 |
+
Paste the dataset link into the app:
|
| 149 |
+
```
|
| 150 |
+
https://huggingface.co/datasets/your-username/red-team-submission
|
| 151 |
+
```
|
| 152 |
+
|
| 153 |
+
## Access token (for private datasets)
|
| 154 |
+
|
| 155 |
+
1. Go to your Hugging Face account settings: `https://huggingface.co/settings/tokens`
|
| 156 |
+
2. Create a new token with the `Read` scope.
|
| 157 |
+
3. Copy the token (it starts with `hf_...`).
|
| 158 |
+
4. Paste it into the "HuggingFace access token (optional)" textbox in the app.
|
| 159 |
+
|
| 160 |
+
# Where submissions are stored
|
| 161 |
+
|
| 162 |
+
Submissions are stored locally in:
|
| 163 |
+
|
| 164 |
+
- `hackathon-data/blue_submissions.json`
|
| 165 |
+
- `hackathon-data/red_submissions.json`
|
| 166 |
+
|
| 167 |
+
You can override storage paths with:
|
| 168 |
+
|
| 169 |
+
- `HACKATHON_DATA_DIR=/your/path`
|
| 170 |
+
- `HACKATHON_BLUE_DATA_PATH=/your/path/blue.json`
|
| 171 |
+
- `HACKATHON_RED_DATA_PATH=/your/path/red.json`
|
| 172 |
+
|
| 173 |
+
# Cached embeddings
|
| 174 |
+
|
| 175 |
+
Dummy cached embeddings live in `src/hackathon/data.py`. Replace `get_dummy_model_embeddings()` and
|
| 176 |
+
`list_dummy_stimuli()` with real data when it is ready.
|
| 177 |
+
|
| 178 |
+
See `docs/evaluation_contract.md` for the draft contract and model registry spec for real
|
| 179 |
+
forward-pass evaluation.
|
| 180 |
+
|
| 181 |
+
For storage layout and path hygiene conventions, see `docs/storage_layout.md`.
|
| 182 |
+
|
| 183 |
+
To enable Modal-backed scoring, set `HACKATHON_MODAL_ENABLE=true` and provide
|
| 184 |
+
`HACKATHON_MODEL_REGISTRY` plus `HACKATHON_STIMULI_CATALOG`.
|
app.py
ADDED
|
@@ -0,0 +1,573 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from dotenv import load_dotenv
|
| 2 |
+
load_dotenv()
|
| 3 |
+
|
| 4 |
+
import json
|
| 5 |
+
import os
|
| 6 |
+
|
| 7 |
+
from datetime import datetime, timezone
|
| 8 |
+
from uuid import uuid4
|
| 9 |
+
|
| 10 |
+
import gradio as gr
|
| 11 |
+
import pandas as pd
|
| 12 |
+
from datasets import load_dataset
|
| 13 |
+
|
| 14 |
+
from src.about import BLUE_SUBMISSION_TEXT, GETTING_STARTED_TEXT, INTRODUCTION_TEXT, RED_SUBMISSION_TEXT, TITLE
|
| 15 |
+
from src.display.css_html_js import custom_css
|
| 16 |
+
from src.display.formatting import styled_error, styled_message
|
| 17 |
+
from src.hackathon import (
|
| 18 |
+
append_submission,
|
| 19 |
+
list_dummy_models,
|
| 20 |
+
list_dummy_stimuli,
|
| 21 |
+
load_submissions,
|
| 22 |
+
score_blue_with_pairwise,
|
| 23 |
+
score_red_with_pairwise,
|
| 24 |
+
stimulus_key,
|
| 25 |
+
)
|
| 26 |
+
from src.hackathon.modal_client import fetch_volume_submissions, is_modal_enabled
|
| 27 |
+
from src.hackathon.validation import (
|
| 28 |
+
MODEL_REGISTRY_ENV,
|
| 29 |
+
BLUE_MODEL_REGISTRY_ENV,
|
| 30 |
+
BLUE_TEAM_REQUIRED_MODELS,
|
| 31 |
+
STIMULI_CATALOG_ENV,
|
| 32 |
+
load_model_registry,
|
| 33 |
+
load_model_registry_specs,
|
| 34 |
+
load_stimuli_catalog,
|
| 35 |
+
)
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
BLUE_LEADERBOARD_COLUMNS = ["Rank", "Submitter", "Score", "Submitted"]
|
| 39 |
+
BLUE_LEADERBOARD_TYPES = ["number", "str", "number", "str"]
|
| 40 |
+
|
| 41 |
+
RED_LEADERBOARD_COLUMNS = ["Rank", "Submitter", "Score", "Submitted"]
|
| 42 |
+
RED_LEADERBOARD_TYPES = ["number", "str", "number", "str"]
|
| 43 |
+
|
| 44 |
+
PAIRWISE_COLUMNS = ["Model A", "Model B", "CKA"]
|
| 45 |
+
PAIRWISE_TYPES = ["str", "str", "number"]
|
| 46 |
+
|
| 47 |
+
def _load_catalogs() -> tuple[list[str], list[dict[str, str]], dict[str, dict]]:
|
| 48 |
+
if is_modal_enabled():
|
| 49 |
+
# Prefer HACKATHON_BLUE_MODEL_REGISTRY over HACKATHON_MODEL_REGISTRY
|
| 50 |
+
registry_path = os.environ.get(BLUE_MODEL_REGISTRY_ENV, "").strip()
|
| 51 |
+
if not registry_path:
|
| 52 |
+
registry_path = os.environ.get(MODEL_REGISTRY_ENV, "").strip()
|
| 53 |
+
stimuli_path = os.environ.get(STIMULI_CATALOG_ENV, "").strip()
|
| 54 |
+
if not registry_path or not stimuli_path:
|
| 55 |
+
raise ValueError(
|
| 56 |
+
"HACKATHON_MODAL_ENABLE is set but model registry or stimuli catalog is missing. "
|
| 57 |
+
"Set HACKATHON_BLUE_MODEL_REGISTRY (or HACKATHON_MODEL_REGISTRY) and HACKATHON_STIMULI_CATALOG."
|
| 58 |
+
)
|
| 59 |
+
model_names = sorted(load_model_registry(registry_path))
|
| 60 |
+
stimuli_catalog = load_stimuli_catalog(stimuli_path)
|
| 61 |
+
registry_specs = load_model_registry_specs(registry_path)
|
| 62 |
+
return model_names, stimuli_catalog, registry_specs
|
| 63 |
+
|
| 64 |
+
return list_dummy_models(), list_dummy_stimuli(), {}
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
MODEL_CHOICES, STIMULI_CATALOG, BLUE_REGISTRY_SPECS = _load_catalogs()
|
| 68 |
+
STIMULUS_LOOKUP = {stimulus_key(stimulus): stimulus for stimulus in STIMULI_CATALOG}
|
| 69 |
+
STIMULUS_CHOICES = list(STIMULUS_LOOKUP.keys())
|
| 70 |
+
|
| 71 |
+
DEFAULT_BLUE_MODELS = MODEL_CHOICES[:3]
|
| 72 |
+
DEFAULT_RED_STIMULI = STIMULUS_CHOICES[:3]
|
| 73 |
+
DEFAULT_SOURCE = "dummy_cache"
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
def _empty_leaderboard_df(columns: list[str]) -> pd.DataFrame:
|
| 77 |
+
return pd.DataFrame(columns=columns)
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
def _empty_pairwise_df() -> pd.DataFrame:
|
| 81 |
+
return pd.DataFrame(columns=PAIRWISE_COLUMNS)
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
def _format_score(score: float) -> float:
|
| 85 |
+
return round(float(score), 4)
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
def _build_leaderboard_df(
|
| 89 |
+
submissions: list[dict],
|
| 90 |
+
*,
|
| 91 |
+
columns: list[str],
|
| 92 |
+
count_key: str,
|
| 93 |
+
selections_key: str,
|
| 94 |
+
ascending: bool = False,
|
| 95 |
+
) -> pd.DataFrame:
|
| 96 |
+
rows = []
|
| 97 |
+
for entry in submissions:
|
| 98 |
+
rows.append(
|
| 99 |
+
{
|
| 100 |
+
"Submitter": entry.get("submitter", "anonymous"),
|
| 101 |
+
"Score": _format_score(entry.get("score", 0.0)),
|
| 102 |
+
"Submitted": entry.get("submitted_time", ""),
|
| 103 |
+
}
|
| 104 |
+
)
|
| 105 |
+
|
| 106 |
+
if not rows:
|
| 107 |
+
return _empty_leaderboard_df(columns)
|
| 108 |
+
|
| 109 |
+
df = pd.DataFrame.from_records(rows, columns=columns[1:])
|
| 110 |
+
df = df.sort_values(by="Score", ascending=ascending).reset_index(drop=True)
|
| 111 |
+
df.insert(0, "Rank", range(1, len(df) + 1))
|
| 112 |
+
return df
|
| 113 |
+
|
| 114 |
+
|
| 115 |
+
def _load_hf_dataset(hf_link: str, hf_token: str) -> dict | None:
|
| 116 |
+
cleaned_link = hf_link.strip()
|
| 117 |
+
if not cleaned_link:
|
| 118 |
+
return None
|
| 119 |
+
token = hf_token.strip() or None
|
| 120 |
+
return load_dataset(cleaned_link, token=token)
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
def _select_dataset_split(dataset: dict) -> dict:
|
| 124 |
+
if hasattr(dataset, "column_names") and not isinstance(dataset.column_names, dict):
|
| 125 |
+
return dataset
|
| 126 |
+
return dataset.get("train") or next(iter(dataset.values()))
|
| 127 |
+
|
| 128 |
+
|
| 129 |
+
def _build_blue_payload(model_names: list[str], hf_link: str, hf_token: str) -> dict:
|
| 130 |
+
if hf_link.strip() == "":
|
| 131 |
+
raise ValueError("HF dataset link is required for Blue Team submissions.")
|
| 132 |
+
|
| 133 |
+
dataset = _load_hf_dataset(hf_link, hf_token)
|
| 134 |
+
dataset_split = _select_dataset_split(dataset)
|
| 135 |
+
model_layer_list = []
|
| 136 |
+
if "model_name" in dataset_split.column_names and "layer_name" in dataset_split.column_names:
|
| 137 |
+
for model_name, layer_name in zip(dataset_split["model_name"], dataset_split["layer_name"]):
|
| 138 |
+
model_name_str = str(model_name).strip()
|
| 139 |
+
layer_name_str = str(layer_name).strip()
|
| 140 |
+
if model_name_str and layer_name_str:
|
| 141 |
+
model_layer_list.append({"model_name": model_name_str, "layer_name": layer_name_str})
|
| 142 |
+
|
| 143 |
+
return {"models": model_layer_list, "hf_dataset": hf_link.strip()}
|
| 144 |
+
|
| 145 |
+
|
| 146 |
+
def _build_red_payload(stimulus_keys: list[str], hf_link: str, hf_token: str) -> dict:
|
| 147 |
+
if hf_link.strip() == "":
|
| 148 |
+
raise ValueError("HF dataset link is required for Red Team submissions.")
|
| 149 |
+
|
| 150 |
+
dataset = _load_hf_dataset(hf_link, hf_token)
|
| 151 |
+
|
| 152 |
+
dataset_split = _select_dataset_split(dataset)
|
| 153 |
+
dataset_list = []
|
| 154 |
+
if "dataset_name" in dataset_split.column_names and "image_identifier" in dataset_split.column_names:
|
| 155 |
+
for dataset_name, image_identifier in zip(dataset_split["dataset_name"], dataset_split["image_identifier"]):
|
| 156 |
+
dataset_name_str = str(dataset_name).strip()
|
| 157 |
+
image_identifier_str = str(image_identifier).strip()
|
| 158 |
+
if dataset_name_str and image_identifier_str:
|
| 159 |
+
dataset_list.append({"dataset_name": dataset_name_str, "image_identifier": image_identifier_str})
|
| 160 |
+
|
| 161 |
+
return {"differentiating_images": dataset_list, "hf_dataset": hf_link.strip()}
|
| 162 |
+
|
| 163 |
+
|
| 164 |
+
def _json_dumps(payload: dict) -> str:
|
| 165 |
+
return json.dumps(payload, indent=2)
|
| 166 |
+
|
| 167 |
+
|
| 168 |
+
def _parse_json_payload(payload: str) -> dict:
|
| 169 |
+
if not payload or not payload.strip():
|
| 170 |
+
raise ValueError("Paste a JSON submission payload.")
|
| 171 |
+
|
| 172 |
+
try:
|
| 173 |
+
data = json.loads(payload)
|
| 174 |
+
except json.JSONDecodeError as exc:
|
| 175 |
+
raise ValueError(f"Invalid JSON: {exc}") from exc
|
| 176 |
+
|
| 177 |
+
if not isinstance(data, dict):
|
| 178 |
+
raise ValueError("Submission JSON must be an object.")
|
| 179 |
+
|
| 180 |
+
return data
|
| 181 |
+
|
| 182 |
+
|
| 183 |
+
def _extract_blue_models(payload: dict) -> tuple[list[dict], list[str]]:
|
| 184 |
+
models = payload.get("models")
|
| 185 |
+
if not isinstance(models, list):
|
| 186 |
+
raise ValueError("Blue submission must include a list of models.")
|
| 187 |
+
|
| 188 |
+
model_names = []
|
| 189 |
+
missing_layers: list[str] = []
|
| 190 |
+
layer_mismatches: list[str] = []
|
| 191 |
+
for idx, model in enumerate(models, start=1):
|
| 192 |
+
if isinstance(model, dict) and "model_name" in model:
|
| 193 |
+
name = str(model["model_name"]).strip()
|
| 194 |
+
layer_name = str(model.get("layer_name", "")).strip() or None
|
| 195 |
+
elif isinstance(model, str):
|
| 196 |
+
name = model.strip()
|
| 197 |
+
layer_name = None
|
| 198 |
+
else:
|
| 199 |
+
raise ValueError(f"Model entry {idx} must be a string or object with model_name.")
|
| 200 |
+
if name:
|
| 201 |
+
model_names.append(name)
|
| 202 |
+
|
| 203 |
+
# Validate layer_name when registry specs are available
|
| 204 |
+
if BLUE_REGISTRY_SPECS:
|
| 205 |
+
if not layer_name:
|
| 206 |
+
missing_layers.append(f"Model entry {idx} ({name}) is missing layer_name.")
|
| 207 |
+
elif name in BLUE_REGISTRY_SPECS:
|
| 208 |
+
expected_layer = BLUE_REGISTRY_SPECS[name].get("layer", "")
|
| 209 |
+
if layer_name != expected_layer:
|
| 210 |
+
layer_mismatches.append(
|
| 211 |
+
f"{name}: submitted layer_name '{layer_name}' "
|
| 212 |
+
f"does not match registry layer '{expected_layer}'"
|
| 213 |
+
)
|
| 214 |
+
|
| 215 |
+
if len(model_names) != len(set(model_names)):
|
| 216 |
+
raise ValueError("Model selections must be unique.")
|
| 217 |
+
|
| 218 |
+
if len(model_names) != BLUE_TEAM_REQUIRED_MODELS:
|
| 219 |
+
raise ValueError(
|
| 220 |
+
f"Blue team submission must contain exactly {BLUE_TEAM_REQUIRED_MODELS} "
|
| 221 |
+
f"unique models, but got {len(model_names)}."
|
| 222 |
+
)
|
| 223 |
+
|
| 224 |
+
# Validate all models are in the registry
|
| 225 |
+
registry_set = set(MODEL_CHOICES)
|
| 226 |
+
missing = [name for name in model_names if name not in registry_set]
|
| 227 |
+
if missing:
|
| 228 |
+
raise ValueError(f"Unknown models not in registry: {', '.join(missing)}")
|
| 229 |
+
|
| 230 |
+
if missing_layers:
|
| 231 |
+
raise ValueError(
|
| 232 |
+
f"Missing layer_name for {len(missing_layers)} model(s):\n"
|
| 233 |
+
+ "\n".join(f" - {m}" for m in missing_layers)
|
| 234 |
+
)
|
| 235 |
+
|
| 236 |
+
if layer_mismatches:
|
| 237 |
+
raise ValueError(
|
| 238 |
+
f"Layer name mismatch for {len(layer_mismatches)} model(s):\n"
|
| 239 |
+
+ "\n".join(f" - {m}" for m in layer_mismatches)
|
| 240 |
+
)
|
| 241 |
+
|
| 242 |
+
return models, model_names
|
| 243 |
+
|
| 244 |
+
|
| 245 |
+
def _extract_red_stimuli(payload: dict) -> tuple[list[dict], list[str]]:
|
| 246 |
+
images = payload.get("differentiating_images")
|
| 247 |
+
if not isinstance(images, list):
|
| 248 |
+
raise ValueError("Red submission must include differentiating_images.")
|
| 249 |
+
if len(images) < 2:
|
| 250 |
+
raise ValueError("Select at least two stimuli.")
|
| 251 |
+
|
| 252 |
+
stimuli = []
|
| 253 |
+
stimulus_keys = []
|
| 254 |
+
for idx, item in enumerate(images, start=1):
|
| 255 |
+
if not isinstance(item, dict):
|
| 256 |
+
raise ValueError(f"Stimulus entry {idx} must be an object.")
|
| 257 |
+
dataset_name = str(item.get("dataset_name", "")).strip()
|
| 258 |
+
image_identifier = str(item.get("image_identifier", "")).strip()
|
| 259 |
+
if not dataset_name or not image_identifier:
|
| 260 |
+
raise ValueError(f"Stimulus entry {idx} must include dataset_name and image_identifier.")
|
| 261 |
+
stimulus = {"dataset_name": dataset_name, "image_identifier": image_identifier}
|
| 262 |
+
stimuli.append(stimulus)
|
| 263 |
+
stimulus_keys.append(stimulus_key(stimulus))
|
| 264 |
+
|
| 265 |
+
if len(stimulus_keys) != len(set(stimulus_keys)):
|
| 266 |
+
raise ValueError("Stimulus selections must be unique.")
|
| 267 |
+
|
| 268 |
+
missing = [key for key in stimulus_keys if key not in STIMULUS_LOOKUP]
|
| 269 |
+
if missing:
|
| 270 |
+
missing_str = ", ".join(missing)
|
| 271 |
+
raise ValueError(f"Unknown stimuli requested: {missing_str}")
|
| 272 |
+
|
| 273 |
+
return stimuli, stimulus_keys
|
| 274 |
+
|
| 275 |
+
|
| 276 |
+
def _build_pairwise_df(results: list[dict]) -> pd.DataFrame:
|
| 277 |
+
if not results:
|
| 278 |
+
return _empty_pairwise_df()
|
| 279 |
+
|
| 280 |
+
df = pd.DataFrame.from_records(results, columns=PAIRWISE_COLUMNS)
|
| 281 |
+
df = df.sort_values(by="CKA", ascending=False).reset_index(drop=True)
|
| 282 |
+
return df
|
| 283 |
+
|
| 284 |
+
|
| 285 |
+
def refresh_blue_leaderboard():
|
| 286 |
+
try:
|
| 287 |
+
submissions = load_submissions("blue")
|
| 288 |
+
except Exception as exc:
|
| 289 |
+
return styled_error(f"Failed to load blue submissions: {exc}"), _empty_leaderboard_df(
|
| 290 |
+
BLUE_LEADERBOARD_COLUMNS
|
| 291 |
+
)
|
| 292 |
+
|
| 293 |
+
df = _build_leaderboard_df(
|
| 294 |
+
submissions,
|
| 295 |
+
columns=BLUE_LEADERBOARD_COLUMNS,
|
| 296 |
+
count_key="num_models",
|
| 297 |
+
selections_key="model_names",
|
| 298 |
+
)
|
| 299 |
+
return styled_message(f"Loaded {len(submissions)} blue submissions."), df
|
| 300 |
+
|
| 301 |
+
|
| 302 |
+
def refresh_red_leaderboard():
|
| 303 |
+
try:
|
| 304 |
+
submissions = load_submissions("red")
|
| 305 |
+
except Exception as exc:
|
| 306 |
+
return styled_error(f"Failed to load red submissions: {exc}"), _empty_leaderboard_df(RED_LEADERBOARD_COLUMNS)
|
| 307 |
+
|
| 308 |
+
df = _build_leaderboard_df(
|
| 309 |
+
submissions,
|
| 310 |
+
columns=RED_LEADERBOARD_COLUMNS,
|
| 311 |
+
count_key="num_stimuli",
|
| 312 |
+
selections_key="stimuli_keys",
|
| 313 |
+
ascending=True, # Lower CKA = better for red team
|
| 314 |
+
)
|
| 315 |
+
return styled_message(f"Loaded {len(submissions)} red submissions."), df
|
| 316 |
+
|
| 317 |
+
|
| 318 |
+
def generate_blue_json(hf_link: str, hf_token: str):
|
| 319 |
+
try:
|
| 320 |
+
payload = _build_blue_payload([], hf_link, hf_token)
|
| 321 |
+
except Exception as exc:
|
| 322 |
+
return "", styled_error(str(exc))
|
| 323 |
+
|
| 324 |
+
return _json_dumps(payload), styled_message("Generated JSON from the Blue Team form.")
|
| 325 |
+
|
| 326 |
+
|
| 327 |
+
def generate_red_json(hf_link: str, hf_token: str):
|
| 328 |
+
try:
|
| 329 |
+
payload = _build_red_payload([], hf_link, hf_token)
|
| 330 |
+
except Exception as exc:
|
| 331 |
+
return "", styled_error(str(exc))
|
| 332 |
+
|
| 333 |
+
return _json_dumps(payload), styled_message("Generated JSON from the Red Team form.")
|
| 334 |
+
|
| 335 |
+
|
| 336 |
+
def submit_blue(submitter: str, payload: str):
|
| 337 |
+
try:
|
| 338 |
+
data = _parse_json_payload(payload)
|
| 339 |
+
models, model_names = _extract_blue_models(data)
|
| 340 |
+
submission_id = uuid4().hex
|
| 341 |
+
submitter_name = submitter.strip() or "anonymous"
|
| 342 |
+
score, pairwise_results = score_blue_with_pairwise(
|
| 343 |
+
model_names, submission_id=submission_id, submitter=submitter_name,
|
| 344 |
+
)
|
| 345 |
+
|
| 346 |
+
submission = {
|
| 347 |
+
"submission_id": submission_id,
|
| 348 |
+
"team": "blue",
|
| 349 |
+
"submitter": submitter_name,
|
| 350 |
+
"model_names": model_names,
|
| 351 |
+
"num_models": len(model_names),
|
| 352 |
+
"score": score,
|
| 353 |
+
"submitted_time": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
|
| 354 |
+
}
|
| 355 |
+
|
| 356 |
+
submissions = append_submission("blue", submission)
|
| 357 |
+
leaderboard_df = _build_leaderboard_df(
|
| 358 |
+
submissions,
|
| 359 |
+
columns=BLUE_LEADERBOARD_COLUMNS,
|
| 360 |
+
count_key="num_models",
|
| 361 |
+
selections_key="model_names",
|
| 362 |
+
)
|
| 363 |
+
pairwise_df = _build_pairwise_df(pairwise_results)
|
| 364 |
+
except Exception as exc:
|
| 365 |
+
return (
|
| 366 |
+
styled_error(f"Blue submission failed: {exc}"),
|
| 367 |
+
_empty_leaderboard_df(BLUE_LEADERBOARD_COLUMNS),
|
| 368 |
+
_empty_pairwise_df(),
|
| 369 |
+
)
|
| 370 |
+
|
| 371 |
+
return (
|
| 372 |
+
styled_message(f"Blue submission added. Score: {_format_score(score):.4f}."),
|
| 373 |
+
leaderboard_df,
|
| 374 |
+
pairwise_df,
|
| 375 |
+
)
|
| 376 |
+
|
| 377 |
+
|
| 378 |
+
def submit_red(submitter: str, payload: str):
|
| 379 |
+
try:
|
| 380 |
+
data = _parse_json_payload(payload)
|
| 381 |
+
stimuli, stimulus_keys = _extract_red_stimuli(data)
|
| 382 |
+
submission_id = uuid4().hex
|
| 383 |
+
submitter_name = submitter.strip() or "anonymous"
|
| 384 |
+
score, pairwise_results = score_red_with_pairwise(
|
| 385 |
+
stimuli, stimuli_catalog=STIMULI_CATALOG,
|
| 386 |
+
submission_id=submission_id, submitter=submitter_name,
|
| 387 |
+
)
|
| 388 |
+
|
| 389 |
+
submission = {
|
| 390 |
+
"submission_id": submission_id,
|
| 391 |
+
"team": "red",
|
| 392 |
+
"submitter": submitter_name,
|
| 393 |
+
"differentiating_images": stimuli,
|
| 394 |
+
"stimuli_keys": stimulus_keys,
|
| 395 |
+
"num_stimuli": len(stimulus_keys),
|
| 396 |
+
"score": score,
|
| 397 |
+
"submitted_time": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
|
| 398 |
+
}
|
| 399 |
+
|
| 400 |
+
submissions = append_submission("red", submission)
|
| 401 |
+
leaderboard_df = _build_leaderboard_df(
|
| 402 |
+
submissions,
|
| 403 |
+
columns=RED_LEADERBOARD_COLUMNS,
|
| 404 |
+
count_key="num_stimuli",
|
| 405 |
+
selections_key="stimuli_keys",
|
| 406 |
+
ascending=True, # Lower CKA = better for red team
|
| 407 |
+
)
|
| 408 |
+
pairwise_df = _build_pairwise_df(pairwise_results)
|
| 409 |
+
except Exception as exc:
|
| 410 |
+
return (
|
| 411 |
+
styled_error(f"Red submission failed: {exc}"),
|
| 412 |
+
_empty_leaderboard_df(RED_LEADERBOARD_COLUMNS),
|
| 413 |
+
_empty_pairwise_df(),
|
| 414 |
+
)
|
| 415 |
+
|
| 416 |
+
return (
|
| 417 |
+
styled_message(f"Red submission added. Score: {_format_score(score):.4f}."),
|
| 418 |
+
leaderboard_df,
|
| 419 |
+
pairwise_df,
|
| 420 |
+
)
|
| 421 |
+
|
| 422 |
+
|
| 423 |
+
def _sync_submissions_from_volume():
|
| 424 |
+
"""Backfill any submissions saved on the Modal volume but missing from the HF dataset."""
|
| 425 |
+
if not is_modal_enabled():
|
| 426 |
+
return
|
| 427 |
+
for team in ("blue", "red"):
|
| 428 |
+
try:
|
| 429 |
+
volume_subs = fetch_volume_submissions(team=team)
|
| 430 |
+
if not volume_subs:
|
| 431 |
+
continue
|
| 432 |
+
existing = load_submissions(team)
|
| 433 |
+
existing_ids = {s.get("submission_id") for s in existing}
|
| 434 |
+
missing = [s for s in volume_subs if s.get("submission_id") not in existing_ids]
|
| 435 |
+
if missing:
|
| 436 |
+
for sub in missing:
|
| 437 |
+
append_submission(team, sub)
|
| 438 |
+
print(f"Synced {len(missing)} missing {team} submission(s) from Modal volume.")
|
| 439 |
+
except Exception as exc:
|
| 440 |
+
print(f"Warning: failed to sync {team} submissions from Modal volume: {exc}")
|
| 441 |
+
|
| 442 |
+
|
| 443 |
+
_sync_submissions_from_volume()
|
| 444 |
+
|
| 445 |
+
initial_blue_status, initial_blue_leaderboard = refresh_blue_leaderboard()
|
| 446 |
+
initial_red_status, initial_red_leaderboard = refresh_red_leaderboard()
|
| 447 |
+
|
| 448 |
+
|
| 449 |
+
demo = gr.Blocks(css=custom_css, theme=gr.themes.Base(primary_hue="blue", neutral_hue="slate").set(body_background_fill="#0d1117", block_background_fill="#1c2128", input_background_fill="#0d1117", body_text_color="#e6edf3", block_label_text_color="#e6edf3", block_title_text_color="#e6edf3", border_color_primary="#30363d"))
|
| 450 |
+
with demo:
|
| 451 |
+
gr.HTML(TITLE)
|
| 452 |
+
gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
|
| 453 |
+
|
| 454 |
+
with gr.Tabs():
|
| 455 |
+
with gr.Tab("Getting Started"):
|
| 456 |
+
gr.Markdown(GETTING_STARTED_TEXT, elem_classes="markdown-text")
|
| 457 |
+
|
| 458 |
+
with gr.Tab("Blue Team"):
|
| 459 |
+
with gr.Row(elem_classes="blue-team"):
|
| 460 |
+
with gr.Column(scale=1):
|
| 461 |
+
gr.Markdown(BLUE_SUBMISSION_TEXT, elem_classes="markdown-text")
|
| 462 |
+
blue_submitter_name = gr.Textbox(label="Display name", placeholder="anonymous")
|
| 463 |
+
blue_hf_link = gr.Textbox(
|
| 464 |
+
label="HuggingFace dataset link",
|
| 465 |
+
placeholder="{username}/{dataset_name}",
|
| 466 |
+
)
|
| 467 |
+
blue_hf_token = gr.Textbox(
|
| 468 |
+
label="HuggingFace access token",
|
| 469 |
+
placeholder="hf_...",
|
| 470 |
+
type="password",
|
| 471 |
+
)
|
| 472 |
+
blue_generate_button = gr.Button("Generate JSON", variant="secondary")
|
| 473 |
+
blue_json = gr.Textbox(
|
| 474 |
+
label="Blue Team JSON submission",
|
| 475 |
+
lines=14,
|
| 476 |
+
interactive=True,
|
| 477 |
+
)
|
| 478 |
+
blue_submit_button = gr.Button("Submit", variant="primary")
|
| 479 |
+
blue_status = gr.Markdown(value=initial_blue_status)
|
| 480 |
+
|
| 481 |
+
with gr.Accordion("Latest Blue submission pairwise CKA", open=False):
|
| 482 |
+
blue_pairwise_table = gr.Dataframe(
|
| 483 |
+
value=_empty_pairwise_df(),
|
| 484 |
+
headers=PAIRWISE_COLUMNS,
|
| 485 |
+
datatype=PAIRWISE_TYPES,
|
| 486 |
+
row_count=8,
|
| 487 |
+
)
|
| 488 |
+
|
| 489 |
+
with gr.Column(scale=2):
|
| 490 |
+
gr.HTML("<h3 class='blue-team-header'>Blue Team Leaderboard</h3>")
|
| 491 |
+
blue_leaderboard_table = gr.Dataframe(
|
| 492 |
+
value=initial_blue_leaderboard,
|
| 493 |
+
headers=BLUE_LEADERBOARD_COLUMNS,
|
| 494 |
+
datatype=BLUE_LEADERBOARD_TYPES,
|
| 495 |
+
row_count=10,
|
| 496 |
+
)
|
| 497 |
+
blue_refresh_button = gr.Button("Refresh Blue leaderboard", variant="secondary")
|
| 498 |
+
|
| 499 |
+
with gr.Tab("Red Team"):
|
| 500 |
+
with gr.Row(elem_classes="red-team"):
|
| 501 |
+
with gr.Column(scale=1):
|
| 502 |
+
gr.Markdown(RED_SUBMISSION_TEXT, elem_classes="markdown-text")
|
| 503 |
+
red_submitter_name = gr.Textbox(label="Display name", placeholder="anonymous")
|
| 504 |
+
red_hf_link = gr.Textbox(
|
| 505 |
+
label="HuggingFace dataset link",
|
| 506 |
+
placeholder="{username}/{dataset_name}",
|
| 507 |
+
)
|
| 508 |
+
red_hf_token = gr.Textbox(
|
| 509 |
+
label="HuggingFace access token",
|
| 510 |
+
placeholder="hf_...",
|
| 511 |
+
type="password",
|
| 512 |
+
)
|
| 513 |
+
red_generate_button = gr.Button("Generate JSON", variant="secondary")
|
| 514 |
+
red_json = gr.Textbox(
|
| 515 |
+
label="Red Team JSON submission",
|
| 516 |
+
lines=14,
|
| 517 |
+
interactive=True,
|
| 518 |
+
)
|
| 519 |
+
red_submit_button = gr.Button("Submit", variant="primary")
|
| 520 |
+
red_status = gr.Markdown(value=initial_red_status)
|
| 521 |
+
|
| 522 |
+
with gr.Accordion("Latest Red submission pairwise CKA", open=False):
|
| 523 |
+
red_pairwise_table = gr.Dataframe(
|
| 524 |
+
value=_empty_pairwise_df(),
|
| 525 |
+
headers=PAIRWISE_COLUMNS,
|
| 526 |
+
datatype=PAIRWISE_TYPES,
|
| 527 |
+
row_count=8,
|
| 528 |
+
)
|
| 529 |
+
|
| 530 |
+
with gr.Column(scale=2):
|
| 531 |
+
gr.HTML("<h3 class='red-team-header'>Red Team Leaderboard</h3>")
|
| 532 |
+
red_leaderboard_table = gr.Dataframe(
|
| 533 |
+
value=initial_red_leaderboard,
|
| 534 |
+
headers=RED_LEADERBOARD_COLUMNS,
|
| 535 |
+
datatype=RED_LEADERBOARD_TYPES,
|
| 536 |
+
row_count=10,
|
| 537 |
+
)
|
| 538 |
+
red_refresh_button = gr.Button("Refresh Red leaderboard", variant="secondary")
|
| 539 |
+
|
| 540 |
+
blue_generate_button.click(
|
| 541 |
+
generate_blue_json,
|
| 542 |
+
inputs=[blue_hf_link, blue_hf_token],
|
| 543 |
+
outputs=[blue_json, blue_status],
|
| 544 |
+
)
|
| 545 |
+
blue_submit_button.click(
|
| 546 |
+
submit_blue,
|
| 547 |
+
inputs=[blue_submitter_name, blue_json],
|
| 548 |
+
outputs=[blue_status, blue_leaderboard_table, blue_pairwise_table],
|
| 549 |
+
)
|
| 550 |
+
blue_refresh_button.click(
|
| 551 |
+
refresh_blue_leaderboard,
|
| 552 |
+
inputs=[],
|
| 553 |
+
outputs=[blue_status, blue_leaderboard_table],
|
| 554 |
+
)
|
| 555 |
+
|
| 556 |
+
red_generate_button.click(
|
| 557 |
+
generate_red_json,
|
| 558 |
+
inputs=[red_hf_link, red_hf_token],
|
| 559 |
+
outputs=[red_json, red_status],
|
| 560 |
+
)
|
| 561 |
+
red_submit_button.click(
|
| 562 |
+
submit_red,
|
| 563 |
+
inputs=[red_submitter_name, red_json],
|
| 564 |
+
outputs=[red_status, red_leaderboard_table, red_pairwise_table],
|
| 565 |
+
)
|
| 566 |
+
red_refresh_button.click(
|
| 567 |
+
refresh_red_leaderboard,
|
| 568 |
+
inputs=[],
|
| 569 |
+
outputs=[red_status, red_leaderboard_table],
|
| 570 |
+
)
|
| 571 |
+
|
| 572 |
+
if __name__ == "__main__":
|
| 573 |
+
demo.queue(default_concurrency_limit=20).launch()
|
cka-data/submissions.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"submission_id": "651769b1660c4bf9aa1f3b6dc2b09e4e",
|
| 4 |
+
"submitter": "anonymous",
|
| 5 |
+
"embeddings": [
|
| 6 |
+
"base",
|
| 7 |
+
"base_noise_medium",
|
| 8 |
+
"base_noise_small"
|
| 9 |
+
],
|
| 10 |
+
"num_embeddings": 3,
|
| 11 |
+
"avg_cka": 0.9819666666666667,
|
| 12 |
+
"submitted_time": "2026-01-14T18:16:10Z"
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"submission_id": "3fe95096bd45448aa49d349b874ae35a",
|
| 16 |
+
"submitter": "anonymous",
|
| 17 |
+
"embeddings": [
|
| 18 |
+
"base",
|
| 19 |
+
"base_noise_medium",
|
| 20 |
+
"base_noise_small"
|
| 21 |
+
],
|
| 22 |
+
"num_embeddings": 3,
|
| 23 |
+
"avg_cka": 0.9819666666666667,
|
| 24 |
+
"submitted_time": "2026-01-14T18:16:12Z"
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"submission_id": "299d9edd3eb54fd5b44d06d080a6c32d",
|
| 28 |
+
"submitter": "anonymous",
|
| 29 |
+
"embeddings": [
|
| 30 |
+
"base",
|
| 31 |
+
"base_noise_small"
|
| 32 |
+
],
|
| 33 |
+
"num_embeddings": 2,
|
| 34 |
+
"avg_cka": 0.9984,
|
| 35 |
+
"submitted_time": "2026-01-14T18:16:17Z"
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"submission_id": "b5106b8d9b3b41b0950b69eb22da7c7a",
|
| 39 |
+
"submitter": "anonymous",
|
| 40 |
+
"embeddings": [
|
| 41 |
+
"base",
|
| 42 |
+
"base_noise_medium",
|
| 43 |
+
"base_noise_small",
|
| 44 |
+
"random_2"
|
| 45 |
+
],
|
| 46 |
+
"num_embeddings": 4,
|
| 47 |
+
"avg_cka": 0.6566500000000001,
|
| 48 |
+
"submitted_time": "2026-01-14T22:07:36Z"
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"submission_id": "ace7404ac6754b4e9ba91ce7616da300",
|
| 52 |
+
"submitter": "anonymous",
|
| 53 |
+
"embeddings": [
|
| 54 |
+
"random_2",
|
| 55 |
+
"random_3"
|
| 56 |
+
],
|
| 57 |
+
"num_embeddings": 2,
|
| 58 |
+
"avg_cka": 0.3314,
|
| 59 |
+
"submitted_time": "2026-01-14T22:24:12Z"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"submission_id": "0cebb975323749d8a3c3f72fa18873e2",
|
| 63 |
+
"submitter": "anonymous",
|
| 64 |
+
"embeddings": [
|
| 65 |
+
"random_3",
|
| 66 |
+
"random_2"
|
| 67 |
+
],
|
| 68 |
+
"num_embeddings": 2,
|
| 69 |
+
"avg_cka": 0.3314,
|
| 70 |
+
"submitted_time": "2026-01-14T22:24:34Z"
|
| 71 |
+
}
|
| 72 |
+
]
|
condaenv.4_q_6r3k.requirements.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
-r requirements.txt
|
configs/blue_team_model_registry.json
ADDED
|
@@ -0,0 +1,2963 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"model_name": "aimv2_1b_patch14_224.apple_pt",
|
| 4 |
+
"source": "timm",
|
| 5 |
+
"weights": "imagenet",
|
| 6 |
+
"layer": "fc_norm",
|
| 7 |
+
"embedding": "flatten",
|
| 8 |
+
"preprocess": {
|
| 9 |
+
"resize": 224,
|
| 10 |
+
"crop": 224,
|
| 11 |
+
"mean": [
|
| 12 |
+
0.481,
|
| 13 |
+
0.458,
|
| 14 |
+
0.408
|
| 15 |
+
],
|
| 16 |
+
"std": [
|
| 17 |
+
0.269,
|
| 18 |
+
0.261,
|
| 19 |
+
0.276
|
| 20 |
+
]
|
| 21 |
+
}
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"model_name": "bat_resnext26ts.ch_in1k",
|
| 25 |
+
"source": "timm",
|
| 26 |
+
"weights": "imagenet",
|
| 27 |
+
"layer": "head.global_pool",
|
| 28 |
+
"embedding": "flatten",
|
| 29 |
+
"preprocess": {
|
| 30 |
+
"resize": 284,
|
| 31 |
+
"crop": 256,
|
| 32 |
+
"mean": [
|
| 33 |
+
0.485,
|
| 34 |
+
0.456,
|
| 35 |
+
0.406
|
| 36 |
+
],
|
| 37 |
+
"std": [
|
| 38 |
+
0.229,
|
| 39 |
+
0.224,
|
| 40 |
+
0.225
|
| 41 |
+
]
|
| 42 |
+
}
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"model_name": "beit_base_patch16_224.in22k_ft_in22k",
|
| 46 |
+
"source": "timm",
|
| 47 |
+
"weights": "imagenet",
|
| 48 |
+
"layer": "fc_norm",
|
| 49 |
+
"embedding": "flatten",
|
| 50 |
+
"preprocess": {
|
| 51 |
+
"resize": 249,
|
| 52 |
+
"crop": 224,
|
| 53 |
+
"mean": [
|
| 54 |
+
0.5,
|
| 55 |
+
0.5,
|
| 56 |
+
0.5
|
| 57 |
+
],
|
| 58 |
+
"std": [
|
| 59 |
+
0.5,
|
| 60 |
+
0.5,
|
| 61 |
+
0.5
|
| 62 |
+
]
|
| 63 |
+
}
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"model_name": "beitv2_base_patch16_224.in1k_ft_in1k",
|
| 67 |
+
"source": "timm",
|
| 68 |
+
"weights": "imagenet",
|
| 69 |
+
"layer": "fc_norm",
|
| 70 |
+
"embedding": "flatten",
|
| 71 |
+
"preprocess": {
|
| 72 |
+
"resize": 249,
|
| 73 |
+
"crop": 224,
|
| 74 |
+
"mean": [
|
| 75 |
+
0.485,
|
| 76 |
+
0.456,
|
| 77 |
+
0.406
|
| 78 |
+
],
|
| 79 |
+
"std": [
|
| 80 |
+
0.229,
|
| 81 |
+
0.224,
|
| 82 |
+
0.225
|
| 83 |
+
]
|
| 84 |
+
}
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"model_name": "botnet26t_256.c1_in1k",
|
| 88 |
+
"source": "timm",
|
| 89 |
+
"weights": "imagenet",
|
| 90 |
+
"layer": "head.global_pool",
|
| 91 |
+
"embedding": "flatten",
|
| 92 |
+
"preprocess": {
|
| 93 |
+
"resize": 269,
|
| 94 |
+
"crop": 256,
|
| 95 |
+
"mean": [
|
| 96 |
+
0.485,
|
| 97 |
+
0.456,
|
| 98 |
+
0.406
|
| 99 |
+
],
|
| 100 |
+
"std": [
|
| 101 |
+
0.229,
|
| 102 |
+
0.224,
|
| 103 |
+
0.225
|
| 104 |
+
]
|
| 105 |
+
}
|
| 106 |
+
},
|
| 107 |
+
{
|
| 108 |
+
"model_name": "caformer_b36.sail_in1k",
|
| 109 |
+
"source": "timm",
|
| 110 |
+
"weights": "imagenet",
|
| 111 |
+
"layer": "head.global_pool",
|
| 112 |
+
"embedding": "flatten",
|
| 113 |
+
"preprocess": {
|
| 114 |
+
"resize": 224,
|
| 115 |
+
"crop": 224,
|
| 116 |
+
"mean": [
|
| 117 |
+
0.485,
|
| 118 |
+
0.456,
|
| 119 |
+
0.406
|
| 120 |
+
],
|
| 121 |
+
"std": [
|
| 122 |
+
0.229,
|
| 123 |
+
0.224,
|
| 124 |
+
0.225
|
| 125 |
+
]
|
| 126 |
+
}
|
| 127 |
+
},
|
| 128 |
+
{
|
| 129 |
+
"model_name": "cait_m36_384.fb_dist_in1k",
|
| 130 |
+
"source": "timm",
|
| 131 |
+
"weights": "imagenet",
|
| 132 |
+
"layer": "norm",
|
| 133 |
+
"embedding": "flatten",
|
| 134 |
+
"preprocess": {
|
| 135 |
+
"resize": 384,
|
| 136 |
+
"crop": 384,
|
| 137 |
+
"mean": [
|
| 138 |
+
0.485,
|
| 139 |
+
0.456,
|
| 140 |
+
0.406
|
| 141 |
+
],
|
| 142 |
+
"std": [
|
| 143 |
+
0.229,
|
| 144 |
+
0.224,
|
| 145 |
+
0.225
|
| 146 |
+
]
|
| 147 |
+
}
|
| 148 |
+
},
|
| 149 |
+
{
|
| 150 |
+
"model_name": "coat_lite_medium.in1k",
|
| 151 |
+
"source": "timm",
|
| 152 |
+
"weights": "imagenet",
|
| 153 |
+
"layer": "norm4",
|
| 154 |
+
"embedding": "flatten",
|
| 155 |
+
"preprocess": {
|
| 156 |
+
"resize": 249,
|
| 157 |
+
"crop": 224,
|
| 158 |
+
"mean": [
|
| 159 |
+
0.485,
|
| 160 |
+
0.456,
|
| 161 |
+
0.406
|
| 162 |
+
],
|
| 163 |
+
"std": [
|
| 164 |
+
0.229,
|
| 165 |
+
0.224,
|
| 166 |
+
0.225
|
| 167 |
+
]
|
| 168 |
+
}
|
| 169 |
+
},
|
| 170 |
+
{
|
| 171 |
+
"model_name": "coatnet_0_rw_224.sw_in1k",
|
| 172 |
+
"source": "timm",
|
| 173 |
+
"weights": "imagenet",
|
| 174 |
+
"layer": "head.global_pool",
|
| 175 |
+
"embedding": "flatten",
|
| 176 |
+
"preprocess": {
|
| 177 |
+
"resize": 236,
|
| 178 |
+
"crop": 224,
|
| 179 |
+
"mean": [
|
| 180 |
+
0.5,
|
| 181 |
+
0.5,
|
| 182 |
+
0.5
|
| 183 |
+
],
|
| 184 |
+
"std": [
|
| 185 |
+
0.5,
|
| 186 |
+
0.5,
|
| 187 |
+
0.5
|
| 188 |
+
]
|
| 189 |
+
}
|
| 190 |
+
},
|
| 191 |
+
{
|
| 192 |
+
"model_name": "coatnext_nano_rw_224.sw_in1k",
|
| 193 |
+
"source": "timm",
|
| 194 |
+
"weights": "imagenet",
|
| 195 |
+
"layer": "head.global_pool",
|
| 196 |
+
"embedding": "flatten",
|
| 197 |
+
"preprocess": {
|
| 198 |
+
"resize": 249,
|
| 199 |
+
"crop": 224,
|
| 200 |
+
"mean": [
|
| 201 |
+
0.5,
|
| 202 |
+
0.5,
|
| 203 |
+
0.5
|
| 204 |
+
],
|
| 205 |
+
"std": [
|
| 206 |
+
0.5,
|
| 207 |
+
0.5,
|
| 208 |
+
0.5
|
| 209 |
+
]
|
| 210 |
+
}
|
| 211 |
+
},
|
| 212 |
+
{
|
| 213 |
+
"model_name": "convformer_b36.sail_in1k",
|
| 214 |
+
"source": "timm",
|
| 215 |
+
"weights": "imagenet",
|
| 216 |
+
"layer": "head.global_pool",
|
| 217 |
+
"embedding": "flatten",
|
| 218 |
+
"preprocess": {
|
| 219 |
+
"resize": 224,
|
| 220 |
+
"crop": 224,
|
| 221 |
+
"mean": [
|
| 222 |
+
0.485,
|
| 223 |
+
0.456,
|
| 224 |
+
0.406
|
| 225 |
+
],
|
| 226 |
+
"std": [
|
| 227 |
+
0.229,
|
| 228 |
+
0.224,
|
| 229 |
+
0.225
|
| 230 |
+
]
|
| 231 |
+
}
|
| 232 |
+
},
|
| 233 |
+
{
|
| 234 |
+
"model_name": "convit_base.fb_in1k",
|
| 235 |
+
"source": "timm",
|
| 236 |
+
"weights": "imagenet",
|
| 237 |
+
"layer": "norm",
|
| 238 |
+
"embedding": "flatten",
|
| 239 |
+
"preprocess": {
|
| 240 |
+
"resize": 256,
|
| 241 |
+
"crop": 224,
|
| 242 |
+
"mean": [
|
| 243 |
+
0.485,
|
| 244 |
+
0.456,
|
| 245 |
+
0.406
|
| 246 |
+
],
|
| 247 |
+
"std": [
|
| 248 |
+
0.229,
|
| 249 |
+
0.224,
|
| 250 |
+
0.225
|
| 251 |
+
]
|
| 252 |
+
}
|
| 253 |
+
},
|
| 254 |
+
{
|
| 255 |
+
"model_name": "convmixer_1024_20_ks9_p14.in1k",
|
| 256 |
+
"source": "timm",
|
| 257 |
+
"weights": "imagenet",
|
| 258 |
+
"layer": "pooling",
|
| 259 |
+
"embedding": "flatten",
|
| 260 |
+
"preprocess": {
|
| 261 |
+
"resize": 233,
|
| 262 |
+
"crop": 224,
|
| 263 |
+
"mean": [
|
| 264 |
+
0.485,
|
| 265 |
+
0.456,
|
| 266 |
+
0.406
|
| 267 |
+
],
|
| 268 |
+
"std": [
|
| 269 |
+
0.229,
|
| 270 |
+
0.224,
|
| 271 |
+
0.225
|
| 272 |
+
]
|
| 273 |
+
}
|
| 274 |
+
},
|
| 275 |
+
{
|
| 276 |
+
"model_name": "convnext_atto.d2_in1k",
|
| 277 |
+
"source": "timm",
|
| 278 |
+
"weights": "imagenet",
|
| 279 |
+
"layer": "head.global_pool",
|
| 280 |
+
"embedding": "flatten",
|
| 281 |
+
"preprocess": {
|
| 282 |
+
"resize": 256,
|
| 283 |
+
"crop": 224,
|
| 284 |
+
"mean": [
|
| 285 |
+
0.485,
|
| 286 |
+
0.456,
|
| 287 |
+
0.406
|
| 288 |
+
],
|
| 289 |
+
"std": [
|
| 290 |
+
0.229,
|
| 291 |
+
0.224,
|
| 292 |
+
0.225
|
| 293 |
+
]
|
| 294 |
+
}
|
| 295 |
+
},
|
| 296 |
+
{
|
| 297 |
+
"model_name": "convnextv2_atto.fcmae",
|
| 298 |
+
"source": "timm",
|
| 299 |
+
"weights": "imagenet",
|
| 300 |
+
"layer": "head.global_pool",
|
| 301 |
+
"embedding": "flatten",
|
| 302 |
+
"preprocess": {
|
| 303 |
+
"resize": 256,
|
| 304 |
+
"crop": 224,
|
| 305 |
+
"mean": [
|
| 306 |
+
0.485,
|
| 307 |
+
0.456,
|
| 308 |
+
0.406
|
| 309 |
+
],
|
| 310 |
+
"std": [
|
| 311 |
+
0.229,
|
| 312 |
+
0.224,
|
| 313 |
+
0.225
|
| 314 |
+
]
|
| 315 |
+
}
|
| 316 |
+
},
|
| 317 |
+
{
|
| 318 |
+
"model_name": "crossvit_15_240.in1k",
|
| 319 |
+
"source": "timm",
|
| 320 |
+
"weights": "imagenet",
|
| 321 |
+
"layer": "norm.1",
|
| 322 |
+
"embedding": "flatten",
|
| 323 |
+
"preprocess": {
|
| 324 |
+
"resize": 274,
|
| 325 |
+
"crop": 240,
|
| 326 |
+
"mean": [
|
| 327 |
+
0.485,
|
| 328 |
+
0.456,
|
| 329 |
+
0.406
|
| 330 |
+
],
|
| 331 |
+
"std": [
|
| 332 |
+
0.229,
|
| 333 |
+
0.224,
|
| 334 |
+
0.225
|
| 335 |
+
]
|
| 336 |
+
}
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"model_name": "cs3darknet_focus_l.c2ns_in1k",
|
| 340 |
+
"source": "timm",
|
| 341 |
+
"weights": "imagenet",
|
| 342 |
+
"layer": "head.global_pool",
|
| 343 |
+
"embedding": "flatten",
|
| 344 |
+
"preprocess": {
|
| 345 |
+
"resize": 289,
|
| 346 |
+
"crop": 256,
|
| 347 |
+
"mean": [
|
| 348 |
+
0.485,
|
| 349 |
+
0.456,
|
| 350 |
+
0.406
|
| 351 |
+
],
|
| 352 |
+
"std": [
|
| 353 |
+
0.229,
|
| 354 |
+
0.224,
|
| 355 |
+
0.225
|
| 356 |
+
]
|
| 357 |
+
}
|
| 358 |
+
},
|
| 359 |
+
{
|
| 360 |
+
"model_name": "cspdarknet53.ra_in1k",
|
| 361 |
+
"source": "timm",
|
| 362 |
+
"weights": "imagenet",
|
| 363 |
+
"layer": "head.global_pool",
|
| 364 |
+
"embedding": "flatten",
|
| 365 |
+
"preprocess": {
|
| 366 |
+
"resize": 289,
|
| 367 |
+
"crop": 256,
|
| 368 |
+
"mean": [
|
| 369 |
+
0.485,
|
| 370 |
+
0.456,
|
| 371 |
+
0.406
|
| 372 |
+
],
|
| 373 |
+
"std": [
|
| 374 |
+
0.229,
|
| 375 |
+
0.224,
|
| 376 |
+
0.225
|
| 377 |
+
]
|
| 378 |
+
}
|
| 379 |
+
},
|
| 380 |
+
{
|
| 381 |
+
"model_name": "cspresnet50.ra_in1k",
|
| 382 |
+
"source": "timm",
|
| 383 |
+
"weights": "imagenet",
|
| 384 |
+
"layer": "head.global_pool",
|
| 385 |
+
"embedding": "flatten",
|
| 386 |
+
"preprocess": {
|
| 387 |
+
"resize": 289,
|
| 388 |
+
"crop": 256,
|
| 389 |
+
"mean": [
|
| 390 |
+
0.485,
|
| 391 |
+
0.456,
|
| 392 |
+
0.406
|
| 393 |
+
],
|
| 394 |
+
"std": [
|
| 395 |
+
0.229,
|
| 396 |
+
0.224,
|
| 397 |
+
0.225
|
| 398 |
+
]
|
| 399 |
+
}
|
| 400 |
+
},
|
| 401 |
+
{
|
| 402 |
+
"model_name": "cspresnext50.ra_in1k",
|
| 403 |
+
"source": "timm",
|
| 404 |
+
"weights": "imagenet",
|
| 405 |
+
"layer": "head.global_pool",
|
| 406 |
+
"embedding": "flatten",
|
| 407 |
+
"preprocess": {
|
| 408 |
+
"resize": 289,
|
| 409 |
+
"crop": 256,
|
| 410 |
+
"mean": [
|
| 411 |
+
0.485,
|
| 412 |
+
0.456,
|
| 413 |
+
0.406
|
| 414 |
+
],
|
| 415 |
+
"std": [
|
| 416 |
+
0.229,
|
| 417 |
+
0.224,
|
| 418 |
+
0.225
|
| 419 |
+
]
|
| 420 |
+
}
|
| 421 |
+
},
|
| 422 |
+
{
|
| 423 |
+
"model_name": "darknet53.c2ns_in1k",
|
| 424 |
+
"source": "timm",
|
| 425 |
+
"weights": "imagenet",
|
| 426 |
+
"layer": "head.global_pool",
|
| 427 |
+
"embedding": "flatten",
|
| 428 |
+
"preprocess": {
|
| 429 |
+
"resize": 289,
|
| 430 |
+
"crop": 256,
|
| 431 |
+
"mean": [
|
| 432 |
+
0.485,
|
| 433 |
+
0.456,
|
| 434 |
+
0.406
|
| 435 |
+
],
|
| 436 |
+
"std": [
|
| 437 |
+
0.229,
|
| 438 |
+
0.224,
|
| 439 |
+
0.225
|
| 440 |
+
]
|
| 441 |
+
}
|
| 442 |
+
},
|
| 443 |
+
{
|
| 444 |
+
"model_name": "darknetaa53.c2ns_in1k",
|
| 445 |
+
"source": "timm",
|
| 446 |
+
"weights": "imagenet",
|
| 447 |
+
"layer": "head.global_pool",
|
| 448 |
+
"embedding": "flatten",
|
| 449 |
+
"preprocess": {
|
| 450 |
+
"resize": 289,
|
| 451 |
+
"crop": 256,
|
| 452 |
+
"mean": [
|
| 453 |
+
0.485,
|
| 454 |
+
0.456,
|
| 455 |
+
0.406
|
| 456 |
+
],
|
| 457 |
+
"std": [
|
| 458 |
+
0.229,
|
| 459 |
+
0.224,
|
| 460 |
+
0.225
|
| 461 |
+
]
|
| 462 |
+
}
|
| 463 |
+
},
|
| 464 |
+
{
|
| 465 |
+
"model_name": "davit_base.msft_in1k",
|
| 466 |
+
"source": "timm",
|
| 467 |
+
"weights": "imagenet",
|
| 468 |
+
"layer": "head.global_pool",
|
| 469 |
+
"embedding": "flatten",
|
| 470 |
+
"preprocess": {
|
| 471 |
+
"resize": 236,
|
| 472 |
+
"crop": 224,
|
| 473 |
+
"mean": [
|
| 474 |
+
0.485,
|
| 475 |
+
0.456,
|
| 476 |
+
0.406
|
| 477 |
+
],
|
| 478 |
+
"std": [
|
| 479 |
+
0.229,
|
| 480 |
+
0.224,
|
| 481 |
+
0.225
|
| 482 |
+
]
|
| 483 |
+
}
|
| 484 |
+
},
|
| 485 |
+
{
|
| 486 |
+
"model_name": "deit3_base_patch16_224.fb_in1k",
|
| 487 |
+
"source": "timm",
|
| 488 |
+
"weights": "imagenet",
|
| 489 |
+
"layer": "fc_norm",
|
| 490 |
+
"embedding": "flatten",
|
| 491 |
+
"preprocess": {
|
| 492 |
+
"resize": 249,
|
| 493 |
+
"crop": 224,
|
| 494 |
+
"mean": [
|
| 495 |
+
0.485,
|
| 496 |
+
0.456,
|
| 497 |
+
0.406
|
| 498 |
+
],
|
| 499 |
+
"std": [
|
| 500 |
+
0.229,
|
| 501 |
+
0.224,
|
| 502 |
+
0.225
|
| 503 |
+
]
|
| 504 |
+
}
|
| 505 |
+
},
|
| 506 |
+
{
|
| 507 |
+
"model_name": "densenet121.ra_in1k",
|
| 508 |
+
"source": "timm",
|
| 509 |
+
"weights": "imagenet",
|
| 510 |
+
"layer": "global_pool",
|
| 511 |
+
"embedding": "flatten",
|
| 512 |
+
"preprocess": {
|
| 513 |
+
"resize": 256,
|
| 514 |
+
"crop": 224,
|
| 515 |
+
"mean": [
|
| 516 |
+
0.485,
|
| 517 |
+
0.456,
|
| 518 |
+
0.406
|
| 519 |
+
],
|
| 520 |
+
"std": [
|
| 521 |
+
0.229,
|
| 522 |
+
0.224,
|
| 523 |
+
0.225
|
| 524 |
+
]
|
| 525 |
+
}
|
| 526 |
+
},
|
| 527 |
+
{
|
| 528 |
+
"model_name": "densenetblur121d.ra_in1k",
|
| 529 |
+
"source": "timm",
|
| 530 |
+
"weights": "imagenet",
|
| 531 |
+
"layer": "global_pool",
|
| 532 |
+
"embedding": "flatten",
|
| 533 |
+
"preprocess": {
|
| 534 |
+
"resize": 256,
|
| 535 |
+
"crop": 224,
|
| 536 |
+
"mean": [
|
| 537 |
+
0.485,
|
| 538 |
+
0.456,
|
| 539 |
+
0.406
|
| 540 |
+
],
|
| 541 |
+
"std": [
|
| 542 |
+
0.229,
|
| 543 |
+
0.224,
|
| 544 |
+
0.225
|
| 545 |
+
]
|
| 546 |
+
}
|
| 547 |
+
},
|
| 548 |
+
{
|
| 549 |
+
"model_name": "dla102.in1k",
|
| 550 |
+
"source": "timm",
|
| 551 |
+
"weights": "imagenet",
|
| 552 |
+
"layer": "global_pool",
|
| 553 |
+
"embedding": "flatten",
|
| 554 |
+
"preprocess": {
|
| 555 |
+
"resize": 256,
|
| 556 |
+
"crop": 224,
|
| 557 |
+
"mean": [
|
| 558 |
+
0.485,
|
| 559 |
+
0.456,
|
| 560 |
+
0.406
|
| 561 |
+
],
|
| 562 |
+
"std": [
|
| 563 |
+
0.229,
|
| 564 |
+
0.224,
|
| 565 |
+
0.225
|
| 566 |
+
]
|
| 567 |
+
}
|
| 568 |
+
},
|
| 569 |
+
{
|
| 570 |
+
"model_name": "dm_nfnet_f0.dm_in1k",
|
| 571 |
+
"source": "timm",
|
| 572 |
+
"weights": "imagenet",
|
| 573 |
+
"layer": "head.global_pool",
|
| 574 |
+
"embedding": "flatten",
|
| 575 |
+
"preprocess": {
|
| 576 |
+
"resize": 213,
|
| 577 |
+
"crop": 192,
|
| 578 |
+
"mean": [
|
| 579 |
+
0.485,
|
| 580 |
+
0.456,
|
| 581 |
+
0.406
|
| 582 |
+
],
|
| 583 |
+
"std": [
|
| 584 |
+
0.229,
|
| 585 |
+
0.224,
|
| 586 |
+
0.225
|
| 587 |
+
]
|
| 588 |
+
}
|
| 589 |
+
},
|
| 590 |
+
{
|
| 591 |
+
"model_name": "dpn107.mx_in1k",
|
| 592 |
+
"source": "timm",
|
| 593 |
+
"weights": "imagenet",
|
| 594 |
+
"layer": "global_pool",
|
| 595 |
+
"embedding": "flatten",
|
| 596 |
+
"preprocess": {
|
| 597 |
+
"resize": 256,
|
| 598 |
+
"crop": 224,
|
| 599 |
+
"mean": [
|
| 600 |
+
0.486,
|
| 601 |
+
0.459,
|
| 602 |
+
0.408
|
| 603 |
+
],
|
| 604 |
+
"std": [
|
| 605 |
+
0.235,
|
| 606 |
+
0.235,
|
| 607 |
+
0.235
|
| 608 |
+
]
|
| 609 |
+
}
|
| 610 |
+
},
|
| 611 |
+
{
|
| 612 |
+
"model_name": "eca_botnext26ts_256.c1_in1k",
|
| 613 |
+
"source": "timm",
|
| 614 |
+
"weights": "imagenet",
|
| 615 |
+
"layer": "head.global_pool",
|
| 616 |
+
"embedding": "flatten",
|
| 617 |
+
"preprocess": {
|
| 618 |
+
"resize": 269,
|
| 619 |
+
"crop": 256,
|
| 620 |
+
"mean": [
|
| 621 |
+
0.485,
|
| 622 |
+
0.456,
|
| 623 |
+
0.406
|
| 624 |
+
],
|
| 625 |
+
"std": [
|
| 626 |
+
0.229,
|
| 627 |
+
0.224,
|
| 628 |
+
0.225
|
| 629 |
+
]
|
| 630 |
+
}
|
| 631 |
+
},
|
| 632 |
+
{
|
| 633 |
+
"model_name": "ecaresnet101d.miil_in1k",
|
| 634 |
+
"source": "timm",
|
| 635 |
+
"weights": "imagenet",
|
| 636 |
+
"layer": "global_pool",
|
| 637 |
+
"embedding": "flatten",
|
| 638 |
+
"preprocess": {
|
| 639 |
+
"resize": 256,
|
| 640 |
+
"crop": 224,
|
| 641 |
+
"mean": [
|
| 642 |
+
0.485,
|
| 643 |
+
0.456,
|
| 644 |
+
0.406
|
| 645 |
+
],
|
| 646 |
+
"std": [
|
| 647 |
+
0.229,
|
| 648 |
+
0.224,
|
| 649 |
+
0.225
|
| 650 |
+
]
|
| 651 |
+
}
|
| 652 |
+
},
|
| 653 |
+
{
|
| 654 |
+
"model_name": "ecaresnetlight.miil_in1k",
|
| 655 |
+
"source": "timm",
|
| 656 |
+
"weights": "imagenet",
|
| 657 |
+
"layer": "global_pool",
|
| 658 |
+
"embedding": "flatten",
|
| 659 |
+
"preprocess": {
|
| 660 |
+
"resize": 256,
|
| 661 |
+
"crop": 224,
|
| 662 |
+
"mean": [
|
| 663 |
+
0.485,
|
| 664 |
+
0.456,
|
| 665 |
+
0.406
|
| 666 |
+
],
|
| 667 |
+
"std": [
|
| 668 |
+
0.229,
|
| 669 |
+
0.224,
|
| 670 |
+
0.225
|
| 671 |
+
]
|
| 672 |
+
}
|
| 673 |
+
},
|
| 674 |
+
{
|
| 675 |
+
"model_name": "edgenext_base.in21k_ft_in1k",
|
| 676 |
+
"source": "timm",
|
| 677 |
+
"weights": "imagenet",
|
| 678 |
+
"layer": "head.global_pool",
|
| 679 |
+
"embedding": "flatten",
|
| 680 |
+
"preprocess": {
|
| 681 |
+
"resize": 269,
|
| 682 |
+
"crop": 256,
|
| 683 |
+
"mean": [
|
| 684 |
+
0.485,
|
| 685 |
+
0.456,
|
| 686 |
+
0.406
|
| 687 |
+
],
|
| 688 |
+
"std": [
|
| 689 |
+
0.229,
|
| 690 |
+
0.224,
|
| 691 |
+
0.225
|
| 692 |
+
]
|
| 693 |
+
}
|
| 694 |
+
},
|
| 695 |
+
{
|
| 696 |
+
"model_name": "efficientformer_l1.snap_dist_in1k",
|
| 697 |
+
"source": "timm",
|
| 698 |
+
"weights": "imagenet",
|
| 699 |
+
"layer": "norm",
|
| 700 |
+
"embedding": "flatten",
|
| 701 |
+
"preprocess": {
|
| 702 |
+
"resize": 236,
|
| 703 |
+
"crop": 224,
|
| 704 |
+
"mean": [
|
| 705 |
+
0.485,
|
| 706 |
+
0.456,
|
| 707 |
+
0.406
|
| 708 |
+
],
|
| 709 |
+
"std": [
|
| 710 |
+
0.229,
|
| 711 |
+
0.224,
|
| 712 |
+
0.225
|
| 713 |
+
]
|
| 714 |
+
}
|
| 715 |
+
},
|
| 716 |
+
{
|
| 717 |
+
"model_name": "efficientformerv2_l.snap_dist_in1k",
|
| 718 |
+
"source": "timm",
|
| 719 |
+
"weights": "imagenet",
|
| 720 |
+
"layer": "norm",
|
| 721 |
+
"embedding": "flatten",
|
| 722 |
+
"preprocess": {
|
| 723 |
+
"resize": 236,
|
| 724 |
+
"crop": 224,
|
| 725 |
+
"mean": [
|
| 726 |
+
0.485,
|
| 727 |
+
0.456,
|
| 728 |
+
0.406
|
| 729 |
+
],
|
| 730 |
+
"std": [
|
| 731 |
+
0.229,
|
| 732 |
+
0.224,
|
| 733 |
+
0.225
|
| 734 |
+
]
|
| 735 |
+
}
|
| 736 |
+
},
|
| 737 |
+
{
|
| 738 |
+
"model_name": "efficientnet_b0.ra4_e3600_r224_in1k",
|
| 739 |
+
"source": "timm",
|
| 740 |
+
"weights": "imagenet",
|
| 741 |
+
"layer": "global_pool",
|
| 742 |
+
"embedding": "flatten",
|
| 743 |
+
"preprocess": {
|
| 744 |
+
"resize": 249,
|
| 745 |
+
"crop": 224,
|
| 746 |
+
"mean": [
|
| 747 |
+
0.5,
|
| 748 |
+
0.5,
|
| 749 |
+
0.5
|
| 750 |
+
],
|
| 751 |
+
"std": [
|
| 752 |
+
0.5,
|
| 753 |
+
0.5,
|
| 754 |
+
0.5
|
| 755 |
+
]
|
| 756 |
+
}
|
| 757 |
+
},
|
| 758 |
+
{
|
| 759 |
+
"model_name": "efficientnetv2_rw_m.agc_in1k",
|
| 760 |
+
"source": "timm",
|
| 761 |
+
"weights": "imagenet",
|
| 762 |
+
"layer": "global_pool",
|
| 763 |
+
"embedding": "flatten",
|
| 764 |
+
"preprocess": {
|
| 765 |
+
"resize": 320,
|
| 766 |
+
"crop": 320,
|
| 767 |
+
"mean": [
|
| 768 |
+
0.485,
|
| 769 |
+
0.456,
|
| 770 |
+
0.406
|
| 771 |
+
],
|
| 772 |
+
"std": [
|
| 773 |
+
0.229,
|
| 774 |
+
0.224,
|
| 775 |
+
0.225
|
| 776 |
+
]
|
| 777 |
+
}
|
| 778 |
+
},
|
| 779 |
+
{
|
| 780 |
+
"model_name": "efficientvit_b0.r224_in1k",
|
| 781 |
+
"source": "timm",
|
| 782 |
+
"weights": "imagenet",
|
| 783 |
+
"layer": "head.global_pool",
|
| 784 |
+
"embedding": "flatten",
|
| 785 |
+
"preprocess": {
|
| 786 |
+
"resize": 236,
|
| 787 |
+
"crop": 224,
|
| 788 |
+
"mean": [
|
| 789 |
+
0.485,
|
| 790 |
+
0.456,
|
| 791 |
+
0.406
|
| 792 |
+
],
|
| 793 |
+
"std": [
|
| 794 |
+
0.229,
|
| 795 |
+
0.224,
|
| 796 |
+
0.225
|
| 797 |
+
]
|
| 798 |
+
}
|
| 799 |
+
},
|
| 800 |
+
{
|
| 801 |
+
"model_name": "ese_vovnet19b_dw.ra_in1k",
|
| 802 |
+
"source": "timm",
|
| 803 |
+
"weights": "imagenet",
|
| 804 |
+
"layer": "head.global_pool",
|
| 805 |
+
"embedding": "flatten",
|
| 806 |
+
"preprocess": {
|
| 807 |
+
"resize": 256,
|
| 808 |
+
"crop": 224,
|
| 809 |
+
"mean": [
|
| 810 |
+
0.485,
|
| 811 |
+
0.456,
|
| 812 |
+
0.406
|
| 813 |
+
],
|
| 814 |
+
"std": [
|
| 815 |
+
0.229,
|
| 816 |
+
0.224,
|
| 817 |
+
0.225
|
| 818 |
+
]
|
| 819 |
+
}
|
| 820 |
+
},
|
| 821 |
+
{
|
| 822 |
+
"model_name": "eva02_base_patch14_224.mim_in22k",
|
| 823 |
+
"source": "timm",
|
| 824 |
+
"weights": "imagenet",
|
| 825 |
+
"layer": "fc_norm",
|
| 826 |
+
"embedding": "flatten",
|
| 827 |
+
"preprocess": {
|
| 828 |
+
"resize": 249,
|
| 829 |
+
"crop": 224,
|
| 830 |
+
"mean": [
|
| 831 |
+
0.481,
|
| 832 |
+
0.458,
|
| 833 |
+
0.408
|
| 834 |
+
],
|
| 835 |
+
"std": [
|
| 836 |
+
0.269,
|
| 837 |
+
0.261,
|
| 838 |
+
0.276
|
| 839 |
+
]
|
| 840 |
+
}
|
| 841 |
+
},
|
| 842 |
+
{
|
| 843 |
+
"model_name": "fastvit_ma36.apple_dist_in1k",
|
| 844 |
+
"source": "timm",
|
| 845 |
+
"weights": "imagenet",
|
| 846 |
+
"layer": "head.global_pool",
|
| 847 |
+
"embedding": "flatten",
|
| 848 |
+
"preprocess": {
|
| 849 |
+
"resize": 269,
|
| 850 |
+
"crop": 256,
|
| 851 |
+
"mean": [
|
| 852 |
+
0.485,
|
| 853 |
+
0.456,
|
| 854 |
+
0.406
|
| 855 |
+
],
|
| 856 |
+
"std": [
|
| 857 |
+
0.229,
|
| 858 |
+
0.224,
|
| 859 |
+
0.225
|
| 860 |
+
]
|
| 861 |
+
}
|
| 862 |
+
},
|
| 863 |
+
{
|
| 864 |
+
"model_name": "fbnetc_100.rmsp_in1k",
|
| 865 |
+
"source": "timm",
|
| 866 |
+
"weights": "imagenet",
|
| 867 |
+
"layer": "global_pool",
|
| 868 |
+
"embedding": "flatten",
|
| 869 |
+
"preprocess": {
|
| 870 |
+
"resize": 256,
|
| 871 |
+
"crop": 224,
|
| 872 |
+
"mean": [
|
| 873 |
+
0.485,
|
| 874 |
+
0.456,
|
| 875 |
+
0.406
|
| 876 |
+
],
|
| 877 |
+
"std": [
|
| 878 |
+
0.229,
|
| 879 |
+
0.224,
|
| 880 |
+
0.225
|
| 881 |
+
]
|
| 882 |
+
}
|
| 883 |
+
},
|
| 884 |
+
{
|
| 885 |
+
"model_name": "fbnetv3_b.ra2_in1k",
|
| 886 |
+
"source": "timm",
|
| 887 |
+
"weights": "imagenet",
|
| 888 |
+
"layer": "global_pool",
|
| 889 |
+
"embedding": "flatten",
|
| 890 |
+
"preprocess": {
|
| 891 |
+
"resize": 236,
|
| 892 |
+
"crop": 224,
|
| 893 |
+
"mean": [
|
| 894 |
+
0.485,
|
| 895 |
+
0.456,
|
| 896 |
+
0.406
|
| 897 |
+
],
|
| 898 |
+
"std": [
|
| 899 |
+
0.229,
|
| 900 |
+
0.224,
|
| 901 |
+
0.225
|
| 902 |
+
]
|
| 903 |
+
}
|
| 904 |
+
},
|
| 905 |
+
{
|
| 906 |
+
"model_name": "flexivit_base.1000ep_in21k",
|
| 907 |
+
"source": "timm",
|
| 908 |
+
"weights": "imagenet",
|
| 909 |
+
"layer": "fc_norm",
|
| 910 |
+
"embedding": "flatten",
|
| 911 |
+
"preprocess": {
|
| 912 |
+
"resize": 253,
|
| 913 |
+
"crop": 240,
|
| 914 |
+
"mean": [
|
| 915 |
+
0.5,
|
| 916 |
+
0.5,
|
| 917 |
+
0.5
|
| 918 |
+
],
|
| 919 |
+
"std": [
|
| 920 |
+
0.5,
|
| 921 |
+
0.5,
|
| 922 |
+
0.5
|
| 923 |
+
]
|
| 924 |
+
}
|
| 925 |
+
},
|
| 926 |
+
{
|
| 927 |
+
"model_name": "focalnet_base_lrf.ms_in1k",
|
| 928 |
+
"source": "timm",
|
| 929 |
+
"weights": "imagenet",
|
| 930 |
+
"layer": "head.global_pool",
|
| 931 |
+
"embedding": "flatten",
|
| 932 |
+
"preprocess": {
|
| 933 |
+
"resize": 249,
|
| 934 |
+
"crop": 224,
|
| 935 |
+
"mean": [
|
| 936 |
+
0.485,
|
| 937 |
+
0.456,
|
| 938 |
+
0.406
|
| 939 |
+
],
|
| 940 |
+
"std": [
|
| 941 |
+
0.229,
|
| 942 |
+
0.224,
|
| 943 |
+
0.225
|
| 944 |
+
]
|
| 945 |
+
}
|
| 946 |
+
},
|
| 947 |
+
{
|
| 948 |
+
"model_name": "gc_efficientnetv2_rw_t.agc_in1k",
|
| 949 |
+
"source": "timm",
|
| 950 |
+
"weights": "imagenet",
|
| 951 |
+
"layer": "global_pool",
|
| 952 |
+
"embedding": "flatten",
|
| 953 |
+
"preprocess": {
|
| 954 |
+
"resize": 224,
|
| 955 |
+
"crop": 224,
|
| 956 |
+
"mean": [
|
| 957 |
+
0.485,
|
| 958 |
+
0.456,
|
| 959 |
+
0.406
|
| 960 |
+
],
|
| 961 |
+
"std": [
|
| 962 |
+
0.229,
|
| 963 |
+
0.224,
|
| 964 |
+
0.225
|
| 965 |
+
]
|
| 966 |
+
}
|
| 967 |
+
},
|
| 968 |
+
{
|
| 969 |
+
"model_name": "gcresnet33ts.ra2_in1k",
|
| 970 |
+
"source": "timm",
|
| 971 |
+
"weights": "imagenet",
|
| 972 |
+
"layer": "head.global_pool",
|
| 973 |
+
"embedding": "flatten",
|
| 974 |
+
"preprocess": {
|
| 975 |
+
"resize": 284,
|
| 976 |
+
"crop": 256,
|
| 977 |
+
"mean": [
|
| 978 |
+
0.485,
|
| 979 |
+
0.456,
|
| 980 |
+
0.406
|
| 981 |
+
],
|
| 982 |
+
"std": [
|
| 983 |
+
0.229,
|
| 984 |
+
0.224,
|
| 985 |
+
0.225
|
| 986 |
+
]
|
| 987 |
+
}
|
| 988 |
+
},
|
| 989 |
+
{
|
| 990 |
+
"model_name": "gcresnext26ts.ch_in1k",
|
| 991 |
+
"source": "timm",
|
| 992 |
+
"weights": "imagenet",
|
| 993 |
+
"layer": "head.global_pool",
|
| 994 |
+
"embedding": "flatten",
|
| 995 |
+
"preprocess": {
|
| 996 |
+
"resize": 284,
|
| 997 |
+
"crop": 256,
|
| 998 |
+
"mean": [
|
| 999 |
+
0.485,
|
| 1000 |
+
0.456,
|
| 1001 |
+
0.406
|
| 1002 |
+
],
|
| 1003 |
+
"std": [
|
| 1004 |
+
0.229,
|
| 1005 |
+
0.224,
|
| 1006 |
+
0.225
|
| 1007 |
+
]
|
| 1008 |
+
}
|
| 1009 |
+
},
|
| 1010 |
+
{
|
| 1011 |
+
"model_name": "gcvit_base.in1k",
|
| 1012 |
+
"source": "timm",
|
| 1013 |
+
"weights": "imagenet",
|
| 1014 |
+
"layer": "head.global_pool",
|
| 1015 |
+
"embedding": "flatten",
|
| 1016 |
+
"preprocess": {
|
| 1017 |
+
"resize": 256,
|
| 1018 |
+
"crop": 224,
|
| 1019 |
+
"mean": [
|
| 1020 |
+
0.485,
|
| 1021 |
+
0.456,
|
| 1022 |
+
0.406
|
| 1023 |
+
],
|
| 1024 |
+
"std": [
|
| 1025 |
+
0.229,
|
| 1026 |
+
0.224,
|
| 1027 |
+
0.225
|
| 1028 |
+
]
|
| 1029 |
+
}
|
| 1030 |
+
},
|
| 1031 |
+
{
|
| 1032 |
+
"model_name": "gernet_l.idstcv_in1k",
|
| 1033 |
+
"source": "timm",
|
| 1034 |
+
"weights": "imagenet",
|
| 1035 |
+
"layer": "head.global_pool",
|
| 1036 |
+
"embedding": "flatten",
|
| 1037 |
+
"preprocess": {
|
| 1038 |
+
"resize": 293,
|
| 1039 |
+
"crop": 256,
|
| 1040 |
+
"mean": [
|
| 1041 |
+
0.485,
|
| 1042 |
+
0.456,
|
| 1043 |
+
0.406
|
| 1044 |
+
],
|
| 1045 |
+
"std": [
|
| 1046 |
+
0.229,
|
| 1047 |
+
0.224,
|
| 1048 |
+
0.225
|
| 1049 |
+
]
|
| 1050 |
+
}
|
| 1051 |
+
},
|
| 1052 |
+
{
|
| 1053 |
+
"model_name": "ghostnet_100.in1k",
|
| 1054 |
+
"source": "timm",
|
| 1055 |
+
"weights": "imagenet",
|
| 1056 |
+
"layer": "global_pool",
|
| 1057 |
+
"embedding": "flatten",
|
| 1058 |
+
"preprocess": {
|
| 1059 |
+
"resize": 256,
|
| 1060 |
+
"crop": 224,
|
| 1061 |
+
"mean": [
|
| 1062 |
+
0.485,
|
| 1063 |
+
0.456,
|
| 1064 |
+
0.406
|
| 1065 |
+
],
|
| 1066 |
+
"std": [
|
| 1067 |
+
0.229,
|
| 1068 |
+
0.224,
|
| 1069 |
+
0.225
|
| 1070 |
+
]
|
| 1071 |
+
}
|
| 1072 |
+
},
|
| 1073 |
+
{
|
| 1074 |
+
"model_name": "ghostnetv2_100.in1k",
|
| 1075 |
+
"source": "timm",
|
| 1076 |
+
"weights": "imagenet",
|
| 1077 |
+
"layer": "global_pool",
|
| 1078 |
+
"embedding": "flatten",
|
| 1079 |
+
"preprocess": {
|
| 1080 |
+
"resize": 256,
|
| 1081 |
+
"crop": 224,
|
| 1082 |
+
"mean": [
|
| 1083 |
+
0.485,
|
| 1084 |
+
0.456,
|
| 1085 |
+
0.406
|
| 1086 |
+
],
|
| 1087 |
+
"std": [
|
| 1088 |
+
0.229,
|
| 1089 |
+
0.224,
|
| 1090 |
+
0.225
|
| 1091 |
+
]
|
| 1092 |
+
}
|
| 1093 |
+
},
|
| 1094 |
+
{
|
| 1095 |
+
"model_name": "gmixer_24_224.ra3_in1k",
|
| 1096 |
+
"source": "timm",
|
| 1097 |
+
"weights": "imagenet",
|
| 1098 |
+
"layer": "norm",
|
| 1099 |
+
"embedding": "flatten",
|
| 1100 |
+
"preprocess": {
|
| 1101 |
+
"resize": 256,
|
| 1102 |
+
"crop": 224,
|
| 1103 |
+
"mean": [
|
| 1104 |
+
0.485,
|
| 1105 |
+
0.456,
|
| 1106 |
+
0.406
|
| 1107 |
+
],
|
| 1108 |
+
"std": [
|
| 1109 |
+
0.229,
|
| 1110 |
+
0.224,
|
| 1111 |
+
0.225
|
| 1112 |
+
]
|
| 1113 |
+
}
|
| 1114 |
+
},
|
| 1115 |
+
{
|
| 1116 |
+
"model_name": "gmlp_s16_224.ra3_in1k",
|
| 1117 |
+
"source": "timm",
|
| 1118 |
+
"weights": "imagenet",
|
| 1119 |
+
"layer": "norm",
|
| 1120 |
+
"embedding": "flatten",
|
| 1121 |
+
"preprocess": {
|
| 1122 |
+
"resize": 256,
|
| 1123 |
+
"crop": 224,
|
| 1124 |
+
"mean": [
|
| 1125 |
+
0.5,
|
| 1126 |
+
0.5,
|
| 1127 |
+
0.5
|
| 1128 |
+
],
|
| 1129 |
+
"std": [
|
| 1130 |
+
0.5,
|
| 1131 |
+
0.5,
|
| 1132 |
+
0.5
|
| 1133 |
+
]
|
| 1134 |
+
}
|
| 1135 |
+
},
|
| 1136 |
+
{
|
| 1137 |
+
"model_name": "halo2botnet50ts_256.a1h_in1k",
|
| 1138 |
+
"source": "timm",
|
| 1139 |
+
"weights": "imagenet",
|
| 1140 |
+
"layer": "head.global_pool",
|
| 1141 |
+
"embedding": "flatten",
|
| 1142 |
+
"preprocess": {
|
| 1143 |
+
"resize": 269,
|
| 1144 |
+
"crop": 256,
|
| 1145 |
+
"mean": [
|
| 1146 |
+
0.485,
|
| 1147 |
+
0.456,
|
| 1148 |
+
0.406
|
| 1149 |
+
],
|
| 1150 |
+
"std": [
|
| 1151 |
+
0.229,
|
| 1152 |
+
0.224,
|
| 1153 |
+
0.225
|
| 1154 |
+
]
|
| 1155 |
+
}
|
| 1156 |
+
},
|
| 1157 |
+
{
|
| 1158 |
+
"model_name": "halonet26t.a1h_in1k",
|
| 1159 |
+
"source": "timm",
|
| 1160 |
+
"weights": "imagenet",
|
| 1161 |
+
"layer": "head.global_pool",
|
| 1162 |
+
"embedding": "flatten",
|
| 1163 |
+
"preprocess": {
|
| 1164 |
+
"resize": 269,
|
| 1165 |
+
"crop": 256,
|
| 1166 |
+
"mean": [
|
| 1167 |
+
0.485,
|
| 1168 |
+
0.456,
|
| 1169 |
+
0.406
|
| 1170 |
+
],
|
| 1171 |
+
"std": [
|
| 1172 |
+
0.229,
|
| 1173 |
+
0.224,
|
| 1174 |
+
0.225
|
| 1175 |
+
]
|
| 1176 |
+
}
|
| 1177 |
+
},
|
| 1178 |
+
{
|
| 1179 |
+
"model_name": "haloregnetz_b.ra3_in1k",
|
| 1180 |
+
"source": "timm",
|
| 1181 |
+
"weights": "imagenet",
|
| 1182 |
+
"layer": "head.global_pool",
|
| 1183 |
+
"embedding": "flatten",
|
| 1184 |
+
"preprocess": {
|
| 1185 |
+
"resize": 238,
|
| 1186 |
+
"crop": 224,
|
| 1187 |
+
"mean": [
|
| 1188 |
+
0.5,
|
| 1189 |
+
0.5,
|
| 1190 |
+
0.5
|
| 1191 |
+
],
|
| 1192 |
+
"std": [
|
| 1193 |
+
0.5,
|
| 1194 |
+
0.5,
|
| 1195 |
+
0.5
|
| 1196 |
+
]
|
| 1197 |
+
}
|
| 1198 |
+
},
|
| 1199 |
+
{
|
| 1200 |
+
"model_name": "hardcorenas_a.miil_green_in1k",
|
| 1201 |
+
"source": "timm",
|
| 1202 |
+
"weights": "imagenet",
|
| 1203 |
+
"layer": "global_pool",
|
| 1204 |
+
"embedding": "flatten",
|
| 1205 |
+
"preprocess": {
|
| 1206 |
+
"resize": 256,
|
| 1207 |
+
"crop": 224,
|
| 1208 |
+
"mean": [
|
| 1209 |
+
0.485,
|
| 1210 |
+
0.456,
|
| 1211 |
+
0.406
|
| 1212 |
+
],
|
| 1213 |
+
"std": [
|
| 1214 |
+
0.229,
|
| 1215 |
+
0.224,
|
| 1216 |
+
0.225
|
| 1217 |
+
]
|
| 1218 |
+
}
|
| 1219 |
+
},
|
| 1220 |
+
{
|
| 1221 |
+
"model_name": "hgnet_base.ssld_in1k",
|
| 1222 |
+
"source": "timm",
|
| 1223 |
+
"weights": "imagenet",
|
| 1224 |
+
"layer": "head.global_pool",
|
| 1225 |
+
"embedding": "flatten",
|
| 1226 |
+
"preprocess": {
|
| 1227 |
+
"resize": 232,
|
| 1228 |
+
"crop": 224,
|
| 1229 |
+
"mean": [
|
| 1230 |
+
0.485,
|
| 1231 |
+
0.456,
|
| 1232 |
+
0.406
|
| 1233 |
+
],
|
| 1234 |
+
"std": [
|
| 1235 |
+
0.229,
|
| 1236 |
+
0.224,
|
| 1237 |
+
0.225
|
| 1238 |
+
]
|
| 1239 |
+
}
|
| 1240 |
+
},
|
| 1241 |
+
{
|
| 1242 |
+
"model_name": "hgnetv2_b0.ssld_stage1_in22k_in1k",
|
| 1243 |
+
"source": "timm",
|
| 1244 |
+
"weights": "imagenet",
|
| 1245 |
+
"layer": "head.global_pool",
|
| 1246 |
+
"embedding": "flatten",
|
| 1247 |
+
"preprocess": {
|
| 1248 |
+
"resize": 232,
|
| 1249 |
+
"crop": 224,
|
| 1250 |
+
"mean": [
|
| 1251 |
+
0.485,
|
| 1252 |
+
0.456,
|
| 1253 |
+
0.406
|
| 1254 |
+
],
|
| 1255 |
+
"std": [
|
| 1256 |
+
0.229,
|
| 1257 |
+
0.224,
|
| 1258 |
+
0.225
|
| 1259 |
+
]
|
| 1260 |
+
}
|
| 1261 |
+
},
|
| 1262 |
+
{
|
| 1263 |
+
"model_name": "hiera_base_224.mae",
|
| 1264 |
+
"source": "timm",
|
| 1265 |
+
"weights": "imagenet",
|
| 1266 |
+
"layer": "head.norm",
|
| 1267 |
+
"embedding": "flatten",
|
| 1268 |
+
"preprocess": {
|
| 1269 |
+
"resize": 249,
|
| 1270 |
+
"crop": 224,
|
| 1271 |
+
"mean": [
|
| 1272 |
+
0.485,
|
| 1273 |
+
0.456,
|
| 1274 |
+
0.406
|
| 1275 |
+
],
|
| 1276 |
+
"std": [
|
| 1277 |
+
0.229,
|
| 1278 |
+
0.224,
|
| 1279 |
+
0.225
|
| 1280 |
+
]
|
| 1281 |
+
}
|
| 1282 |
+
},
|
| 1283 |
+
{
|
| 1284 |
+
"model_name": "hrnet_w18.ms_aug_in1k",
|
| 1285 |
+
"source": "timm",
|
| 1286 |
+
"weights": "imagenet",
|
| 1287 |
+
"layer": "global_pool",
|
| 1288 |
+
"embedding": "flatten",
|
| 1289 |
+
"preprocess": {
|
| 1290 |
+
"resize": 236,
|
| 1291 |
+
"crop": 224,
|
| 1292 |
+
"mean": [
|
| 1293 |
+
0.485,
|
| 1294 |
+
0.456,
|
| 1295 |
+
0.406
|
| 1296 |
+
],
|
| 1297 |
+
"std": [
|
| 1298 |
+
0.229,
|
| 1299 |
+
0.224,
|
| 1300 |
+
0.225
|
| 1301 |
+
]
|
| 1302 |
+
}
|
| 1303 |
+
},
|
| 1304 |
+
{
|
| 1305 |
+
"model_name": "inception_next_atto.sail_in1k",
|
| 1306 |
+
"source": "timm",
|
| 1307 |
+
"weights": "imagenet",
|
| 1308 |
+
"layer": "head.global_pool",
|
| 1309 |
+
"embedding": "flatten",
|
| 1310 |
+
"preprocess": {
|
| 1311 |
+
"resize": 256,
|
| 1312 |
+
"crop": 224,
|
| 1313 |
+
"mean": [
|
| 1314 |
+
0.485,
|
| 1315 |
+
0.456,
|
| 1316 |
+
0.406
|
| 1317 |
+
],
|
| 1318 |
+
"std": [
|
| 1319 |
+
0.229,
|
| 1320 |
+
0.224,
|
| 1321 |
+
0.225
|
| 1322 |
+
]
|
| 1323 |
+
}
|
| 1324 |
+
},
|
| 1325 |
+
{
|
| 1326 |
+
"model_name": "lambda_resnet26rpt_256.c1_in1k",
|
| 1327 |
+
"source": "timm",
|
| 1328 |
+
"weights": "imagenet",
|
| 1329 |
+
"layer": "head.global_pool",
|
| 1330 |
+
"embedding": "flatten",
|
| 1331 |
+
"preprocess": {
|
| 1332 |
+
"resize": 272,
|
| 1333 |
+
"crop": 256,
|
| 1334 |
+
"mean": [
|
| 1335 |
+
0.485,
|
| 1336 |
+
0.456,
|
| 1337 |
+
0.406
|
| 1338 |
+
],
|
| 1339 |
+
"std": [
|
| 1340 |
+
0.229,
|
| 1341 |
+
0.224,
|
| 1342 |
+
0.225
|
| 1343 |
+
]
|
| 1344 |
+
}
|
| 1345 |
+
},
|
| 1346 |
+
{
|
| 1347 |
+
"model_name": "lamhalobotnet50ts_256.a1h_in1k",
|
| 1348 |
+
"source": "timm",
|
| 1349 |
+
"weights": "imagenet",
|
| 1350 |
+
"layer": "head.global_pool",
|
| 1351 |
+
"embedding": "flatten",
|
| 1352 |
+
"preprocess": {
|
| 1353 |
+
"resize": 269,
|
| 1354 |
+
"crop": 256,
|
| 1355 |
+
"mean": [
|
| 1356 |
+
0.485,
|
| 1357 |
+
0.456,
|
| 1358 |
+
0.406
|
| 1359 |
+
],
|
| 1360 |
+
"std": [
|
| 1361 |
+
0.229,
|
| 1362 |
+
0.224,
|
| 1363 |
+
0.225
|
| 1364 |
+
]
|
| 1365 |
+
}
|
| 1366 |
+
},
|
| 1367 |
+
{
|
| 1368 |
+
"model_name": "lcnet_050.ra2_in1k",
|
| 1369 |
+
"source": "timm",
|
| 1370 |
+
"weights": "imagenet",
|
| 1371 |
+
"layer": "global_pool",
|
| 1372 |
+
"embedding": "flatten",
|
| 1373 |
+
"preprocess": {
|
| 1374 |
+
"resize": 256,
|
| 1375 |
+
"crop": 224,
|
| 1376 |
+
"mean": [
|
| 1377 |
+
0.485,
|
| 1378 |
+
0.456,
|
| 1379 |
+
0.406
|
| 1380 |
+
],
|
| 1381 |
+
"std": [
|
| 1382 |
+
0.229,
|
| 1383 |
+
0.224,
|
| 1384 |
+
0.225
|
| 1385 |
+
]
|
| 1386 |
+
}
|
| 1387 |
+
},
|
| 1388 |
+
{
|
| 1389 |
+
"model_name": "legacy_senet154.in1k",
|
| 1390 |
+
"source": "timm",
|
| 1391 |
+
"weights": "imagenet",
|
| 1392 |
+
"layer": "global_pool",
|
| 1393 |
+
"embedding": "flatten",
|
| 1394 |
+
"preprocess": {
|
| 1395 |
+
"resize": 256,
|
| 1396 |
+
"crop": 224,
|
| 1397 |
+
"mean": [
|
| 1398 |
+
0.485,
|
| 1399 |
+
0.456,
|
| 1400 |
+
0.406
|
| 1401 |
+
],
|
| 1402 |
+
"std": [
|
| 1403 |
+
0.229,
|
| 1404 |
+
0.224,
|
| 1405 |
+
0.225
|
| 1406 |
+
]
|
| 1407 |
+
}
|
| 1408 |
+
},
|
| 1409 |
+
{
|
| 1410 |
+
"model_name": "levit_128.fb_dist_in1k",
|
| 1411 |
+
"source": "timm",
|
| 1412 |
+
"weights": "imagenet",
|
| 1413 |
+
"layer": "head.bn",
|
| 1414 |
+
"embedding": "flatten",
|
| 1415 |
+
"preprocess": {
|
| 1416 |
+
"resize": 249,
|
| 1417 |
+
"crop": 224,
|
| 1418 |
+
"mean": [
|
| 1419 |
+
0.485,
|
| 1420 |
+
0.456,
|
| 1421 |
+
0.406
|
| 1422 |
+
],
|
| 1423 |
+
"std": [
|
| 1424 |
+
0.229,
|
| 1425 |
+
0.224,
|
| 1426 |
+
0.225
|
| 1427 |
+
]
|
| 1428 |
+
}
|
| 1429 |
+
},
|
| 1430 |
+
{
|
| 1431 |
+
"model_name": "mambaout_base.in1k",
|
| 1432 |
+
"source": "timm",
|
| 1433 |
+
"weights": "imagenet",
|
| 1434 |
+
"layer": "head.norm",
|
| 1435 |
+
"embedding": "flatten",
|
| 1436 |
+
"preprocess": {
|
| 1437 |
+
"resize": 224,
|
| 1438 |
+
"crop": 224,
|
| 1439 |
+
"mean": [
|
| 1440 |
+
0.485,
|
| 1441 |
+
0.456,
|
| 1442 |
+
0.406
|
| 1443 |
+
],
|
| 1444 |
+
"std": [
|
| 1445 |
+
0.229,
|
| 1446 |
+
0.224,
|
| 1447 |
+
0.225
|
| 1448 |
+
]
|
| 1449 |
+
}
|
| 1450 |
+
},
|
| 1451 |
+
{
|
| 1452 |
+
"model_name": "maxvit_base_tf_224.in1k",
|
| 1453 |
+
"source": "timm",
|
| 1454 |
+
"weights": "imagenet",
|
| 1455 |
+
"layer": "head.global_pool",
|
| 1456 |
+
"embedding": "flatten",
|
| 1457 |
+
"preprocess": {
|
| 1458 |
+
"resize": 236,
|
| 1459 |
+
"crop": 224,
|
| 1460 |
+
"mean": [
|
| 1461 |
+
0.485,
|
| 1462 |
+
0.456,
|
| 1463 |
+
0.406
|
| 1464 |
+
],
|
| 1465 |
+
"std": [
|
| 1466 |
+
0.229,
|
| 1467 |
+
0.224,
|
| 1468 |
+
0.225
|
| 1469 |
+
]
|
| 1470 |
+
}
|
| 1471 |
+
},
|
| 1472 |
+
{
|
| 1473 |
+
"model_name": "maxxvit_rmlp_nano_rw_256.sw_in1k",
|
| 1474 |
+
"source": "timm",
|
| 1475 |
+
"weights": "imagenet",
|
| 1476 |
+
"layer": "head.global_pool",
|
| 1477 |
+
"embedding": "flatten",
|
| 1478 |
+
"preprocess": {
|
| 1479 |
+
"resize": 269,
|
| 1480 |
+
"crop": 256,
|
| 1481 |
+
"mean": [
|
| 1482 |
+
0.5,
|
| 1483 |
+
0.5,
|
| 1484 |
+
0.5
|
| 1485 |
+
],
|
| 1486 |
+
"std": [
|
| 1487 |
+
0.5,
|
| 1488 |
+
0.5,
|
| 1489 |
+
0.5
|
| 1490 |
+
]
|
| 1491 |
+
}
|
| 1492 |
+
},
|
| 1493 |
+
{
|
| 1494 |
+
"model_name": "maxxvitv2_nano_rw_256.sw_in1k",
|
| 1495 |
+
"source": "timm",
|
| 1496 |
+
"weights": "imagenet",
|
| 1497 |
+
"layer": "head.global_pool",
|
| 1498 |
+
"embedding": "flatten",
|
| 1499 |
+
"preprocess": {
|
| 1500 |
+
"resize": 269,
|
| 1501 |
+
"crop": 256,
|
| 1502 |
+
"mean": [
|
| 1503 |
+
0.5,
|
| 1504 |
+
0.5,
|
| 1505 |
+
0.5
|
| 1506 |
+
],
|
| 1507 |
+
"std": [
|
| 1508 |
+
0.5,
|
| 1509 |
+
0.5,
|
| 1510 |
+
0.5
|
| 1511 |
+
]
|
| 1512 |
+
}
|
| 1513 |
+
},
|
| 1514 |
+
{
|
| 1515 |
+
"model_name": "mixer_b16_224.goog_in21k",
|
| 1516 |
+
"source": "timm",
|
| 1517 |
+
"weights": "imagenet",
|
| 1518 |
+
"layer": "norm",
|
| 1519 |
+
"embedding": "flatten",
|
| 1520 |
+
"preprocess": {
|
| 1521 |
+
"resize": 256,
|
| 1522 |
+
"crop": 224,
|
| 1523 |
+
"mean": [
|
| 1524 |
+
0.5,
|
| 1525 |
+
0.5,
|
| 1526 |
+
0.5
|
| 1527 |
+
],
|
| 1528 |
+
"std": [
|
| 1529 |
+
0.5,
|
| 1530 |
+
0.5,
|
| 1531 |
+
0.5
|
| 1532 |
+
]
|
| 1533 |
+
}
|
| 1534 |
+
},
|
| 1535 |
+
{
|
| 1536 |
+
"model_name": "mixnet_l.ft_in1k",
|
| 1537 |
+
"source": "timm",
|
| 1538 |
+
"weights": "imagenet",
|
| 1539 |
+
"layer": "global_pool",
|
| 1540 |
+
"embedding": "flatten",
|
| 1541 |
+
"preprocess": {
|
| 1542 |
+
"resize": 256,
|
| 1543 |
+
"crop": 224,
|
| 1544 |
+
"mean": [
|
| 1545 |
+
0.485,
|
| 1546 |
+
0.456,
|
| 1547 |
+
0.406
|
| 1548 |
+
],
|
| 1549 |
+
"std": [
|
| 1550 |
+
0.229,
|
| 1551 |
+
0.224,
|
| 1552 |
+
0.225
|
| 1553 |
+
]
|
| 1554 |
+
}
|
| 1555 |
+
},
|
| 1556 |
+
{
|
| 1557 |
+
"model_name": "mnasnet_100.rmsp_in1k",
|
| 1558 |
+
"source": "timm",
|
| 1559 |
+
"weights": "imagenet",
|
| 1560 |
+
"layer": "global_pool",
|
| 1561 |
+
"embedding": "flatten",
|
| 1562 |
+
"preprocess": {
|
| 1563 |
+
"resize": 256,
|
| 1564 |
+
"crop": 224,
|
| 1565 |
+
"mean": [
|
| 1566 |
+
0.485,
|
| 1567 |
+
0.456,
|
| 1568 |
+
0.406
|
| 1569 |
+
],
|
| 1570 |
+
"std": [
|
| 1571 |
+
0.229,
|
| 1572 |
+
0.224,
|
| 1573 |
+
0.225
|
| 1574 |
+
]
|
| 1575 |
+
}
|
| 1576 |
+
},
|
| 1577 |
+
{
|
| 1578 |
+
"model_name": "mobilenet_edgetpu_v2_m.ra4_e3600_r224_in1k",
|
| 1579 |
+
"source": "timm",
|
| 1580 |
+
"weights": "imagenet",
|
| 1581 |
+
"layer": "global_pool",
|
| 1582 |
+
"embedding": "flatten",
|
| 1583 |
+
"preprocess": {
|
| 1584 |
+
"resize": 249,
|
| 1585 |
+
"crop": 224,
|
| 1586 |
+
"mean": [
|
| 1587 |
+
0.5,
|
| 1588 |
+
0.5,
|
| 1589 |
+
0.5
|
| 1590 |
+
],
|
| 1591 |
+
"std": [
|
| 1592 |
+
0.5,
|
| 1593 |
+
0.5,
|
| 1594 |
+
0.5
|
| 1595 |
+
]
|
| 1596 |
+
}
|
| 1597 |
+
},
|
| 1598 |
+
{
|
| 1599 |
+
"model_name": "mobilenetv1_100.ra4_e3600_r224_in1k",
|
| 1600 |
+
"source": "timm",
|
| 1601 |
+
"weights": "imagenet",
|
| 1602 |
+
"layer": "global_pool",
|
| 1603 |
+
"embedding": "flatten",
|
| 1604 |
+
"preprocess": {
|
| 1605 |
+
"resize": 256,
|
| 1606 |
+
"crop": 224,
|
| 1607 |
+
"mean": [
|
| 1608 |
+
0.5,
|
| 1609 |
+
0.5,
|
| 1610 |
+
0.5
|
| 1611 |
+
],
|
| 1612 |
+
"std": [
|
| 1613 |
+
0.5,
|
| 1614 |
+
0.5,
|
| 1615 |
+
0.5
|
| 1616 |
+
]
|
| 1617 |
+
}
|
| 1618 |
+
},
|
| 1619 |
+
{
|
| 1620 |
+
"model_name": "mobileone_s0.apple_in1k",
|
| 1621 |
+
"source": "timm",
|
| 1622 |
+
"weights": "imagenet",
|
| 1623 |
+
"layer": "head.global_pool",
|
| 1624 |
+
"embedding": "flatten",
|
| 1625 |
+
"preprocess": {
|
| 1626 |
+
"resize": 256,
|
| 1627 |
+
"crop": 224,
|
| 1628 |
+
"mean": [
|
| 1629 |
+
0.485,
|
| 1630 |
+
0.456,
|
| 1631 |
+
0.406
|
| 1632 |
+
],
|
| 1633 |
+
"std": [
|
| 1634 |
+
0.229,
|
| 1635 |
+
0.224,
|
| 1636 |
+
0.225
|
| 1637 |
+
]
|
| 1638 |
+
}
|
| 1639 |
+
},
|
| 1640 |
+
{
|
| 1641 |
+
"model_name": "mobilevit_s.cvnets_in1k",
|
| 1642 |
+
"source": "timm",
|
| 1643 |
+
"weights": "imagenet",
|
| 1644 |
+
"layer": "head.global_pool",
|
| 1645 |
+
"embedding": "flatten",
|
| 1646 |
+
"preprocess": {
|
| 1647 |
+
"resize": 284,
|
| 1648 |
+
"crop": 256,
|
| 1649 |
+
"mean": [
|
| 1650 |
+
0.0,
|
| 1651 |
+
0.0,
|
| 1652 |
+
0.0
|
| 1653 |
+
],
|
| 1654 |
+
"std": [
|
| 1655 |
+
1.0,
|
| 1656 |
+
1.0,
|
| 1657 |
+
1.0
|
| 1658 |
+
]
|
| 1659 |
+
}
|
| 1660 |
+
},
|
| 1661 |
+
{
|
| 1662 |
+
"model_name": "mobilevitv2_050.cvnets_in1k",
|
| 1663 |
+
"source": "timm",
|
| 1664 |
+
"weights": "imagenet",
|
| 1665 |
+
"layer": "head.global_pool",
|
| 1666 |
+
"embedding": "flatten",
|
| 1667 |
+
"preprocess": {
|
| 1668 |
+
"resize": 288,
|
| 1669 |
+
"crop": 256,
|
| 1670 |
+
"mean": [
|
| 1671 |
+
0.0,
|
| 1672 |
+
0.0,
|
| 1673 |
+
0.0
|
| 1674 |
+
],
|
| 1675 |
+
"std": [
|
| 1676 |
+
1.0,
|
| 1677 |
+
1.0,
|
| 1678 |
+
1.0
|
| 1679 |
+
]
|
| 1680 |
+
}
|
| 1681 |
+
},
|
| 1682 |
+
{
|
| 1683 |
+
"model_name": "mvitv2_base.fb_in1k",
|
| 1684 |
+
"source": "timm",
|
| 1685 |
+
"weights": "imagenet",
|
| 1686 |
+
"layer": "norm",
|
| 1687 |
+
"embedding": "flatten",
|
| 1688 |
+
"preprocess": {
|
| 1689 |
+
"resize": 249,
|
| 1690 |
+
"crop": 224,
|
| 1691 |
+
"mean": [
|
| 1692 |
+
0.485,
|
| 1693 |
+
0.456,
|
| 1694 |
+
0.406
|
| 1695 |
+
],
|
| 1696 |
+
"std": [
|
| 1697 |
+
0.229,
|
| 1698 |
+
0.224,
|
| 1699 |
+
0.225
|
| 1700 |
+
]
|
| 1701 |
+
}
|
| 1702 |
+
},
|
| 1703 |
+
{
|
| 1704 |
+
"model_name": "nasnetalarge.tf_in1k",
|
| 1705 |
+
"source": "timm",
|
| 1706 |
+
"weights": "imagenet",
|
| 1707 |
+
"layer": "global_pool",
|
| 1708 |
+
"embedding": "flatten",
|
| 1709 |
+
"preprocess": {
|
| 1710 |
+
"resize": 363,
|
| 1711 |
+
"crop": 331,
|
| 1712 |
+
"mean": [
|
| 1713 |
+
0.5,
|
| 1714 |
+
0.5,
|
| 1715 |
+
0.5
|
| 1716 |
+
],
|
| 1717 |
+
"std": [
|
| 1718 |
+
0.5,
|
| 1719 |
+
0.5,
|
| 1720 |
+
0.5
|
| 1721 |
+
]
|
| 1722 |
+
}
|
| 1723 |
+
},
|
| 1724 |
+
{
|
| 1725 |
+
"model_name": "nest_base_jx.goog_in1k",
|
| 1726 |
+
"source": "timm",
|
| 1727 |
+
"weights": "imagenet",
|
| 1728 |
+
"layer": "global_pool",
|
| 1729 |
+
"embedding": "flatten",
|
| 1730 |
+
"preprocess": {
|
| 1731 |
+
"resize": 256,
|
| 1732 |
+
"crop": 224,
|
| 1733 |
+
"mean": [
|
| 1734 |
+
0.485,
|
| 1735 |
+
0.456,
|
| 1736 |
+
0.406
|
| 1737 |
+
],
|
| 1738 |
+
"std": [
|
| 1739 |
+
0.229,
|
| 1740 |
+
0.224,
|
| 1741 |
+
0.225
|
| 1742 |
+
]
|
| 1743 |
+
}
|
| 1744 |
+
},
|
| 1745 |
+
{
|
| 1746 |
+
"model_name": "nextvit_base.bd_in1k",
|
| 1747 |
+
"source": "timm",
|
| 1748 |
+
"weights": "imagenet",
|
| 1749 |
+
"layer": "head.global_pool",
|
| 1750 |
+
"embedding": "flatten",
|
| 1751 |
+
"preprocess": {
|
| 1752 |
+
"resize": 236,
|
| 1753 |
+
"crop": 224,
|
| 1754 |
+
"mean": [
|
| 1755 |
+
0.485,
|
| 1756 |
+
0.456,
|
| 1757 |
+
0.406
|
| 1758 |
+
],
|
| 1759 |
+
"std": [
|
| 1760 |
+
0.229,
|
| 1761 |
+
0.224,
|
| 1762 |
+
0.225
|
| 1763 |
+
]
|
| 1764 |
+
}
|
| 1765 |
+
},
|
| 1766 |
+
{
|
| 1767 |
+
"model_name": "nf_regnet_b1.ra2_in1k",
|
| 1768 |
+
"source": "timm",
|
| 1769 |
+
"weights": "imagenet",
|
| 1770 |
+
"layer": "head.global_pool",
|
| 1771 |
+
"embedding": "flatten",
|
| 1772 |
+
"preprocess": {
|
| 1773 |
+
"resize": 284,
|
| 1774 |
+
"crop": 256,
|
| 1775 |
+
"mean": [
|
| 1776 |
+
0.485,
|
| 1777 |
+
0.456,
|
| 1778 |
+
0.406
|
| 1779 |
+
],
|
| 1780 |
+
"std": [
|
| 1781 |
+
0.229,
|
| 1782 |
+
0.224,
|
| 1783 |
+
0.225
|
| 1784 |
+
]
|
| 1785 |
+
}
|
| 1786 |
+
},
|
| 1787 |
+
{
|
| 1788 |
+
"model_name": "nfnet_l0.ra2_in1k",
|
| 1789 |
+
"source": "timm",
|
| 1790 |
+
"weights": "imagenet",
|
| 1791 |
+
"layer": "head.global_pool",
|
| 1792 |
+
"embedding": "flatten",
|
| 1793 |
+
"preprocess": {
|
| 1794 |
+
"resize": 249,
|
| 1795 |
+
"crop": 224,
|
| 1796 |
+
"mean": [
|
| 1797 |
+
0.485,
|
| 1798 |
+
0.456,
|
| 1799 |
+
0.406
|
| 1800 |
+
],
|
| 1801 |
+
"std": [
|
| 1802 |
+
0.229,
|
| 1803 |
+
0.224,
|
| 1804 |
+
0.225
|
| 1805 |
+
]
|
| 1806 |
+
}
|
| 1807 |
+
},
|
| 1808 |
+
{
|
| 1809 |
+
"model_name": "pit_b_224.in1k",
|
| 1810 |
+
"source": "timm",
|
| 1811 |
+
"weights": "imagenet",
|
| 1812 |
+
"layer": "norm",
|
| 1813 |
+
"embedding": "flatten",
|
| 1814 |
+
"preprocess": {
|
| 1815 |
+
"resize": 249,
|
| 1816 |
+
"crop": 224,
|
| 1817 |
+
"mean": [
|
| 1818 |
+
0.485,
|
| 1819 |
+
0.456,
|
| 1820 |
+
0.406
|
| 1821 |
+
],
|
| 1822 |
+
"std": [
|
| 1823 |
+
0.229,
|
| 1824 |
+
0.224,
|
| 1825 |
+
0.225
|
| 1826 |
+
]
|
| 1827 |
+
}
|
| 1828 |
+
},
|
| 1829 |
+
{
|
| 1830 |
+
"model_name": "pnasnet5large.tf_in1k",
|
| 1831 |
+
"source": "timm",
|
| 1832 |
+
"weights": "imagenet",
|
| 1833 |
+
"layer": "global_pool",
|
| 1834 |
+
"embedding": "flatten",
|
| 1835 |
+
"preprocess": {
|
| 1836 |
+
"resize": 363,
|
| 1837 |
+
"crop": 331,
|
| 1838 |
+
"mean": [
|
| 1839 |
+
0.5,
|
| 1840 |
+
0.5,
|
| 1841 |
+
0.5
|
| 1842 |
+
],
|
| 1843 |
+
"std": [
|
| 1844 |
+
0.5,
|
| 1845 |
+
0.5,
|
| 1846 |
+
0.5
|
| 1847 |
+
]
|
| 1848 |
+
}
|
| 1849 |
+
},
|
| 1850 |
+
{
|
| 1851 |
+
"model_name": "poolformer_m36.sail_in1k",
|
| 1852 |
+
"source": "timm",
|
| 1853 |
+
"weights": "imagenet",
|
| 1854 |
+
"layer": "head.global_pool",
|
| 1855 |
+
"embedding": "flatten",
|
| 1856 |
+
"preprocess": {
|
| 1857 |
+
"resize": 236,
|
| 1858 |
+
"crop": 224,
|
| 1859 |
+
"mean": [
|
| 1860 |
+
0.485,
|
| 1861 |
+
0.456,
|
| 1862 |
+
0.406
|
| 1863 |
+
],
|
| 1864 |
+
"std": [
|
| 1865 |
+
0.229,
|
| 1866 |
+
0.224,
|
| 1867 |
+
0.225
|
| 1868 |
+
]
|
| 1869 |
+
}
|
| 1870 |
+
},
|
| 1871 |
+
{
|
| 1872 |
+
"model_name": "poolformerv2_m36.sail_in1k",
|
| 1873 |
+
"source": "timm",
|
| 1874 |
+
"weights": "imagenet",
|
| 1875 |
+
"layer": "head.global_pool",
|
| 1876 |
+
"embedding": "flatten",
|
| 1877 |
+
"preprocess": {
|
| 1878 |
+
"resize": 224,
|
| 1879 |
+
"crop": 224,
|
| 1880 |
+
"mean": [
|
| 1881 |
+
0.485,
|
| 1882 |
+
0.456,
|
| 1883 |
+
0.406
|
| 1884 |
+
],
|
| 1885 |
+
"std": [
|
| 1886 |
+
0.229,
|
| 1887 |
+
0.224,
|
| 1888 |
+
0.225
|
| 1889 |
+
]
|
| 1890 |
+
}
|
| 1891 |
+
},
|
| 1892 |
+
{
|
| 1893 |
+
"model_name": "pvt_v2_b0.in1k",
|
| 1894 |
+
"source": "timm",
|
| 1895 |
+
"weights": "imagenet",
|
| 1896 |
+
"layer": "stages.3.norm",
|
| 1897 |
+
"embedding": "flatten",
|
| 1898 |
+
"preprocess": {
|
| 1899 |
+
"resize": 249,
|
| 1900 |
+
"crop": 224,
|
| 1901 |
+
"mean": [
|
| 1902 |
+
0.485,
|
| 1903 |
+
0.456,
|
| 1904 |
+
0.406
|
| 1905 |
+
],
|
| 1906 |
+
"std": [
|
| 1907 |
+
0.229,
|
| 1908 |
+
0.224,
|
| 1909 |
+
0.225
|
| 1910 |
+
]
|
| 1911 |
+
}
|
| 1912 |
+
},
|
| 1913 |
+
{
|
| 1914 |
+
"model_name": "rdnet_base.nv_in1k",
|
| 1915 |
+
"source": "timm",
|
| 1916 |
+
"weights": "imagenet",
|
| 1917 |
+
"layer": "head.global_pool",
|
| 1918 |
+
"embedding": "flatten",
|
| 1919 |
+
"preprocess": {
|
| 1920 |
+
"resize": 249,
|
| 1921 |
+
"crop": 224,
|
| 1922 |
+
"mean": [
|
| 1923 |
+
0.485,
|
| 1924 |
+
0.456,
|
| 1925 |
+
0.406
|
| 1926 |
+
],
|
| 1927 |
+
"std": [
|
| 1928 |
+
0.229,
|
| 1929 |
+
0.224,
|
| 1930 |
+
0.225
|
| 1931 |
+
]
|
| 1932 |
+
}
|
| 1933 |
+
},
|
| 1934 |
+
{
|
| 1935 |
+
"model_name": "regnetv_040.ra3_in1k",
|
| 1936 |
+
"source": "timm",
|
| 1937 |
+
"weights": "imagenet",
|
| 1938 |
+
"layer": "head.global_pool",
|
| 1939 |
+
"embedding": "flatten",
|
| 1940 |
+
"preprocess": {
|
| 1941 |
+
"resize": 236,
|
| 1942 |
+
"crop": 224,
|
| 1943 |
+
"mean": [
|
| 1944 |
+
0.485,
|
| 1945 |
+
0.456,
|
| 1946 |
+
0.406
|
| 1947 |
+
],
|
| 1948 |
+
"std": [
|
| 1949 |
+
0.229,
|
| 1950 |
+
0.224,
|
| 1951 |
+
0.225
|
| 1952 |
+
]
|
| 1953 |
+
}
|
| 1954 |
+
},
|
| 1955 |
+
{
|
| 1956 |
+
"model_name": "regnetx_002.pycls_in1k",
|
| 1957 |
+
"source": "timm",
|
| 1958 |
+
"weights": "imagenet",
|
| 1959 |
+
"layer": "head.global_pool",
|
| 1960 |
+
"embedding": "flatten",
|
| 1961 |
+
"preprocess": {
|
| 1962 |
+
"resize": 256,
|
| 1963 |
+
"crop": 224,
|
| 1964 |
+
"mean": [
|
| 1965 |
+
0.485,
|
| 1966 |
+
0.456,
|
| 1967 |
+
0.406
|
| 1968 |
+
],
|
| 1969 |
+
"std": [
|
| 1970 |
+
0.229,
|
| 1971 |
+
0.224,
|
| 1972 |
+
0.225
|
| 1973 |
+
]
|
| 1974 |
+
}
|
| 1975 |
+
},
|
| 1976 |
+
{
|
| 1977 |
+
"model_name": "regnety_002.pycls_in1k",
|
| 1978 |
+
"source": "timm",
|
| 1979 |
+
"weights": "imagenet",
|
| 1980 |
+
"layer": "head.global_pool",
|
| 1981 |
+
"embedding": "flatten",
|
| 1982 |
+
"preprocess": {
|
| 1983 |
+
"resize": 256,
|
| 1984 |
+
"crop": 224,
|
| 1985 |
+
"mean": [
|
| 1986 |
+
0.485,
|
| 1987 |
+
0.456,
|
| 1988 |
+
0.406
|
| 1989 |
+
],
|
| 1990 |
+
"std": [
|
| 1991 |
+
0.229,
|
| 1992 |
+
0.224,
|
| 1993 |
+
0.225
|
| 1994 |
+
]
|
| 1995 |
+
}
|
| 1996 |
+
},
|
| 1997 |
+
{
|
| 1998 |
+
"model_name": "regnetz_040.ra3_in1k",
|
| 1999 |
+
"source": "timm",
|
| 2000 |
+
"weights": "imagenet",
|
| 2001 |
+
"layer": "head.global_pool",
|
| 2002 |
+
"embedding": "flatten",
|
| 2003 |
+
"preprocess": {
|
| 2004 |
+
"resize": 256,
|
| 2005 |
+
"crop": 256,
|
| 2006 |
+
"mean": [
|
| 2007 |
+
0.485,
|
| 2008 |
+
0.456,
|
| 2009 |
+
0.406
|
| 2010 |
+
],
|
| 2011 |
+
"std": [
|
| 2012 |
+
0.229,
|
| 2013 |
+
0.224,
|
| 2014 |
+
0.225
|
| 2015 |
+
]
|
| 2016 |
+
}
|
| 2017 |
+
},
|
| 2018 |
+
{
|
| 2019 |
+
"model_name": "repghostnet_050.in1k",
|
| 2020 |
+
"source": "timm",
|
| 2021 |
+
"weights": "imagenet",
|
| 2022 |
+
"layer": "global_pool",
|
| 2023 |
+
"embedding": "flatten",
|
| 2024 |
+
"preprocess": {
|
| 2025 |
+
"resize": 256,
|
| 2026 |
+
"crop": 224,
|
| 2027 |
+
"mean": [
|
| 2028 |
+
0.485,
|
| 2029 |
+
0.456,
|
| 2030 |
+
0.406
|
| 2031 |
+
],
|
| 2032 |
+
"std": [
|
| 2033 |
+
0.229,
|
| 2034 |
+
0.224,
|
| 2035 |
+
0.225
|
| 2036 |
+
]
|
| 2037 |
+
}
|
| 2038 |
+
},
|
| 2039 |
+
{
|
| 2040 |
+
"model_name": "repvgg_a0.rvgg_in1k",
|
| 2041 |
+
"source": "timm",
|
| 2042 |
+
"weights": "imagenet",
|
| 2043 |
+
"layer": "head.global_pool",
|
| 2044 |
+
"embedding": "flatten",
|
| 2045 |
+
"preprocess": {
|
| 2046 |
+
"resize": 256,
|
| 2047 |
+
"crop": 224,
|
| 2048 |
+
"mean": [
|
| 2049 |
+
0.485,
|
| 2050 |
+
0.456,
|
| 2051 |
+
0.406
|
| 2052 |
+
],
|
| 2053 |
+
"std": [
|
| 2054 |
+
0.229,
|
| 2055 |
+
0.224,
|
| 2056 |
+
0.225
|
| 2057 |
+
]
|
| 2058 |
+
}
|
| 2059 |
+
},
|
| 2060 |
+
{
|
| 2061 |
+
"model_name": "repvit_m0_9.dist_300e_in1k",
|
| 2062 |
+
"source": "timm",
|
| 2063 |
+
"weights": "imagenet",
|
| 2064 |
+
"layer": "head.head.bn",
|
| 2065 |
+
"embedding": "flatten",
|
| 2066 |
+
"preprocess": {
|
| 2067 |
+
"resize": 236,
|
| 2068 |
+
"crop": 224,
|
| 2069 |
+
"mean": [
|
| 2070 |
+
0.485,
|
| 2071 |
+
0.456,
|
| 2072 |
+
0.406
|
| 2073 |
+
],
|
| 2074 |
+
"std": [
|
| 2075 |
+
0.229,
|
| 2076 |
+
0.224,
|
| 2077 |
+
0.225
|
| 2078 |
+
]
|
| 2079 |
+
}
|
| 2080 |
+
},
|
| 2081 |
+
{
|
| 2082 |
+
"model_name": "res2net101_26w_4s.in1k",
|
| 2083 |
+
"source": "timm",
|
| 2084 |
+
"weights": "imagenet",
|
| 2085 |
+
"layer": "global_pool",
|
| 2086 |
+
"embedding": "flatten",
|
| 2087 |
+
"preprocess": {
|
| 2088 |
+
"resize": 256,
|
| 2089 |
+
"crop": 224,
|
| 2090 |
+
"mean": [
|
| 2091 |
+
0.485,
|
| 2092 |
+
0.456,
|
| 2093 |
+
0.406
|
| 2094 |
+
],
|
| 2095 |
+
"std": [
|
| 2096 |
+
0.229,
|
| 2097 |
+
0.224,
|
| 2098 |
+
0.225
|
| 2099 |
+
]
|
| 2100 |
+
}
|
| 2101 |
+
},
|
| 2102 |
+
{
|
| 2103 |
+
"model_name": "resmlp_12_224.fb_dino",
|
| 2104 |
+
"source": "timm",
|
| 2105 |
+
"weights": "imagenet",
|
| 2106 |
+
"layer": "norm",
|
| 2107 |
+
"embedding": "flatten",
|
| 2108 |
+
"preprocess": {
|
| 2109 |
+
"resize": 256,
|
| 2110 |
+
"crop": 224,
|
| 2111 |
+
"mean": [
|
| 2112 |
+
0.485,
|
| 2113 |
+
0.456,
|
| 2114 |
+
0.406
|
| 2115 |
+
],
|
| 2116 |
+
"std": [
|
| 2117 |
+
0.229,
|
| 2118 |
+
0.224,
|
| 2119 |
+
0.225
|
| 2120 |
+
]
|
| 2121 |
+
}
|
| 2122 |
+
},
|
| 2123 |
+
{
|
| 2124 |
+
"model_name": "resnest101e.in1k",
|
| 2125 |
+
"source": "timm",
|
| 2126 |
+
"weights": "imagenet",
|
| 2127 |
+
"layer": "global_pool",
|
| 2128 |
+
"embedding": "flatten",
|
| 2129 |
+
"preprocess": {
|
| 2130 |
+
"resize": 293,
|
| 2131 |
+
"crop": 256,
|
| 2132 |
+
"mean": [
|
| 2133 |
+
0.485,
|
| 2134 |
+
0.456,
|
| 2135 |
+
0.406
|
| 2136 |
+
],
|
| 2137 |
+
"std": [
|
| 2138 |
+
0.229,
|
| 2139 |
+
0.224,
|
| 2140 |
+
0.225
|
| 2141 |
+
]
|
| 2142 |
+
}
|
| 2143 |
+
},
|
| 2144 |
+
{
|
| 2145 |
+
"model_name": "resnet101.a1_in1k",
|
| 2146 |
+
"source": "timm",
|
| 2147 |
+
"weights": "imagenet",
|
| 2148 |
+
"layer": "global_pool",
|
| 2149 |
+
"embedding": "flatten",
|
| 2150 |
+
"preprocess": {
|
| 2151 |
+
"resize": 236,
|
| 2152 |
+
"crop": 224,
|
| 2153 |
+
"mean": [
|
| 2154 |
+
0.485,
|
| 2155 |
+
0.456,
|
| 2156 |
+
0.406
|
| 2157 |
+
],
|
| 2158 |
+
"std": [
|
| 2159 |
+
0.229,
|
| 2160 |
+
0.224,
|
| 2161 |
+
0.225
|
| 2162 |
+
]
|
| 2163 |
+
}
|
| 2164 |
+
},
|
| 2165 |
+
{
|
| 2166 |
+
"model_name": "resnetaa101d.sw_in12k",
|
| 2167 |
+
"source": "timm",
|
| 2168 |
+
"weights": "imagenet",
|
| 2169 |
+
"layer": "global_pool",
|
| 2170 |
+
"embedding": "flatten",
|
| 2171 |
+
"preprocess": {
|
| 2172 |
+
"resize": 236,
|
| 2173 |
+
"crop": 224,
|
| 2174 |
+
"mean": [
|
| 2175 |
+
0.485,
|
| 2176 |
+
0.456,
|
| 2177 |
+
0.406
|
| 2178 |
+
],
|
| 2179 |
+
"std": [
|
| 2180 |
+
0.229,
|
| 2181 |
+
0.224,
|
| 2182 |
+
0.225
|
| 2183 |
+
]
|
| 2184 |
+
}
|
| 2185 |
+
},
|
| 2186 |
+
{
|
| 2187 |
+
"model_name": "resnetblur50.bt_in1k",
|
| 2188 |
+
"source": "timm",
|
| 2189 |
+
"weights": "imagenet",
|
| 2190 |
+
"layer": "global_pool",
|
| 2191 |
+
"embedding": "flatten",
|
| 2192 |
+
"preprocess": {
|
| 2193 |
+
"resize": 256,
|
| 2194 |
+
"crop": 224,
|
| 2195 |
+
"mean": [
|
| 2196 |
+
0.485,
|
| 2197 |
+
0.456,
|
| 2198 |
+
0.406
|
| 2199 |
+
],
|
| 2200 |
+
"std": [
|
| 2201 |
+
0.229,
|
| 2202 |
+
0.224,
|
| 2203 |
+
0.225
|
| 2204 |
+
]
|
| 2205 |
+
}
|
| 2206 |
+
},
|
| 2207 |
+
{
|
| 2208 |
+
"model_name": "resnetrs101.tf_in1k",
|
| 2209 |
+
"source": "timm",
|
| 2210 |
+
"weights": "imagenet",
|
| 2211 |
+
"layer": "global_pool",
|
| 2212 |
+
"embedding": "flatten",
|
| 2213 |
+
"preprocess": {
|
| 2214 |
+
"resize": 204,
|
| 2215 |
+
"crop": 192,
|
| 2216 |
+
"mean": [
|
| 2217 |
+
0.485,
|
| 2218 |
+
0.456,
|
| 2219 |
+
0.406
|
| 2220 |
+
],
|
| 2221 |
+
"std": [
|
| 2222 |
+
0.229,
|
| 2223 |
+
0.224,
|
| 2224 |
+
0.225
|
| 2225 |
+
]
|
| 2226 |
+
}
|
| 2227 |
+
},
|
| 2228 |
+
{
|
| 2229 |
+
"model_name": "resnetv2_101.a1h_in1k",
|
| 2230 |
+
"source": "timm",
|
| 2231 |
+
"weights": "imagenet",
|
| 2232 |
+
"layer": "head.global_pool",
|
| 2233 |
+
"embedding": "flatten",
|
| 2234 |
+
"preprocess": {
|
| 2235 |
+
"resize": 236,
|
| 2236 |
+
"crop": 224,
|
| 2237 |
+
"mean": [
|
| 2238 |
+
0.5,
|
| 2239 |
+
0.5,
|
| 2240 |
+
0.5
|
| 2241 |
+
],
|
| 2242 |
+
"std": [
|
| 2243 |
+
0.5,
|
| 2244 |
+
0.5,
|
| 2245 |
+
0.5
|
| 2246 |
+
]
|
| 2247 |
+
}
|
| 2248 |
+
},
|
| 2249 |
+
{
|
| 2250 |
+
"model_name": "resnext101_32x16d.fb_ssl_yfcc100m_ft_in1k",
|
| 2251 |
+
"source": "timm",
|
| 2252 |
+
"weights": "imagenet",
|
| 2253 |
+
"layer": "global_pool",
|
| 2254 |
+
"embedding": "flatten",
|
| 2255 |
+
"preprocess": {
|
| 2256 |
+
"resize": 256,
|
| 2257 |
+
"crop": 224,
|
| 2258 |
+
"mean": [
|
| 2259 |
+
0.485,
|
| 2260 |
+
0.456,
|
| 2261 |
+
0.406
|
| 2262 |
+
],
|
| 2263 |
+
"std": [
|
| 2264 |
+
0.229,
|
| 2265 |
+
0.224,
|
| 2266 |
+
0.225
|
| 2267 |
+
]
|
| 2268 |
+
}
|
| 2269 |
+
},
|
| 2270 |
+
{
|
| 2271 |
+
"model_name": "rexnet_100.nav_in1k",
|
| 2272 |
+
"source": "timm",
|
| 2273 |
+
"weights": "imagenet",
|
| 2274 |
+
"layer": "head.global_pool",
|
| 2275 |
+
"embedding": "flatten",
|
| 2276 |
+
"preprocess": {
|
| 2277 |
+
"resize": 256,
|
| 2278 |
+
"crop": 224,
|
| 2279 |
+
"mean": [
|
| 2280 |
+
0.485,
|
| 2281 |
+
0.456,
|
| 2282 |
+
0.406
|
| 2283 |
+
],
|
| 2284 |
+
"std": [
|
| 2285 |
+
0.229,
|
| 2286 |
+
0.224,
|
| 2287 |
+
0.225
|
| 2288 |
+
]
|
| 2289 |
+
}
|
| 2290 |
+
},
|
| 2291 |
+
{
|
| 2292 |
+
"model_name": "rexnetr_200.sw_in12k",
|
| 2293 |
+
"source": "timm",
|
| 2294 |
+
"weights": "imagenet",
|
| 2295 |
+
"layer": "head.global_pool",
|
| 2296 |
+
"embedding": "flatten",
|
| 2297 |
+
"preprocess": {
|
| 2298 |
+
"resize": 236,
|
| 2299 |
+
"crop": 224,
|
| 2300 |
+
"mean": [
|
| 2301 |
+
0.485,
|
| 2302 |
+
0.456,
|
| 2303 |
+
0.406
|
| 2304 |
+
],
|
| 2305 |
+
"std": [
|
| 2306 |
+
0.229,
|
| 2307 |
+
0.224,
|
| 2308 |
+
0.225
|
| 2309 |
+
]
|
| 2310 |
+
}
|
| 2311 |
+
},
|
| 2312 |
+
{
|
| 2313 |
+
"model_name": "sam2_hiera_base_plus.fb_r896",
|
| 2314 |
+
"source": "timm",
|
| 2315 |
+
"weights": "imagenet",
|
| 2316 |
+
"layer": "head.norm",
|
| 2317 |
+
"embedding": "flatten",
|
| 2318 |
+
"preprocess": {
|
| 2319 |
+
"resize": 896,
|
| 2320 |
+
"crop": 896,
|
| 2321 |
+
"mean": [
|
| 2322 |
+
0.485,
|
| 2323 |
+
0.456,
|
| 2324 |
+
0.406
|
| 2325 |
+
],
|
| 2326 |
+
"std": [
|
| 2327 |
+
0.229,
|
| 2328 |
+
0.224,
|
| 2329 |
+
0.225
|
| 2330 |
+
]
|
| 2331 |
+
}
|
| 2332 |
+
},
|
| 2333 |
+
{
|
| 2334 |
+
"model_name": "samvit_base_patch16.sa1b",
|
| 2335 |
+
"source": "timm",
|
| 2336 |
+
"weights": "imagenet",
|
| 2337 |
+
"layer": "head.global_pool",
|
| 2338 |
+
"embedding": "flatten",
|
| 2339 |
+
"preprocess": {
|
| 2340 |
+
"resize": 1024,
|
| 2341 |
+
"crop": 1024,
|
| 2342 |
+
"mean": [
|
| 2343 |
+
0.485,
|
| 2344 |
+
0.456,
|
| 2345 |
+
0.406
|
| 2346 |
+
],
|
| 2347 |
+
"std": [
|
| 2348 |
+
0.229,
|
| 2349 |
+
0.224,
|
| 2350 |
+
0.225
|
| 2351 |
+
]
|
| 2352 |
+
}
|
| 2353 |
+
},
|
| 2354 |
+
{
|
| 2355 |
+
"model_name": "sebotnet33ts_256.a1h_in1k",
|
| 2356 |
+
"source": "timm",
|
| 2357 |
+
"weights": "imagenet",
|
| 2358 |
+
"layer": "head.global_pool",
|
| 2359 |
+
"embedding": "flatten",
|
| 2360 |
+
"preprocess": {
|
| 2361 |
+
"resize": 272,
|
| 2362 |
+
"crop": 256,
|
| 2363 |
+
"mean": [
|
| 2364 |
+
0.485,
|
| 2365 |
+
0.456,
|
| 2366 |
+
0.406
|
| 2367 |
+
],
|
| 2368 |
+
"std": [
|
| 2369 |
+
0.229,
|
| 2370 |
+
0.224,
|
| 2371 |
+
0.225
|
| 2372 |
+
]
|
| 2373 |
+
}
|
| 2374 |
+
},
|
| 2375 |
+
{
|
| 2376 |
+
"model_name": "sehalonet33ts.ra2_in1k",
|
| 2377 |
+
"source": "timm",
|
| 2378 |
+
"weights": "imagenet",
|
| 2379 |
+
"layer": "head.global_pool",
|
| 2380 |
+
"embedding": "flatten",
|
| 2381 |
+
"preprocess": {
|
| 2382 |
+
"resize": 272,
|
| 2383 |
+
"crop": 256,
|
| 2384 |
+
"mean": [
|
| 2385 |
+
0.485,
|
| 2386 |
+
0.456,
|
| 2387 |
+
0.406
|
| 2388 |
+
],
|
| 2389 |
+
"std": [
|
| 2390 |
+
0.229,
|
| 2391 |
+
0.224,
|
| 2392 |
+
0.225
|
| 2393 |
+
]
|
| 2394 |
+
}
|
| 2395 |
+
},
|
| 2396 |
+
{
|
| 2397 |
+
"model_name": "selecsls42b.in1k",
|
| 2398 |
+
"source": "timm",
|
| 2399 |
+
"weights": "imagenet",
|
| 2400 |
+
"layer": "global_pool",
|
| 2401 |
+
"embedding": "flatten",
|
| 2402 |
+
"preprocess": {
|
| 2403 |
+
"resize": 256,
|
| 2404 |
+
"crop": 224,
|
| 2405 |
+
"mean": [
|
| 2406 |
+
0.485,
|
| 2407 |
+
0.456,
|
| 2408 |
+
0.406
|
| 2409 |
+
],
|
| 2410 |
+
"std": [
|
| 2411 |
+
0.229,
|
| 2412 |
+
0.224,
|
| 2413 |
+
0.225
|
| 2414 |
+
]
|
| 2415 |
+
}
|
| 2416 |
+
},
|
| 2417 |
+
{
|
| 2418 |
+
"model_name": "semnasnet_075.rmsp_in1k",
|
| 2419 |
+
"source": "timm",
|
| 2420 |
+
"weights": "imagenet",
|
| 2421 |
+
"layer": "global_pool",
|
| 2422 |
+
"embedding": "flatten",
|
| 2423 |
+
"preprocess": {
|
| 2424 |
+
"resize": 256,
|
| 2425 |
+
"crop": 224,
|
| 2426 |
+
"mean": [
|
| 2427 |
+
0.485,
|
| 2428 |
+
0.456,
|
| 2429 |
+
0.406
|
| 2430 |
+
],
|
| 2431 |
+
"std": [
|
| 2432 |
+
0.229,
|
| 2433 |
+
0.224,
|
| 2434 |
+
0.225
|
| 2435 |
+
]
|
| 2436 |
+
}
|
| 2437 |
+
},
|
| 2438 |
+
{
|
| 2439 |
+
"model_name": "senet154.gluon_in1k",
|
| 2440 |
+
"source": "timm",
|
| 2441 |
+
"weights": "imagenet",
|
| 2442 |
+
"layer": "global_pool",
|
| 2443 |
+
"embedding": "flatten",
|
| 2444 |
+
"preprocess": {
|
| 2445 |
+
"resize": 256,
|
| 2446 |
+
"crop": 224,
|
| 2447 |
+
"mean": [
|
| 2448 |
+
0.485,
|
| 2449 |
+
0.456,
|
| 2450 |
+
0.406
|
| 2451 |
+
],
|
| 2452 |
+
"std": [
|
| 2453 |
+
0.229,
|
| 2454 |
+
0.224,
|
| 2455 |
+
0.225
|
| 2456 |
+
]
|
| 2457 |
+
}
|
| 2458 |
+
},
|
| 2459 |
+
{
|
| 2460 |
+
"model_name": "sequencer2d_l.in1k",
|
| 2461 |
+
"source": "timm",
|
| 2462 |
+
"weights": "imagenet",
|
| 2463 |
+
"layer": "head.global_pool",
|
| 2464 |
+
"embedding": "flatten",
|
| 2465 |
+
"preprocess": {
|
| 2466 |
+
"resize": 256,
|
| 2467 |
+
"crop": 224,
|
| 2468 |
+
"mean": [
|
| 2469 |
+
0.485,
|
| 2470 |
+
0.456,
|
| 2471 |
+
0.406
|
| 2472 |
+
],
|
| 2473 |
+
"std": [
|
| 2474 |
+
0.229,
|
| 2475 |
+
0.224,
|
| 2476 |
+
0.225
|
| 2477 |
+
]
|
| 2478 |
+
}
|
| 2479 |
+
},
|
| 2480 |
+
{
|
| 2481 |
+
"model_name": "seresnet152d.ra2_in1k",
|
| 2482 |
+
"source": "timm",
|
| 2483 |
+
"weights": "imagenet",
|
| 2484 |
+
"layer": "global_pool",
|
| 2485 |
+
"embedding": "flatten",
|
| 2486 |
+
"preprocess": {
|
| 2487 |
+
"resize": 269,
|
| 2488 |
+
"crop": 256,
|
| 2489 |
+
"mean": [
|
| 2490 |
+
0.485,
|
| 2491 |
+
0.456,
|
| 2492 |
+
0.406
|
| 2493 |
+
],
|
| 2494 |
+
"std": [
|
| 2495 |
+
0.229,
|
| 2496 |
+
0.224,
|
| 2497 |
+
0.225
|
| 2498 |
+
]
|
| 2499 |
+
}
|
| 2500 |
+
},
|
| 2501 |
+
{
|
| 2502 |
+
"model_name": "seresnext101_32x4d.gluon_in1k",
|
| 2503 |
+
"source": "timm",
|
| 2504 |
+
"weights": "imagenet",
|
| 2505 |
+
"layer": "global_pool",
|
| 2506 |
+
"embedding": "flatten",
|
| 2507 |
+
"preprocess": {
|
| 2508 |
+
"resize": 256,
|
| 2509 |
+
"crop": 224,
|
| 2510 |
+
"mean": [
|
| 2511 |
+
0.485,
|
| 2512 |
+
0.456,
|
| 2513 |
+
0.406
|
| 2514 |
+
],
|
| 2515 |
+
"std": [
|
| 2516 |
+
0.229,
|
| 2517 |
+
0.224,
|
| 2518 |
+
0.225
|
| 2519 |
+
]
|
| 2520 |
+
}
|
| 2521 |
+
},
|
| 2522 |
+
{
|
| 2523 |
+
"model_name": "seresnextaa101d_32x8d.ah_in1k",
|
| 2524 |
+
"source": "timm",
|
| 2525 |
+
"weights": "imagenet",
|
| 2526 |
+
"layer": "global_pool",
|
| 2527 |
+
"embedding": "flatten",
|
| 2528 |
+
"preprocess": {
|
| 2529 |
+
"resize": 236,
|
| 2530 |
+
"crop": 224,
|
| 2531 |
+
"mean": [
|
| 2532 |
+
0.485,
|
| 2533 |
+
0.456,
|
| 2534 |
+
0.406
|
| 2535 |
+
],
|
| 2536 |
+
"std": [
|
| 2537 |
+
0.229,
|
| 2538 |
+
0.224,
|
| 2539 |
+
0.225
|
| 2540 |
+
]
|
| 2541 |
+
}
|
| 2542 |
+
},
|
| 2543 |
+
{
|
| 2544 |
+
"model_name": "skresnet18.ra_in1k",
|
| 2545 |
+
"source": "timm",
|
| 2546 |
+
"weights": "imagenet",
|
| 2547 |
+
"layer": "global_pool",
|
| 2548 |
+
"embedding": "flatten",
|
| 2549 |
+
"preprocess": {
|
| 2550 |
+
"resize": 256,
|
| 2551 |
+
"crop": 224,
|
| 2552 |
+
"mean": [
|
| 2553 |
+
0.485,
|
| 2554 |
+
0.456,
|
| 2555 |
+
0.406
|
| 2556 |
+
],
|
| 2557 |
+
"std": [
|
| 2558 |
+
0.229,
|
| 2559 |
+
0.224,
|
| 2560 |
+
0.225
|
| 2561 |
+
]
|
| 2562 |
+
}
|
| 2563 |
+
},
|
| 2564 |
+
{
|
| 2565 |
+
"model_name": "skresnext50_32x4d.ra_in1k",
|
| 2566 |
+
"source": "timm",
|
| 2567 |
+
"weights": "imagenet",
|
| 2568 |
+
"layer": "global_pool",
|
| 2569 |
+
"embedding": "flatten",
|
| 2570 |
+
"preprocess": {
|
| 2571 |
+
"resize": 256,
|
| 2572 |
+
"crop": 224,
|
| 2573 |
+
"mean": [
|
| 2574 |
+
0.485,
|
| 2575 |
+
0.456,
|
| 2576 |
+
0.406
|
| 2577 |
+
],
|
| 2578 |
+
"std": [
|
| 2579 |
+
0.229,
|
| 2580 |
+
0.224,
|
| 2581 |
+
0.225
|
| 2582 |
+
]
|
| 2583 |
+
}
|
| 2584 |
+
},
|
| 2585 |
+
{
|
| 2586 |
+
"model_name": "spnasnet_100.rmsp_in1k",
|
| 2587 |
+
"source": "timm",
|
| 2588 |
+
"weights": "imagenet",
|
| 2589 |
+
"layer": "global_pool",
|
| 2590 |
+
"embedding": "flatten",
|
| 2591 |
+
"preprocess": {
|
| 2592 |
+
"resize": 256,
|
| 2593 |
+
"crop": 224,
|
| 2594 |
+
"mean": [
|
| 2595 |
+
0.485,
|
| 2596 |
+
0.456,
|
| 2597 |
+
0.406
|
| 2598 |
+
],
|
| 2599 |
+
"std": [
|
| 2600 |
+
0.229,
|
| 2601 |
+
0.224,
|
| 2602 |
+
0.225
|
| 2603 |
+
]
|
| 2604 |
+
}
|
| 2605 |
+
},
|
| 2606 |
+
{
|
| 2607 |
+
"model_name": "swin_base_patch4_window12_384.ms_in1k",
|
| 2608 |
+
"source": "timm",
|
| 2609 |
+
"weights": "imagenet",
|
| 2610 |
+
"layer": "head.global_pool",
|
| 2611 |
+
"embedding": "flatten",
|
| 2612 |
+
"preprocess": {
|
| 2613 |
+
"resize": 384,
|
| 2614 |
+
"crop": 384,
|
| 2615 |
+
"mean": [
|
| 2616 |
+
0.485,
|
| 2617 |
+
0.456,
|
| 2618 |
+
0.406
|
| 2619 |
+
],
|
| 2620 |
+
"std": [
|
| 2621 |
+
0.229,
|
| 2622 |
+
0.224,
|
| 2623 |
+
0.225
|
| 2624 |
+
]
|
| 2625 |
+
}
|
| 2626 |
+
},
|
| 2627 |
+
{
|
| 2628 |
+
"model_name": "swinv2_base_window12_192.ms_in22k",
|
| 2629 |
+
"source": "timm",
|
| 2630 |
+
"weights": "imagenet",
|
| 2631 |
+
"layer": "head.global_pool",
|
| 2632 |
+
"embedding": "flatten",
|
| 2633 |
+
"preprocess": {
|
| 2634 |
+
"resize": 213,
|
| 2635 |
+
"crop": 192,
|
| 2636 |
+
"mean": [
|
| 2637 |
+
0.485,
|
| 2638 |
+
0.456,
|
| 2639 |
+
0.406
|
| 2640 |
+
],
|
| 2641 |
+
"std": [
|
| 2642 |
+
0.229,
|
| 2643 |
+
0.224,
|
| 2644 |
+
0.225
|
| 2645 |
+
]
|
| 2646 |
+
}
|
| 2647 |
+
},
|
| 2648 |
+
{
|
| 2649 |
+
"model_name": "test_byobnet.r160_in1k",
|
| 2650 |
+
"source": "timm",
|
| 2651 |
+
"weights": "imagenet",
|
| 2652 |
+
"layer": "head.global_pool",
|
| 2653 |
+
"embedding": "flatten",
|
| 2654 |
+
"preprocess": {
|
| 2655 |
+
"resize": 168,
|
| 2656 |
+
"crop": 160,
|
| 2657 |
+
"mean": [
|
| 2658 |
+
0.485,
|
| 2659 |
+
0.456,
|
| 2660 |
+
0.406
|
| 2661 |
+
],
|
| 2662 |
+
"std": [
|
| 2663 |
+
0.229,
|
| 2664 |
+
0.224,
|
| 2665 |
+
0.225
|
| 2666 |
+
]
|
| 2667 |
+
}
|
| 2668 |
+
},
|
| 2669 |
+
{
|
| 2670 |
+
"model_name": "tf_efficientnet_b0.aa_in1k",
|
| 2671 |
+
"source": "timm",
|
| 2672 |
+
"weights": "imagenet",
|
| 2673 |
+
"layer": "global_pool",
|
| 2674 |
+
"embedding": "flatten",
|
| 2675 |
+
"preprocess": {
|
| 2676 |
+
"resize": 256,
|
| 2677 |
+
"crop": 224,
|
| 2678 |
+
"mean": [
|
| 2679 |
+
0.485,
|
| 2680 |
+
0.456,
|
| 2681 |
+
0.406
|
| 2682 |
+
],
|
| 2683 |
+
"std": [
|
| 2684 |
+
0.229,
|
| 2685 |
+
0.224,
|
| 2686 |
+
0.225
|
| 2687 |
+
]
|
| 2688 |
+
}
|
| 2689 |
+
},
|
| 2690 |
+
{
|
| 2691 |
+
"model_name": "tiny_vit_11m_224.dist_in22k",
|
| 2692 |
+
"source": "timm",
|
| 2693 |
+
"weights": "imagenet",
|
| 2694 |
+
"layer": "head.global_pool",
|
| 2695 |
+
"embedding": "flatten",
|
| 2696 |
+
"preprocess": {
|
| 2697 |
+
"resize": 236,
|
| 2698 |
+
"crop": 224,
|
| 2699 |
+
"mean": [
|
| 2700 |
+
0.485,
|
| 2701 |
+
0.456,
|
| 2702 |
+
0.406
|
| 2703 |
+
],
|
| 2704 |
+
"std": [
|
| 2705 |
+
0.229,
|
| 2706 |
+
0.224,
|
| 2707 |
+
0.225
|
| 2708 |
+
]
|
| 2709 |
+
}
|
| 2710 |
+
},
|
| 2711 |
+
{
|
| 2712 |
+
"model_name": "tinynet_a.in1k",
|
| 2713 |
+
"source": "timm",
|
| 2714 |
+
"weights": "imagenet",
|
| 2715 |
+
"layer": "global_pool",
|
| 2716 |
+
"embedding": "flatten",
|
| 2717 |
+
"preprocess": {
|
| 2718 |
+
"resize": 219,
|
| 2719 |
+
"crop": 192,
|
| 2720 |
+
"mean": [
|
| 2721 |
+
0.485,
|
| 2722 |
+
0.456,
|
| 2723 |
+
0.406
|
| 2724 |
+
],
|
| 2725 |
+
"std": [
|
| 2726 |
+
0.229,
|
| 2727 |
+
0.224,
|
| 2728 |
+
0.225
|
| 2729 |
+
]
|
| 2730 |
+
}
|
| 2731 |
+
},
|
| 2732 |
+
{
|
| 2733 |
+
"model_name": "tnt_s_patch16_224",
|
| 2734 |
+
"source": "timm",
|
| 2735 |
+
"weights": "imagenet",
|
| 2736 |
+
"layer": "norm",
|
| 2737 |
+
"embedding": "flatten",
|
| 2738 |
+
"preprocess": {
|
| 2739 |
+
"resize": 249,
|
| 2740 |
+
"crop": 224,
|
| 2741 |
+
"mean": [
|
| 2742 |
+
0.5,
|
| 2743 |
+
0.5,
|
| 2744 |
+
0.5
|
| 2745 |
+
],
|
| 2746 |
+
"std": [
|
| 2747 |
+
0.5,
|
| 2748 |
+
0.5,
|
| 2749 |
+
0.5
|
| 2750 |
+
]
|
| 2751 |
+
}
|
| 2752 |
+
},
|
| 2753 |
+
{
|
| 2754 |
+
"model_name": "tresnet_l.miil_in1k",
|
| 2755 |
+
"source": "timm",
|
| 2756 |
+
"weights": "imagenet",
|
| 2757 |
+
"layer": "head.global_pool",
|
| 2758 |
+
"embedding": "flatten",
|
| 2759 |
+
"preprocess": {
|
| 2760 |
+
"resize": 256,
|
| 2761 |
+
"crop": 224,
|
| 2762 |
+
"mean": [
|
| 2763 |
+
0.0,
|
| 2764 |
+
0.0,
|
| 2765 |
+
0.0
|
| 2766 |
+
],
|
| 2767 |
+
"std": [
|
| 2768 |
+
1.0,
|
| 2769 |
+
1.0,
|
| 2770 |
+
1.0
|
| 2771 |
+
]
|
| 2772 |
+
}
|
| 2773 |
+
},
|
| 2774 |
+
{
|
| 2775 |
+
"model_name": "twins_pcpvt_base.in1k",
|
| 2776 |
+
"source": "timm",
|
| 2777 |
+
"weights": "imagenet",
|
| 2778 |
+
"layer": "norm",
|
| 2779 |
+
"embedding": "flatten",
|
| 2780 |
+
"preprocess": {
|
| 2781 |
+
"resize": 249,
|
| 2782 |
+
"crop": 224,
|
| 2783 |
+
"mean": [
|
| 2784 |
+
0.485,
|
| 2785 |
+
0.456,
|
| 2786 |
+
0.406
|
| 2787 |
+
],
|
| 2788 |
+
"std": [
|
| 2789 |
+
0.229,
|
| 2790 |
+
0.224,
|
| 2791 |
+
0.225
|
| 2792 |
+
]
|
| 2793 |
+
}
|
| 2794 |
+
},
|
| 2795 |
+
{
|
| 2796 |
+
"model_name": "vgg11.tv_in1k",
|
| 2797 |
+
"source": "timm",
|
| 2798 |
+
"weights": "imagenet",
|
| 2799 |
+
"layer": "head.global_pool",
|
| 2800 |
+
"embedding": "flatten",
|
| 2801 |
+
"preprocess": {
|
| 2802 |
+
"resize": 256,
|
| 2803 |
+
"crop": 224,
|
| 2804 |
+
"mean": [
|
| 2805 |
+
0.485,
|
| 2806 |
+
0.456,
|
| 2807 |
+
0.406
|
| 2808 |
+
],
|
| 2809 |
+
"std": [
|
| 2810 |
+
0.229,
|
| 2811 |
+
0.224,
|
| 2812 |
+
0.225
|
| 2813 |
+
]
|
| 2814 |
+
}
|
| 2815 |
+
},
|
| 2816 |
+
{
|
| 2817 |
+
"model_name": "visformer_small.in1k",
|
| 2818 |
+
"source": "timm",
|
| 2819 |
+
"weights": "imagenet",
|
| 2820 |
+
"layer": "global_pool",
|
| 2821 |
+
"embedding": "flatten",
|
| 2822 |
+
"preprocess": {
|
| 2823 |
+
"resize": 249,
|
| 2824 |
+
"crop": 224,
|
| 2825 |
+
"mean": [
|
| 2826 |
+
0.485,
|
| 2827 |
+
0.456,
|
| 2828 |
+
0.406
|
| 2829 |
+
],
|
| 2830 |
+
"std": [
|
| 2831 |
+
0.229,
|
| 2832 |
+
0.224,
|
| 2833 |
+
0.225
|
| 2834 |
+
]
|
| 2835 |
+
}
|
| 2836 |
+
},
|
| 2837 |
+
{
|
| 2838 |
+
"model_name": "vit_base_mci_224.apple_mclip",
|
| 2839 |
+
"source": "timm",
|
| 2840 |
+
"weights": "imagenet",
|
| 2841 |
+
"layer": "fc_norm",
|
| 2842 |
+
"embedding": "flatten",
|
| 2843 |
+
"preprocess": {
|
| 2844 |
+
"resize": 249,
|
| 2845 |
+
"crop": 224,
|
| 2846 |
+
"mean": [
|
| 2847 |
+
0.0,
|
| 2848 |
+
0.0,
|
| 2849 |
+
0.0
|
| 2850 |
+
],
|
| 2851 |
+
"std": [
|
| 2852 |
+
1.0,
|
| 2853 |
+
1.0,
|
| 2854 |
+
1.0
|
| 2855 |
+
]
|
| 2856 |
+
}
|
| 2857 |
+
},
|
| 2858 |
+
{
|
| 2859 |
+
"model_name": "vitamin_base_224.datacomp1b_clip",
|
| 2860 |
+
"source": "timm",
|
| 2861 |
+
"weights": "imagenet",
|
| 2862 |
+
"layer": "fc_norm",
|
| 2863 |
+
"embedding": "flatten",
|
| 2864 |
+
"preprocess": {
|
| 2865 |
+
"resize": 249,
|
| 2866 |
+
"crop": 224,
|
| 2867 |
+
"mean": [
|
| 2868 |
+
0.481,
|
| 2869 |
+
0.458,
|
| 2870 |
+
0.408
|
| 2871 |
+
],
|
| 2872 |
+
"std": [
|
| 2873 |
+
0.269,
|
| 2874 |
+
0.261,
|
| 2875 |
+
0.276
|
| 2876 |
+
]
|
| 2877 |
+
}
|
| 2878 |
+
},
|
| 2879 |
+
{
|
| 2880 |
+
"model_name": "volo_d1_224.sail_in1k",
|
| 2881 |
+
"source": "timm",
|
| 2882 |
+
"weights": "imagenet",
|
| 2883 |
+
"layer": "norm",
|
| 2884 |
+
"embedding": "flatten",
|
| 2885 |
+
"preprocess": {
|
| 2886 |
+
"resize": 233,
|
| 2887 |
+
"crop": 224,
|
| 2888 |
+
"mean": [
|
| 2889 |
+
0.485,
|
| 2890 |
+
0.456,
|
| 2891 |
+
0.406
|
| 2892 |
+
],
|
| 2893 |
+
"std": [
|
| 2894 |
+
0.229,
|
| 2895 |
+
0.224,
|
| 2896 |
+
0.225
|
| 2897 |
+
]
|
| 2898 |
+
}
|
| 2899 |
+
},
|
| 2900 |
+
{
|
| 2901 |
+
"model_name": "wide_resnet101_2.tv2_in1k",
|
| 2902 |
+
"source": "timm",
|
| 2903 |
+
"weights": "imagenet",
|
| 2904 |
+
"layer": "global_pool",
|
| 2905 |
+
"embedding": "flatten",
|
| 2906 |
+
"preprocess": {
|
| 2907 |
+
"resize": 201,
|
| 2908 |
+
"crop": 176,
|
| 2909 |
+
"mean": [
|
| 2910 |
+
0.485,
|
| 2911 |
+
0.456,
|
| 2912 |
+
0.406
|
| 2913 |
+
],
|
| 2914 |
+
"std": [
|
| 2915 |
+
0.229,
|
| 2916 |
+
0.224,
|
| 2917 |
+
0.225
|
| 2918 |
+
]
|
| 2919 |
+
}
|
| 2920 |
+
},
|
| 2921 |
+
{
|
| 2922 |
+
"model_name": "xception41.tf_in1k",
|
| 2923 |
+
"source": "timm",
|
| 2924 |
+
"weights": "imagenet",
|
| 2925 |
+
"layer": "head.global_pool",
|
| 2926 |
+
"embedding": "flatten",
|
| 2927 |
+
"preprocess": {
|
| 2928 |
+
"resize": 331,
|
| 2929 |
+
"crop": 299,
|
| 2930 |
+
"mean": [
|
| 2931 |
+
0.5,
|
| 2932 |
+
0.5,
|
| 2933 |
+
0.5
|
| 2934 |
+
],
|
| 2935 |
+
"std": [
|
| 2936 |
+
0.5,
|
| 2937 |
+
0.5,
|
| 2938 |
+
0.5
|
| 2939 |
+
]
|
| 2940 |
+
}
|
| 2941 |
+
},
|
| 2942 |
+
{
|
| 2943 |
+
"model_name": "xcit_large_24_p16_224.fb_dist_in1k",
|
| 2944 |
+
"source": "timm",
|
| 2945 |
+
"weights": "imagenet",
|
| 2946 |
+
"layer": "norm",
|
| 2947 |
+
"embedding": "flatten",
|
| 2948 |
+
"preprocess": {
|
| 2949 |
+
"resize": 224,
|
| 2950 |
+
"crop": 224,
|
| 2951 |
+
"mean": [
|
| 2952 |
+
0.485,
|
| 2953 |
+
0.456,
|
| 2954 |
+
0.406
|
| 2955 |
+
],
|
| 2956 |
+
"std": [
|
| 2957 |
+
0.229,
|
| 2958 |
+
0.224,
|
| 2959 |
+
0.225
|
| 2960 |
+
]
|
| 2961 |
+
}
|
| 2962 |
+
}
|
| 2963 |
+
]
|
configs/dataset_roots.example.json
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cifar100": "${DATA_ROOT}/cifar100",
|
| 3 |
+
"imagenet1k": "${DATA_ROOT}/imagenet1k"
|
| 4 |
+
}
|
configs/one_model_per_family.json
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
"aimv2_1b_patch14_224.apple_pt",
|
| 3 |
+
"bat_resnext26ts.ch_in1k",
|
| 4 |
+
"beit_base_patch16_224.in22k_ft_in22k",
|
| 5 |
+
"beitv2_base_patch16_224.in1k_ft_in1k",
|
| 6 |
+
"botnet26t_256.c1_in1k",
|
| 7 |
+
"caformer_b36.sail_in1k",
|
| 8 |
+
"cait_m36_384.fb_dist_in1k",
|
| 9 |
+
"coat_lite_medium.in1k",
|
| 10 |
+
"coatnet_0_rw_224.sw_in1k",
|
| 11 |
+
"coatnext_nano_rw_224.sw_in1k",
|
| 12 |
+
"convformer_b36.sail_in1k",
|
| 13 |
+
"convit_base.fb_in1k",
|
| 14 |
+
"convmixer_1024_20_ks9_p14.in1k",
|
| 15 |
+
"convnext_atto.d2_in1k",
|
| 16 |
+
"convnextv2_atto.fcmae",
|
| 17 |
+
"crossvit_15_240.in1k",
|
| 18 |
+
"cs3darknet_focus_l.c2ns_in1k",
|
| 19 |
+
"cspdarknet53.ra_in1k",
|
| 20 |
+
"cspresnet50.ra_in1k",
|
| 21 |
+
"cspresnext50.ra_in1k",
|
| 22 |
+
"darknet53.c2ns_in1k",
|
| 23 |
+
"darknetaa53.c2ns_in1k",
|
| 24 |
+
"davit_base.msft_in1k",
|
| 25 |
+
"deit3_base_patch16_224.fb_in1k",
|
| 26 |
+
"densenet121.ra_in1k",
|
| 27 |
+
"densenetblur121d.ra_in1k",
|
| 28 |
+
"dla102.in1k",
|
| 29 |
+
"dm_nfnet_f0.dm_in1k",
|
| 30 |
+
"dpn107.mx_in1k",
|
| 31 |
+
"eca_botnext26ts_256.c1_in1k",
|
| 32 |
+
"ecaresnet101d.miil_in1k",
|
| 33 |
+
"ecaresnetlight.miil_in1k",
|
| 34 |
+
"edgenext_base.in21k_ft_in1k",
|
| 35 |
+
"efficientformer_l1.snap_dist_in1k",
|
| 36 |
+
"efficientformerv2_l.snap_dist_in1k",
|
| 37 |
+
"efficientnet_b0.ra4_e3600_r224_in1k",
|
| 38 |
+
"efficientnetv2_rw_m.agc_in1k",
|
| 39 |
+
"efficientvit_b0.r224_in1k",
|
| 40 |
+
"ese_vovnet19b_dw.ra_in1k",
|
| 41 |
+
"eva02_base_patch14_224.mim_in22k",
|
| 42 |
+
"fastvit_ma36.apple_dist_in1k",
|
| 43 |
+
"fbnetc_100.rmsp_in1k",
|
| 44 |
+
"fbnetv3_b.ra2_in1k",
|
| 45 |
+
"flexivit_base.1000ep_in21k",
|
| 46 |
+
"focalnet_base_lrf.ms_in1k",
|
| 47 |
+
"gc_efficientnetv2_rw_t.agc_in1k",
|
| 48 |
+
"gcresnet33ts.ra2_in1k",
|
| 49 |
+
"gcresnext26ts.ch_in1k",
|
| 50 |
+
"gcvit_base.in1k",
|
| 51 |
+
"gernet_l.idstcv_in1k",
|
| 52 |
+
"ghostnet_100.in1k",
|
| 53 |
+
"ghostnetv2_100.in1k",
|
| 54 |
+
"gmixer_24_224.ra3_in1k",
|
| 55 |
+
"gmlp_s16_224.ra3_in1k",
|
| 56 |
+
"halo2botnet50ts_256.a1h_in1k",
|
| 57 |
+
"halonet26t.a1h_in1k",
|
| 58 |
+
"haloregnetz_b.ra3_in1k",
|
| 59 |
+
"hardcorenas_a.miil_green_in1k",
|
| 60 |
+
"hgnet_base.ssld_in1k",
|
| 61 |
+
"hgnetv2_b0.ssld_stage1_in22k_in1k",
|
| 62 |
+
"hiera_base_224.mae",
|
| 63 |
+
"hrnet_w18.ms_aug_in1k",
|
| 64 |
+
"inception_next_atto.sail_in1k",
|
| 65 |
+
"lambda_resnet26rpt_256.c1_in1k",
|
| 66 |
+
"lamhalobotnet50ts_256.a1h_in1k",
|
| 67 |
+
"lcnet_050.ra2_in1k",
|
| 68 |
+
"legacy_senet154.in1k",
|
| 69 |
+
"levit_128.fb_dist_in1k",
|
| 70 |
+
"mambaout_base.in1k",
|
| 71 |
+
"maxvit_base_tf_224.in1k",
|
| 72 |
+
"maxxvit_rmlp_nano_rw_256.sw_in1k",
|
| 73 |
+
"maxxvitv2_nano_rw_256.sw_in1k",
|
| 74 |
+
"mixer_b16_224.goog_in21k",
|
| 75 |
+
"mixnet_l.ft_in1k",
|
| 76 |
+
"mnasnet_100.rmsp_in1k",
|
| 77 |
+
"mobilenet_edgetpu_v2_m.ra4_e3600_r224_in1k",
|
| 78 |
+
"mobilenetv1_100.ra4_e3600_r224_in1k",
|
| 79 |
+
"mobileone_s0.apple_in1k",
|
| 80 |
+
"mobilevit_s.cvnets_in1k",
|
| 81 |
+
"mobilevitv2_050.cvnets_in1k",
|
| 82 |
+
"mvitv2_base.fb_in1k",
|
| 83 |
+
"nasnetalarge.tf_in1k",
|
| 84 |
+
"nest_base_jx.goog_in1k",
|
| 85 |
+
"nextvit_base.bd_in1k",
|
| 86 |
+
"nf_regnet_b1.ra2_in1k",
|
| 87 |
+
"nfnet_l0.ra2_in1k",
|
| 88 |
+
"pit_b_224.in1k",
|
| 89 |
+
"pnasnet5large.tf_in1k",
|
| 90 |
+
"poolformer_m36.sail_in1k",
|
| 91 |
+
"poolformerv2_m36.sail_in1k",
|
| 92 |
+
"pvt_v2_b0.in1k",
|
| 93 |
+
"rdnet_base.nv_in1k",
|
| 94 |
+
"regnetv_040.ra3_in1k",
|
| 95 |
+
"regnetx_002.pycls_in1k",
|
| 96 |
+
"regnety_002.pycls_in1k",
|
| 97 |
+
"regnetz_040.ra3_in1k",
|
| 98 |
+
"repghostnet_050.in1k",
|
| 99 |
+
"repvgg_a0.rvgg_in1k",
|
| 100 |
+
"repvit_m0_9.dist_300e_in1k",
|
| 101 |
+
"res2net101_26w_4s.in1k",
|
| 102 |
+
"resmlp_12_224.fb_dino",
|
| 103 |
+
"resnest101e.in1k",
|
| 104 |
+
"resnet101.a1_in1k",
|
| 105 |
+
"resnetaa101d.sw_in12k",
|
| 106 |
+
"resnetblur50.bt_in1k",
|
| 107 |
+
"resnetrs101.tf_in1k",
|
| 108 |
+
"resnetv2_101.a1h_in1k",
|
| 109 |
+
"resnext101_32x16d.fb_ssl_yfcc100m_ft_in1k",
|
| 110 |
+
"rexnet_100.nav_in1k",
|
| 111 |
+
"rexnetr_200.sw_in12k",
|
| 112 |
+
"sam2_hiera_base_plus.fb_r896",
|
| 113 |
+
"samvit_base_patch16.sa1b",
|
| 114 |
+
"sebotnet33ts_256.a1h_in1k",
|
| 115 |
+
"sehalonet33ts.ra2_in1k",
|
| 116 |
+
"selecsls42b.in1k",
|
| 117 |
+
"semnasnet_075.rmsp_in1k",
|
| 118 |
+
"senet154.gluon_in1k",
|
| 119 |
+
"sequencer2d_l.in1k",
|
| 120 |
+
"seresnet152d.ra2_in1k",
|
| 121 |
+
"seresnext101_32x4d.gluon_in1k",
|
| 122 |
+
"seresnextaa101d_32x8d.ah_in1k",
|
| 123 |
+
"skresnet18.ra_in1k",
|
| 124 |
+
"skresnext50_32x4d.ra_in1k",
|
| 125 |
+
"spnasnet_100.rmsp_in1k",
|
| 126 |
+
"swin_base_patch4_window12_384.ms_in1k",
|
| 127 |
+
"swinv2_base_window12_192.ms_in22k",
|
| 128 |
+
"test_byobnet.r160_in1k",
|
| 129 |
+
"tf_efficientnet_b0.aa_in1k",
|
| 130 |
+
"tiny_vit_11m_224.dist_in22k",
|
| 131 |
+
"tinynet_a.in1k",
|
| 132 |
+
"tnt_s_patch16_224",
|
| 133 |
+
"tresnet_l.miil_in1k",
|
| 134 |
+
"twins_pcpvt_base.in1k",
|
| 135 |
+
"vgg11.tv_in1k",
|
| 136 |
+
"visformer_small.in1k",
|
| 137 |
+
"vit_base_mci_224.apple_mclip",
|
| 138 |
+
"vitamin_base_224.datacomp1b_clip",
|
| 139 |
+
"volo_d1_224.sail_in1k",
|
| 140 |
+
"wide_resnet101_2.tv2_in1k",
|
| 141 |
+
"xception41.tf_in1k",
|
| 142 |
+
"xcit_large_24_p16_224.fb_dist_in1k"
|
| 143 |
+
]
|
configs/red_team_stimuli_catalog.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
configs/red_team_stimuli_catalog_1000.jsonl
ADDED
|
@@ -0,0 +1,1000 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/squeeze_bottle/b1bf76af613f4e5.png"}
|
| 2 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/removable_blade/e2bf20ba149a4c7.png"}
|
| 3 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/t-shirt/6ffb204d00cb4e1.png"}
|
| 4 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/shovel/f58ffea39d50451.png"}
|
| 5 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00030148.JPEG"}
|
| 6 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032555.JPEG"}
|
| 7 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coin_money/57c3561e3345404.png"}
|
| 8 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/vase/88cf36f4d38f451.png"}
|
| 9 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cutting_board/e31ab4b808384b7.png"}
|
| 10 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bottle_cap/e63ecf12d9e5468.png"}
|
| 11 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/calendar/6dc093056358437.png"}
|
| 12 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009422.JPEG"}
|
| 13 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/detergent/099013e091f547c.png"}
|
| 14 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bread_knife/7f0e35c3a36d4a0.png"}
|
| 15 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00029516.JPEG"}
|
| 16 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001425.JPEG"}
|
| 17 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007254.JPEG"}
|
| 18 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/baseball_glove/387f1e67d297417.png"}
|
| 19 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007241.JPEG"}
|
| 20 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/keyboard/9c9cd250704a46e.png"}
|
| 21 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/running_shoe/0edc35d855c346d.png"}
|
| 22 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036450.JPEG"}
|
| 23 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/power_cable/8319feb4cb7d412.png"}
|
| 24 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001750.JPEG"}
|
| 25 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/stapler/e5be55d9c441467.png"}
|
| 26 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031288.JPEG"}
|
| 27 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043002.JPEG"}
|
| 28 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/comb/bdfb12e1d4c7421.png"}
|
| 29 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cellphone_case/5b72ee0917034ab.png"}
|
| 30 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035198.JPEG"}
|
| 31 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/headphones_over_ear/7e573608c42247d.png"}
|
| 32 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sweater/4308e39fc6a841d.png"}
|
| 33 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015842.JPEG"}
|
| 34 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/headphones_over_ear/9350bf01f5fb416.png"}
|
| 35 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tv/d8da99d81bd94f5.png"}
|
| 36 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/blanket/0407d6efb50240a.png"}
|
| 37 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dress/60e1892db73c449.png"}
|
| 38 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/butchers_knife/633eef56c950400.png"}
|
| 39 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00024684.JPEG"}
|
| 40 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020955.JPEG"}
|
| 41 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021975.JPEG"}
|
| 42 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037665.JPEG"}
|
| 43 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/computer_mouse/565de77253ab46c.png"}
|
| 44 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035655.JPEG"}
|
| 45 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001811.JPEG"}
|
| 46 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019185.JPEG"}
|
| 47 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00048453.JPEG"}
|
| 48 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034348.JPEG"}
|
| 49 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025633.JPEG"}
|
| 50 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001942.JPEG"}
|
| 51 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034618.JPEG"}
|
| 52 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020937.JPEG"}
|
| 53 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/book_closed/024267b1dbb7470.png"}
|
| 54 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dvd_player/d00f2434c2a84ec.png"}
|
| 55 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002600.JPEG"}
|
| 56 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041243.JPEG"}
|
| 57 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037321.JPEG"}
|
| 58 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pitcher/b6a0387ca60b425.png"}
|
| 59 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042264.JPEG"}
|
| 60 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pencil/f016d1bb8c5040f.png"}
|
| 61 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/butter/4619fc369b53442.png"}
|
| 62 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043487.JPEG"}
|
| 63 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00044545.JPEG"}
|
| 64 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042647.JPEG"}
|
| 65 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031853.JPEG"}
|
| 66 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00027891.JPEG"}
|
| 67 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/vase/65c8d50233494dc.png"}
|
| 68 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/vase/e3e3546d66074e3.png"}
|
| 69 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/frying_pan/886511cef3a642a.png"}
|
| 70 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015101.JPEG"}
|
| 71 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019866.JPEG"}
|
| 72 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chopstick/66267c7d31fa47b.png"}
|
| 73 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/flashlight/76ad851f2cb14bf.png"}
|
| 74 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chocolate/80fec4222c8c4c6.png"}
|
| 75 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034053.JPEG"}
|
| 76 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021843.JPEG"}
|
| 77 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/kettle/fbb9232b58b4478.png"}
|
| 78 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/contact_lens_case/61aa995b4e6c476.png"}
|
| 79 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cd_case/0725b3cb2b0742c.png"}
|
| 80 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00040783.JPEG"}
|
| 81 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pill_bottle/db951db00c2e404.png"}
|
| 82 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/playing_cards/538259d200db44c.png"}
|
| 83 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/leaf/aea05abcfa294ae.png"}
|
| 84 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chess_piece/fef8bf92c5ab4bb.png"}
|
| 85 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toaster/cc9aee48a7b749a.png"}
|
| 86 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/thermometer/e6bbf75768f244f.png"}
|
| 87 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00033487.JPEG"}
|
| 88 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00027154.JPEG"}
|
| 89 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047877.JPEG"}
|
| 90 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toothbrush/8f3380e27d354e2.png"}
|
| 91 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021509.JPEG"}
|
| 92 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025763.JPEG"}
|
| 93 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/speaker/906196b73fcf447.png"}
|
| 94 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009326.JPEG"}
|
| 95 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002082.JPEG"}
|
| 96 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toaster/f53d84758aba425.png"}
|
| 97 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/frying_pan/b10b286f45d94ca.png"}
|
| 98 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/blouse/3f8c0b3ad7144c0.png"}
|
| 99 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/mug/6567df2f9b1440e.png"}
|
| 100 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/calendar/43670a9f6aa744c.png"}
|
| 101 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tv/c8425c9e410b4a3.png"}
|
| 102 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tray/f43d0064b7814aa.png"}
|
| 103 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/battery/617bd315e98a43b.png"}
|
| 104 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012940.JPEG"}
|
| 105 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007023.JPEG"}
|
| 106 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/spatula/236a8ce161ac4f1.png"}
|
| 107 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/binder_closed/644380f74cd7447.png"}
|
| 108 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00044849.JPEG"}
|
| 109 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tongs/b1cac0c1aaef47d.png"}
|
| 110 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020642.JPEG"}
|
| 111 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/binder_closed/760cca96be82486.png"}
|
| 112 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/belt/f0d25265db38484.png"}
|
| 113 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00030807.JPEG"}
|
| 114 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/thermos/4d6a315e681842a.png"}
|
| 115 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015492.JPEG"}
|
| 116 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/beer_can/417a6777074845c.png"}
|
| 117 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036756.JPEG"}
|
| 118 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037395.JPEG"}
|
| 119 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/battery/60151ea53315461.png"}
|
| 120 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035628.JPEG"}
|
| 121 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004822.JPEG"}
|
| 122 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034722.JPEG"}
|
| 123 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cellphone_case/8848499fec90441.png"}
|
| 124 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031181.JPEG"}
|
| 125 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/strainer/1f45b186749c4b3.png"}
|
| 126 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010784.JPEG"}
|
| 127 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038706.JPEG"}
|
| 128 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019309.JPEG"}
|
| 129 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036388.JPEG"}
|
| 130 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/full_sized_towel/ed1ede131e9a462.png"}
|
| 131 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038913.JPEG"}
|
| 132 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017323.JPEG"}
|
| 133 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/soap_dispenser/1852511b0c25461.png"}
|
| 134 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035486.JPEG"}
|
| 135 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00014144.JPEG"}
|
| 136 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026129.JPEG"}
|
| 137 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toaster/abdaef3d51804c1.png"}
|
| 138 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bottle_stopper/5b5e4a8a113f49c.png"}
|
| 139 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/safety_pin/54a2ede3241744b.png"}
|
| 140 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/drill/95bcb795ca0c4bc.png"}
|
| 141 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000444.JPEG"}
|
| 142 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/whisk/7880ea6b64f8470.png"}
|
| 143 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002987.JPEG"}
|
| 144 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031231.JPEG"}
|
| 145 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025831.JPEG"}
|
| 146 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/table_knife/d13e23b6147f47e.png"}
|
| 147 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wine_glass/bea15983b65e4e7.png"}
|
| 148 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021410.JPEG"}
|
| 149 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00016416.JPEG"}
|
| 150 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_machine/e67e4e03f8df468.png"}
|
| 151 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/belt/8d31ad0a6e3845c.png"}
|
| 152 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/lighter/c7f6689deaf54a6.png"}
|
| 153 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/egg/9894c84551b743f.png"}
|
| 154 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/clothes_hamper/0224f90ea9aa44a.png"}
|
| 155 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026425.JPEG"}
|
| 156 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012082.JPEG"}
|
| 157 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00008364.JPEG"}
|
| 158 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/usb_flash_drive/3a41d4880cd14ca.png"}
|
| 159 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/comb/fd6eac792666431.png"}
|
| 160 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/standing_lamp/7cd1168b208247f.png"}
|
| 161 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022765.JPEG"}
|
| 162 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043026.JPEG"}
|
| 163 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/paperclip/e7f514209f114e8.png"}
|
| 164 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/vase/b4d4e541ecda435.png"}
|
| 165 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tomato/e77a27d4da084e4.png"}
|
| 166 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005493.JPEG"}
|
| 167 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000448.JPEG"}
|
| 168 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00046574.JPEG"}
|
| 169 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/power_cable/01663a204c784e2.png"}
|
| 170 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043014.JPEG"}
|
| 171 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/belt/3e00504a44fc4da.png"}
|
| 172 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005552.JPEG"}
|
| 173 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034770.JPEG"}
|
| 174 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047637.JPEG"}
|
| 175 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/plastic_cup/89b36b46d75d474.png"}
|
| 176 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/blanket/247ad2a0f233430.png"}
|
| 177 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/remote_control/44e5a43cf61940a.png"}
|
| 178 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sugar_container/e61961fa17e04d0.png"}
|
| 179 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021487.JPEG"}
|
| 180 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001239.JPEG"}
|
| 181 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/makeup_brush/824a5ef5518e453.png"}
|
| 182 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00030089.JPEG"}
|
| 183 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00030893.JPEG"}
|
| 184 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wrench/7950a5c540ad416.png"}
|
| 185 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bed_sheet/f862d80687954a8.png"}
|
| 186 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/floss_container/0b782d56450f4ac.png"}
|
| 187 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/printer/a2465098b4ef4ed.png"}
|
| 188 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010412.JPEG"}
|
| 189 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015644.JPEG"}
|
| 190 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012775.JPEG"}
|
| 191 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/walking_cane/f540bd630f62498.png"}
|
| 192 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/broom/664329264cf54bc.png"}
|
| 193 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019518.JPEG"}
|
| 194 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/plate/53bd6eeb9a82426.png"}
|
| 195 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/paper_plates/a91ab80f951043f.png"}
|
| 196 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cereal/a48da92553864ae.png"}
|
| 197 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/lemon/dbd5a6a504be486.png"}
|
| 198 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hand_mirror/4827da45d0724d0.png"}
|
| 199 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00048275.JPEG"}
|
| 200 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005150.JPEG"}
|
| 201 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/vase/680b32c472cb4a1.png"}
|
| 202 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041819.JPEG"}
|
| 203 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/speaker/1ee5aeff2f20486.png"}
|
| 204 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017928.JPEG"}
|
| 205 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bills_money/8558ce8aa5394bb.png"}
|
| 206 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/biscuits/8065448f73c3458.png"}
|
| 207 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022424.JPEG"}
|
| 208 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00016890.JPEG"}
|
| 209 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019560.JPEG"}
|
| 210 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toy/22c05d1434d64bd.png"}
|
| 211 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00045714.JPEG"}
|
| 212 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/water_bottle/236970770283471.png"}
|
| 213 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005957.JPEG"}
|
| 214 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038625.JPEG"}
|
| 215 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sponge/ff1fc28821d146b.png"}
|
| 216 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002267.JPEG"}
|
| 217 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026456.JPEG"}
|
| 218 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00048824.JPEG"}
|
| 219 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004979.JPEG"}
|
| 220 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021223.JPEG"}
|
| 221 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037447.JPEG"}
|
| 222 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dress_shoe_women/f1ca3a4a73c8473.png"}
|
| 223 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pliers/48de03d7d3a4467.png"}
|
| 224 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bed_sheet/b3e4dcef0a8443a.png"}
|
| 225 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/canned_food/81274c05d83c46e.png"}
|
| 226 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00024071.JPEG"}
|
| 227 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043603.JPEG"}
|
| 228 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00030129.JPEG"}
|
| 229 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00029093.JPEG"}
|
| 230 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pen/1db7fa8a9e1c484.png"}
|
| 231 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/full_sized_towel/801fa1cf742e49e.png"}
|
| 232 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000618.JPEG"}
|
| 233 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/walker/7ac46e8115ce4d9.png"}
|
| 234 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/book_closed/eef57f4053a8475.png"}
|
| 235 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/flour_container/c10570b89e25489.png"}
|
| 236 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002094.JPEG"}
|
| 237 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/book_closed/d86d01a9d72a455.png"}
|
| 238 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/squeegee/bc9b8531cbca413.png"}
|
| 239 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toothbrush/2ece3c2b55bb4dd.png"}
|
| 240 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toothpaste/9abfb2a834c54d4.png"}
|
| 241 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025471.JPEG"}
|
| 242 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/notepad/5543d07ff32f446.png"}
|
| 243 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025454.JPEG"}
|
| 244 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/baking_sheet/ee88b2b7d5c34cf.png"}
|
| 245 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031757.JPEG"}
|
| 246 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/strainer/6c137e203b7e461.png"}
|
| 247 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026484.JPEG"}
|
| 248 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/doormat/2279faba665e471.png"}
|
| 249 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00011803.JPEG"}
|
| 250 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hair_brush/b91540597f6042a.png"}
|
| 251 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026936.JPEG"}
|
| 252 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00039390.JPEG"}
|
| 253 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036478.JPEG"}
|
| 254 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047938.JPEG"}
|
| 255 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/lighter/57ffdb2f9b68466.png"}
|
| 256 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/mixing_salad_bowl/de572cab6a5f403.png"}
|
| 257 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/butchers_knife/3c10959f0d5f4f3.png"}
|
| 258 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/desk_lamp/9e45f3e3ad0d429.png"}
|
| 259 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007974.JPEG"}
|
| 260 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049374.JPEG"}
|
| 261 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00040731.JPEG"}
|
| 262 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/playing_cards/7c148be08c744e4.png"}
|
| 263 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002341.JPEG"}
|
| 264 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019592.JPEG"}
|
| 265 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022143.JPEG"}
|
| 266 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/boots/d02c5e9f4804453.png"}
|
| 267 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cooking_oil_bottle/a977aa20506b4a2.png"}
|
| 268 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00046618.JPEG"}
|
| 269 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031006.JPEG"}
|
| 270 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025264.JPEG"}
|
| 271 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00008701.JPEG"}
|
| 272 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/alarm_clock/049e2d2518994a7.png"}
|
| 273 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013727.JPEG"}
|
| 274 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00024143.JPEG"}
|
| 275 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00018103.JPEG"}
|
| 276 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/skirt/2280c2e0b439400.png"}
|
| 277 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020820.JPEG"}
|
| 278 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sweater/9c033054435e441.png"}
|
| 279 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/fork/b167d417f28d439.png"}
|
| 280 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/oven_mitts/69c4a331b89a43a.png"}
|
| 281 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/printer/b3112a8ecb2a4ee.png"}
|
| 282 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026005.JPEG"}
|
| 283 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/combination_lock/8c4ab40393c445e.png"}
|
| 284 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/playing_cards/51ae9ea878c74a7.png"}
|
| 285 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049572.JPEG"}
|
| 286 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sleeping_bag/ae78f3e743864d0.png"}
|
| 287 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041224.JPEG"}
|
| 288 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/necklace/103cc6be5c9b437.png"}
|
| 289 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00045519.JPEG"}
|
| 290 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00040171.JPEG"}
|
| 291 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/briefcase/daa4a87ba9cf49b.png"}
|
| 292 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021678.JPEG"}
|
| 293 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036265.JPEG"}
|
| 294 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009060.JPEG"}
|
| 295 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010796.JPEG"}
|
| 296 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049742.JPEG"}
|
| 297 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00044992.JPEG"}
|
| 298 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/earbuds/6ce30f453dc9421.png"}
|
| 299 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/salt_shaker/5563388ad218419.png"}
|
| 300 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013052.JPEG"}
|
| 301 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pepper_shaker/000af6c5de1a4be.png"}
|
| 302 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010244.JPEG"}
|
| 303 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cooking_oil_bottle/20068f6d06e64b5.png"}
|
| 304 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001197.JPEG"}
|
| 305 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/weight_scale/e0547138d89f40d.png"}
|
| 306 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/teabag/7b01856eec7a4ee.png"}
|
| 307 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021448.JPEG"}
|
| 308 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sunglasses/3999c8ee6086428.png"}
|
| 309 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cheese/18ebf7c57b8845b.png"}
|
| 310 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/trash_bag/b776439b2542498.png"}
|
| 311 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005806.JPEG"}
|
| 312 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042532.JPEG"}
|
| 313 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/document_folder_closed/4daf29484b4e458.png"}
|
| 314 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bottle_stopper/43b414dead26471.png"}
|
| 315 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00048865.JPEG"}
|
| 316 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041773.JPEG"}
|
| 317 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020774.JPEG"}
|
| 318 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012871.JPEG"}
|
| 319 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/banana/1d9012017b2a47a.png"}
|
| 320 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/lemon/d40882a083f0401.png"}
|
| 321 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/frying_pan/748f23a9d621456.png"}
|
| 322 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/spray_bottle/9330ee3e1a46478.png"}
|
| 323 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chess_piece/2c912029db4342d.png"}
|
| 324 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/canned_food/a3332a76db4a410.png"}
|
| 325 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/basket/82976cc3e4e5477.png"}
|
| 326 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coaster/37268365e9394af.png"}
|
| 327 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00039370.JPEG"}
|
| 328 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/key_chain/cfe281dc442047a.png"}
|
| 329 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000684.JPEG"}
|
| 330 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tape/eafe67c6fa40401.png"}
|
| 331 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001824.JPEG"}
|
| 332 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_grinder/4c5aafcad004488.png"}
|
| 333 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022458.JPEG"}
|
| 334 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049453.JPEG"}
|
| 335 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00045866.JPEG"}
|
| 336 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/table_knife/49efcd5f0c7a470.png"}
|
| 337 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034085.JPEG"}
|
| 338 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00023841.JPEG"}
|
| 339 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031526.JPEG"}
|
| 340 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004039.JPEG"}
|
| 341 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015256.JPEG"}
|
| 342 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017318.JPEG"}
|
| 343 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/trash_bag/eef8c5a6b6e84e1.png"}
|
| 344 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/band_aid/9ab0dcfe1fa54c6.png"}
|
| 345 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bread_knife/ea21d298af0d4f1.png"}
|
| 346 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000054.JPEG"}
|
| 347 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nut_for_screw/60520e1e00364fc.png"}
|
| 348 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049387.JPEG"}
|
| 349 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chair/079c0a83bd4642c.png"}
|
| 350 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/binder_closed/460b2e47f1884d2.png"}
|
| 351 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034217.JPEG"}
|
| 352 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/oven_mitts/5b256195400a4aa.png"}
|
| 353 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/basket/c7429406e57944c.png"}
|
| 354 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dress_shirt/8b227b8a5bb948a.png"}
|
| 355 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/butter/3012643a8cac4b6.png"}
|
| 356 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00024941.JPEG"}
|
| 357 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032563.JPEG"}
|
| 358 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/contact_lens_case/187071f39cab494.png"}
|
| 359 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00014205.JPEG"}
|
| 360 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/kettle/9f292a503894405.png"}
|
| 361 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wok/a6d0b0585f2e49c.png"}
|
| 362 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cd_case/97c275cd83084b3.png"}
|
| 363 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00045507.JPEG"}
|
| 364 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hand_towel_or_rag/a667fab686b648d.png"}
|
| 365 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/full_sized_towel/7354a9fab20f4c6.png"}
|
| 366 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/spray_bottle/5c21ff945da54ca.png"}
|
| 367 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/candle/f52efb412dc54af.png"}
|
| 368 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047665.JPEG"}
|
| 369 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00028091.JPEG"}
|
| 370 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00028423.JPEG"}
|
| 371 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tote_bag/c79fd51e087540e.png"}
|
| 372 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chess_piece/11a8d1316830470.png"}
|
| 373 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009591.JPEG"}
|
| 374 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022846.JPEG"}
|
| 375 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/phone_landline/059152a06bab4e8.png"}
|
| 376 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021289.JPEG"}
|
| 377 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nut_for_screw/ae45f7eaa42246b.png"}
|
| 378 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034822.JPEG"}
|
| 379 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036940.JPEG"}
|
| 380 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032962.JPEG"}
|
| 381 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/paper_plates/b148c1d12b8845b.png"}
|
| 382 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toilet_paper_roll/49123ff7378143a.png"}
|
| 383 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00014427.JPEG"}
|
| 384 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/key_chain/32ffdbe06b184af.png"}
|
| 385 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/battery/fb8bd76be7ad49b.png"}
|
| 386 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00027909.JPEG"}
|
| 387 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004253.JPEG"}
|
| 388 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toothbrush/a16e6abcf22347c.png"}
|
| 389 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/shampoo_bottle/cb3a28dd4748447.png"}
|
| 390 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/makeup/abfca2ec566241f.png"}
|
| 391 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/suit_jacket/37504fd51b444a3.png"}
|
| 392 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034166.JPEG"}
|
| 393 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/book_closed/95c6e9e724e2414.png"}
|
| 394 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dress_shoe_women/feea5f58527a4b1.png"}
|
| 395 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bread_loaf/04690bf5166c4be.png"}
|
| 396 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/watch/45745fc6a5c243a.png"}
|
| 397 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049286.JPEG"}
|
| 398 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041361.JPEG"}
|
| 399 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pen/1ecb5d9719f6427.png"}
|
| 400 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/calendar/27e7f3c2bbe5493.png"}
|
| 401 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035358.JPEG"}
|
| 402 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00011414.JPEG"}
|
| 403 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00029547.JPEG"}
|
| 404 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wine_bottle/ee13eadf7cae401.png"}
|
| 405 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/drying_rack_for_dishes/d5f0eab3dfe9488.png"}
|
| 406 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049266.JPEG"}
|
| 407 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cellphone_case/42a468d7be17495.png"}
|
| 408 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/mug/4767a4f735b845e.png"}
|
| 409 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bread_loaf/75308e0059af4c8.png"}
|
| 410 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pliers/1f562e5c822747f.png"}
|
| 411 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00003435.JPEG"}
|
| 412 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031841.JPEG"}
|
| 413 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_french_press/309626b85a6c459.png"}
|
| 414 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00046007.JPEG"}
|
| 415 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/oven_mitts/dce922234e4f45f.png"}
|
| 416 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/phone_landline/5de86ad0260b4b3.png"}
|
| 417 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015432.JPEG"}
|
| 418 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/newspaper/fa5ab07748844ca.png"}
|
| 419 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/computer_mouse/bb3b327c68e24cb.png"}
|
| 420 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032813.JPEG"}
|
| 421 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047522.JPEG"}
|
| 422 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hand_towel_or_rag/6e49e3b34c32456.png"}
|
| 423 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bed_sheet/ae8f65728b8a4d8.png"}
|
| 424 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pepper_shaker/f857adb9fa8449a.png"}
|
| 425 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/laptop_charger/156e8eabb240418.png"}
|
| 426 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cereal/a2fa614e58fd45a.png"}
|
| 427 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004035.JPEG"}
|
| 428 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013852.JPEG"}
|
| 429 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/receipt/2a891879a43948a.png"}
|
| 430 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tv/e008fa81308d4e6.png"}
|
| 431 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015900.JPEG"}
|
| 432 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cellphone/b2e1ca7412ff45a.png"}
|
| 433 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005923.JPEG"}
|
| 434 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/playing_cards/a3c0a4949bde45b.png"}
|
| 435 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/match/26925468096b4f2.png"}
|
| 436 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/drinking_cup/0f96945208cb42c.png"}
|
| 437 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/stopper_sink_tub/a6b4bc9ad9d5405.png"}
|
| 438 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_french_press/87e5735c852746c.png"}
|
| 439 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010429.JPEG"}
|
| 440 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036077.JPEG"}
|
| 441 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00003083.JPEG"}
|
| 442 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00023145.JPEG"}
|
| 443 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cutting_board/45e8625f3a324c9.png"}
|
| 444 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/standing_lamp/a9fecb1593dd42b.png"}
|
| 445 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/floss_container/9dd6eea0fc2b4d1.png"}
|
| 446 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026139.JPEG"}
|
| 447 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00027546.JPEG"}
|
| 448 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020329.JPEG"}
|
| 449 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019868.JPEG"}
|
| 450 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/laptop_charger/95db0f66dee3444.png"}
|
| 451 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017466.JPEG"}
|
| 452 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020560.JPEG"}
|
| 453 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_machine/e1d6da7d5ff14c0.png"}
|
| 454 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042900.JPEG"}
|
| 455 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00029201.JPEG"}
|
| 456 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/drill/15a41ba6c76b435.png"}
|
| 457 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049674.JPEG"}
|
| 458 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tanktop/7d20f74d8ede4e4.png"}
|
| 459 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sugar_container/f7946e62f1e9456.png"}
|
| 460 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043187.JPEG"}
|
| 461 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/scissors/6dc09f8e84384fd.png"}
|
| 462 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004962.JPEG"}
|
| 463 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/spray_bottle/25b2ddfbcce0462.png"}
|
| 464 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/power_bar/e43095daff82401.png"}
|
| 465 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/document_folder_closed/b02d09c8dcb0488.png"}
|
| 466 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037668.JPEG"}
|
| 467 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_table/537165db83bd44f.png"}
|
| 468 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031619.JPEG"}
|
| 469 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nail_file/3c3d0955da4a45a.png"}
|
| 470 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020162.JPEG"}
|
| 471 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/doormat/c9f990bd9105463.png"}
|
| 472 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00044337.JPEG"}
|
| 473 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00046613.JPEG"}
|
| 474 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009498.JPEG"}
|
| 475 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/belt/b1283caf3568482.png"}
|
| 476 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/basket/4ebbf47465e1411.png"}
|
| 477 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00008949.JPEG"}
|
| 478 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hammer/b6e219f760b2400.png"}
|
| 479 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047886.JPEG"}
|
| 480 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021101.JPEG"}
|
| 481 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cd_case/ee098b64b0404b8.png"}
|
| 482 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019001.JPEG"}
|
| 483 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chocolate/41e9272ff29f42b.png"}
|
| 484 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/fork/a7a5c59b36ab481.png"}
|
| 485 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/scarf/445fd407ee7a495.png"}
|
| 486 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002940.JPEG"}
|
| 487 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012460.JPEG"}
|
| 488 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017621.JPEG"}
|
| 489 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043707.JPEG"}
|
| 490 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010162.JPEG"}
|
| 491 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/vase/063ef715d8a64ae.png"}
|
| 492 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/calendar/f57e0c4a0aa9403.png"}
|
| 493 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00027505.JPEG"}
|
| 494 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/jar/e5a647594f314ca.png"}
|
| 495 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022640.JPEG"}
|
| 496 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bench/7ff62f13258c4f6.png"}
|
| 497 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000707.JPEG"}
|
| 498 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017231.JPEG"}
|
| 499 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/honey_container/84abed616098446.png"}
|
| 500 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/notepad/e1bc5f529e15431.png"}
|
| 501 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005458.JPEG"}
|
| 502 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00003474.JPEG"}
|
| 503 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/printer/67250486d44a4fd.png"}
|
| 504 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chopstick/c57230acefc84e0.png"}
|
| 505 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sock/d1e54e1af1cf42c.png"}
|
| 506 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/computer_mouse/931bb64bf0ff4e3.png"}
|
| 507 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043758.JPEG"}
|
| 508 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049781.JPEG"}
|
| 509 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/kettle/6ac2d90d2bfe456.png"}
|
| 510 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043547.JPEG"}
|
| 511 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047813.JPEG"}
|
| 512 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/plastic_wrap/0edd8bf2c7f2431.png"}
|
| 513 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/milk/ab5af6b11cc944f.png"}
|
| 514 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00048852.JPEG"}
|
| 515 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019686.JPEG"}
|
| 516 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00040680.JPEG"}
|
| 517 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tomato/bae75beb5d0b452.png"}
|
| 518 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nail_clippers/f751d164d091446.png"}
|
| 519 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032135.JPEG"}
|
| 520 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007851.JPEG"}
|
| 521 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041589.JPEG"}
|
| 522 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/ziploc_bag/dde0c1dd37bc401.png"}
|
| 523 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00029637.JPEG"}
|
| 524 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tape_measure/95c825a45f924d4.png"}
|
| 525 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/scrub_brush/fdb6901407e6464.png"}
|
| 526 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_machine/286815d5e279485.png"}
|
| 527 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038621.JPEG"}
|
| 528 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/shoelace/ee710d214de5424.png"}
|
| 529 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cork/24bb14dbb634479.png"}
|
| 530 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00024201.JPEG"}
|
| 531 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/iron_for_clothes/e1ccac02f70b424.png"}
|
| 532 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/receipt/281b54a5d2a9425.png"}
|
| 533 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020195.JPEG"}
|
| 534 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sock/98d6e9561ac541e.png"}
|
| 535 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/box/ed4c9d12bb1a4d9.png"}
|
| 536 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035978.JPEG"}
|
| 537 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_machine/f6f9a35b8092404.png"}
|
| 538 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00044541.JPEG"}
|
| 539 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chopstick/d1c0098c62c04ae.png"}
|
| 540 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00027373.JPEG"}
|
| 541 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dust_pan/be952c4edb1c47c.png"}
|
| 542 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/necklace/e05fd0ccf9794d1.png"}
|
| 543 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031591.JPEG"}
|
| 544 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026729.JPEG"}
|
| 545 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/frying_pan/eb0bf67e4cd542b.png"}
|
| 546 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/milk/0c218f4f3ef642e.png"}
|
| 547 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031088.JPEG"}
|
| 548 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chopstick/54be266e9ded417.png"}
|
| 549 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/webcam/1b88eb5bef6b4e3.png"}
|
| 550 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/mouthwash/650dc5f6e3ed4c2.png"}
|
| 551 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026273.JPEG"}
|
| 552 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00030283.JPEG"}
|
| 553 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/plastic_cup/c17a5c1b41b3444.png"}
|
| 554 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037679.JPEG"}
|
| 555 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042956.JPEG"}
|
| 556 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017805.JPEG"}
|
| 557 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/contact_lens_case/d33ccc6e2773495.png"}
|
| 558 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/suitcase/4733e32e31e8452.png"}
|
| 559 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toy/1ec5df73480d494.png"}
|
| 560 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/makeup_brush/aef8c9fe2f1b4a0.png"}
|
| 561 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00011497.JPEG"}
|
| 562 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009518.JPEG"}
|
| 563 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tweezers/18033ccf5ce7406.png"}
|
| 564 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026418.JPEG"}
|
| 565 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020714.JPEG"}
|
| 566 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021818.JPEG"}
|
| 567 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005591.JPEG"}
|
| 568 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sugar_container/f871d39ceba24b5.png"}
|
| 569 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/deodorant/d3672a50903746b.png"}
|
| 570 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017408.JPEG"}
|
| 571 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005489.JPEG"}
|
| 572 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000665.JPEG"}
|
| 573 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/full_sized_towel/41ca0105105d4c3.png"}
|
| 574 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/padlock/833db862135346e.png"}
|
| 575 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/photograph_printed/0f79256775524d8.png"}
|
| 576 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bucket/b8b888ca5f9b427.png"}
|
| 577 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022588.JPEG"}
|
| 578 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041603.JPEG"}
|
| 579 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cellphone_case/40c354bf238a4d0.png"}
|
| 580 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017035.JPEG"}
|
| 581 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/plastic_bag/87279795b4d14eb.png"}
|
| 582 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hammer/e8b27e4ae7604bc.png"}
|
| 583 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015519.JPEG"}
|
| 584 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toilet_paper_roll/8e62392087984bd.png"}
|
| 585 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tv/488cf455db5f47e.png"}
|
| 586 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/beer_bottle/7e42e816f19849c.png"}
|
| 587 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pen/5c5ce628ec66488.png"}
|
| 588 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037298.JPEG"}
|
| 589 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015227.JPEG"}
|
| 590 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/playing_cards/d32497eb6ffc4b7.png"}
|
| 591 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/mixing_salad_bowl/265e8c0a37fa416.png"}
|
| 592 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026251.JPEG"}
|
| 593 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/band_aid/dc43201419ba4c1.png"}
|
| 594 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012744.JPEG"}
|
| 595 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/floss_container/7d4fbacf2d0f46c.png"}
|
| 596 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/leggings/cdec8a8aed0548b.png"}
|
| 597 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031135.JPEG"}
|
| 598 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/air_freshener/c7b5090b14b8489.png"}
|
| 599 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00045648.JPEG"}
|
| 600 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020636.JPEG"}
|
| 601 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toothbrush/c4bba6c789864ef.png"}
|
| 602 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/padlock/8e882ec4c9294fb.png"}
|
| 603 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dress_shirt/55c5ff15b20344d.png"}
|
| 604 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00008213.JPEG"}
|
| 605 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wine_bottle/8da658ef7d1541d.png"}
|
| 606 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/eraser_white_board/ff4cd7189cae49d.png"}
|
| 607 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/key_chain/39a2270d0d1d46c.png"}
|
| 608 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031081.JPEG"}
|
| 609 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pitcher/06f7a6dcbfa846e.png"}
|
| 610 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038729.JPEG"}
|
| 611 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/eyeglasses/90c8a3893ba1478.png"}
|
| 612 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nut_for_screw/d6a3ef98334d487.png"}
|
| 613 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_machine/5fc1f75eba7f4f0.png"}
|
| 614 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/scissors/e081e80355ce4ee.png"}
|
| 615 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005159.JPEG"}
|
| 616 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013289.JPEG"}
|
| 617 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00045930.JPEG"}
|
| 618 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038882.JPEG"}
|
| 619 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wrench/f96a9e0c41e94df.png"}
|
| 620 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/helmet/4116369144774cc.png"}
|
| 621 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/biscuits/266b36f53c924d5.png"}
|
| 622 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/honey_container/51757dc2305d48b.png"}
|
| 623 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tv/215090865ca6447.png"}
|
| 624 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00023602.JPEG"}
|
| 625 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012833.JPEG"}
|
| 626 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00008138.JPEG"}
|
| 627 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/usb_flash_drive/84edba2569994dc.png"}
|
| 628 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/usb_cable/59c858155d014da.png"}
|
| 629 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019507.JPEG"}
|
| 630 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047329.JPEG"}
|
| 631 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/spoon/b02f4555908a4aa.png"}
|
| 632 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00028508.JPEG"}
|
| 633 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/jeans/eef857c6ee5b454.png"}
|
| 634 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tomato/3ff4c9d237a6438.png"}
|
| 635 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hand_towel_or_rag/499dea0c1a5d480.png"}
|
| 636 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/video_camera/01b0c608733b444.png"}
|
| 637 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017675.JPEG"}
|
| 638 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sock/5684c47142b54b3.png"}
|
| 639 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034430.JPEG"}
|
| 640 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/egg/0a3c1df1260d49a.png"}
|
| 641 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047801.JPEG"}
|
| 642 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/mouse_pad/a420702c43bb4e7.png"}
|
| 643 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tote_bag/c5055954da1d482.png"}
|
| 644 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wrench/4332d49469594d0.png"}
|
| 645 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049125.JPEG"}
|
| 646 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/whisk/ee0abcfb32d0487.png"}
|
| 647 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pepper_shaker/140d3c5aae604cb.png"}
|
| 648 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/salt_shaker/64fffa31f366491.png"}
|
| 649 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00039957.JPEG"}
|
| 650 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010978.JPEG"}
|
| 651 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/still_camera/0b4698690b5f42c.png"}
|
| 652 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tray/225d74e2a7c54db.png"}
|
| 653 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034252.JPEG"}
|
| 654 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chocolate/d44c7d5f6c194cc.png"}
|
| 655 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049885.JPEG"}
|
| 656 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tote_bag/12675c078dfb464.png"}
|
| 657 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037245.JPEG"}
|
| 658 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00040810.JPEG"}
|
| 659 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/eyeglasses/1f60a825a7e241b.png"}
|
| 660 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026741.JPEG"}
|
| 661 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/remote_control/93f3f737382f402.png"}
|
| 662 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005139.JPEG"}
|
| 663 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bathrobe/1a1766131b5a4ec.png"}
|
| 664 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/first_aid_kit/5a13d9401d61426.png"}
|
| 665 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00018117.JPEG"}
|
| 666 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/first_aid_kit/0b4c735d7298445.png"}
|
| 667 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/figurine_or_statue/57b0977be960454.png"}
|
| 668 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042901.JPEG"}
|
| 669 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00044669.JPEG"}
|
| 670 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/jeans/604ed8be58f5495.png"}
|
| 671 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042891.JPEG"}
|
| 672 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00023031.JPEG"}
|
| 673 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010435.JPEG"}
|
| 674 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cd_case/7184e0d1819e460.png"}
|
| 675 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00045203.JPEG"}
|
| 676 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/match/bce5c63eaa62484.png"}
|
| 677 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026717.JPEG"}
|
| 678 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036204.JPEG"}
|
| 679 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/webcam/cf677f097070467.png"}
|
| 680 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/makeup/f2db44c892214dc.png"}
|
| 681 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tray/effe6e7cd38e4df.png"}
|
| 682 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/trash_bin/f0268d18097046d.png"}
|
| 683 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010825.JPEG"}
|
| 684 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00006098.JPEG"}
|
| 685 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002423.JPEG"}
|
| 686 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cellphone_charger/cf28468ad1624c9.png"}
|
| 687 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toy/551d2d4bdc5c410.png"}
|
| 688 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pencil/819d74ad1106431.png"}
|
| 689 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/earbuds/34c31f454cc8458.png"}
|
| 690 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00030339.JPEG"}
|
| 691 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wheel/2362b8078ddd462.png"}
|
| 692 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/drinking_straw/73ad8932256e4f3.png"}
|
| 693 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/envelope/f515b6a0a13d401.png"}
|
| 694 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031697.JPEG"}
|
| 695 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/match/66cad57507fe440.png"}
|
| 696 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049053.JPEG"}
|
| 697 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/stapler/eb8cf419c4db40c.png"}
|
| 698 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/keyboard/94c354d6992f484.png"}
|
| 699 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037141.JPEG"}
|
| 700 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00016500.JPEG"}
|
| 701 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/clothes_hamper/a729d60d77ac444.png"}
|
| 702 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043248.JPEG"}
|
| 703 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/ziploc_bag/a08dda970c8d46a.png"}
|
| 704 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chopstick/69d95796c1544d3.png"}
|
| 705 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/blanket/d7f12dc0ca12459.png"}
|
| 706 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009291.JPEG"}
|
| 707 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/baseball_glove/26eaa20c3b664de.png"}
|
| 708 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010013.JPEG"}
|
| 709 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00029057.JPEG"}
|
| 710 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043404.JPEG"}
|
| 711 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bottle_cap/53d3a6ea03f64ce.png"}
|
| 712 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00014285.JPEG"}
|
| 713 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/paint_can/54249d747d364f3.png"}
|
| 714 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013435.JPEG"}
|
| 715 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/extension_cable/81d7340a4bd74d7.png"}
|
| 716 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042358.JPEG"}
|
| 717 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036495.JPEG"}
|
| 718 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049262.JPEG"}
|
| 719 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pitcher/dcbc040b404244c.png"}
|
| 720 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/remote_control/bfac06e5bdc14ab.png"}
|
| 721 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00048913.JPEG"}
|
| 722 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00045440.JPEG"}
|
| 723 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/figurine_or_statue/93046bf9ed4a459.png"}
|
| 724 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/box/e20d2b6c9af645f.png"}
|
| 725 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/thermos/d4925bab498242f.png"}
|
| 726 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00003887.JPEG"}
|
| 727 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/ladle/687fe7194087452.png"}
|
| 728 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/screw/e81d7dc070264b4.png"}
|
| 729 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/screw/8f0014efeefd4c8.png"}
|
| 730 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009193.JPEG"}
|
| 731 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toothbrush/72b1c985910a40f.png"}
|
| 732 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hammer/5735a38efbd345b.png"}
|
| 733 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00033934.JPEG"}
|
| 734 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025808.JPEG"}
|
| 735 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bathrobe/b2f7e26242ea43b.png"}
|
| 736 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/shoelace/3174e6ccbbb1437.png"}
|
| 737 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/removable_blade/88f582c325ab461.png"}
|
| 738 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/earring/310131edad91456.png"}
|
| 739 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001431.JPEG"}
|
| 740 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/drawer_open/b9de6154f8494ea.png"}
|
| 741 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031650.JPEG"}
|
| 742 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/comb/0dde4d8f02a140a.png"}
|
| 743 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00042301.JPEG"}
|
| 744 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/still_camera/17e063f1a615454.png"}
|
| 745 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/combination_lock/5f424567488c4fc.png"}
|
| 746 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00008531.JPEG"}
|
| 747 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021139.JPEG"}
|
| 748 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007322.JPEG"}
|
| 749 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036780.JPEG"}
|
| 750 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sock/abe9bf2ea7e4422.png"}
|
| 751 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038912.JPEG"}
|
| 752 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020318.JPEG"}
|
| 753 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chopstick/eedd371138fc457.png"}
|
| 754 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dish_soap/ec3a5797910e455.png"}
|
| 755 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/leggings/277e9a615b5c4f0.png"}
|
| 756 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/paint_can/5c6da01c48004c3.png"}
|
| 757 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/milk/6c6b12f791d64fd.png"}
|
| 758 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/milk/1bb8da2dbba046e.png"}
|
| 759 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017790.JPEG"}
|
| 760 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/backpack/14ea51d4c43b41d.png"}
|
| 761 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tablet_ipad/83e917f5a04247b.png"}
|
| 762 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/peeler/d33427d7024c44e.png"}
|
| 763 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bottle_cap/341a0ce622584af.png"}
|
| 764 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/alarm_clock/6f8e03c2b2d4433.png"}
|
| 765 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/makeup_brush/53c7a68ff7b3430.png"}
|
| 766 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00009271.JPEG"}
|
| 767 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035854.JPEG"}
|
| 768 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022754.JPEG"}
|
| 769 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/drinking_cup/2b61c5978f794db.png"}
|
| 770 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005562.JPEG"}
|
| 771 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hand_towel_or_rag/9b554511d3c445e.png"}
|
| 772 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coin_money/8725a295b40e4a6.png"}
|
| 773 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/measuring_cup/8f1084dabf194e5.png"}
|
| 774 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038744.JPEG"}
|
| 775 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022268.JPEG"}
|
| 776 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026432.JPEG"}
|
| 777 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/backpack/4f507b73b8fc4ef.png"}
|
| 778 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017062.JPEG"}
|
| 779 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wine_glass/78f10472674d477.png"}
|
| 780 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/floss_container/58508e856934412.png"}
|
| 781 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00011005.JPEG"}
|
| 782 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chair/f9c2383434444a2.png"}
|
| 783 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bottle_cap/572c75ee4f0b488.png"}
|
| 784 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035220.JPEG"}
|
| 785 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chocolate/70c16529acce40d.png"}
|
| 786 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/keyboard/7084bcc0805c4ed.png"}
|
| 787 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00027903.JPEG"}
|
| 788 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coaster/3e1a85121e15484.png"}
|
| 789 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tray/27bc06caea8147a.png"}
|
| 790 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00006252.JPEG"}
|
| 791 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012250.JPEG"}
|
| 792 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00043947.JPEG"}
|
| 793 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/battery/d948c2bb79534dc.png"}
|
| 794 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032351.JPEG"}
|
| 795 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012081.JPEG"}
|
| 796 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00016699.JPEG"}
|
| 797 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hairclip/bd7e4a990633424.png"}
|
| 798 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037629.JPEG"}
|
| 799 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00022443.JPEG"}
|
| 800 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015638.JPEG"}
|
| 801 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nail_clippers/f6e76fc9d2de44e.png"}
|
| 802 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/razor/a7647a8660a7413.png"}
|
| 803 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031382.JPEG"}
|
| 804 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031724.JPEG"}
|
| 805 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/beer_bottle/e641f5e005d5437.png"}
|
| 806 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032021.JPEG"}
|
| 807 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026546.JPEG"}
|
| 808 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sponge/a9bf3a88b27d49a.png"}
|
| 809 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017906.JPEG"}
|
| 810 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/stopper_sink_tub/b8020691c7bd4e7.png"}
|
| 811 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dust_pan/0aa3d9ae00194e0.png"}
|
| 812 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/scissors/470a94585b8a46b.png"}
|
| 813 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00027861.JPEG"}
|
| 814 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020565.JPEG"}
|
| 815 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00033634.JPEG"}
|
| 816 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00002541.JPEG"}
|
| 817 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032189.JPEG"}
|
| 818 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00023273.JPEG"}
|
| 819 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dust_pan/d471660075a1481.png"}
|
| 820 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/flashlight/42a8a68eb9884cb.png"}
|
| 821 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/measuring_cup/d41b1db1ad144a3.png"}
|
| 822 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/ziploc_bag/aad86c94d6754f8.png"}
|
| 823 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041148.JPEG"}
|
| 824 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00030127.JPEG"}
|
| 825 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/paper/b12adc150df5445.png"}
|
| 826 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013383.JPEG"}
|
| 827 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sandal/d8a6dde222b948a.png"}
|
| 828 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nail_polish/247ee2551524410.png"}
|
| 829 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00033808.JPEG"}
|
| 830 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020969.JPEG"}
|
| 831 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00033924.JPEG"}
|
| 832 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00011694.JPEG"}
|
| 833 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/paint_can/81a7a2561444466.png"}
|
| 834 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/blouse/2d41046cbbc946f.png"}
|
| 835 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/lighter/6bf1338ab38a487.png"}
|
| 836 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hand_mirror/f716d35f439d49d.png"}
|
| 837 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/usb_cable/0f43e8ab0819404.png"}
|
| 838 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bracelet/8e652ae15a7e402.png"}
|
| 839 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/ruler/691e132da0b8485.png"}
|
| 840 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00046597.JPEG"}
|
| 841 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_table/c4669f4545af44a.png"}
|
| 842 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012464.JPEG"}
|
| 843 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hair_dryer/7ac641d80c2040d.png"}
|
| 844 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/playing_cards/04c82587f04b411.png"}
|
| 845 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00020921.JPEG"}
|
| 846 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034274.JPEG"}
|
| 847 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007906.JPEG"}
|
| 848 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015120.JPEG"}
|
| 849 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/glue_container/5c3e575f62994af.png"}
|
| 850 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047569.JPEG"}
|
| 851 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/egg/00895de1971a474.png"}
|
| 852 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/spoon/d035ea4a384847d.png"}
|
| 853 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001938.JPEG"}
|
| 854 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019265.JPEG"}
|
| 855 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/butter/b3626cbdbde0444.png"}
|
| 856 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035487.JPEG"}
|
| 857 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tongs/93f1557117224f0.png"}
|
| 858 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007049.JPEG"}
|
| 859 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026845.JPEG"}
|
| 860 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/squeeze_bottle/5aef32a610fd437.png"}
|
| 861 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00006429.JPEG"}
|
| 862 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/raincoat/6104cec1902542d.png"}
|
| 863 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004344.JPEG"}
|
| 864 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hairclip/3e7d8464ad3243c.png"}
|
| 865 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004049.JPEG"}
|
| 866 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/drinking_cup/9b96d804fb7d433.png"}
|
| 867 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bracelet/13bde9b98e18456.png"}
|
| 868 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012288.JPEG"}
|
| 869 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031001.JPEG"}
|
| 870 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/beer_can/1cc92265ab374ee.png"}
|
| 871 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/orange/5ded6a78c6c0424.png"}
|
| 872 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pitcher/0e8b584d12ad4c5.png"}
|
| 873 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00004767.JPEG"}
|
| 874 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cellphone_case/432707a5a9ef474.png"}
|
| 875 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035356.JPEG"}
|
| 876 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00017739.JPEG"}
|
| 877 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/pitcher/988d5fa4d0014df.png"}
|
| 878 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00011123.JPEG"}
|
| 879 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/padlock/0be9a4f92730476.png"}
|
| 880 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tanktop/fa8d6334e95d431.png"}
|
| 881 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021239.JPEG"}
|
| 882 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/usb_cable/edfa32bbc5f6444.png"}
|
| 883 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/portable_heater/25e169cd30944e7.png"}
|
| 884 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025399.JPEG"}
|
| 885 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00039033.JPEG"}
|
| 886 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/lemon/369ef4492ceb457.png"}
|
| 887 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cd_case/137d67722a71405.png"}
|
| 888 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00003478.JPEG"}
|
| 889 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00025371.JPEG"}
|
| 890 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037089.JPEG"}
|
| 891 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chair/f3fd8c18182d479.png"}
|
| 892 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/chocolate/be062210f9a2484.png"}
|
| 893 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/trophy/8848469e34f9433.png"}
|
| 894 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00039902.JPEG"}
|
| 895 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047397.JPEG"}
|
| 896 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bike_pump/0d83f37677db45b.png"}
|
| 897 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00039771.JPEG"}
|
| 898 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/headphones_over_ear/a799bd96bc034c8.png"}
|
| 899 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/throw_pillow/77b8f8c80b8e420.png"}
|
| 900 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037527.JPEG"}
|
| 901 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041267.JPEG"}
|
| 902 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/whistle/dc0207b7c380499.png"}
|
| 903 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00029498.JPEG"}
|
| 904 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/jeans/66cd64c41cb14c1.png"}
|
| 905 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/mug/6f5151c867ff484.png"}
|
| 906 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034754.JPEG"}
|
| 907 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047047.JPEG"}
|
| 908 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tomato/55c681d087ae4c6.png"}
|
| 909 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049869.JPEG"}
|
| 910 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/salt_shaker/3dab38b435fe4d3.png"}
|
| 911 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00029724.JPEG"}
|
| 912 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000715.JPEG"}
|
| 913 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/newspaper/4a111a40324c474.png"}
|
| 914 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00046031.JPEG"}
|
| 915 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/clothes_hamper/89ba8692d95945c.png"}
|
| 916 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/trophy/bfa0e21a66c6494.png"}
|
| 917 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/shorts/b5e94c43b64a4ee.png"}
|
| 918 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/suitcase/c9fb18b2eb6241f.png"}
|
| 919 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036446.JPEG"}
|
| 920 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035742.JPEG"}
|
| 921 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00040496.JPEG"}
|
| 922 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00016952.JPEG"}
|
| 923 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00034437.JPEG"}
|
| 924 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035722.JPEG"}
|
| 925 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00028420.JPEG"}
|
| 926 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005897.JPEG"}
|
| 927 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tape/04ed835b7de8497.png"}
|
| 928 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00036344.JPEG"}
|
| 929 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/coffee_beans/b74d84fcdc654d2.png"}
|
| 930 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hairtie/c0912e002f4b49b.png"}
|
| 931 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00008236.JPEG"}
|
| 932 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bottle_cap/99874d07523d409.png"}
|
| 933 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013290.JPEG"}
|
| 934 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00006583.JPEG"}
|
| 935 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00026313.JPEG"}
|
| 936 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007963.JPEG"}
|
| 937 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/figurine_or_statue/a9d7ddcb692640b.png"}
|
| 938 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00046036.JPEG"}
|
| 939 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013513.JPEG"}
|
| 940 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bread_loaf/6fc01129b9f043c.png"}
|
| 941 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/razor/484229fb7d264f3.png"}
|
| 942 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00015818.JPEG"}
|
| 943 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00041835.JPEG"}
|
| 944 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/box/272a500f0855495.png"}
|
| 945 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00003139.JPEG"}
|
| 946 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037772.JPEG"}
|
| 947 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/squeeze_bottle/8be65b1635b0476.png"}
|
| 948 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nail_clippers/e6eadd7c9b2f402.png"}
|
| 949 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/plunger/71c86f8947d8422.png"}
|
| 950 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/candle/ce5973d1e652405.png"}
|
| 951 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00032892.JPEG"}
|
| 952 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/dress_pants/9a000b3c43a84d3.png"}
|
| 953 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/tissue/beefed1eee8d4c4.png"}
|
| 954 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/book_closed/4aed218f82284ae.png"}
|
| 955 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/trash_bin/c8e346fe7b4345a.png"}
|
| 956 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bracelet/4eb35f5a5dca4e8.png"}
|
| 957 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bench/543fd913599e497.png"}
|
| 958 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/wrench/54c8e3b6ea5146a.png"}
|
| 959 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/sandal/9a5222c4aa85402.png"}
|
| 960 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/cellphone_charger/56b4eb4e9fdd422.png"}
|
| 961 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00001590.JPEG"}
|
| 962 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/spoon/4e5d9b49339c447.png"}
|
| 963 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/scarf/862a5d7c3d28456.png"}
|
| 964 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/fan/60c5963e7222461.png"}
|
| 965 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00011523.JPEG"}
|
| 966 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/bracelet/fce03c19f3004f2.png"}
|
| 967 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00035296.JPEG"}
|
| 968 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00006939.JPEG"}
|
| 969 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00021741.JPEG"}
|
| 970 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/backpack/93c7c939b3fb42c.png"}
|
| 971 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00031352.JPEG"}
|
| 972 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00005173.JPEG"}
|
| 973 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00037412.JPEG"}
|
| 974 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/belt/fb94124cea634dc.png"}
|
| 975 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00016598.JPEG"}
|
| 976 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/hand_towel_or_rag/bdd709d259c242b.png"}
|
| 977 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/toaster/b547100c63c447d.png"}
|
| 978 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/night_light/f4bab421ea4a4f0.png"}
|
| 979 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00003814.JPEG"}
|
| 980 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/blanket/c00ae4ec3c9a421.png"}
|
| 981 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/paperclip/fea9bde512214f1.png"}
|
| 982 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/necklace/0855bc1c9906467.png"}
|
| 983 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/stuffed_animal/916ea20f728345d.png"}
|
| 984 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00044861.JPEG"}
|
| 985 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00049820.JPEG"}
|
| 986 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00012531.JPEG"}
|
| 987 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00019994.JPEG"}
|
| 988 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/makeup_brush/fa6f40a94d164e3.png"}
|
| 989 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/iron_for_clothes/1e021f983a05434.png"}
|
| 990 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00011588.JPEG"}
|
| 991 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00038938.JPEG"}
|
| 992 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/beer_bottle/8330e5f5fdac4eb.png"}
|
| 993 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/nightstand/1972ff522056433.png"}
|
| 994 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00010630.JPEG"}
|
| 995 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00047419.JPEG"}
|
| 996 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00024131.JPEG"}
|
| 997 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00007378.JPEG"}
|
| 998 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/can_opener/db34dd7a3a46466.png"}
|
| 999 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/baseball_glove/064a1f058775488.png"}
|
| 1000 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00013858.JPEG"}
|
docs/evaluation_contract.md
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Evaluation Contract (Draft)
|
| 2 |
+
|
| 3 |
+
This document defines how submissions are evaluated using real model forward passes and CKA.
|
| 4 |
+
It replaces the dummy embeddings in `src/hackathon/data.py`.
|
| 5 |
+
|
| 6 |
+
## Scope
|
| 7 |
+
|
| 8 |
+
- Applies to Blue Team (model selection) and Red Team (stimulus selection) submissions.
|
| 9 |
+
- All scoring uses real model forward passes to compute embeddings, then linear CKA.
|
| 10 |
+
|
| 11 |
+
## Entities
|
| 12 |
+
|
| 13 |
+
### Stimulus
|
| 14 |
+
|
| 15 |
+
A stimulus is identified by:
|
| 16 |
+
- dataset_name: canonical dataset id (e.g., cifar100, imagenet1k)
|
| 17 |
+
- image_identifier: path relative to dataset root (e.g., val/n01440764/ILSVRC2012_val_00000964.JPEG)
|
| 18 |
+
|
| 19 |
+
### Model
|
| 20 |
+
|
| 21 |
+
A model is identified by:
|
| 22 |
+
- model_name: unique registry key (e.g., resnet50, clip_vit_b32)
|
| 23 |
+
|
| 24 |
+
## Model Registry Spec (planned location: configs/model_registry.json)
|
| 25 |
+
|
| 26 |
+
Each entry defines how to load a model and extract embeddings.
|
| 27 |
+
|
| 28 |
+
Required fields:
|
| 29 |
+
- model_name: string, unique
|
| 30 |
+
- source: string (torchvision, timm, open_clip, custom)
|
| 31 |
+
- weights: string or null (pretrained identifier)
|
| 32 |
+
- layer: string module path or alias (e.g., fc, classifier.4, visual)
|
| 33 |
+
- embedding: string strategy (pool, cls, flatten, mean)
|
| 34 |
+
- input_size: [height, width]
|
| 35 |
+
- preprocess: {mean: [...], std: [...], resize: int, crop: int}
|
| 36 |
+
- output_dim: int (expected embedding dimension)
|
| 37 |
+
|
| 38 |
+
Optional fields:
|
| 39 |
+
- model_parameters: object for model constructor
|
| 40 |
+
- forward_args: object for forward call
|
| 41 |
+
- notes: string
|
| 42 |
+
|
| 43 |
+
Example:
|
| 44 |
+
```json
|
| 45 |
+
{
|
| 46 |
+
"model_name": "resnet50",
|
| 47 |
+
"source": "torchvision",
|
| 48 |
+
"weights": "IMAGENET1K_V2",
|
| 49 |
+
"layer": "fc",
|
| 50 |
+
"embedding": "flatten",
|
| 51 |
+
"input_size": [224, 224],
|
| 52 |
+
"preprocess": {
|
| 53 |
+
"mean": [0.485, 0.456, 0.406],
|
| 54 |
+
"std": [0.229, 0.224, 0.225],
|
| 55 |
+
"resize": 256,
|
| 56 |
+
"crop": 224
|
| 57 |
+
},
|
| 58 |
+
"output_dim": 2048
|
| 59 |
+
}
|
| 60 |
+
```
|
| 61 |
+
|
| 62 |
+
## Stimuli Catalog Spec (planned location: configs/stimuli_catalog.jsonl)
|
| 63 |
+
|
| 64 |
+
Each line is one stimulus with:
|
| 65 |
+
- dataset_name
|
| 66 |
+
- image_identifier
|
| 67 |
+
|
| 68 |
+
Example lines:
|
| 69 |
+
```json
|
| 70 |
+
{"dataset_name": "cifar100", "image_identifier": "test/bear/image_0007.png"}
|
| 71 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n03445777/ILSVRC2012_val_00003572.JPEG"}
|
| 72 |
+
```
|
| 73 |
+
|
| 74 |
+
## Submission Contract
|
| 75 |
+
|
| 76 |
+
### Blue Team
|
| 77 |
+
|
| 78 |
+
- `models`: list of model_name strings.
|
| 79 |
+
- Each model_name must exist in the model registry.
|
| 80 |
+
- Minimum 2 models; no duplicates.
|
| 81 |
+
|
| 82 |
+
### Red Team
|
| 83 |
+
|
| 84 |
+
- `differentiating_images`: list of stimulus objects.
|
| 85 |
+
- Each stimulus must exist in the stimuli catalog.
|
| 86 |
+
- Minimum 2 stimuli; no duplicates.
|
| 87 |
+
|
| 88 |
+
## Evaluation Procedure
|
| 89 |
+
|
| 90 |
+
### Blue Team scoring
|
| 91 |
+
|
| 92 |
+
1. Load the stimuli catalog (full evaluation set).
|
| 93 |
+
2. For each submitted model, run forward pass on all stimuli and extract embeddings.
|
| 94 |
+
3. Compute mean pairwise linear CKA across submitted models.
|
| 95 |
+
|
| 96 |
+
### Red Team scoring
|
| 97 |
+
|
| 98 |
+
1. Load the model registry (full evaluation model set).
|
| 99 |
+
2. For each model, run forward pass on submitted stimuli and extract embeddings.
|
| 100 |
+
3. Compute mean pairwise linear CKA across all models, then score = 1 - avg CKA.
|
| 101 |
+
|
| 102 |
+
## Embedding Extraction Requirements
|
| 103 |
+
|
| 104 |
+
- `model.eval()` and `torch.no_grad()` for all forward passes.
|
| 105 |
+
- Deterministic settings (seed, disable dropout).
|
| 106 |
+
- Embeddings must be 2D arrays shaped [num_samples, dim].
|
| 107 |
+
- If a layer produces spatial features, apply the registry's embedding strategy
|
| 108 |
+
(e.g., global average pool then flatten).
|
| 109 |
+
|
| 110 |
+
## CKA Definition
|
| 111 |
+
|
| 112 |
+
- Use `src/cka/compute.py` linear CKA (biased HSIC by default).
|
| 113 |
+
- Arrays are converted to float64 before CKA.
|
| 114 |
+
|
| 115 |
+
## Storage and Paths
|
| 116 |
+
|
| 117 |
+
- Dataset roots come from env vars (see `AGENTS.md` path hygiene).
|
| 118 |
+
- Cache embeddings per model/layer/dataset version (Modal volume).
|
| 119 |
+
- Durable logs and final scores go to `/orcd/data/...`.
|
| 120 |
+
|
| 121 |
+
## Validation Rules (for future validator)
|
| 122 |
+
|
| 123 |
+
- JSON schema checks for required fields.
|
| 124 |
+
- Name and stimulus existence checks.
|
| 125 |
+
- Minimum counts and uniqueness.
|
| 126 |
+
- Dataset path resolution errors are surfaced as submission failures.
|
| 127 |
+
|
| 128 |
+
## Validation Script
|
| 129 |
+
|
| 130 |
+
- `scripts/validate_submission.py` validates JSON submissions.
|
| 131 |
+
- Optional envs: `HACKATHON_MODEL_REGISTRY`, `HACKATHON_STIMULI_CATALOG`.
|
| 132 |
+
|
| 133 |
+
## Modal Scoring (optional)
|
| 134 |
+
|
| 135 |
+
- Set `HACKATHON_MODAL_ENABLE=true` to route scoring through Modal.
|
| 136 |
+
- Requires `HACKATHON_MODEL_REGISTRY` and `HACKATHON_STIMULI_CATALOG`.
|
| 137 |
+
|
| 138 |
+
## Versioning
|
| 139 |
+
|
| 140 |
+
- This contract should include a `contract_version` when enforced in code.
|
docs/storage_layout.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Storage Layout and Path Hygiene
|
| 2 |
+
|
| 3 |
+
This document defines how datasets, caches, and outputs should be laid out for
|
| 4 |
+
real forward-pass evaluation and Modal-backed scoring.
|
| 5 |
+
|
| 6 |
+
## Recommended environment variables
|
| 7 |
+
|
| 8 |
+
- `PROJECT_ROOT`: repo root path
|
| 9 |
+
- `DATA_ROOT`: datasets root (shared lab storage)
|
| 10 |
+
- `OUTPUT_ROOT`: scratch outputs (temporary)
|
| 11 |
+
- `HF_HOME`: Hugging Face cache on scratch
|
| 12 |
+
- `TORCH_HOME`: Torch cache on scratch
|
| 13 |
+
- `HACKATHON_DATASET_ROOTS`: JSON mapping of dataset names to roots
|
| 14 |
+
- `HACKATHON_MODAL_ENABLE`: set to `true` to use Modal for scoring
|
| 15 |
+
- `HACKATHON_MODAL_APP`: Modal app name (default: `iclr2026-eval`)
|
| 16 |
+
- `HACKATHON_MODAL_CACHE_KEY`: override Modal cache key (optional)
|
| 17 |
+
- `HACKATHON_MODAL_BATCH_SIZE`: override Modal batch size (optional)
|
| 18 |
+
- `HACKATHON_MODEL_REGISTRY`: model registry JSON path (optional)
|
| 19 |
+
- `HACKATHON_STIMULI_CATALOG`: stimuli catalog JSON/JSONL path (optional)
|
| 20 |
+
|
| 21 |
+
## Engaging (BCS) layout
|
| 22 |
+
|
| 23 |
+
Suggested defaults (from `AGENTS.md`):
|
| 24 |
+
|
| 25 |
+
- `PROJECT_ROOT=/orcd/data/<PI>/001/<user>/<project>`
|
| 26 |
+
- `DATA_ROOT=/orcd/data/<PI>/001/<user>/datasets`
|
| 27 |
+
- `OUTPUT_ROOT=/orcd/scratch/bcs/001/<user>/<project>`
|
| 28 |
+
- `HF_HOME=/orcd/scratch/bcs/001/<user>/.cache/huggingface`
|
| 29 |
+
- `TORCH_HOME=/orcd/scratch/bcs/001/<user>/.cache/torch`
|
| 30 |
+
|
| 31 |
+
## Modal volume layout
|
| 32 |
+
|
| 33 |
+
Modal functions in the private `iclr2026-eval-backend` repo (`scripts/modal_backend.py`) use:
|
| 34 |
+
|
| 35 |
+
- Volume: `iclr2026-embeddings`
|
| 36 |
+
- Mount: `/cache`
|
| 37 |
+
- Datasets: `/cache/datasets/<dataset_name>`
|
| 38 |
+
- Embeddings: `/cache/<cache_key>/<model>/<layer>/features.npy`
|
| 39 |
+
- Manifest: `/cache/<cache_key>/manifest.json`
|
| 40 |
+
|
| 41 |
+
If `dataset_roots` is not passed explicitly, dataset resolution in Modal follows:
|
| 42 |
+
|
| 43 |
+
1. `dataset_roots` parameter (function argument)
|
| 44 |
+
2. `HACKATHON_DATASET_ROOTS` env (JSON mapping)
|
| 45 |
+
3. `/cache/datasets/<dataset_name>` if present in the Modal volume
|
| 46 |
+
4. `DATA_ROOT/<dataset_name>`
|
| 47 |
+
|
| 48 |
+
## Dataset roots mapping
|
| 49 |
+
|
| 50 |
+
Use `configs/dataset_roots.example.json` as a template. Values support
|
| 51 |
+
environment variable expansion, for example:
|
| 52 |
+
|
| 53 |
+
```json
|
| 54 |
+
{
|
| 55 |
+
"cifar100": "${DATA_ROOT}/cifar100",
|
| 56 |
+
"imagenet1k": "${DATA_ROOT}/imagenet1k"
|
| 57 |
+
}
|
| 58 |
+
```
|
| 59 |
+
|
| 60 |
+
Export the mapping in the environment (example):
|
| 61 |
+
|
| 62 |
+
```bash
|
| 63 |
+
export HACKATHON_DATASET_ROOTS="$(cat configs/dataset_roots.example.json)"
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
## Notes
|
| 67 |
+
|
| 68 |
+
- Modal containers cannot read `/orcd/...` paths directly. For Modal-backed
|
| 69 |
+
evaluation, stage datasets into the Modal volume or use accessible storage.
|
| 70 |
+
- Prefer scratch (`/orcd/scratch/bcs/001`) for intermediates, and `/orcd/data`
|
| 71 |
+
for durable outputs.
|
environment.yml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: iclr2026-challenge
|
| 2 |
+
channels:
|
| 3 |
+
- conda-forge
|
| 4 |
+
- defaults
|
| 5 |
+
dependencies:
|
| 6 |
+
- python=3.10
|
| 7 |
+
- pip
|
| 8 |
+
- pip:
|
| 9 |
+
- -r requirements.txt
|
hackathon-data/blue_submissions.json
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"submission_id": "94edbdd9a175446cb9a5e4a7c4c7a874",
|
| 4 |
+
"team": "blue",
|
| 5 |
+
"submitter": "anonymous",
|
| 6 |
+
"models": [
|
| 7 |
+
{
|
| 8 |
+
"model_name": "vit_base_patch16_224",
|
| 9 |
+
"source": "dummy_cache",
|
| 10 |
+
"model_parameters": null
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"model_name": "vit_large_patch16_224",
|
| 14 |
+
"source": "dummy_cache",
|
| 15 |
+
"model_parameters": null
|
| 16 |
+
},
|
| 17 |
+
{
|
| 18 |
+
"model_name": "resnet50",
|
| 19 |
+
"source": "dummy_cache",
|
| 20 |
+
"model_parameters": null
|
| 21 |
+
}
|
| 22 |
+
],
|
| 23 |
+
"model_names": [
|
| 24 |
+
"vit_base_patch16_224",
|
| 25 |
+
"vit_large_patch16_224",
|
| 26 |
+
"resnet50"
|
| 27 |
+
],
|
| 28 |
+
"num_models": 3,
|
| 29 |
+
"score": 0.9977365975662326,
|
| 30 |
+
"submitted_time": "2026-01-15T13:27:40Z"
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"submission_id": "0508156e232f4a2d9d4e434239971dc2",
|
| 34 |
+
"team": "blue",
|
| 35 |
+
"submitter": "anonymous",
|
| 36 |
+
"models": [
|
| 37 |
+
{
|
| 38 |
+
"model_name": "vit_base_patch16_224",
|
| 39 |
+
"source": "dummy_cache",
|
| 40 |
+
"model_parameters": null
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"model_name": "vit_large_patch16_224",
|
| 44 |
+
"source": "dummy_cache",
|
| 45 |
+
"model_parameters": null
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"model_name": "resnet50",
|
| 49 |
+
"source": "dummy_cache",
|
| 50 |
+
"model_parameters": null
|
| 51 |
+
}
|
| 52 |
+
],
|
| 53 |
+
"model_names": [
|
| 54 |
+
"vit_base_patch16_224",
|
| 55 |
+
"vit_large_patch16_224",
|
| 56 |
+
"resnet50"
|
| 57 |
+
],
|
| 58 |
+
"num_models": 3,
|
| 59 |
+
"score": 0.9977365975662326,
|
| 60 |
+
"submitted_time": "2026-01-15T13:27:49Z"
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"submission_id": "9601269701a54891916fa923b0995ee4",
|
| 64 |
+
"team": "blue",
|
| 65 |
+
"submitter": "anonymous",
|
| 66 |
+
"models": [
|
| 67 |
+
{
|
| 68 |
+
"model_name": "vit_base_patch16_224",
|
| 69 |
+
"source": "dummy_cache",
|
| 70 |
+
"model_parameters": null
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"model_name": "vit_large_patch16_224",
|
| 74 |
+
"source": "dummy_cache",
|
| 75 |
+
"model_parameters": null
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"model_name": "resnet50",
|
| 79 |
+
"source": "dummy_cache",
|
| 80 |
+
"model_parameters": null
|
| 81 |
+
}
|
| 82 |
+
],
|
| 83 |
+
"model_names": [
|
| 84 |
+
"vit_base_patch16_224",
|
| 85 |
+
"vit_large_patch16_224",
|
| 86 |
+
"resnet50"
|
| 87 |
+
],
|
| 88 |
+
"num_models": 3,
|
| 89 |
+
"score": 0.9977365975662326,
|
| 90 |
+
"submitted_time": "2026-01-15T13:27:59Z"
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"submission_id": "9a53e2eda7364558b07659934670b1f5",
|
| 94 |
+
"team": "blue",
|
| 95 |
+
"submitter": "anonymous",
|
| 96 |
+
"models": [
|
| 97 |
+
{
|
| 98 |
+
"model_name": "vit_base_patch16_224",
|
| 99 |
+
"source": "dummy_cache",
|
| 100 |
+
"model_parameters": null
|
| 101 |
+
},
|
| 102 |
+
{
|
| 103 |
+
"model_name": "resnet50",
|
| 104 |
+
"source": "dummy_cache",
|
| 105 |
+
"model_parameters": null
|
| 106 |
+
}
|
| 107 |
+
],
|
| 108 |
+
"model_names": [
|
| 109 |
+
"vit_base_patch16_224",
|
| 110 |
+
"resnet50"
|
| 111 |
+
],
|
| 112 |
+
"num_models": 2,
|
| 113 |
+
"score": 0.8369087528464697,
|
| 114 |
+
"submitted_time": "2026-01-15T13:34:24Z"
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"submission_id": "cb8f70a0c10641e7aa1f9588400a3426",
|
| 118 |
+
"team": "blue",
|
| 119 |
+
"submitter": "anonymous",
|
| 120 |
+
"models": [
|
| 121 |
+
{
|
| 122 |
+
"model_name": "resnet50",
|
| 123 |
+
"source": "dummy_cache",
|
| 124 |
+
"model_parameters": null
|
| 125 |
+
},
|
| 126 |
+
{
|
| 127 |
+
"model_name": "resnet101",
|
| 128 |
+
"source": "dummy_cache",
|
| 129 |
+
"model_parameters": null
|
| 130 |
+
}
|
| 131 |
+
],
|
| 132 |
+
"model_names": [
|
| 133 |
+
"resnet50",
|
| 134 |
+
"resnet101"
|
| 135 |
+
],
|
| 136 |
+
"num_models": 2,
|
| 137 |
+
"score": 0.9984689260552404,
|
| 138 |
+
"submitted_time": "2026-01-15T13:34:35Z"
|
| 139 |
+
},
|
| 140 |
+
{
|
| 141 |
+
"submission_id": "a9dcdd432b594b138fbfbdddc71f80d3",
|
| 142 |
+
"team": "blue",
|
| 143 |
+
"submitter": "family-test-1",
|
| 144 |
+
"model_names": [
|
| 145 |
+
"resnet18",
|
| 146 |
+
"resnet34"
|
| 147 |
+
],
|
| 148 |
+
"num_models": 2,
|
| 149 |
+
"score": 0.9255393186692762,
|
| 150 |
+
"submitted_time": "2026-01-30T18:39:20Z"
|
| 151 |
+
},
|
| 152 |
+
{
|
| 153 |
+
"submission_id": "5276d0cc1124427c9a8dca478cc7c5ef",
|
| 154 |
+
"team": "blue",
|
| 155 |
+
"submitter": "family-test-1",
|
| 156 |
+
"model_names": [
|
| 157 |
+
"resnet18",
|
| 158 |
+
"resnet34"
|
| 159 |
+
],
|
| 160 |
+
"num_models": 2,
|
| 161 |
+
"score": 0.9255393186692762,
|
| 162 |
+
"submitted_time": "2026-01-30T20:40:27Z"
|
| 163 |
+
},
|
| 164 |
+
{
|
| 165 |
+
"submission_id": "cb824b0c5bfd41cbb928c71e1d5fab5c",
|
| 166 |
+
"team": "blue",
|
| 167 |
+
"submitter": "family-test-1",
|
| 168 |
+
"model_names": [
|
| 169 |
+
"resnet18",
|
| 170 |
+
"resnet34"
|
| 171 |
+
],
|
| 172 |
+
"num_models": 2,
|
| 173 |
+
"score": 0.9255393186692762,
|
| 174 |
+
"submitted_time": "2026-01-30T20:41:17Z"
|
| 175 |
+
},
|
| 176 |
+
{
|
| 177 |
+
"submission_id": "b418117a57804b64a5ebf29156dc77e1",
|
| 178 |
+
"team": "blue",
|
| 179 |
+
"submitter": "family-test-1",
|
| 180 |
+
"model_names": [
|
| 181 |
+
"resnet18",
|
| 182 |
+
"resnet34"
|
| 183 |
+
],
|
| 184 |
+
"num_models": 2,
|
| 185 |
+
"score": 0.16542392317872592,
|
| 186 |
+
"submitted_time": "2026-01-30T20:44:11Z"
|
| 187 |
+
},
|
| 188 |
+
{
|
| 189 |
+
"submission_id": "93deeb874b3e4487b9f86b7f25be1d1b",
|
| 190 |
+
"team": "blue",
|
| 191 |
+
"submitter": "family-test-1",
|
| 192 |
+
"model_names": [
|
| 193 |
+
"resnet18",
|
| 194 |
+
"resnet34"
|
| 195 |
+
],
|
| 196 |
+
"num_models": 2,
|
| 197 |
+
"score": 0.7390657767373638,
|
| 198 |
+
"submitted_time": "2026-01-30T21:02:47Z"
|
| 199 |
+
}
|
| 200 |
+
]
|
hackathon-data/red_submissions.json
ADDED
|
@@ -0,0 +1,362 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"submission_id": "c98476168fcc4127b74f495ef62b51fc",
|
| 4 |
+
"team": "red",
|
| 5 |
+
"submitter": "anonymous",
|
| 6 |
+
"differentiating_images": [
|
| 7 |
+
{
|
| 8 |
+
"dataset_name": "cifar100",
|
| 9 |
+
"image_identifier": "test/airplane/image_0001.png"
|
| 10 |
+
},
|
| 11 |
+
{
|
| 12 |
+
"dataset_name": "cifar100",
|
| 13 |
+
"image_identifier": "test/bear/image_0007.png"
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"dataset_name": "cifar100",
|
| 17 |
+
"image_identifier": "test/bottle/image_0012.png"
|
| 18 |
+
}
|
| 19 |
+
],
|
| 20 |
+
"stimuli_keys": [
|
| 21 |
+
"cifar100::test/airplane/image_0001.png",
|
| 22 |
+
"cifar100::test/bear/image_0007.png",
|
| 23 |
+
"cifar100::test/bottle/image_0012.png"
|
| 24 |
+
],
|
| 25 |
+
"num_stimuli": 3,
|
| 26 |
+
"score": 0.0005089467322310082,
|
| 27 |
+
"submitted_time": "2026-01-15T13:28:07Z"
|
| 28 |
+
},
|
| 29 |
+
{
|
| 30 |
+
"submission_id": "00e699cc35a0427f97d0f488bd6643a6",
|
| 31 |
+
"team": "red",
|
| 32 |
+
"submitter": "anonymous",
|
| 33 |
+
"differentiating_images": [
|
| 34 |
+
{
|
| 35 |
+
"dataset_name": "cifar100",
|
| 36 |
+
"image_identifier": "test/airplane/image_0001.png"
|
| 37 |
+
},
|
| 38 |
+
{
|
| 39 |
+
"dataset_name": "cifar100",
|
| 40 |
+
"image_identifier": "test/bear/image_0007.png"
|
| 41 |
+
}
|
| 42 |
+
],
|
| 43 |
+
"stimuli_keys": [
|
| 44 |
+
"cifar100::test/airplane/image_0001.png",
|
| 45 |
+
"cifar100::test/bear/image_0007.png"
|
| 46 |
+
],
|
| 47 |
+
"num_stimuli": 2,
|
| 48 |
+
"score": 7.210160246629016e-10,
|
| 49 |
+
"submitted_time": "2026-01-15T13:34:47Z"
|
| 50 |
+
},
|
| 51 |
+
{
|
| 52 |
+
"submission_id": "5e08b55e1d5b4755bcdc2ac39a052586",
|
| 53 |
+
"team": "red",
|
| 54 |
+
"submitter": "anonymous",
|
| 55 |
+
"differentiating_images": [
|
| 56 |
+
{
|
| 57 |
+
"dataset_name": "cifar100",
|
| 58 |
+
"image_identifier": "test/airplane/image_0001.png"
|
| 59 |
+
},
|
| 60 |
+
{
|
| 61 |
+
"dataset_name": "cifar100",
|
| 62 |
+
"image_identifier": "test/bear/image_0007.png"
|
| 63 |
+
}
|
| 64 |
+
],
|
| 65 |
+
"stimuli_keys": [
|
| 66 |
+
"cifar100::test/airplane/image_0001.png",
|
| 67 |
+
"cifar100::test/bear/image_0007.png"
|
| 68 |
+
],
|
| 69 |
+
"num_stimuli": 2,
|
| 70 |
+
"score": 7.210160246629016e-10,
|
| 71 |
+
"submitted_time": "2026-01-15T13:34:58Z"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"submission_id": "94363c0a44584d63b9571a0e48e16a06",
|
| 75 |
+
"team": "red",
|
| 76 |
+
"submitter": "anonymous",
|
| 77 |
+
"differentiating_images": [
|
| 78 |
+
{
|
| 79 |
+
"dataset_name": "cifar100",
|
| 80 |
+
"image_identifier": "test/airplane/image_0001.png"
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"dataset_name": "cifar100",
|
| 84 |
+
"image_identifier": "test/bear/image_0007.png"
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"dataset_name": "cifar100",
|
| 88 |
+
"image_identifier": "test/bottle/image_0012.png"
|
| 89 |
+
}
|
| 90 |
+
],
|
| 91 |
+
"stimuli_keys": [
|
| 92 |
+
"cifar100::test/airplane/image_0001.png",
|
| 93 |
+
"cifar100::test/bear/image_0007.png",
|
| 94 |
+
"cifar100::test/bottle/image_0012.png"
|
| 95 |
+
],
|
| 96 |
+
"num_stimuli": 3,
|
| 97 |
+
"score": 0.032057460754414624,
|
| 98 |
+
"submitted_time": "2026-01-15T13:40:06Z"
|
| 99 |
+
},
|
| 100 |
+
{
|
| 101 |
+
"submission_id": "33cc950022a24af6bdee9c61e04a6682",
|
| 102 |
+
"team": "red",
|
| 103 |
+
"submitter": "anonymous",
|
| 104 |
+
"differentiating_images": [
|
| 105 |
+
{
|
| 106 |
+
"dataset_name": "cifar100",
|
| 107 |
+
"image_identifier": "test/airplane/image_0001.png"
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"dataset_name": "cifar100",
|
| 111 |
+
"image_identifier": "test/bus/image_0021.png"
|
| 112 |
+
},
|
| 113 |
+
{
|
| 114 |
+
"dataset_name": "cifar100",
|
| 115 |
+
"image_identifier": "test/rocket/image_0051.png"
|
| 116 |
+
}
|
| 117 |
+
],
|
| 118 |
+
"stimuli_keys": [
|
| 119 |
+
"cifar100::test/airplane/image_0001.png",
|
| 120 |
+
"cifar100::test/bus/image_0021.png",
|
| 121 |
+
"cifar100::test/rocket/image_0051.png"
|
| 122 |
+
],
|
| 123 |
+
"num_stimuli": 3,
|
| 124 |
+
"score": 0.034225943844330975,
|
| 125 |
+
"submitted_time": "2026-01-15T13:40:27Z"
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"submission_id": "a886ad9262014c5286a7a4925ceacb41",
|
| 129 |
+
"team": "red",
|
| 130 |
+
"submitter": "anonymous",
|
| 131 |
+
"differentiating_images": [
|
| 132 |
+
{
|
| 133 |
+
"dataset_name": "cifar100",
|
| 134 |
+
"image_identifier": "test/airplane/image_0001.png"
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"dataset_name": "cifar100",
|
| 138 |
+
"image_identifier": "test/bottle/image_0012.png"
|
| 139 |
+
}
|
| 140 |
+
],
|
| 141 |
+
"stimuli_keys": [
|
| 142 |
+
"cifar100::test/airplane/image_0001.png",
|
| 143 |
+
"cifar100::test/bottle/image_0012.png"
|
| 144 |
+
],
|
| 145 |
+
"num_stimuli": 2,
|
| 146 |
+
"score": 1.7992535239486074e-09,
|
| 147 |
+
"submitted_time": "2026-01-15T13:49:11Z"
|
| 148 |
+
},
|
| 149 |
+
{
|
| 150 |
+
"submission_id": "0918d718f3f6460ea6e17b32daa39bb8",
|
| 151 |
+
"team": "red",
|
| 152 |
+
"submitter": "red-test-1",
|
| 153 |
+
"differentiating_images": [
|
| 154 |
+
{
|
| 155 |
+
"dataset_name": "imagenet_val",
|
| 156 |
+
"image_identifier": "ILSVRC2012_val_00000001.JPEG"
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"dataset_name": "imagenet_val",
|
| 160 |
+
"image_identifier": "ILSVRC2012_val_00000002.JPEG"
|
| 161 |
+
}
|
| 162 |
+
],
|
| 163 |
+
"stimuli_keys": [
|
| 164 |
+
"imagenet_val::ILSVRC2012_val_00000001.JPEG",
|
| 165 |
+
"imagenet_val::ILSVRC2012_val_00000002.JPEG"
|
| 166 |
+
],
|
| 167 |
+
"num_stimuli": 2,
|
| 168 |
+
"score": 4.641865669618994e-09,
|
| 169 |
+
"submitted_time": "2026-02-02T17:48:57Z"
|
| 170 |
+
},
|
| 171 |
+
{
|
| 172 |
+
"submission_id": "564393f6037a487d9bac28057c4e2397",
|
| 173 |
+
"team": "red",
|
| 174 |
+
"submitter": "red-test-2",
|
| 175 |
+
"differentiating_images": [
|
| 176 |
+
{
|
| 177 |
+
"dataset_name": "imagenet_val",
|
| 178 |
+
"image_identifier": "ILSVRC2012_val_00000003.JPEG"
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"dataset_name": "imagenet_val",
|
| 182 |
+
"image_identifier": "ILSVRC2012_val_00000004.JPEG"
|
| 183 |
+
},
|
| 184 |
+
{
|
| 185 |
+
"dataset_name": "imagenet_val",
|
| 186 |
+
"image_identifier": "ILSVRC2012_val_00000005.JPEG"
|
| 187 |
+
}
|
| 188 |
+
],
|
| 189 |
+
"stimuli_keys": [
|
| 190 |
+
"imagenet_val::ILSVRC2012_val_00000003.JPEG",
|
| 191 |
+
"imagenet_val::ILSVRC2012_val_00000004.JPEG",
|
| 192 |
+
"imagenet_val::ILSVRC2012_val_00000005.JPEG"
|
| 193 |
+
],
|
| 194 |
+
"num_stimuli": 3,
|
| 195 |
+
"score": 0.0539067506733818,
|
| 196 |
+
"submitted_time": "2026-02-02T17:48:58Z"
|
| 197 |
+
},
|
| 198 |
+
{
|
| 199 |
+
"submission_id": "f3d164ddd6584bf284a403dd06e2c0d8",
|
| 200 |
+
"team": "red",
|
| 201 |
+
"submitter": "red-test-3",
|
| 202 |
+
"differentiating_images": [
|
| 203 |
+
{
|
| 204 |
+
"dataset_name": "imagenet_val",
|
| 205 |
+
"image_identifier": "ILSVRC2012_val_00000002.JPEG"
|
| 206 |
+
},
|
| 207 |
+
{
|
| 208 |
+
"dataset_name": "imagenet_val",
|
| 209 |
+
"image_identifier": "ILSVRC2012_val_00000006.JPEG"
|
| 210 |
+
}
|
| 211 |
+
],
|
| 212 |
+
"stimuli_keys": [
|
| 213 |
+
"imagenet_val::ILSVRC2012_val_00000002.JPEG",
|
| 214 |
+
"imagenet_val::ILSVRC2012_val_00000006.JPEG"
|
| 215 |
+
],
|
| 216 |
+
"num_stimuli": 2,
|
| 217 |
+
"score": 3.537208304038586e-09,
|
| 218 |
+
"submitted_time": "2026-02-02T17:48:59Z"
|
| 219 |
+
},
|
| 220 |
+
{
|
| 221 |
+
"submission_id": "89ef5cae40e2470eaec98fbfbb568545",
|
| 222 |
+
"team": "red",
|
| 223 |
+
"submitter": "red-test-1",
|
| 224 |
+
"differentiating_images": [
|
| 225 |
+
{
|
| 226 |
+
"dataset_name": "imagenet_val",
|
| 227 |
+
"image_identifier": "ILSVRC2012_val_00000001.JPEG"
|
| 228 |
+
},
|
| 229 |
+
{
|
| 230 |
+
"dataset_name": "imagenet_val",
|
| 231 |
+
"image_identifier": "ILSVRC2012_val_00000002.JPEG"
|
| 232 |
+
}
|
| 233 |
+
],
|
| 234 |
+
"stimuli_keys": [
|
| 235 |
+
"imagenet_val::ILSVRC2012_val_00000001.JPEG",
|
| 236 |
+
"imagenet_val::ILSVRC2012_val_00000002.JPEG"
|
| 237 |
+
],
|
| 238 |
+
"num_stimuli": 2,
|
| 239 |
+
"score": 4.641865669618994e-09,
|
| 240 |
+
"submitted_time": "2026-02-02T18:22:19Z"
|
| 241 |
+
},
|
| 242 |
+
{
|
| 243 |
+
"submission_id": "a95f3e9e9c8844b587297c96c4225292",
|
| 244 |
+
"team": "red",
|
| 245 |
+
"submitter": "red-test-2",
|
| 246 |
+
"differentiating_images": [
|
| 247 |
+
{
|
| 248 |
+
"dataset_name": "imagenet_val",
|
| 249 |
+
"image_identifier": "ILSVRC2012_val_00000003.JPEG"
|
| 250 |
+
},
|
| 251 |
+
{
|
| 252 |
+
"dataset_name": "imagenet_val",
|
| 253 |
+
"image_identifier": "ILSVRC2012_val_00000004.JPEG"
|
| 254 |
+
},
|
| 255 |
+
{
|
| 256 |
+
"dataset_name": "imagenet_val",
|
| 257 |
+
"image_identifier": "ILSVRC2012_val_00000005.JPEG"
|
| 258 |
+
}
|
| 259 |
+
],
|
| 260 |
+
"stimuli_keys": [
|
| 261 |
+
"imagenet_val::ILSVRC2012_val_00000003.JPEG",
|
| 262 |
+
"imagenet_val::ILSVRC2012_val_00000004.JPEG",
|
| 263 |
+
"imagenet_val::ILSVRC2012_val_00000005.JPEG"
|
| 264 |
+
],
|
| 265 |
+
"num_stimuli": 3,
|
| 266 |
+
"score": 0.0539067506733818,
|
| 267 |
+
"submitted_time": "2026-02-02T18:22:19Z"
|
| 268 |
+
},
|
| 269 |
+
{
|
| 270 |
+
"submission_id": "ce09c58fe963407e80adeee3c598e049",
|
| 271 |
+
"team": "red",
|
| 272 |
+
"submitter": "red-test-3",
|
| 273 |
+
"differentiating_images": [
|
| 274 |
+
{
|
| 275 |
+
"dataset_name": "imagenet_val",
|
| 276 |
+
"image_identifier": "ILSVRC2012_val_00000002.JPEG"
|
| 277 |
+
},
|
| 278 |
+
{
|
| 279 |
+
"dataset_name": "imagenet_val",
|
| 280 |
+
"image_identifier": "ILSVRC2012_val_00000006.JPEG"
|
| 281 |
+
}
|
| 282 |
+
],
|
| 283 |
+
"stimuli_keys": [
|
| 284 |
+
"imagenet_val::ILSVRC2012_val_00000002.JPEG",
|
| 285 |
+
"imagenet_val::ILSVRC2012_val_00000006.JPEG"
|
| 286 |
+
],
|
| 287 |
+
"num_stimuli": 2,
|
| 288 |
+
"score": 3.537208304038586e-09,
|
| 289 |
+
"submitted_time": "2026-02-02T18:22:20Z"
|
| 290 |
+
},
|
| 291 |
+
{
|
| 292 |
+
"submission_id": "e14d25b38a2a43299ccc5a4aaa7a8095",
|
| 293 |
+
"team": "red",
|
| 294 |
+
"submitter": "red-test-1",
|
| 295 |
+
"differentiating_images": [
|
| 296 |
+
{
|
| 297 |
+
"dataset_name": "imagenet_val",
|
| 298 |
+
"image_identifier": "ILSVRC2012_val_00000001.JPEG"
|
| 299 |
+
},
|
| 300 |
+
{
|
| 301 |
+
"dataset_name": "imagenet_val",
|
| 302 |
+
"image_identifier": "ILSVRC2012_val_00000002.JPEG"
|
| 303 |
+
}
|
| 304 |
+
],
|
| 305 |
+
"stimuli_keys": [
|
| 306 |
+
"imagenet_val::ILSVRC2012_val_00000001.JPEG",
|
| 307 |
+
"imagenet_val::ILSVRC2012_val_00000002.JPEG"
|
| 308 |
+
],
|
| 309 |
+
"num_stimuli": 2,
|
| 310 |
+
"score": 4.641865669618994e-09,
|
| 311 |
+
"submitted_time": "2026-02-03T16:59:12Z"
|
| 312 |
+
},
|
| 313 |
+
{
|
| 314 |
+
"submission_id": "9f5b6f0a8e484796b5fb49f6a8e73978",
|
| 315 |
+
"team": "red",
|
| 316 |
+
"submitter": "red-test-2",
|
| 317 |
+
"differentiating_images": [
|
| 318 |
+
{
|
| 319 |
+
"dataset_name": "imagenet_val",
|
| 320 |
+
"image_identifier": "ILSVRC2012_val_00000003.JPEG"
|
| 321 |
+
},
|
| 322 |
+
{
|
| 323 |
+
"dataset_name": "imagenet_val",
|
| 324 |
+
"image_identifier": "ILSVRC2012_val_00000004.JPEG"
|
| 325 |
+
},
|
| 326 |
+
{
|
| 327 |
+
"dataset_name": "imagenet_val",
|
| 328 |
+
"image_identifier": "ILSVRC2012_val_00000005.JPEG"
|
| 329 |
+
}
|
| 330 |
+
],
|
| 331 |
+
"stimuli_keys": [
|
| 332 |
+
"imagenet_val::ILSVRC2012_val_00000003.JPEG",
|
| 333 |
+
"imagenet_val::ILSVRC2012_val_00000004.JPEG",
|
| 334 |
+
"imagenet_val::ILSVRC2012_val_00000005.JPEG"
|
| 335 |
+
],
|
| 336 |
+
"num_stimuli": 3,
|
| 337 |
+
"score": 0.0539067506733818,
|
| 338 |
+
"submitted_time": "2026-02-03T16:59:15Z"
|
| 339 |
+
},
|
| 340 |
+
{
|
| 341 |
+
"submission_id": "3cfc065bb85a40e28927d950b8cb156a",
|
| 342 |
+
"team": "red",
|
| 343 |
+
"submitter": "red-test-3",
|
| 344 |
+
"differentiating_images": [
|
| 345 |
+
{
|
| 346 |
+
"dataset_name": "imagenet_val",
|
| 347 |
+
"image_identifier": "ILSVRC2012_val_00000002.JPEG"
|
| 348 |
+
},
|
| 349 |
+
{
|
| 350 |
+
"dataset_name": "imagenet_val",
|
| 351 |
+
"image_identifier": "ILSVRC2012_val_00000006.JPEG"
|
| 352 |
+
}
|
| 353 |
+
],
|
| 354 |
+
"stimuli_keys": [
|
| 355 |
+
"imagenet_val::ILSVRC2012_val_00000002.JPEG",
|
| 356 |
+
"imagenet_val::ILSVRC2012_val_00000006.JPEG"
|
| 357 |
+
],
|
| 358 |
+
"num_stimuli": 2,
|
| 359 |
+
"score": 3.537208304038586e-09,
|
| 360 |
+
"submitted_time": "2026-02-03T16:59:15Z"
|
| 361 |
+
}
|
| 362 |
+
]
|
pyproject.toml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[tool.ruff]
|
| 2 |
+
# Enable pycodestyle (`E`) and Pyflakes (`F`) codes by default.
|
| 3 |
+
select = ["E", "F"]
|
| 4 |
+
ignore = ["E501"] # line too long (black is taking care of this)
|
| 5 |
+
line-length = 119
|
| 6 |
+
fixable = ["A", "B", "C", "D", "E", "F", "G", "I", "N", "Q", "S", "T", "W", "ANN", "ARG", "BLE", "COM", "DJ", "DTZ", "EM", "ERA", "EXE", "FBT", "ICN", "INP", "ISC", "NPY", "PD", "PGH", "PIE", "PL", "PT", "PTH", "PYI", "RET", "RSE", "RUF", "SIM", "SLF", "TCH", "TID", "TRY", "UP", "YTT"]
|
| 7 |
+
|
| 8 |
+
[tool.isort]
|
| 9 |
+
profile = "black"
|
| 10 |
+
line_length = 119
|
| 11 |
+
|
| 12 |
+
[tool.black]
|
| 13 |
+
line-length = 119
|
requirements.txt
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
APScheduler
|
| 2 |
+
black
|
| 3 |
+
datasets
|
| 4 |
+
modal
|
| 5 |
+
gradio
|
| 6 |
+
gradio[oauth]
|
| 7 |
+
gradio_leaderboard==0.0.13
|
| 8 |
+
gradio_client
|
| 9 |
+
huggingface-hub>=0.18.0
|
| 10 |
+
matplotlib
|
| 11 |
+
python-dotenv
|
| 12 |
+
numpy
|
| 13 |
+
pandas
|
| 14 |
+
python-dateutil
|
| 15 |
+
tqdm
|
| 16 |
+
transformers
|
| 17 |
+
tokenizers>=0.15.0
|
| 18 |
+
sentencepiece
|
scripts/blue_family_smoke_test.py
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import json
|
| 5 |
+
import os
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
|
| 8 |
+
import modal
|
| 9 |
+
|
| 10 |
+
from dotenv import load_dotenv
|
| 11 |
+
load_dotenv()
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def _require_env(name: str) -> str:
|
| 15 |
+
value = os.environ.get(name, "").strip()
|
| 16 |
+
if not value:
|
| 17 |
+
raise ValueError(f"Missing required env var: {name}")
|
| 18 |
+
return value
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
def _seed_dummy_dataset(app_name: str) -> None:
|
| 22 |
+
seed_fn = modal.Function.from_name(app_name, "seed_dummy_dataset")
|
| 23 |
+
seed = seed_fn.remote(num_images=6, image_size=224, dataset_name="dummy")
|
| 24 |
+
print(f"Seeded dataset at {seed['dataset_root']}")
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def main() -> None:
|
| 28 |
+
parser = argparse.ArgumentParser(description="Blue family smoke test")
|
| 29 |
+
parser.add_argument(
|
| 30 |
+
"--stimuli",
|
| 31 |
+
type=str,
|
| 32 |
+
default=None,
|
| 33 |
+
help="Path to custom stimuli JSONL file. If not provided, uses HACKATHON_STIMULI_CATALOG env var.",
|
| 34 |
+
)
|
| 35 |
+
parser.add_argument(
|
| 36 |
+
"--s3",
|
| 37 |
+
action="store_true",
|
| 38 |
+
help="Use S3-backed datasets (requires aws-s3-credentials Modal secret).",
|
| 39 |
+
)
|
| 40 |
+
parser.add_argument(
|
| 41 |
+
"--skip-seed",
|
| 42 |
+
action="store_true",
|
| 43 |
+
help="Skip seeding dummy dataset (use when testing with real images).",
|
| 44 |
+
)
|
| 45 |
+
args = parser.parse_args()
|
| 46 |
+
|
| 47 |
+
_require_env("HACKATHON_MODAL_ENABLE")
|
| 48 |
+
_require_env("HACKATHON_MODEL_REGISTRY")
|
| 49 |
+
data_dir = _require_env("HACKATHON_DATA_DIR")
|
| 50 |
+
|
| 51 |
+
# Use custom stimuli if provided, otherwise use env var
|
| 52 |
+
if args.stimuli:
|
| 53 |
+
stimuli_path = Path(args.stimuli).resolve()
|
| 54 |
+
if not stimuli_path.exists():
|
| 55 |
+
raise ValueError(f"Stimuli file not found: {stimuli_path}")
|
| 56 |
+
os.environ["HACKATHON_STIMULI_CATALOG"] = str(stimuli_path)
|
| 57 |
+
print(f"Using custom stimuli: {stimuli_path}")
|
| 58 |
+
else:
|
| 59 |
+
_require_env("HACKATHON_STIMULI_CATALOG")
|
| 60 |
+
|
| 61 |
+
# Set S3 mode if requested
|
| 62 |
+
if args.s3:
|
| 63 |
+
os.environ["HACKATHON_USE_S3"] = "true"
|
| 64 |
+
print("S3 mode enabled - will use extract_embeddings_s3 function")
|
| 65 |
+
|
| 66 |
+
app_name = os.environ.get("HACKATHON_MODAL_APP", "iclr2026-eval")
|
| 67 |
+
|
| 68 |
+
# Only seed dummy dataset if not using real images
|
| 69 |
+
if not args.skip_seed and not args.s3:
|
| 70 |
+
_seed_dummy_dataset(app_name)
|
| 71 |
+
elif args.skip_seed:
|
| 72 |
+
print("Skipping dummy dataset seeding")
|
| 73 |
+
elif args.s3:
|
| 74 |
+
print("S3 mode: skipping dummy dataset seeding (using real images)")
|
| 75 |
+
|
| 76 |
+
from app import submit_blue
|
| 77 |
+
|
| 78 |
+
model_sets = [
|
| 79 |
+
# ["resnet18", "mobilenet_v2", "densenet121"],
|
| 80 |
+
# ["vgg16", "resnet18"],
|
| 81 |
+
# ["mobilenet_v2", "densenet121", "vgg16"],
|
| 82 |
+
["resnet18", "resnet34"],
|
| 83 |
+
]
|
| 84 |
+
|
| 85 |
+
for idx, models in enumerate(model_sets, start=1):
|
| 86 |
+
payload = json.dumps({"models": models})
|
| 87 |
+
submitter = f"family-test-{idx}"
|
| 88 |
+
msg, leaderboard, pairwise = submit_blue(submitter, payload)
|
| 89 |
+
print(f"Submission {idx} message: {msg}")
|
| 90 |
+
print(f"Submission {idx} leaderboard: {leaderboard.tail(1).to_dict(orient='records')}")
|
| 91 |
+
print(f"Submission {idx} pairwise: {pairwise.to_dict(orient='records')}")
|
| 92 |
+
assert not pairwise.empty, "Pairwise table should not be empty."
|
| 93 |
+
|
| 94 |
+
# blue_path = Path(data_dir) / "blue_submissions.json"
|
| 95 |
+
# assert blue_path.exists(), f"Missing submission file: {blue_path}"
|
| 96 |
+
print("Blue family smoke test complete.")
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
if __name__ == "__main__":
|
| 100 |
+
main()
|
scripts/blue_team_submit.py
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import json
|
| 5 |
+
import os
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
|
| 8 |
+
import modal
|
| 9 |
+
|
| 10 |
+
from dotenv import load_dotenv
|
| 11 |
+
load_dotenv()
|
| 12 |
+
|
| 13 |
+
def _require_env(name: str) -> str:
|
| 14 |
+
value = os.environ.get(name, "").strip()
|
| 15 |
+
if not value:
|
| 16 |
+
raise ValueError(f"Missing required env var: {name}")
|
| 17 |
+
return value
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def _seed_dummy_dataset(app_name: str) -> None:
|
| 21 |
+
seed_fn = modal.Function.from_name(app_name, "seed_dummy_dataset")
|
| 22 |
+
seed = seed_fn.remote(num_images=6, image_size=224, dataset_name="dummy")
|
| 23 |
+
print(f"Seeded dataset at {seed['dataset_root']}")
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def main(
|
| 27 |
+
models: list[str],
|
| 28 |
+
submitter: str,
|
| 29 |
+
stimuli: str | None,
|
| 30 |
+
use_s3: bool = True,
|
| 31 |
+
skip_seed: bool = False
|
| 32 |
+
) -> None:
|
| 33 |
+
|
| 34 |
+
_require_env("HACKATHON_MODAL_ENABLE")
|
| 35 |
+
_require_env("HACKATHON_MODEL_REGISTRY")
|
| 36 |
+
|
| 37 |
+
# Use custom stimuli if provided, otherwise use env var
|
| 38 |
+
if stimuli:
|
| 39 |
+
stimuli_path = Path(stimuli).resolve()
|
| 40 |
+
if not stimuli_path.exists():
|
| 41 |
+
raise ValueError(f"Stimuli file not found: {stimuli_path}")
|
| 42 |
+
os.environ["HACKATHON_STIMULI_CATALOG"] = str(stimuli_path)
|
| 43 |
+
print(f"Using custom stimuli: {stimuli_path}")
|
| 44 |
+
else:
|
| 45 |
+
_require_env("HACKATHON_STIMULI_CATALOG")
|
| 46 |
+
|
| 47 |
+
# Set S3 mode if requested
|
| 48 |
+
if use_s3:
|
| 49 |
+
os.environ["HACKATHON_USE_S3"] = "true"
|
| 50 |
+
print("S3 mode enabled - will use extract_embeddings_s3 function")
|
| 51 |
+
|
| 52 |
+
app_name = os.environ.get("HACKATHON_MODAL_APP", "iclr2026-eval")
|
| 53 |
+
|
| 54 |
+
# Only seed dummy dataset if not using real images
|
| 55 |
+
if not skip_seed and not use_s3:
|
| 56 |
+
_seed_dummy_dataset(app_name)
|
| 57 |
+
elif skip_seed:
|
| 58 |
+
print("Skipping dummy dataset seeding")
|
| 59 |
+
elif use_s3:
|
| 60 |
+
print("S3 mode: skipping dummy dataset seeding (using real images)")
|
| 61 |
+
|
| 62 |
+
from app import submit_blue
|
| 63 |
+
|
| 64 |
+
payload = json.dumps({"models": models})
|
| 65 |
+
msg, leaderboard, pairwise = submit_blue(submitter, payload)
|
| 66 |
+
print(f"Submission message: {msg}")
|
| 67 |
+
print(f"Submission leaderboard: {leaderboard.tail(1).to_dict(orient='records')}")
|
| 68 |
+
print(f"Submission pairwise: {pairwise.to_dict(orient='records')}")
|
| 69 |
+
assert not pairwise.empty, "Pairwise table should not be empty."
|
| 70 |
+
|
| 71 |
+
if __name__ == "__main__":
|
| 72 |
+
parser = argparse.ArgumentParser(description="Blue family smoke test")
|
| 73 |
+
parser.add_argument(
|
| 74 |
+
"--models",
|
| 75 |
+
type=str,
|
| 76 |
+
nargs="+",
|
| 77 |
+
default=None,
|
| 78 |
+
help="List of models to submit. If not provided, uses predefined model sets.",
|
| 79 |
+
)
|
| 80 |
+
parser.add_argument(
|
| 81 |
+
"--submitter",
|
| 82 |
+
type=str,
|
| 83 |
+
default="test",
|
| 84 |
+
help="Submitter name to use for the submission.",
|
| 85 |
+
)
|
| 86 |
+
parser.add_argument(
|
| 87 |
+
"--stimuli",
|
| 88 |
+
type=str,
|
| 89 |
+
default=None,
|
| 90 |
+
help="Path to custom stimuli JSONL file. If not provided, uses HACKATHON_STIMULI_CATALOG env var.",
|
| 91 |
+
)
|
| 92 |
+
parser.add_argument(
|
| 93 |
+
"--s3",
|
| 94 |
+
action="store_true",
|
| 95 |
+
help="Use S3-backed datasets (requires aws-s3-credentials Modal secret).",
|
| 96 |
+
)
|
| 97 |
+
parser.add_argument(
|
| 98 |
+
"--skip-seed",
|
| 99 |
+
action="store_true",
|
| 100 |
+
help="Skip seeding dummy dataset (use when testing with real images).",
|
| 101 |
+
)
|
| 102 |
+
args = parser.parse_args()
|
| 103 |
+
|
| 104 |
+
models = args.models if args.models is not None else ["resnet18", "resnet34"]
|
| 105 |
+
submitter = args.submitter
|
| 106 |
+
|
| 107 |
+
main(models, submitter, args.stimuli, args.s3, args.skip_seed)
|
scripts/generate_blue_registry.py
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""Generate blue_team_model_registry.json from one_model_per_family.json.
|
| 3 |
+
|
| 4 |
+
For each model, queries timm to auto-detect:
|
| 5 |
+
- preprocessing hyperparameters (resize, crop, mean, std)
|
| 6 |
+
- the appropriate embedding layer name
|
| 7 |
+
- embedding strategy
|
| 8 |
+
|
| 9 |
+
Usage (local):
|
| 10 |
+
python scripts/generate_blue_registry.py
|
| 11 |
+
|
| 12 |
+
Usage (Modal):
|
| 13 |
+
modal run scripts/generate_blue_registry.py
|
| 14 |
+
"""
|
| 15 |
+
from __future__ import annotations
|
| 16 |
+
|
| 17 |
+
import json
|
| 18 |
+
import math
|
| 19 |
+
import sys
|
| 20 |
+
from pathlib import Path
|
| 21 |
+
from typing import Any
|
| 22 |
+
|
| 23 |
+
CONFIGS_DIR = Path(__file__).resolve().parent.parent / "configs"
|
| 24 |
+
INPUT_PATH = CONFIGS_DIR / "one_model_per_family.json"
|
| 25 |
+
OUTPUT_PATH = CONFIGS_DIR / "blue_team_model_registry.json"
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def detect_embedding_layer(model_name: str, model: Any) -> str:
|
| 29 |
+
"""Detect the best layer for embedding extraction by inspecting model modules."""
|
| 30 |
+
import torch.nn as nn
|
| 31 |
+
|
| 32 |
+
modules = dict(model.named_modules())
|
| 33 |
+
|
| 34 |
+
# Priority 1: head.global_pool (hybrid/newer architectures)
|
| 35 |
+
if "head.global_pool" in modules:
|
| 36 |
+
m = modules["head.global_pool"]
|
| 37 |
+
if not isinstance(m, nn.Identity):
|
| 38 |
+
return "head.global_pool"
|
| 39 |
+
|
| 40 |
+
# Priority 2: global_pool (standard CNNs)
|
| 41 |
+
if "global_pool" in modules:
|
| 42 |
+
m = modules["global_pool"]
|
| 43 |
+
if not isinstance(m, nn.Identity):
|
| 44 |
+
return "global_pool"
|
| 45 |
+
|
| 46 |
+
# Priority 3: pooling (ConvMixer uses SelectAdaptivePool2d as 'pooling')
|
| 47 |
+
if "pooling" in modules:
|
| 48 |
+
m = modules["pooling"]
|
| 49 |
+
if not isinstance(m, nn.Identity):
|
| 50 |
+
return "pooling"
|
| 51 |
+
|
| 52 |
+
# Priority 4: fc_norm (some ViT variants like EVA, BEiT, AIMv2)
|
| 53 |
+
if "fc_norm" in modules:
|
| 54 |
+
return "fc_norm"
|
| 55 |
+
|
| 56 |
+
# Priority 5: norm (ViT/transformer final normalization before head)
|
| 57 |
+
# Accept any normalization-like module, but NOT ModuleList (e.g. CrossViT)
|
| 58 |
+
if "norm" in modules:
|
| 59 |
+
m = modules["norm"]
|
| 60 |
+
if not isinstance(m, (nn.ModuleList, nn.ModuleDict)):
|
| 61 |
+
return "norm"
|
| 62 |
+
|
| 63 |
+
# Priority 6: norm.1 (CrossViT has ModuleList of norms; use the large-scale branch)
|
| 64 |
+
if "norm.1" in modules:
|
| 65 |
+
return "norm.1"
|
| 66 |
+
|
| 67 |
+
# Priority 7: norm4 (CoaT models have norm1..norm4 for each stage)
|
| 68 |
+
if "norm4" in modules:
|
| 69 |
+
return "norm4"
|
| 70 |
+
|
| 71 |
+
# Priority 8: head.norm
|
| 72 |
+
if "head.norm" in modules:
|
| 73 |
+
return "head.norm"
|
| 74 |
+
|
| 75 |
+
# Priority 9: stages.3.norm (PVT v2 and similar hierarchical transformers)
|
| 76 |
+
if "stages.3.norm" in modules:
|
| 77 |
+
return "stages.3.norm"
|
| 78 |
+
|
| 79 |
+
# Priority 10: head.head.bn (RepViT: BatchNorm1d before classifier Linear)
|
| 80 |
+
if "head.head.bn" in modules:
|
| 81 |
+
return "head.head.bn"
|
| 82 |
+
|
| 83 |
+
# Priority 11: head.bn (LeViT/NormLinear: BatchNorm1d before classifier Linear)
|
| 84 |
+
if "head.bn" in modules:
|
| 85 |
+
return "head.bn"
|
| 86 |
+
|
| 87 |
+
# Priority 12: head (last resort - may output logits)
|
| 88 |
+
if "head" in modules:
|
| 89 |
+
return "head"
|
| 90 |
+
|
| 91 |
+
# Priority 12: avgpool (some torchvision-style models)
|
| 92 |
+
if "avgpool" in modules:
|
| 93 |
+
return "avgpool"
|
| 94 |
+
|
| 95 |
+
raise ValueError(f"Could not detect embedding layer for {model_name}")
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
def generate_spec(model_name: str) -> dict[str, Any]:
|
| 99 |
+
"""Generate a full model spec dict for a given timm model name."""
|
| 100 |
+
import timm
|
| 101 |
+
import timm.data
|
| 102 |
+
|
| 103 |
+
model = timm.create_model(model_name, pretrained=False)
|
| 104 |
+
data_config = timm.data.resolve_data_config(model=model)
|
| 105 |
+
|
| 106 |
+
input_size = data_config["input_size"] # (C, H, W)
|
| 107 |
+
crop = input_size[1] # Use height (should == width for these models)
|
| 108 |
+
crop_pct = data_config.get("crop_pct", 0.875)
|
| 109 |
+
resize = round(crop / crop_pct)
|
| 110 |
+
mean = [round(v, 3) for v in data_config["mean"]]
|
| 111 |
+
std = [round(v, 3) for v in data_config["std"]]
|
| 112 |
+
|
| 113 |
+
layer = detect_embedding_layer(model_name, model)
|
| 114 |
+
|
| 115 |
+
return {
|
| 116 |
+
"model_name": model_name,
|
| 117 |
+
"source": "timm",
|
| 118 |
+
"weights": "imagenet",
|
| 119 |
+
"layer": layer,
|
| 120 |
+
"embedding": "flatten",
|
| 121 |
+
"preprocess": {
|
| 122 |
+
"resize": resize,
|
| 123 |
+
"crop": crop,
|
| 124 |
+
"mean": mean,
|
| 125 |
+
"std": std,
|
| 126 |
+
},
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
def validate_spec(spec: dict[str, Any]) -> tuple[bool, str]:
|
| 131 |
+
"""Validate a spec by doing a forward pass with a dummy image."""
|
| 132 |
+
import torch
|
| 133 |
+
import timm
|
| 134 |
+
|
| 135 |
+
model_name = spec["model_name"]
|
| 136 |
+
layer = spec["layer"]
|
| 137 |
+
crop = spec["preprocess"]["crop"]
|
| 138 |
+
|
| 139 |
+
try:
|
| 140 |
+
model = timm.create_model(model_name, pretrained=False)
|
| 141 |
+
model.eval()
|
| 142 |
+
|
| 143 |
+
modules = dict(model.named_modules())
|
| 144 |
+
if layer not in modules:
|
| 145 |
+
return False, f"Layer '{layer}' not found in model"
|
| 146 |
+
|
| 147 |
+
target_module = modules[layer]
|
| 148 |
+
outputs = []
|
| 149 |
+
|
| 150 |
+
def hook(_module, _inputs, output):
|
| 151 |
+
outputs.append(output)
|
| 152 |
+
|
| 153 |
+
handle = target_module.register_forward_hook(hook)
|
| 154 |
+
|
| 155 |
+
dummy_input = torch.randn(1, 3, crop, crop)
|
| 156 |
+
with torch.no_grad():
|
| 157 |
+
model(dummy_input)
|
| 158 |
+
|
| 159 |
+
handle.remove()
|
| 160 |
+
|
| 161 |
+
if not outputs:
|
| 162 |
+
return False, "No output captured from hook"
|
| 163 |
+
|
| 164 |
+
out = outputs[0]
|
| 165 |
+
if isinstance(out, (tuple, list)):
|
| 166 |
+
out = out[0]
|
| 167 |
+
if isinstance(out, dict):
|
| 168 |
+
out = out.get("last_hidden_state") or out.get("pooler_output")
|
| 169 |
+
if not isinstance(out, torch.Tensor):
|
| 170 |
+
return False, f"Hook output is not a tensor: {type(out)}"
|
| 171 |
+
|
| 172 |
+
# Apply flatten strategy
|
| 173 |
+
if out.ndim == 2:
|
| 174 |
+
dim = out.shape[1]
|
| 175 |
+
elif out.ndim >= 3:
|
| 176 |
+
dim = 1
|
| 177 |
+
for d in out.shape[1:]:
|
| 178 |
+
dim *= d
|
| 179 |
+
else:
|
| 180 |
+
dim = out.numel()
|
| 181 |
+
|
| 182 |
+
return True, f"OK (dim={dim})"
|
| 183 |
+
|
| 184 |
+
except Exception as e:
|
| 185 |
+
return False, f"Error: {e}"
|
| 186 |
+
|
| 187 |
+
|
| 188 |
+
def main() -> None:
|
| 189 |
+
model_names = json.loads(INPUT_PATH.read_text())
|
| 190 |
+
print(f"Generating specs for {len(model_names)} models from {INPUT_PATH.name}")
|
| 191 |
+
|
| 192 |
+
specs = []
|
| 193 |
+
errors = []
|
| 194 |
+
|
| 195 |
+
for i, name in enumerate(model_names):
|
| 196 |
+
print(f"[{i+1}/{len(model_names)}] {name}...", end=" ", flush=True)
|
| 197 |
+
try:
|
| 198 |
+
spec = generate_spec(name)
|
| 199 |
+
# Validate by doing a forward pass
|
| 200 |
+
ok, msg = validate_spec(spec)
|
| 201 |
+
if ok:
|
| 202 |
+
specs.append(spec)
|
| 203 |
+
print(f"layer={spec['layer']} resize={spec['preprocess']['resize']} "
|
| 204 |
+
f"crop={spec['preprocess']['crop']} {msg}")
|
| 205 |
+
else:
|
| 206 |
+
errors.append((name, msg))
|
| 207 |
+
print(f"VALIDATION FAILED: {msg}")
|
| 208 |
+
except Exception as e:
|
| 209 |
+
errors.append((name, str(e)))
|
| 210 |
+
print(f"FAILED: {e}")
|
| 211 |
+
|
| 212 |
+
OUTPUT_PATH.write_text(json.dumps(specs, indent=2) + "\n")
|
| 213 |
+
print(f"\nWrote {len(specs)} specs to {OUTPUT_PATH}")
|
| 214 |
+
|
| 215 |
+
if errors:
|
| 216 |
+
print(f"\n{len(errors)} errors:")
|
| 217 |
+
for name, msg in errors:
|
| 218 |
+
print(f" {name}: {msg}")
|
| 219 |
+
sys.exit(1)
|
| 220 |
+
else:
|
| 221 |
+
print(f"\nAll {len(specs)} models generated and validated successfully.")
|
| 222 |
+
|
| 223 |
+
|
| 224 |
+
if __name__ == "__main__":
|
| 225 |
+
main()
|
scripts/pipeline_smoke_test.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
+
from pathlib import Path
|
| 6 |
+
|
| 7 |
+
import modal
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
def _require_env(name: str) -> str:
|
| 11 |
+
value = os.environ.get(name, "").strip()
|
| 12 |
+
if not value:
|
| 13 |
+
raise ValueError(f"Missing required env var: {name}")
|
| 14 |
+
return value
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def main() -> None:
|
| 18 |
+
_require_env("HACKATHON_MODAL_ENABLE")
|
| 19 |
+
_require_env("HACKATHON_MODEL_REGISTRY")
|
| 20 |
+
_require_env("HACKATHON_STIMULI_CATALOG")
|
| 21 |
+
data_dir = _require_env("HACKATHON_DATA_DIR")
|
| 22 |
+
|
| 23 |
+
app_name = os.environ.get("HACKATHON_MODAL_APP", "iclr2026-eval")
|
| 24 |
+
seed_fn = modal.Function.from_name(app_name, "seed_dummy_dataset")
|
| 25 |
+
seed = seed_fn.remote(num_images=6, image_size=224, dataset_name="dummy")
|
| 26 |
+
print(f"Seeded dataset at {seed['dataset_root']}")
|
| 27 |
+
|
| 28 |
+
from app import submit_blue, submit_red
|
| 29 |
+
|
| 30 |
+
blue_payload = json.dumps({"models": ["resnet18", "resnet34"]})
|
| 31 |
+
red_payload = json.dumps(
|
| 32 |
+
{
|
| 33 |
+
"differentiating_images": [
|
| 34 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0000.png"},
|
| 35 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0001.png"},
|
| 36 |
+
]
|
| 37 |
+
}
|
| 38 |
+
)
|
| 39 |
+
|
| 40 |
+
blue_msg, blue_leaderboard, blue_pairwise = submit_blue("pipeline-test", blue_payload)
|
| 41 |
+
print("Blue message:", blue_msg)
|
| 42 |
+
print("Blue leaderboard:", blue_leaderboard.tail(1).to_dict(orient="records"))
|
| 43 |
+
print("Blue pairwise:", blue_pairwise.to_dict(orient="records"))
|
| 44 |
+
|
| 45 |
+
assert not blue_leaderboard.empty, "Blue leaderboard should not be empty."
|
| 46 |
+
assert not blue_pairwise.empty, "Blue pairwise table should not be empty."
|
| 47 |
+
|
| 48 |
+
red_msg, red_leaderboard, red_pairwise = submit_red("pipeline-test", red_payload)
|
| 49 |
+
print("Red message:", red_msg)
|
| 50 |
+
print("Red leaderboard:", red_leaderboard.tail(1).to_dict(orient="records"))
|
| 51 |
+
print("Red pairwise:", red_pairwise.to_dict(orient="records"))
|
| 52 |
+
|
| 53 |
+
assert not red_leaderboard.empty, "Red leaderboard should not be empty."
|
| 54 |
+
assert not red_pairwise.empty, "Red pairwise table should not be empty."
|
| 55 |
+
|
| 56 |
+
for df in (blue_pairwise, red_pairwise):
|
| 57 |
+
cka_vals = df["CKA"].astype(float)
|
| 58 |
+
assert (cka_vals >= -1e-3).all(), "CKA should be >= 0."
|
| 59 |
+
assert (cka_vals <= 1.0001).all(), "CKA should be <= 1."
|
| 60 |
+
|
| 61 |
+
blue_path = Path(data_dir) / "blue_submissions.json"
|
| 62 |
+
red_path = Path(data_dir) / "red_submissions.json"
|
| 63 |
+
assert blue_path.exists(), f"Missing submission file: {blue_path}"
|
| 64 |
+
assert red_path.exists(), f"Missing submission file: {red_path}"
|
| 65 |
+
|
| 66 |
+
print("Submission pipeline smoke test complete.")
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
if __name__ == "__main__":
|
| 70 |
+
main()
|
scripts/red_team_smoke_test.py
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import json
|
| 5 |
+
import os
|
| 6 |
+
import sys
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
|
| 9 |
+
# Add project root to path so we can import app module
|
| 10 |
+
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
| 11 |
+
sys.path.insert(0, str(PROJECT_ROOT))
|
| 12 |
+
|
| 13 |
+
import modal
|
| 14 |
+
|
| 15 |
+
from dotenv import load_dotenv
|
| 16 |
+
load_dotenv()
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
def _require_env(name: str) -> str:
|
| 20 |
+
value = os.environ.get(name, "").strip()
|
| 21 |
+
if not value:
|
| 22 |
+
raise ValueError(f"Missing required env var: {name}")
|
| 23 |
+
return value
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def _seed_dummy_dataset(app_name: str) -> None:
|
| 27 |
+
seed_fn = modal.Function.from_name(app_name, "seed_dummy_dataset")
|
| 28 |
+
seed = seed_fn.remote(num_images=6, image_size=224, dataset_name="dummy")
|
| 29 |
+
print(f"Seeded dataset at {seed['dataset_root']}")
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
def _load_stimuli_from_catalog(stimuli_path: str) -> list[dict[str, str]]:
|
| 33 |
+
"""Load stimuli from a JSONL catalog file."""
|
| 34 |
+
stimuli = []
|
| 35 |
+
with open(stimuli_path, "r") as f:
|
| 36 |
+
for line in f:
|
| 37 |
+
line = line.strip()
|
| 38 |
+
if line:
|
| 39 |
+
stimuli.append(json.loads(line))
|
| 40 |
+
return stimuli
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
def main() -> None:
|
| 44 |
+
parser = argparse.ArgumentParser(description="Red team smoke test")
|
| 45 |
+
parser.add_argument(
|
| 46 |
+
"--stimuli",
|
| 47 |
+
type=str,
|
| 48 |
+
default=None,
|
| 49 |
+
help="Path to custom stimuli JSONL file. If not provided, uses HACKATHON_STIMULI_CATALOG env var.",
|
| 50 |
+
)
|
| 51 |
+
parser.add_argument(
|
| 52 |
+
"--s3",
|
| 53 |
+
action="store_true",
|
| 54 |
+
help="Use S3-backed datasets (requires aws-s3-credentials Modal secret).",
|
| 55 |
+
)
|
| 56 |
+
parser.add_argument(
|
| 57 |
+
"--skip-seed",
|
| 58 |
+
action="store_true",
|
| 59 |
+
help="Skip seeding dummy dataset (use when testing with real images).",
|
| 60 |
+
)
|
| 61 |
+
args = parser.parse_args()
|
| 62 |
+
|
| 63 |
+
_require_env("HACKATHON_MODAL_ENABLE")
|
| 64 |
+
_require_env("HACKATHON_MODEL_REGISTRY")
|
| 65 |
+
data_dir = _require_env("HACKATHON_DATA_DIR")
|
| 66 |
+
|
| 67 |
+
# Use custom stimuli if provided, otherwise use env var
|
| 68 |
+
if args.stimuli:
|
| 69 |
+
stimuli_path = Path(args.stimuli).resolve()
|
| 70 |
+
if not stimuli_path.exists():
|
| 71 |
+
raise ValueError(f"Stimuli file not found: {stimuli_path}")
|
| 72 |
+
os.environ["HACKATHON_STIMULI_CATALOG"] = str(stimuli_path)
|
| 73 |
+
print(f"Using custom stimuli: {stimuli_path}")
|
| 74 |
+
else:
|
| 75 |
+
_require_env("HACKATHON_STIMULI_CATALOG")
|
| 76 |
+
|
| 77 |
+
stimuli_catalog_path = os.environ.get("HACKATHON_STIMULI_CATALOG", "").strip()
|
| 78 |
+
|
| 79 |
+
# Set S3 mode if requested
|
| 80 |
+
if args.s3:
|
| 81 |
+
os.environ["HACKATHON_USE_S3"] = "true"
|
| 82 |
+
print("S3 mode enabled - will use extract_embeddings_s3 function")
|
| 83 |
+
|
| 84 |
+
app_name = os.environ.get("HACKATHON_MODAL_APP", "iclr2026-eval")
|
| 85 |
+
|
| 86 |
+
# Only seed dummy dataset if not using real images
|
| 87 |
+
if not args.skip_seed and not args.s3:
|
| 88 |
+
_seed_dummy_dataset(app_name)
|
| 89 |
+
elif args.skip_seed:
|
| 90 |
+
print("Skipping dummy dataset seeding")
|
| 91 |
+
elif args.s3:
|
| 92 |
+
print("S3 mode: skipping dummy dataset seeding (using real images)")
|
| 93 |
+
|
| 94 |
+
from app import submit_red
|
| 95 |
+
|
| 96 |
+
# Build stimulus sets based on mode
|
| 97 |
+
if args.s3:
|
| 98 |
+
# Load stimuli from catalog for S3 mode
|
| 99 |
+
catalog_stimuli = _load_stimuli_from_catalog(stimuli_catalog_path)
|
| 100 |
+
if len(catalog_stimuli) < 6:
|
| 101 |
+
raise ValueError(f"Need at least 6 stimuli in catalog, found {len(catalog_stimuli)}")
|
| 102 |
+
|
| 103 |
+
# Create test sets from real catalog stimuli
|
| 104 |
+
stimulus_sets = [
|
| 105 |
+
catalog_stimuli[0:2], # First 2 stimuli
|
| 106 |
+
catalog_stimuli[2:5], # Next 3 stimuli
|
| 107 |
+
[catalog_stimuli[1], catalog_stimuli[5]], # Mixed selection
|
| 108 |
+
]
|
| 109 |
+
print(f"Using {len(catalog_stimuli)} stimuli from catalog for S3 mode")
|
| 110 |
+
else:
|
| 111 |
+
# Use dummy stimuli for local mode
|
| 112 |
+
stimulus_sets = [
|
| 113 |
+
[
|
| 114 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0000.png"},
|
| 115 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0001.png"},
|
| 116 |
+
],
|
| 117 |
+
[
|
| 118 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0002.png"},
|
| 119 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0003.png"},
|
| 120 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0004.png"},
|
| 121 |
+
],
|
| 122 |
+
[
|
| 123 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0001.png"},
|
| 124 |
+
{"dataset_name": "dummy", "image_identifier": "images/img_0005.png"},
|
| 125 |
+
],
|
| 126 |
+
]
|
| 127 |
+
|
| 128 |
+
for idx, stimuli in enumerate(stimulus_sets, start=1):
|
| 129 |
+
payload = json.dumps({"differentiating_images": stimuli})
|
| 130 |
+
submitter = f"red-test-{idx}"
|
| 131 |
+
msg, leaderboard, pairwise = submit_red(submitter, payload)
|
| 132 |
+
print(f"Submission {idx} message: {msg}")
|
| 133 |
+
print(f"Submission {idx} leaderboard: {leaderboard.tail(1).to_dict(orient='records')}")
|
| 134 |
+
print(f"Submission {idx} pairwise: {pairwise.to_dict(orient='records')}")
|
| 135 |
+
assert not pairwise.empty, "Pairwise table should not be empty."
|
| 136 |
+
|
| 137 |
+
red_path = Path(data_dir) / "red_submissions.json"
|
| 138 |
+
assert red_path.exists(), f"Missing submission file: {red_path}"
|
| 139 |
+
print("Red team smoke test complete.")
|
| 140 |
+
|
| 141 |
+
|
| 142 |
+
if __name__ == "__main__":
|
| 143 |
+
main()
|
scripts/run_local.sh
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
set -euo pipefail
|
| 3 |
+
|
| 4 |
+
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
| 5 |
+
|
| 6 |
+
# Prefer cluster scratch if available; fall back to a local cache in the repo.
|
| 7 |
+
if [ -n "${CACHE_ROOT:-}" ]; then
|
| 8 |
+
CACHE_BASE="$CACHE_ROOT"
|
| 9 |
+
elif [ -d "/orcd/scratch/bcs/001" ]; then
|
| 10 |
+
CACHE_BASE="/orcd/scratch/bcs/001/$USER"
|
| 11 |
+
else
|
| 12 |
+
CACHE_BASE="${PROJECT_ROOT}/.cache"
|
| 13 |
+
fi
|
| 14 |
+
|
| 15 |
+
export HF_HOME="${HF_HOME:-${CACHE_BASE}/.cache/huggingface}"
|
| 16 |
+
export TORCH_HOME="${TORCH_HOME:-${CACHE_BASE}/.cache/torch}"
|
| 17 |
+
|
| 18 |
+
mkdir -p "$HF_HOME" "$TORCH_HOME"
|
| 19 |
+
|
| 20 |
+
exec python "${PROJECT_ROOT}/app.py"
|
scripts/smoke_test_registry.py
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""Smoke test to validate model registry specs on Modal.
|
| 3 |
+
|
| 4 |
+
For each model in the registry:
|
| 5 |
+
1. Creates the model via timm (pretrained=False for speed)
|
| 6 |
+
2. Builds the preprocessing transform from the spec
|
| 7 |
+
3. Runs a forward pass with a dummy image
|
| 8 |
+
4. Registers a hook on the specified layer
|
| 9 |
+
5. Verifies the embedding output is a valid tensor with expected dimensions
|
| 10 |
+
|
| 11 |
+
Usage (local, no GPU needed for smoke test):
|
| 12 |
+
python scripts/smoke_test_registry.py --registry configs/blue_team_model_registry.json
|
| 13 |
+
|
| 14 |
+
Usage (Modal):
|
| 15 |
+
modal run scripts/smoke_test_registry.py --registry configs/blue_team_model_registry.json
|
| 16 |
+
|
| 17 |
+
Usage (validate red team registry — from private eval-backend repo):
|
| 18 |
+
python scripts/smoke_test_registry.py --registry /path/to/eval-backend/configs/red_team_model_registry.json
|
| 19 |
+
"""
|
| 20 |
+
from __future__ import annotations
|
| 21 |
+
|
| 22 |
+
import argparse
|
| 23 |
+
import json
|
| 24 |
+
import sys
|
| 25 |
+
import time
|
| 26 |
+
from pathlib import Path
|
| 27 |
+
from typing import Any
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
def validate_single_model(spec: dict[str, Any]) -> tuple[bool, str, dict[str, Any]]:
|
| 31 |
+
"""Validate a single model spec by loading it and running a forward pass.
|
| 32 |
+
|
| 33 |
+
Returns (success, message, details).
|
| 34 |
+
"""
|
| 35 |
+
import torch
|
| 36 |
+
import timm
|
| 37 |
+
from torchvision import transforms
|
| 38 |
+
|
| 39 |
+
model_name = spec["model_name"]
|
| 40 |
+
layer = spec["layer"]
|
| 41 |
+
embedding = spec.get("embedding", "flatten")
|
| 42 |
+
preprocess = spec.get("preprocess", {})
|
| 43 |
+
|
| 44 |
+
details: dict[str, Any] = {
|
| 45 |
+
"model_name": model_name,
|
| 46 |
+
"layer": layer,
|
| 47 |
+
"embedding": embedding,
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
try:
|
| 51 |
+
# 1. Create model
|
| 52 |
+
t0 = time.time()
|
| 53 |
+
model = timm.create_model(model_name, pretrained=False)
|
| 54 |
+
model.eval()
|
| 55 |
+
details["model_load_time"] = round(time.time() - t0, 2)
|
| 56 |
+
|
| 57 |
+
# 2. Verify layer exists
|
| 58 |
+
modules = dict(model.named_modules())
|
| 59 |
+
if layer not in modules:
|
| 60 |
+
available = [n for n in modules.keys() if n][:20]
|
| 61 |
+
return False, f"Layer '{layer}' not found. Available (first 20): {available}", details
|
| 62 |
+
|
| 63 |
+
target_module = modules[layer]
|
| 64 |
+
|
| 65 |
+
# 3. Build transform from spec
|
| 66 |
+
resize = preprocess.get("resize")
|
| 67 |
+
crop = preprocess.get("crop")
|
| 68 |
+
mean = preprocess.get("mean", [0.485, 0.456, 0.406])
|
| 69 |
+
std = preprocess.get("std", [0.229, 0.224, 0.225])
|
| 70 |
+
|
| 71 |
+
ops = []
|
| 72 |
+
if resize:
|
| 73 |
+
ops.append(transforms.Resize((resize, resize)))
|
| 74 |
+
if crop:
|
| 75 |
+
ops.append(transforms.CenterCrop(crop))
|
| 76 |
+
ops.extend([transforms.ToTensor(), transforms.Normalize(mean=mean, std=std)])
|
| 77 |
+
transform = transforms.Compose(ops)
|
| 78 |
+
|
| 79 |
+
# 4. Create dummy input and run forward pass with hook
|
| 80 |
+
from PIL import Image
|
| 81 |
+
import numpy as np
|
| 82 |
+
|
| 83 |
+
# Create a dummy RGB image larger than any resize
|
| 84 |
+
dummy_size = max(resize or 224, crop or 224, 224) + 32
|
| 85 |
+
dummy_img = Image.fromarray(
|
| 86 |
+
np.random.randint(0, 256, (dummy_size, dummy_size, 3), dtype=np.uint8)
|
| 87 |
+
)
|
| 88 |
+
input_tensor = transform(dummy_img).unsqueeze(0)
|
| 89 |
+
details["input_shape"] = list(input_tensor.shape)
|
| 90 |
+
|
| 91 |
+
outputs = []
|
| 92 |
+
|
| 93 |
+
def hook(_module, _inputs, output):
|
| 94 |
+
outputs.append(output)
|
| 95 |
+
|
| 96 |
+
handle = target_module.register_forward_hook(hook)
|
| 97 |
+
|
| 98 |
+
t0 = time.time()
|
| 99 |
+
with torch.no_grad():
|
| 100 |
+
model(input_tensor)
|
| 101 |
+
details["forward_time"] = round(time.time() - t0, 2)
|
| 102 |
+
|
| 103 |
+
handle.remove()
|
| 104 |
+
|
| 105 |
+
# 5. Validate hook output
|
| 106 |
+
if not outputs:
|
| 107 |
+
return False, "No output captured from hook", details
|
| 108 |
+
|
| 109 |
+
out = outputs[0]
|
| 110 |
+
if isinstance(out, (tuple, list)):
|
| 111 |
+
out = out[0]
|
| 112 |
+
if isinstance(out, dict):
|
| 113 |
+
out = out.get("last_hidden_state") or out.get("pooler_output")
|
| 114 |
+
if not isinstance(out, torch.Tensor):
|
| 115 |
+
return False, f"Hook output is not a tensor: {type(out).__name__}", details
|
| 116 |
+
|
| 117 |
+
details["raw_output_shape"] = list(out.shape)
|
| 118 |
+
|
| 119 |
+
# 6. Apply embedding strategy
|
| 120 |
+
if out.ndim == 2:
|
| 121 |
+
embedded = out
|
| 122 |
+
elif out.ndim >= 3:
|
| 123 |
+
if embedding == "cls":
|
| 124 |
+
embedded = out[:, 0]
|
| 125 |
+
elif embedding == "pool":
|
| 126 |
+
embedded = out.mean(dim=tuple(range(2, out.ndim)))
|
| 127 |
+
elif embedding == "mean":
|
| 128 |
+
embedded = out.mean(dim=tuple(range(1, out.ndim)))
|
| 129 |
+
else: # flatten
|
| 130 |
+
embedded = out.flatten(start_dim=1)
|
| 131 |
+
else:
|
| 132 |
+
embedded = out.flatten(start_dim=1)
|
| 133 |
+
|
| 134 |
+
details["embedding_shape"] = list(embedded.shape)
|
| 135 |
+
details["embedding_dim"] = int(embedded.shape[1]) if embedded.ndim == 2 else int(embedded.numel())
|
| 136 |
+
|
| 137 |
+
# 7. Sanity checks
|
| 138 |
+
if embedded.ndim != 2:
|
| 139 |
+
return False, f"Embedding is not 2D after strategy: shape={embedded.shape}", details
|
| 140 |
+
if embedded.shape[0] != 1:
|
| 141 |
+
return False, f"Batch dimension mismatch: {embedded.shape[0]}", details
|
| 142 |
+
if embedded.shape[1] == 0:
|
| 143 |
+
return False, "Embedding dimension is 0", details
|
| 144 |
+
if torch.isnan(embedded).any():
|
| 145 |
+
return False, "Embedding contains NaN values", details
|
| 146 |
+
if torch.isinf(embedded).any():
|
| 147 |
+
return False, "Embedding contains Inf values", details
|
| 148 |
+
|
| 149 |
+
return True, f"OK (dim={details['embedding_dim']})", details
|
| 150 |
+
|
| 151 |
+
except Exception as e:
|
| 152 |
+
return False, f"Error: {e}", details
|
| 153 |
+
|
| 154 |
+
|
| 155 |
+
def main() -> None:
|
| 156 |
+
parser = argparse.ArgumentParser(description="Smoke test model registry specs")
|
| 157 |
+
parser.add_argument(
|
| 158 |
+
"--registry",
|
| 159 |
+
type=str,
|
| 160 |
+
required=True,
|
| 161 |
+
help="Path to model registry JSON file",
|
| 162 |
+
)
|
| 163 |
+
parser.add_argument(
|
| 164 |
+
"--model",
|
| 165 |
+
type=str,
|
| 166 |
+
default=None,
|
| 167 |
+
help="Test only a specific model by name (for debugging)",
|
| 168 |
+
)
|
| 169 |
+
parser.add_argument(
|
| 170 |
+
"--output",
|
| 171 |
+
type=str,
|
| 172 |
+
default=None,
|
| 173 |
+
help="Path to write detailed results JSON",
|
| 174 |
+
)
|
| 175 |
+
args = parser.parse_args()
|
| 176 |
+
|
| 177 |
+
registry_path = Path(args.registry)
|
| 178 |
+
specs = json.loads(registry_path.read_text())
|
| 179 |
+
if isinstance(specs, dict):
|
| 180 |
+
specs = specs.get("models", specs)
|
| 181 |
+
|
| 182 |
+
if args.model:
|
| 183 |
+
specs = [s for s in specs if s["model_name"] == args.model]
|
| 184 |
+
if not specs:
|
| 185 |
+
print(f"Model '{args.model}' not found in registry")
|
| 186 |
+
sys.exit(1)
|
| 187 |
+
|
| 188 |
+
print(f"Smoke testing {len(specs)} models from {registry_path.name}")
|
| 189 |
+
print("=" * 70)
|
| 190 |
+
|
| 191 |
+
results = []
|
| 192 |
+
passed = 0
|
| 193 |
+
failed = 0
|
| 194 |
+
|
| 195 |
+
for i, spec in enumerate(specs):
|
| 196 |
+
name = spec["model_name"]
|
| 197 |
+
print(f"[{i+1}/{len(specs)}] {name}...", end=" ", flush=True)
|
| 198 |
+
|
| 199 |
+
ok, msg, details = validate_single_model(spec)
|
| 200 |
+
details["passed"] = ok
|
| 201 |
+
details["message"] = msg
|
| 202 |
+
results.append(details)
|
| 203 |
+
|
| 204 |
+
if ok:
|
| 205 |
+
passed += 1
|
| 206 |
+
print(f"PASS - {msg}")
|
| 207 |
+
else:
|
| 208 |
+
failed += 1
|
| 209 |
+
print(f"FAIL - {msg}")
|
| 210 |
+
|
| 211 |
+
print("=" * 70)
|
| 212 |
+
print(f"Results: {passed} passed, {failed} failed out of {len(specs)}")
|
| 213 |
+
|
| 214 |
+
if args.output:
|
| 215 |
+
output_path = Path(args.output)
|
| 216 |
+
output_path.write_text(json.dumps(results, indent=2) + "\n")
|
| 217 |
+
print(f"Detailed results written to {output_path}")
|
| 218 |
+
|
| 219 |
+
if failed > 0:
|
| 220 |
+
print("\nFailed models:")
|
| 221 |
+
for r in results:
|
| 222 |
+
if not r["passed"]:
|
| 223 |
+
print(f" {r['model_name']}: {r['message']}")
|
| 224 |
+
sys.exit(1)
|
| 225 |
+
else:
|
| 226 |
+
print("\nAll models passed smoke test!")
|
| 227 |
+
|
| 228 |
+
|
| 229 |
+
if __name__ == "__main__":
|
| 230 |
+
main()
|
scripts/smoke_test_submission.py
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""End-to-end smoke test mimicking a blue team submission via Modal.
|
| 3 |
+
|
| 4 |
+
Picks 20 models from the blue team registry and 50 images from the
|
| 5 |
+
stimuli catalog, runs the full extraction + CKA scoring pipeline
|
| 6 |
+
on Modal, and verifies the results.
|
| 7 |
+
|
| 8 |
+
Usage:
|
| 9 |
+
python scripts/smoke_test_submission.py \
|
| 10 |
+
--registry configs/blue_team_model_registry.json \
|
| 11 |
+
--stimuli configs/blue_team_images.jsonl
|
| 12 |
+
|
| 13 |
+
# With custom counts:
|
| 14 |
+
python scripts/smoke_test_submission.py \
|
| 15 |
+
--num-models 5 --num-stimuli 10
|
| 16 |
+
"""
|
| 17 |
+
|
| 18 |
+
from __future__ import annotations
|
| 19 |
+
|
| 20 |
+
import argparse
|
| 21 |
+
import hashlib
|
| 22 |
+
import json
|
| 23 |
+
import sys
|
| 24 |
+
from pathlib import Path
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def load_registry(path: str) -> list[dict]:
|
| 28 |
+
data = json.loads(Path(path).read_text())
|
| 29 |
+
if isinstance(data, dict):
|
| 30 |
+
return data["models"]
|
| 31 |
+
return data
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
def load_stimuli(path: str) -> list[dict]:
|
| 35 |
+
p = Path(path)
|
| 36 |
+
if p.suffix == ".jsonl":
|
| 37 |
+
return [json.loads(line) for line in p.read_text().splitlines() if line.strip()]
|
| 38 |
+
data = json.loads(p.read_text())
|
| 39 |
+
if isinstance(data, dict):
|
| 40 |
+
return data["stimuli"]
|
| 41 |
+
return data
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def cache_key_from_payload(registry: list[dict], stimuli: list[dict]) -> str:
|
| 45 |
+
payload = {"registry": registry, "stimuli": stimuli}
|
| 46 |
+
encoded = json.dumps(payload, sort_keys=True).encode("utf-8")
|
| 47 |
+
digest = hashlib.sha1(encoded).hexdigest()[:12]
|
| 48 |
+
return f"smoke_{digest}"
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
def main():
|
| 52 |
+
parser = argparse.ArgumentParser(description="End-to-end blue team submission smoke test on Modal")
|
| 53 |
+
parser.add_argument("--registry", default="configs/blue_team_model_registry.json",
|
| 54 |
+
help="Path to blue team model registry JSON")
|
| 55 |
+
parser.add_argument("--stimuli", default="configs/blue_team_images.jsonl",
|
| 56 |
+
help="Path to stimuli catalog JSONL")
|
| 57 |
+
parser.add_argument("--num-models", type=int, default=20,
|
| 58 |
+
help="Number of models to select (default: 20)")
|
| 59 |
+
parser.add_argument("--num-stimuli", type=int, default=50,
|
| 60 |
+
help="Number of stimuli to select (default: 50)")
|
| 61 |
+
parser.add_argument("--app-name", default="iclr2026-eval",
|
| 62 |
+
help="Modal app name")
|
| 63 |
+
parser.add_argument("--batch-size", type=int, default=64,
|
| 64 |
+
help="Batch size for embedding extraction")
|
| 65 |
+
args = parser.parse_args()
|
| 66 |
+
|
| 67 |
+
# Load full registry and stimuli
|
| 68 |
+
full_registry = load_registry(args.registry)
|
| 69 |
+
full_stimuli = load_stimuli(args.stimuli)
|
| 70 |
+
|
| 71 |
+
print(f"Full registry: {len(full_registry)} models")
|
| 72 |
+
print(f"Full stimuli: {len(full_stimuli)} images")
|
| 73 |
+
|
| 74 |
+
# Select subset - pick models evenly spaced for diversity
|
| 75 |
+
n_models = min(args.num_models, len(full_registry))
|
| 76 |
+
if n_models < len(full_registry):
|
| 77 |
+
step = len(full_registry) / n_models
|
| 78 |
+
indices = [int(i * step) for i in range(n_models)]
|
| 79 |
+
subset_registry = [full_registry[i] for i in indices]
|
| 80 |
+
else:
|
| 81 |
+
subset_registry = full_registry
|
| 82 |
+
|
| 83 |
+
n_stimuli = min(args.num_stimuli, len(full_stimuli))
|
| 84 |
+
subset_stimuli = full_stimuli[:n_stimuli]
|
| 85 |
+
|
| 86 |
+
model_names = [m["model_name"] for m in subset_registry]
|
| 87 |
+
print(f"\nSelected {len(subset_registry)} models:")
|
| 88 |
+
for m in model_names:
|
| 89 |
+
print(f" - {m}")
|
| 90 |
+
print(f"\nSelected {len(subset_stimuli)} stimuli (first {n_stimuli} from catalog)")
|
| 91 |
+
|
| 92 |
+
# Build cache key
|
| 93 |
+
cache_key = cache_key_from_payload(subset_registry, subset_stimuli)
|
| 94 |
+
print(f"\nCache key: {cache_key}")
|
| 95 |
+
|
| 96 |
+
# Connect to Modal
|
| 97 |
+
print("\nConnecting to Modal...")
|
| 98 |
+
import modal
|
| 99 |
+
|
| 100 |
+
extract_fn = modal.Function.from_name(args.app_name, "extract_embeddings_s3")
|
| 101 |
+
score_fn = modal.Function.from_name(args.app_name, "compute_pairwise_cka")
|
| 102 |
+
print("Modal connection OK")
|
| 103 |
+
|
| 104 |
+
# Step 1: Extract embeddings
|
| 105 |
+
print(f"\n{'=' * 60}")
|
| 106 |
+
print("STEP 1: Extracting embeddings...")
|
| 107 |
+
print(f"{'=' * 60}")
|
| 108 |
+
|
| 109 |
+
extract_result = extract_fn.remote(
|
| 110 |
+
model_registry=subset_registry,
|
| 111 |
+
stimuli=subset_stimuli,
|
| 112 |
+
cache_key=cache_key,
|
| 113 |
+
batch_size=args.batch_size,
|
| 114 |
+
reuse_cache=False, # Force fresh extraction for smoke test
|
| 115 |
+
)
|
| 116 |
+
|
| 117 |
+
print(f"\nExtraction result:")
|
| 118 |
+
print(f" cache_key: {extract_result.get('cache_key')}")
|
| 119 |
+
print(f" num_stimuli: {extract_result.get('num_stimuli')}")
|
| 120 |
+
print(f" models: {len(extract_result.get('models', []))}")
|
| 121 |
+
|
| 122 |
+
for m in extract_result.get("models", []):
|
| 123 |
+
print(
|
| 124 |
+
f" {m['model_name']:45s} layer={m.get('layer', '?'):25s} "
|
| 125 |
+
f"dim={m.get('dim', '?'):>6} samples={m.get('num_samples', '?')}"
|
| 126 |
+
)
|
| 127 |
+
|
| 128 |
+
# Validate extraction
|
| 129 |
+
errors = []
|
| 130 |
+
for m in extract_result.get("models", []):
|
| 131 |
+
if m.get("num_samples") != n_stimuli:
|
| 132 |
+
errors.append(f" {m['model_name']}: expected {n_stimuli} samples, got {m.get('num_samples')}")
|
| 133 |
+
if m.get("dim", 0) <= 0:
|
| 134 |
+
errors.append(f" {m['model_name']}: invalid dim {m.get('dim')}")
|
| 135 |
+
|
| 136 |
+
if errors:
|
| 137 |
+
print(f"\nExtraction ERRORS:")
|
| 138 |
+
for e in errors:
|
| 139 |
+
print(e)
|
| 140 |
+
sys.exit(1)
|
| 141 |
+
print(f"\nExtraction: ALL {len(extract_result.get('models', []))} models OK")
|
| 142 |
+
|
| 143 |
+
# Step 2: Compute pairwise CKA
|
| 144 |
+
print(f"\n{'=' * 60}")
|
| 145 |
+
print("STEP 2: Computing pairwise CKA...")
|
| 146 |
+
print(f"{'=' * 60}")
|
| 147 |
+
|
| 148 |
+
cka_result = score_fn.remote(
|
| 149 |
+
cache_key=cache_key,
|
| 150 |
+
model_names=model_names,
|
| 151 |
+
)
|
| 152 |
+
|
| 153 |
+
avg_cka = cka_result.get("avg_cka", 0.0)
|
| 154 |
+
pairwise = cka_result.get("pairwise", [])
|
| 155 |
+
|
| 156 |
+
print(f"\nCKA results:")
|
| 157 |
+
print(f" avg_cka: {avg_cka:.6f}")
|
| 158 |
+
print(f" num_pairs: {len(pairwise)}")
|
| 159 |
+
|
| 160 |
+
expected_pairs = n_models * (n_models - 1) // 2
|
| 161 |
+
if len(pairwise) != expected_pairs:
|
| 162 |
+
print(f" WARNING: expected {expected_pairs} pairs, got {len(pairwise)}")
|
| 163 |
+
|
| 164 |
+
# Show top 5 and bottom 5 pairs
|
| 165 |
+
sorted_pairs = sorted(pairwise, key=lambda x: x.get("cka", 0), reverse=True)
|
| 166 |
+
print(f"\n Top 5 most similar pairs:")
|
| 167 |
+
for p in sorted_pairs[:5]:
|
| 168 |
+
ma = p.get("model_a", "?")
|
| 169 |
+
mb = p.get("model_b", "?")
|
| 170 |
+
cka = p.get("cka", 0.0)
|
| 171 |
+
print(f" {ma:40s} <-> {mb:40s} CKA={cka:.6f}")
|
| 172 |
+
|
| 173 |
+
print(f"\n Bottom 5 least similar pairs:")
|
| 174 |
+
for p in sorted_pairs[-5:]:
|
| 175 |
+
ma = p.get("model_a", "?")
|
| 176 |
+
mb = p.get("model_b", "?")
|
| 177 |
+
cka = p.get("cka", 0.0)
|
| 178 |
+
print(f" {ma:40s} <-> {mb:40s} CKA={cka:.6f}")
|
| 179 |
+
|
| 180 |
+
# Validate CKA results
|
| 181 |
+
cka_errors = []
|
| 182 |
+
for p in pairwise:
|
| 183 |
+
cka_val = p.get("cka")
|
| 184 |
+
if cka_val is None:
|
| 185 |
+
cka_errors.append(" Missing CKA value for a pair")
|
| 186 |
+
elif not (-0.1 <= cka_val <= 1.5): # Allow slight numerical overshoot
|
| 187 |
+
ma = p.get("model_a", "?")
|
| 188 |
+
mb = p.get("model_b", "?")
|
| 189 |
+
cka_errors.append(f" {ma} <-> {mb}: CKA={cka_val} out of expected range")
|
| 190 |
+
|
| 191 |
+
if cka_errors:
|
| 192 |
+
print(f"\nCKA ERRORS:")
|
| 193 |
+
for e in cka_errors:
|
| 194 |
+
print(e)
|
| 195 |
+
sys.exit(1)
|
| 196 |
+
|
| 197 |
+
# Step 3: Validate submission format (local check)
|
| 198 |
+
print(f"\n{'=' * 60}")
|
| 199 |
+
print("STEP 3: Validating submission format...")
|
| 200 |
+
print(f"{'=' * 60}")
|
| 201 |
+
|
| 202 |
+
submission_payload = {
|
| 203 |
+
"models": [
|
| 204 |
+
{"model_name": m["model_name"], "layer_name": m["layer"]}
|
| 205 |
+
for m in subset_registry
|
| 206 |
+
]
|
| 207 |
+
}
|
| 208 |
+
print(f"\n Sample submission entry: {json.dumps(submission_payload['models'][0])}")
|
| 209 |
+
|
| 210 |
+
try:
|
| 211 |
+
from src.hackathon.validation import (
|
| 212 |
+
BLUE_TEAM_REQUIRED_MODELS,
|
| 213 |
+
load_model_registry,
|
| 214 |
+
load_model_registry_specs,
|
| 215 |
+
validate_blue_submission,
|
| 216 |
+
)
|
| 217 |
+
|
| 218 |
+
registry_names = load_model_registry(args.registry)
|
| 219 |
+
registry_specs = load_model_registry_specs(args.registry)
|
| 220 |
+
|
| 221 |
+
if n_models == BLUE_TEAM_REQUIRED_MODELS:
|
| 222 |
+
validated_names = validate_blue_submission(
|
| 223 |
+
submission_payload,
|
| 224 |
+
model_registry=registry_names,
|
| 225 |
+
registry_specs=registry_specs,
|
| 226 |
+
)
|
| 227 |
+
print(f" Validation OK: {len(validated_names)} models accepted")
|
| 228 |
+
else:
|
| 229 |
+
print(f" Skipping count validation (selected {n_models}, required {BLUE_TEAM_REQUIRED_MODELS})")
|
| 230 |
+
# Still check layer matching
|
| 231 |
+
mismatches = []
|
| 232 |
+
for m in subset_registry:
|
| 233 |
+
name = m["model_name"]
|
| 234 |
+
if name in registry_specs:
|
| 235 |
+
expected = registry_specs[name]["layer"]
|
| 236 |
+
submitted = m["layer"]
|
| 237 |
+
if submitted != expected:
|
| 238 |
+
mismatches.append(f" {name}: layer={submitted} expected={expected}")
|
| 239 |
+
if mismatches:
|
| 240 |
+
print(f" Layer MISMATCHES:")
|
| 241 |
+
for mm in mismatches:
|
| 242 |
+
print(mm)
|
| 243 |
+
sys.exit(1)
|
| 244 |
+
print(f" Layer validation OK for all {n_models} models")
|
| 245 |
+
except ImportError as exc:
|
| 246 |
+
print(f" Skipping validation (import failed: {exc})")
|
| 247 |
+
except Exception as exc:
|
| 248 |
+
print(f" Validation FAILED: {exc}")
|
| 249 |
+
sys.exit(1)
|
| 250 |
+
|
| 251 |
+
# Summary
|
| 252 |
+
blue_score = avg_cka
|
| 253 |
+
print(f"\n{'=' * 60}")
|
| 254 |
+
print("SMOKE TEST PASSED")
|
| 255 |
+
print(f"{'=' * 60}")
|
| 256 |
+
print(f" Models: {n_models}")
|
| 257 |
+
print(f" Stimuli: {n_stimuli}")
|
| 258 |
+
print(f" Avg CKA: {avg_cka:.6f}")
|
| 259 |
+
print(f" Blue score: {blue_score:.6f}")
|
| 260 |
+
print(f" Pairs: {len(pairwise)} / {expected_pairs} expected")
|
| 261 |
+
print(f" All layers: validated against registry")
|
| 262 |
+
print()
|
| 263 |
+
|
| 264 |
+
|
| 265 |
+
if __name__ == "__main__":
|
| 266 |
+
main()
|
scripts/submit_blue_hf_dataset.py
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import json
|
| 3 |
+
import argparse
|
| 4 |
+
|
| 5 |
+
from datasets import Dataset
|
| 6 |
+
from dotenv import load_dotenv
|
| 7 |
+
load_dotenv()
|
| 8 |
+
|
| 9 |
+
DATASET_NAME = "bkhmsi/test-realign-hackathon-blue-team"
|
| 10 |
+
TOKEN_ENV = "HF_TOKEN"
|
| 11 |
+
|
| 12 |
+
def push_to_hf(token: str, stimuli: list[dict[str, str]]) -> None:
|
| 13 |
+
dataset = Dataset.from_list(stimuli)
|
| 14 |
+
print(f"> Pushing {len(dataset)} records to HF dataset {DATASET_NAME}")
|
| 15 |
+
dataset.push_to_hub(DATASET_NAME, token=token, private=True)
|
| 16 |
+
|
| 17 |
+
def read_jsonl(path: str) -> list[str]:
|
| 18 |
+
with open(path, "r") as f:
|
| 19 |
+
data = [json.loads(line) for line in f]
|
| 20 |
+
return data
|
| 21 |
+
|
| 22 |
+
def main() -> None:
|
| 23 |
+
parser = argparse.ArgumentParser()
|
| 24 |
+
parser.add_argument("--path", type=str, required=False, default="test_submissions/blue_submission.jsonl", help="Path to the JSON file containing model names.")
|
| 25 |
+
args = parser.parse_args()
|
| 26 |
+
path = args.path
|
| 27 |
+
|
| 28 |
+
token = os.environ.get(TOKEN_ENV, "").strip()
|
| 29 |
+
if not token:
|
| 30 |
+
raise ValueError("Set HF_TOKEN before running this script.")
|
| 31 |
+
|
| 32 |
+
stimuli = read_jsonl(path)
|
| 33 |
+
push_to_hf(token, stimuli)
|
| 34 |
+
|
| 35 |
+
if __name__ == "__main__":
|
| 36 |
+
main()
|
scripts/submit_red_hf_dataset.py
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import json
|
| 3 |
+
import argparse
|
| 4 |
+
|
| 5 |
+
from datasets import Dataset
|
| 6 |
+
from dotenv import load_dotenv
|
| 7 |
+
load_dotenv()
|
| 8 |
+
|
| 9 |
+
DATASET_NAME = "bkhmsi/test-realign-hackathon-red-team"
|
| 10 |
+
TOKEN_ENV = "HF_TOKEN"
|
| 11 |
+
|
| 12 |
+
def push_to_hf(token: str, stimuli: list[dict[str, str]]) -> None:
|
| 13 |
+
dataset = Dataset.from_list(stimuli)
|
| 14 |
+
print(f"> Pushing {len(dataset)} records to HF dataset {DATASET_NAME}")
|
| 15 |
+
dataset.push_to_hub(DATASET_NAME, token=token, private=True)
|
| 16 |
+
|
| 17 |
+
def read_jsonl(path: str) -> list[str]:
|
| 18 |
+
with open(path, "r") as f:
|
| 19 |
+
data = [json.loads(line) for line in f]
|
| 20 |
+
return data
|
| 21 |
+
|
| 22 |
+
def main() -> None:
|
| 23 |
+
parser = argparse.ArgumentParser()
|
| 24 |
+
parser.add_argument("--path", type=str, required=False, default="test_submissions/red_submission.jsonl", help="Path to the JSON file containing stimuli names.")
|
| 25 |
+
args = parser.parse_args()
|
| 26 |
+
path = args.path
|
| 27 |
+
|
| 28 |
+
token = os.environ.get(TOKEN_ENV, "").strip()
|
| 29 |
+
if not token:
|
| 30 |
+
raise ValueError("Set HF_TOKEN before running this script.")
|
| 31 |
+
|
| 32 |
+
stimuli = read_jsonl(path)
|
| 33 |
+
push_to_hf(token, stimuli)
|
| 34 |
+
|
| 35 |
+
if __name__ == "__main__":
|
| 36 |
+
main()
|
scripts/validate_submission.py
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import json
|
| 5 |
+
import os
|
| 6 |
+
import sys
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
|
| 9 |
+
from src.hackathon.validation import (
|
| 10 |
+
MODEL_REGISTRY_ENV,
|
| 11 |
+
STIMULI_CATALOG_ENV,
|
| 12 |
+
load_model_registry,
|
| 13 |
+
load_stimuli_catalog,
|
| 14 |
+
validate_blue_submission,
|
| 15 |
+
validate_red_submission,
|
| 16 |
+
)
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
def _load_payload(path: str) -> dict:
|
| 20 |
+
if path == "-":
|
| 21 |
+
raw = sys.stdin.read()
|
| 22 |
+
source = "stdin"
|
| 23 |
+
else:
|
| 24 |
+
source = path
|
| 25 |
+
try:
|
| 26 |
+
raw = Path(path).read_text()
|
| 27 |
+
except FileNotFoundError as exc:
|
| 28 |
+
raise ValueError(f"File not found: {path}") from exc
|
| 29 |
+
|
| 30 |
+
try:
|
| 31 |
+
data = json.loads(raw)
|
| 32 |
+
except json.JSONDecodeError as exc:
|
| 33 |
+
raise ValueError(f"Invalid JSON in {source}: {exc}") from exc
|
| 34 |
+
|
| 35 |
+
if not isinstance(data, dict):
|
| 36 |
+
raise ValueError("Submission JSON must be an object.")
|
| 37 |
+
return data
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
def main() -> int:
|
| 41 |
+
parser = argparse.ArgumentParser(description="Validate blue/red submission JSON against the contract.")
|
| 42 |
+
parser.add_argument("payload", help="Path to submission JSON or '-' for stdin.")
|
| 43 |
+
parser.add_argument("--team", choices=["blue", "red"], required=True, help="Submission team to validate.")
|
| 44 |
+
parser.add_argument(
|
| 45 |
+
"--model-registry",
|
| 46 |
+
default=os.environ.get(MODEL_REGISTRY_ENV, ""),
|
| 47 |
+
help=f"Model registry JSON path (defaults to ${MODEL_REGISTRY_ENV}).",
|
| 48 |
+
)
|
| 49 |
+
parser.add_argument(
|
| 50 |
+
"--stimuli-catalog",
|
| 51 |
+
default=os.environ.get(STIMULI_CATALOG_ENV, ""),
|
| 52 |
+
help=f"Stimuli catalog JSON/JSONL path (defaults to ${STIMULI_CATALOG_ENV}).",
|
| 53 |
+
)
|
| 54 |
+
|
| 55 |
+
args = parser.parse_args()
|
| 56 |
+
payload = _load_payload(args.payload)
|
| 57 |
+
|
| 58 |
+
if args.team == "blue":
|
| 59 |
+
registry = load_model_registry(args.model_registry or None)
|
| 60 |
+
models = validate_blue_submission(payload, model_registry=registry)
|
| 61 |
+
print(f"OK: blue submission validated ({len(models)} models).")
|
| 62 |
+
else:
|
| 63 |
+
catalog = load_stimuli_catalog(args.stimuli_catalog or None)
|
| 64 |
+
stimuli = validate_red_submission(payload, stimuli_catalog=catalog)
|
| 65 |
+
print(f"OK: red submission validated ({len(stimuli)} stimuli).")
|
| 66 |
+
|
| 67 |
+
return 0
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
if __name__ == "__main__":
|
| 71 |
+
raise SystemExit(main())
|
scripts/verify_cka.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import numpy as np
|
| 2 |
+
|
| 3 |
+
from src.cka.compute import linear_cka, linear_cka_feature
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
def hsic_biased(k, l):
|
| 7 |
+
h = np.eye(k.shape[0], dtype=k.dtype) - 1 / k.shape[0]
|
| 8 |
+
return float(np.trace(k @ h @ l @ h))
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
def hsic_unbiased(k, l):
|
| 12 |
+
m = k.shape[0]
|
| 13 |
+
k_tilde = k.copy()
|
| 14 |
+
l_tilde = l.copy()
|
| 15 |
+
np.fill_diagonal(k_tilde, 0.0)
|
| 16 |
+
np.fill_diagonal(l_tilde, 0.0)
|
| 17 |
+
hsic_value = (
|
| 18 |
+
(np.sum(k_tilde * l_tilde.T))
|
| 19 |
+
+ (np.sum(k_tilde) * np.sum(l_tilde) / ((m - 1) * (m - 2)))
|
| 20 |
+
- (2 * np.sum(k_tilde @ l_tilde) / (m - 2))
|
| 21 |
+
)
|
| 22 |
+
hsic_value /= m * (m - 3)
|
| 23 |
+
return float(hsic_value)
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def ref_cka(a, b, unbiased=False):
|
| 27 |
+
k = a @ a.T
|
| 28 |
+
l = b @ b.T
|
| 29 |
+
hsic_fn = hsic_unbiased if unbiased else hsic_biased
|
| 30 |
+
hsic_kk = hsic_fn(k, k)
|
| 31 |
+
hsic_ll = hsic_fn(l, l)
|
| 32 |
+
hsic_kl = hsic_fn(k, l)
|
| 33 |
+
return float(hsic_kl / (np.sqrt(hsic_kk * hsic_ll) + 1e-6))
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def main():
|
| 37 |
+
rng = np.random.default_rng(0)
|
| 38 |
+
a = rng.standard_normal((64, 128)).astype(np.float64)
|
| 39 |
+
b = rng.standard_normal((64, 128)).astype(np.float64)
|
| 40 |
+
|
| 41 |
+
our_biased = linear_cka(a, b, unbiased=False)
|
| 42 |
+
ref_biased = ref_cka(a, b, unbiased=False)
|
| 43 |
+
|
| 44 |
+
our_unbiased = linear_cka(a, b, unbiased=True)
|
| 45 |
+
ref_unbiased = ref_cka(a, b, unbiased=True)
|
| 46 |
+
|
| 47 |
+
our_feature = linear_cka_feature(a, b)
|
| 48 |
+
|
| 49 |
+
print("biased:", our_biased, ref_biased, "diff", abs(our_biased - ref_biased))
|
| 50 |
+
print("unbiased:", our_unbiased, ref_unbiased, "diff", abs(our_unbiased - ref_unbiased))
|
| 51 |
+
print("feature:", our_feature, ref_biased, "diff", abs(our_feature - ref_biased))
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
if __name__ == "__main__":
|
| 55 |
+
main()
|
slurm-verify-8056978.out
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
ok
|
| 2 |
+
|
src/about.py
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
TITLE = """
|
| 2 |
+
<div align="center" class="hackathon-header">
|
| 3 |
+
<h1 id="space-title">The Re-Align Hackathon</h1>
|
| 4 |
+
<p class="hackathon-subtitle">ICLR 2026 Workshop on Representational Alignment</p>
|
| 5 |
+
<h4 class="hackathon-nav">
|
| 6 |
+
<a href="#blue-team">Blue Team</a>
|
| 7 |
+
<span class="nav-divider">•</span>
|
| 8 |
+
<a href="#red-team">Red Team</a>
|
| 9 |
+
<span class="nav-divider">•</span>
|
| 10 |
+
<a href="#getting-started">Getting Started</a>
|
| 11 |
+
<span class="nav-divider">•</span>
|
| 12 |
+
<a href="https://representational-alignment.github.io/2026/">Workshop</a>
|
| 13 |
+
</h4>
|
| 14 |
+
</div>
|
| 15 |
+
"""
|
| 16 |
+
|
| 17 |
+
INTRODUCTION_TEXT = """
|
| 18 |
+
## Challenge Overview
|
| 19 |
+
|
| 20 |
+
The Re-Align Hackathon explores **representational alignment** across vision models.
|
| 21 |
+
|
| 22 |
+
- **Blue Team** — Find 20 models with the most aligned representations (maximize CKA)
|
| 23 |
+
- **Red Team** — Find stimuli that drive model representations apart (minimize CKA)
|
| 24 |
+
|
| 25 |
+
Submissions are scored using [CKA (Centered Kernel Alignment)](https://arxiv.org/abs/1905.00414) computed on embeddings extracted from a fixed set of held-out images.
|
| 26 |
+
"""
|
| 27 |
+
|
| 28 |
+
BLUE_SUBMISSION_TEXT = """
|
| 29 |
+
### Blue Team — Maximize Alignment
|
| 30 |
+
|
| 31 |
+
Select **20 models** from the registry whose representations are most aligned.
|
| 32 |
+
Your score is the **mean pairwise CKA** across your selected models — higher is better.
|
| 33 |
+
|
| 34 |
+
**How to submit:**
|
| 35 |
+
1. Create a HuggingFace dataset with `model_name` and `layer_name` columns
|
| 36 |
+
2. Paste the dataset link below and click **Generate JSON**
|
| 37 |
+
3. Review the generated JSON, then click **Submit**
|
| 38 |
+
"""
|
| 39 |
+
|
| 40 |
+
RED_SUBMISSION_TEXT = """
|
| 41 |
+
### Red Team — Maximize Divergence
|
| 42 |
+
|
| 43 |
+
Select **1000 stimuli** images that cause the fixed set of models to produce **divergent representations**.
|
| 44 |
+
Your score is **1 − avg CKA** — higher divergence ranks higher.
|
| 45 |
+
|
| 46 |
+
**How to submit:**
|
| 47 |
+
1. Create a HuggingFace dataset with `dataset_name` and `image_identifier` columns
|
| 48 |
+
2. Paste the dataset link below and click **Generate JSON**
|
| 49 |
+
3. Review the generated JSON, then click **Submit**
|
| 50 |
+
"""
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
GETTING_STARTED_TEXT = """
|
| 55 |
+
## Getting Started
|
| 56 |
+
|
| 57 |
+
To participate in the hackathon, you can submit model selections (Blue Team) or stimulus selections
|
| 58 |
+
(Red Team). Each submission will be scored and ranked on the respective leaderboard.
|
| 59 |
+
|
| 60 |
+
### Hugging Face datasets (private only)
|
| 61 |
+
|
| 62 |
+
You can optionally host the model/stimulus selections as a Hugging Face Dataset and paste the
|
| 63 |
+
dataset link into the app. These datasets must be private (do not publish public submissions).
|
| 64 |
+
For end-to-end examples, refer to `scripts/submit_blue_hf_dataset.py` and
|
| 65 |
+
`scripts/submit_red_hf_dataset.py`.
|
| 66 |
+
|
| 67 |
+
### Blue Team dataset
|
| 68 |
+
|
| 69 |
+
Expected columns:
|
| 70 |
+
- `model_name`: string model name
|
| 71 |
+
- `layer_name`: string layer name
|
| 72 |
+
|
| 73 |
+
Example dataset row:
|
| 74 |
+
```json
|
| 75 |
+
{
|
| 76 |
+
"model_name": "resnet18",
|
| 77 |
+
"layer_name": "fc"
|
| 78 |
+
}
|
| 79 |
+
```
|
| 80 |
+
|
| 81 |
+
Create the dataset (example with `datasets` + `huggingface_hub`):
|
| 82 |
+
```bash
|
| 83 |
+
pip install datasets huggingface_hub
|
| 84 |
+
```
|
| 85 |
+
```py
|
| 86 |
+
from datasets import Dataset
|
| 87 |
+
from huggingface_hub import login
|
| 88 |
+
|
| 89 |
+
login(token="hf_...") # optional if you already ran `huggingface-cli login`
|
| 90 |
+
|
| 91 |
+
rows = [
|
| 92 |
+
{"model_name": "resnet18", "layer_name": "fc"},
|
| 93 |
+
{"model_name": "resnet34", "layer_name": "fc"},
|
| 94 |
+
]
|
| 95 |
+
ds = Dataset.from_list(rows)
|
| 96 |
+
ds.push_to_hub("your-username/blue-team-submission", private=True)
|
| 97 |
+
```
|
| 98 |
+
|
| 99 |
+
Paste the dataset link into the app:
|
| 100 |
+
```
|
| 101 |
+
your-username/blue-team-submission
|
| 102 |
+
```
|
| 103 |
+
|
| 104 |
+
### Red Team dataset
|
| 105 |
+
|
| 106 |
+
Expected columns:
|
| 107 |
+
- `dataset_name`: string dataset name
|
| 108 |
+
- `image_identifier`: string image identifier within the dataset
|
| 109 |
+
|
| 110 |
+
Example dataset row:
|
| 111 |
+
```json
|
| 112 |
+
{
|
| 113 |
+
"dataset_name": "imagenet_val",
|
| 114 |
+
"image_identifier": "ILSVRC2012_val_00000001.JPEG"
|
| 115 |
+
}
|
| 116 |
+
```
|
| 117 |
+
|
| 118 |
+
Create the dataset:
|
| 119 |
+
```bash
|
| 120 |
+
pip install datasets huggingface_hub
|
| 121 |
+
```
|
| 122 |
+
```py
|
| 123 |
+
from datasets import Dataset
|
| 124 |
+
from huggingface_hub import login
|
| 125 |
+
|
| 126 |
+
login(token="hf_...") # optional if you already ran `huggingface-cli login`
|
| 127 |
+
|
| 128 |
+
rows = [
|
| 129 |
+
{
|
| 130 |
+
"dataset_name": "imagenet_val",
|
| 131 |
+
"image_identifier": "ILSVRC2012_val_00000001.JPEG",
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"dataset_name": "objectnet",
|
| 135 |
+
"image_identifier": "objectnet-1.0/images/baking_sheet/01f362ca48a547c.png",
|
| 136 |
+
},
|
| 137 |
+
]
|
| 138 |
+
ds = Dataset.from_list(rows)
|
| 139 |
+
ds.push_to_hub("your-username/red-team-submission", private=True)
|
| 140 |
+
```
|
| 141 |
+
|
| 142 |
+
Paste the dataset link into the app:
|
| 143 |
+
```
|
| 144 |
+
your-username/red-team-submission
|
| 145 |
+
```
|
| 146 |
+
|
| 147 |
+
### Access token (for private datasets)
|
| 148 |
+
|
| 149 |
+
1. Go to your Hugging Face account settings: `https://huggingface.co/settings/tokens`
|
| 150 |
+
2. Create a new token with the `Read` scope.
|
| 151 |
+
3. Copy the token (it starts with `hf_...`).
|
| 152 |
+
4. Paste it into the "HuggingFace access token (optional)" textbox in the app.
|
| 153 |
+
"""
|
src/cka/__init__.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from src.cka.compute import linear_cka
|
| 2 |
+
from src.cka.embeddings import get_cached_embeddings, list_cached_embedding_names
|
| 3 |
+
from src.cka.storage import append_submission, load_submissions
|
| 4 |
+
|
| 5 |
+
__all__ = [
|
| 6 |
+
"append_submission",
|
| 7 |
+
"get_cached_embeddings",
|
| 8 |
+
"linear_cka",
|
| 9 |
+
"list_cached_embedding_names",
|
| 10 |
+
"load_submissions",
|
| 11 |
+
]
|
src/cka/compute.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import numpy as np
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
def _validate_inputs(x: np.ndarray, y: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
|
| 7 |
+
x = np.asarray(x, dtype=np.float64)
|
| 8 |
+
y = np.asarray(y, dtype=np.float64)
|
| 9 |
+
|
| 10 |
+
if x.ndim != 2 or y.ndim != 2:
|
| 11 |
+
raise ValueError("CKA expects 2D arrays shaped [num_samples, dim].")
|
| 12 |
+
if x.shape[0] != y.shape[0]:
|
| 13 |
+
raise ValueError("CKA expects the same number of samples in both embeddings.")
|
| 14 |
+
|
| 15 |
+
return x, y
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def hsic_biased(k: np.ndarray, l: np.ndarray) -> float:
|
| 19 |
+
"""Biased HSIC, matches the reference implementation."""
|
| 20 |
+
m = k.shape[0]
|
| 21 |
+
h = np.eye(m, dtype=k.dtype) - (1.0 / m)
|
| 22 |
+
return float(np.trace(k @ h @ l @ h))
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def hsic_unbiased(k: np.ndarray, l: np.ndarray) -> float:
|
| 26 |
+
"""Unbiased HSIC as in Song et al. (2012)."""
|
| 27 |
+
m = k.shape[0]
|
| 28 |
+
if m < 4:
|
| 29 |
+
return 0.0
|
| 30 |
+
|
| 31 |
+
k_tilde = k.copy()
|
| 32 |
+
l_tilde = l.copy()
|
| 33 |
+
np.fill_diagonal(k_tilde, 0.0)
|
| 34 |
+
np.fill_diagonal(l_tilde, 0.0)
|
| 35 |
+
|
| 36 |
+
term1 = np.sum(k_tilde * l_tilde.T)
|
| 37 |
+
term2 = (np.sum(k_tilde) * np.sum(l_tilde)) / ((m - 1) * (m - 2))
|
| 38 |
+
term3 = (2 * np.sum(k_tilde @ l_tilde)) / (m - 2)
|
| 39 |
+
return float((term1 + term2 - term3) / (m * (m - 3)))
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def linear_cka_feature(x: np.ndarray, y: np.ndarray, eps: float = 1e-6) -> float:
|
| 43 |
+
"""Direct feature-space linear CKA (equivalent to biased HSIC for linear kernels)."""
|
| 44 |
+
x, y = _validate_inputs(x, y)
|
| 45 |
+
|
| 46 |
+
x = x - x.mean(axis=0, keepdims=True)
|
| 47 |
+
y = y - y.mean(axis=0, keepdims=True)
|
| 48 |
+
|
| 49 |
+
numerator = np.linalg.norm(x.T @ y, ord="fro") ** 2
|
| 50 |
+
denom = np.linalg.norm(x.T @ x, ord="fro") * np.linalg.norm(y.T @ y, ord="fro")
|
| 51 |
+
if denom == 0:
|
| 52 |
+
return 0.0
|
| 53 |
+
return float(numerator / (denom + eps))
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
def linear_cka(
|
| 57 |
+
x: np.ndarray,
|
| 58 |
+
y: np.ndarray,
|
| 59 |
+
*,
|
| 60 |
+
unbiased: bool = False,
|
| 61 |
+
eps: float = 1e-6,
|
| 62 |
+
) -> float:
|
| 63 |
+
"""Linear CKA computed via HSIC, matching the reference implementation."""
|
| 64 |
+
x, y = _validate_inputs(x, y)
|
| 65 |
+
|
| 66 |
+
k = x @ x.T
|
| 67 |
+
l = y @ y.T
|
| 68 |
+
|
| 69 |
+
hsic_fn = hsic_unbiased if unbiased else hsic_biased
|
| 70 |
+
hsic_kk = hsic_fn(k, k)
|
| 71 |
+
hsic_ll = hsic_fn(l, l)
|
| 72 |
+
hsic_kl = hsic_fn(k, l)
|
| 73 |
+
|
| 74 |
+
denom = np.sqrt(hsic_kk * hsic_ll)
|
| 75 |
+
return float(hsic_kl / (denom + eps))
|
src/cka/embeddings.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from functools import lru_cache
|
| 4 |
+
|
| 5 |
+
import numpy as np
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
@lru_cache(maxsize=1)
|
| 9 |
+
def get_cached_embeddings() -> dict[str, np.ndarray]:
|
| 10 |
+
"""Return dummy cached embeddings until real data is wired in."""
|
| 11 |
+
rng = np.random.default_rng(1234)
|
| 12 |
+
num_samples = 128
|
| 13 |
+
dim = 64
|
| 14 |
+
|
| 15 |
+
base = rng.normal(size=(num_samples, dim)).astype(np.float32)
|
| 16 |
+
embeddings = {
|
| 17 |
+
"base": base,
|
| 18 |
+
"base_noise_small": (base + 0.05 * rng.normal(size=(num_samples, dim))).astype(np.float32),
|
| 19 |
+
"base_noise_medium": (base + 0.2 * rng.normal(size=(num_samples, dim))).astype(np.float32),
|
| 20 |
+
"random_1": rng.normal(size=(num_samples, dim)).astype(np.float32),
|
| 21 |
+
"random_2": rng.normal(size=(num_samples, dim)).astype(np.float32),
|
| 22 |
+
"random_3": rng.normal(size=(num_samples, dim)).astype(np.float32),
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
return embeddings
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def list_cached_embedding_names() -> list[str]:
|
| 29 |
+
return sorted(get_cached_embeddings().keys())
|
src/cka/storage.py
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
+
import threading
|
| 6 |
+
from typing import Any
|
| 7 |
+
|
| 8 |
+
DEFAULT_DATA_PATH = os.environ.get(
|
| 9 |
+
"CKA_DATA_PATH",
|
| 10 |
+
os.path.join(os.getcwd(), "cka-data", "submissions.json"),
|
| 11 |
+
)
|
| 12 |
+
|
| 13 |
+
_LOCK = threading.Lock()
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
def load_submissions(data_path: str = DEFAULT_DATA_PATH) -> list[dict[str, Any]]:
|
| 17 |
+
if not os.path.exists(data_path):
|
| 18 |
+
return []
|
| 19 |
+
|
| 20 |
+
with _LOCK:
|
| 21 |
+
with open(data_path, "r") as f:
|
| 22 |
+
data = json.load(f)
|
| 23 |
+
|
| 24 |
+
if not isinstance(data, list):
|
| 25 |
+
raise ValueError(f"Expected a list in {data_path}.")
|
| 26 |
+
|
| 27 |
+
return data
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
def save_submissions(submissions: list[dict[str, Any]], data_path: str = DEFAULT_DATA_PATH) -> None:
|
| 31 |
+
data_dir = os.path.dirname(data_path)
|
| 32 |
+
if data_dir:
|
| 33 |
+
os.makedirs(data_dir, exist_ok=True)
|
| 34 |
+
|
| 35 |
+
tmp_path = f"{data_path}.tmp"
|
| 36 |
+
with _LOCK:
|
| 37 |
+
with open(tmp_path, "w") as f:
|
| 38 |
+
json.dump(submissions, f, indent=2)
|
| 39 |
+
os.replace(tmp_path, data_path)
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def append_submission(submission: dict[str, Any], data_path: str = DEFAULT_DATA_PATH) -> list[dict[str, Any]]:
|
| 43 |
+
submissions = load_submissions(data_path)
|
| 44 |
+
submissions.append(submission)
|
| 45 |
+
save_submissions(submissions, data_path)
|
| 46 |
+
return submissions
|
src/display/css_html_js.py
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
custom_css = """
|
| 2 |
+
|
| 3 |
+
@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;600;700&family=IBM+Plex+Mono:wght@400;600&display=swap");
|
| 4 |
+
|
| 5 |
+
/* Force dark theme everywhere */
|
| 6 |
+
:root, .dark, .light {
|
| 7 |
+
color-scheme: dark !important;
|
| 8 |
+
--bg-1: #0d1117;
|
| 9 |
+
--bg-2: #161b22;
|
| 10 |
+
--card-bg: #1c2128;
|
| 11 |
+
--ink-1: #e6edf3;
|
| 12 |
+
--ink-2: #8b949e;
|
| 13 |
+
--accent: #58a6ff;
|
| 14 |
+
--accent-hover: #79b8ff;
|
| 15 |
+
--accent-2: #bc8cff;
|
| 16 |
+
--border: #30363d;
|
| 17 |
+
--link-text-color: var(--accent);
|
| 18 |
+
--blue-team: #58a6ff;
|
| 19 |
+
--blue-team-hover: #79b8ff;
|
| 20 |
+
--red-team: #f85149;
|
| 21 |
+
--red-team-hover: #ff7b72;
|
| 22 |
+
--success: #3fb950;
|
| 23 |
+
--error: #f85149;
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
body,
|
| 27 |
+
.gradio-container {
|
| 28 |
+
font-family: "Space Grotesk", "Trebuchet MS", sans-serif;
|
| 29 |
+
color: var(--ink-1) !important;
|
| 30 |
+
background: var(--bg-1) !important;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
.gradio-container .block {
|
| 34 |
+
background: var(--card-bg) !important;
|
| 35 |
+
border: 1px solid var(--border) !important;
|
| 36 |
+
border-radius: 10px;
|
| 37 |
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
/* Force text color on all Gradio elements */
|
| 41 |
+
.gradio-container *,
|
| 42 |
+
.gradio-container .prose,
|
| 43 |
+
.gradio-container .prose p,
|
| 44 |
+
.gradio-container .prose li,
|
| 45 |
+
.gradio-container .prose h1,
|
| 46 |
+
.gradio-container .prose h2,
|
| 47 |
+
.gradio-container .prose h3,
|
| 48 |
+
.gradio-container .prose h4,
|
| 49 |
+
.gradio-container .prose strong,
|
| 50 |
+
.gradio-container label,
|
| 51 |
+
.gradio-container span {
|
| 52 |
+
color: var(--ink-1);
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
.gradio-container .prose a,
|
| 56 |
+
.gradio-container a {
|
| 57 |
+
color: var(--accent) !important;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
.gradio-container .prose code,
|
| 61 |
+
.gradio-container code {
|
| 62 |
+
background: #282e36 !important;
|
| 63 |
+
color: #e6edf3 !important;
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
.gradio-container .prose pre,
|
| 67 |
+
.gradio-container pre {
|
| 68 |
+
background: #161b22 !important;
|
| 69 |
+
border: 1px solid var(--border) !important;
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
.gradio-container input,
|
| 73 |
+
.gradio-container textarea,
|
| 74 |
+
.gradio-container select,
|
| 75 |
+
.gr-text-input textarea,
|
| 76 |
+
.gr-text-input input {
|
| 77 |
+
color: var(--ink-1) !important;
|
| 78 |
+
background: #0d1117 !important;
|
| 79 |
+
border: 1px solid var(--border) !important;
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
.gradio-container input::placeholder,
|
| 83 |
+
.gradio-container textarea::placeholder {
|
| 84 |
+
color: var(--ink-2) !important;
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
/* Tabs */
|
| 88 |
+
.gradio-container .tabs {
|
| 89 |
+
background: transparent !important;
|
| 90 |
+
}
|
| 91 |
+
|
| 92 |
+
.gradio-container button.tab-nav,
|
| 93 |
+
.gradio-container .tab-nav button {
|
| 94 |
+
color: var(--ink-2) !important;
|
| 95 |
+
background: transparent !important;
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
.gradio-container button.tab-nav.selected,
|
| 99 |
+
.gradio-container .tab-nav button.selected {
|
| 100 |
+
color: var(--ink-1) !important;
|
| 101 |
+
border-bottom-color: var(--accent) !important;
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
/* Accordion */
|
| 105 |
+
.gradio-container .accordion {
|
| 106 |
+
background: var(--card-bg) !important;
|
| 107 |
+
border-color: var(--border) !important;
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
/* Dataframe / table */
|
| 111 |
+
.gradio-container table {
|
| 112 |
+
background: var(--card-bg) !important;
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
.gradio-container table th {
|
| 116 |
+
background: #21262d !important;
|
| 117 |
+
color: var(--ink-1) !important;
|
| 118 |
+
border-color: var(--border) !important;
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
.gradio-container table td {
|
| 122 |
+
background: var(--card-bg) !important;
|
| 123 |
+
color: var(--ink-1) !important;
|
| 124 |
+
border-color: var(--border) !important;
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
.gradio-container table tr:nth-child(even) td {
|
| 128 |
+
background: #161b22 !important;
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
/* Buttons */
|
| 132 |
+
.gr-button {
|
| 133 |
+
background: var(--accent) !important;
|
| 134 |
+
color: #ffffff !important;
|
| 135 |
+
border: 1px solid transparent !important;
|
| 136 |
+
font-weight: 600;
|
| 137 |
+
letter-spacing: 0.01em;
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
.gr-button:hover {
|
| 141 |
+
background: var(--accent-hover) !important;
|
| 142 |
+
}
|
| 143 |
+
|
| 144 |
+
.gr-button.secondary {
|
| 145 |
+
background: var(--card-bg) !important;
|
| 146 |
+
color: var(--ink-1) !important;
|
| 147 |
+
border: 1px solid var(--border) !important;
|
| 148 |
+
}
|
| 149 |
+
|
| 150 |
+
.gr-button.secondary:hover {
|
| 151 |
+
border-color: var(--accent) !important;
|
| 152 |
+
color: var(--accent) !important;
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
/* Header */
|
| 156 |
+
.hackathon-header {
|
| 157 |
+
margin: 10px 0 24px;
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
.hackathon-header h1 {
|
| 161 |
+
font-size: 40px;
|
| 162 |
+
letter-spacing: 0.02em;
|
| 163 |
+
margin-bottom: 6px;
|
| 164 |
+
color: var(--ink-1) !important;
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
.hackathon-subtitle {
|
| 168 |
+
color: var(--ink-2) !important;
|
| 169 |
+
font-size: 18px;
|
| 170 |
+
margin-top: -4px;
|
| 171 |
+
margin-bottom: 8px;
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
.hackathon-nav {
|
| 175 |
+
font-weight: 500;
|
| 176 |
+
margin: 4px 0 10px;
|
| 177 |
+
}
|
| 178 |
+
|
| 179 |
+
.hackathon-nav a {
|
| 180 |
+
color: var(--ink-2) !important;
|
| 181 |
+
text-decoration: none;
|
| 182 |
+
padding: 0 8px;
|
| 183 |
+
}
|
| 184 |
+
|
| 185 |
+
.hackathon-nav a:hover {
|
| 186 |
+
color: var(--accent) !important;
|
| 187 |
+
}
|
| 188 |
+
|
| 189 |
+
.nav-divider {
|
| 190 |
+
color: var(--accent-2) !important;
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
.markdown-text {
|
| 194 |
+
font-size: 16px !important;
|
| 195 |
+
}
|
| 196 |
+
|
| 197 |
+
.tab-buttons button {
|
| 198 |
+
font-size: 20px;
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
/* Blue team accent */
|
| 202 |
+
.blue-team .gr-button.primary,
|
| 203 |
+
.blue-team .gr-button:not(.secondary) {
|
| 204 |
+
background: var(--blue-team) !important;
|
| 205 |
+
}
|
| 206 |
+
.blue-team .gr-button:not(.secondary):hover {
|
| 207 |
+
background: var(--blue-team-hover) !important;
|
| 208 |
+
}
|
| 209 |
+
.blue-team-header {
|
| 210 |
+
color: var(--blue-team) !important;
|
| 211 |
+
border-left: 4px solid var(--blue-team);
|
| 212 |
+
padding-left: 12px;
|
| 213 |
+
margin-bottom: 12px;
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
/* Red team accent */
|
| 217 |
+
.red-team .gr-button.primary,
|
| 218 |
+
.red-team .gr-button:not(.secondary) {
|
| 219 |
+
background: var(--red-team) !important;
|
| 220 |
+
}
|
| 221 |
+
.red-team .gr-button:not(.secondary):hover {
|
| 222 |
+
background: var(--red-team-hover) !important;
|
| 223 |
+
}
|
| 224 |
+
.red-team-header {
|
| 225 |
+
color: var(--red-team) !important;
|
| 226 |
+
border-left: 4px solid var(--red-team);
|
| 227 |
+
padding-left: 12px;
|
| 228 |
+
margin-bottom: 12px;
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
/* Status message styles */
|
| 232 |
+
.status-error { color: var(--error) !important; font-size: 16px; text-align: center; font-weight: 600; }
|
| 233 |
+
.status-warning { color: var(--accent-2) !important; font-size: 16px; text-align: center; font-weight: 600; }
|
| 234 |
+
.status-success { color: var(--success) !important; font-size: 16px; text-align: center; font-weight: 600; }
|
| 235 |
+
"""
|
| 236 |
+
|
| 237 |
+
get_window_url_params = """
|
| 238 |
+
function(url_params) {
|
| 239 |
+
const params = new URLSearchParams(window.location.search);
|
| 240 |
+
url_params = Object.fromEntries(params);
|
| 241 |
+
return url_params;
|
| 242 |
+
}
|
| 243 |
+
"""
|
src/display/formatting.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
def model_hyperlink(link, model_name):
|
| 2 |
+
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{model_name}</a>'
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
def make_clickable_model(model_name):
|
| 6 |
+
link = f"https://huggingface.co/{model_name}"
|
| 7 |
+
return model_hyperlink(link, model_name)
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
def styled_error(error):
|
| 11 |
+
return f"<p class='status-error'>{error}</p>"
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def styled_warning(warn):
|
| 15 |
+
return f"<p class='status-warning'>{warn}</p>"
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def styled_message(message):
|
| 19 |
+
return f"<p class='status-success'>{message}</p>"
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def has_no_nan_values(df, columns):
|
| 23 |
+
return df[columns].notna().all(axis=1)
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def has_nan_values(df, columns):
|
| 27 |
+
return df[columns].isna().any(axis=1)
|
src/hackathon/__init__.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from src.hackathon.data import get_dummy_model_embeddings, list_dummy_models, list_dummy_stimuli, stimulus_key
|
| 2 |
+
from src.hackathon.scoring import score_blue, score_blue_with_pairwise, score_red, score_red_with_pairwise
|
| 3 |
+
from src.hackathon.storage import append_submission, load_submissions, save_submissions
|
| 4 |
+
|
| 5 |
+
__all__ = [
|
| 6 |
+
"append_submission",
|
| 7 |
+
"get_dummy_model_embeddings",
|
| 8 |
+
"list_dummy_models",
|
| 9 |
+
"list_dummy_stimuli",
|
| 10 |
+
"load_submissions",
|
| 11 |
+
"save_submissions",
|
| 12 |
+
"score_blue",
|
| 13 |
+
"score_blue_with_pairwise",
|
| 14 |
+
"score_red",
|
| 15 |
+
"score_red_with_pairwise",
|
| 16 |
+
"stimulus_key",
|
| 17 |
+
]
|
src/hackathon/data.py
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from functools import lru_cache
|
| 4 |
+
from typing import Iterable, Mapping
|
| 5 |
+
|
| 6 |
+
import numpy as np
|
| 7 |
+
|
| 8 |
+
Stimulus = Mapping[str, str]
|
| 9 |
+
|
| 10 |
+
_DUMMY_MODELS = [
|
| 11 |
+
"vit_base_patch16_224",
|
| 12 |
+
"vit_large_patch16_224",
|
| 13 |
+
"resnet50",
|
| 14 |
+
"resnet101",
|
| 15 |
+
"convnext_base",
|
| 16 |
+
"convnext_large",
|
| 17 |
+
"deit_base_patch16_224",
|
| 18 |
+
"clip_vit_b32",
|
| 19 |
+
"swin_tiny_patch4_window7_224",
|
| 20 |
+
]
|
| 21 |
+
|
| 22 |
+
_DUMMY_STIMULI = [
|
| 23 |
+
{"dataset_name": "cifar100", "image_identifier": "test/airplane/image_0001.png"},
|
| 24 |
+
{"dataset_name": "cifar100", "image_identifier": "test/bear/image_0007.png"},
|
| 25 |
+
{"dataset_name": "cifar100", "image_identifier": "test/bottle/image_0012.png"},
|
| 26 |
+
{"dataset_name": "cifar100", "image_identifier": "test/bus/image_0021.png"},
|
| 27 |
+
{"dataset_name": "cifar100", "image_identifier": "test/girl/image_0033.png"},
|
| 28 |
+
{"dataset_name": "cifar100", "image_identifier": "test/keyboard/image_0044.png"},
|
| 29 |
+
{"dataset_name": "cifar100", "image_identifier": "test/rocket/image_0051.png"},
|
| 30 |
+
{"dataset_name": "cifar100", "image_identifier": "test/whale/image_0068.png"},
|
| 31 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n01440764/ILSVRC2012_val_00000964.JPEG"},
|
| 32 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n02123159/ILSVRC2012_val_00001459.JPEG"},
|
| 33 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n03255030/ILSVRC2012_val_00001903.JPEG"},
|
| 34 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n03445777/ILSVRC2012_val_00003572.JPEG"},
|
| 35 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n03729826/ILSVRC2012_val_00005336.JPEG"},
|
| 36 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n03902125/ILSVRC2012_val_00006614.JPEG"},
|
| 37 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n04254777/ILSVRC2012_val_00007190.JPEG"},
|
| 38 |
+
{"dataset_name": "imagenet1k", "image_identifier": "val/n04557648/ILSVRC2012_val_00009024.JPEG"},
|
| 39 |
+
]
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def list_dummy_models() -> list[str]:
|
| 43 |
+
return list(_DUMMY_MODELS)
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
def list_dummy_stimuli() -> list[dict[str, str]]:
|
| 47 |
+
return [dict(item) for item in _DUMMY_STIMULI]
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def stimulus_key(stimulus: Stimulus) -> str:
|
| 51 |
+
dataset_name = stimulus.get("dataset_name", "").strip()
|
| 52 |
+
image_identifier = stimulus.get("image_identifier", "").strip()
|
| 53 |
+
if not dataset_name or not image_identifier:
|
| 54 |
+
raise ValueError("Stimulus must include dataset_name and image_identifier.")
|
| 55 |
+
return f"{dataset_name}::{image_identifier}"
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
def resolve_stimulus_indices(
|
| 59 |
+
selected_stimuli: Iterable[Stimulus | str],
|
| 60 |
+
available_stimuli: Iterable[Stimulus],
|
| 61 |
+
) -> list[int]:
|
| 62 |
+
stimulus_index = {stimulus_key(stimulus): idx for idx, stimulus in enumerate(available_stimuli)}
|
| 63 |
+
keys: list[str] = []
|
| 64 |
+
for item in selected_stimuli:
|
| 65 |
+
if isinstance(item, str):
|
| 66 |
+
key = item
|
| 67 |
+
else:
|
| 68 |
+
key = stimulus_key(item)
|
| 69 |
+
keys.append(key)
|
| 70 |
+
|
| 71 |
+
if not keys:
|
| 72 |
+
raise ValueError("Select at least one stimulus.")
|
| 73 |
+
if len(keys) != len(set(keys)):
|
| 74 |
+
raise ValueError("Stimulus selections must be unique.")
|
| 75 |
+
|
| 76 |
+
missing = [key for key in keys if key not in stimulus_index]
|
| 77 |
+
if missing:
|
| 78 |
+
missing_str = ", ".join(missing)
|
| 79 |
+
raise ValueError(f"Unknown stimuli requested: {missing_str}")
|
| 80 |
+
|
| 81 |
+
return [stimulus_index[key] for key in keys]
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
@lru_cache(maxsize=1)
|
| 85 |
+
def get_dummy_model_embeddings() -> dict[str, np.ndarray]:
|
| 86 |
+
rng = np.random.default_rng(2026)
|
| 87 |
+
models = list_dummy_models()
|
| 88 |
+
stimuli = list_dummy_stimuli()
|
| 89 |
+
num_samples = len(stimuli)
|
| 90 |
+
dim = 64
|
| 91 |
+
|
| 92 |
+
family_by_model = {
|
| 93 |
+
"vit_base_patch16_224": "vit",
|
| 94 |
+
"vit_large_patch16_224": "vit",
|
| 95 |
+
"resnet50": "resnet",
|
| 96 |
+
"resnet101": "resnet",
|
| 97 |
+
"convnext_base": "convnext",
|
| 98 |
+
"convnext_large": "convnext",
|
| 99 |
+
"deit_base_patch16_224": "vit",
|
| 100 |
+
"clip_vit_b32": "vit",
|
| 101 |
+
"swin_tiny_patch4_window7_224": "swin",
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
global_base = rng.normal(size=(num_samples, dim)).astype(np.float32)
|
| 105 |
+
family_bases = {}
|
| 106 |
+
for family in sorted(set(family_by_model.values())):
|
| 107 |
+
family_noise = rng.normal(size=(num_samples, dim)).astype(np.float32)
|
| 108 |
+
family_stimulus = rng.normal(size=(num_samples, dim)).astype(np.float32)
|
| 109 |
+
# Separate family-level structure so cross-family CKA drops more.
|
| 110 |
+
family_bases[family] = 0.15 * global_base + 0.55 * family_noise + 0.30 * family_stimulus
|
| 111 |
+
|
| 112 |
+
scales = np.linspace(0.02, 0.08, len(models))
|
| 113 |
+
|
| 114 |
+
embeddings: dict[str, np.ndarray] = {}
|
| 115 |
+
for model_name, scale in zip(models, scales):
|
| 116 |
+
family = family_by_model.get(model_name, "other")
|
| 117 |
+
base = family_bases.get(family, global_base)
|
| 118 |
+
noise = rng.normal(size=(num_samples, dim)).astype(np.float32)
|
| 119 |
+
embeddings[model_name] = (base + scale * noise).astype(np.float32)
|
| 120 |
+
|
| 121 |
+
return embeddings
|
src/hackathon/modal_client.py
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Thin client for the private Modal evaluation backend.
|
| 2 |
+
|
| 3 |
+
The actual evaluation pipeline (embedding extraction, CKA scoring) lives in
|
| 4 |
+
a private repository and is deployed as a Modal app. This module calls the
|
| 5 |
+
deployed functions by name — no backend code is imported here.
|
| 6 |
+
|
| 7 |
+
Public configs (blue model registry) can still be controlled via HF Space env
|
| 8 |
+
vars for convenience. Secret configs (red team registry, blue heldout images)
|
| 9 |
+
are loaded server-side from the Modal volume — never sent from here.
|
| 10 |
+
|
| 11 |
+
The backend must be deployed first:
|
| 12 |
+
modal deploy scripts/modal_backend.py # from the private eval-backend repo
|
| 13 |
+
"""
|
| 14 |
+
from __future__ import annotations
|
| 15 |
+
|
| 16 |
+
import json
|
| 17 |
+
import os
|
| 18 |
+
from pathlib import Path
|
| 19 |
+
from typing import Any, Iterable
|
| 20 |
+
|
| 21 |
+
from src.hackathon.validation import (
|
| 22 |
+
BLUE_MODEL_REGISTRY_ENV,
|
| 23 |
+
MODEL_REGISTRY_ENV,
|
| 24 |
+
)
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
MODAL_ENABLE_ENV = "HACKATHON_MODAL_ENABLE"
|
| 28 |
+
MODAL_APP_ENV = "HACKATHON_MODAL_APP"
|
| 29 |
+
MODAL_BATCH_SIZE_ENV = "HACKATHON_MODAL_BATCH_SIZE"
|
| 30 |
+
DEFAULT_MODAL_APP = "iclr2026-eval"
|
| 31 |
+
DEFAULT_BATCH_SIZE = 64
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
def _is_truthy(value: str | None) -> bool:
|
| 35 |
+
if value is None:
|
| 36 |
+
return False
|
| 37 |
+
return value.strip().lower() in {"1", "true", "yes", "y", "on"}
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
def is_modal_enabled() -> bool:
|
| 41 |
+
return _is_truthy(os.environ.get(MODAL_ENABLE_ENV))
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def _get_batch_size() -> int:
|
| 45 |
+
raw = os.environ.get(MODAL_BATCH_SIZE_ENV, "").strip()
|
| 46 |
+
if raw:
|
| 47 |
+
return int(raw)
|
| 48 |
+
return DEFAULT_BATCH_SIZE
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
def _get_modal_function(function_name: str) -> Any:
|
| 52 |
+
import modal
|
| 53 |
+
|
| 54 |
+
app_name = os.environ.get(MODAL_APP_ENV, "").strip() or DEFAULT_MODAL_APP
|
| 55 |
+
return modal.Function.from_name(app_name, function_name)
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
def _load_json_file(path: str) -> Any:
|
| 59 |
+
"""Load a JSON or JSONL file from a local path."""
|
| 60 |
+
p = Path(path)
|
| 61 |
+
if p.suffix == ".jsonl":
|
| 62 |
+
lines = p.read_text().splitlines()
|
| 63 |
+
return [json.loads(line) for line in lines if line.strip()]
|
| 64 |
+
return json.loads(p.read_text())
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
def _load_blue_model_registry() -> list[dict[str, Any]] | None:
|
| 68 |
+
"""Load blue model registry from env var if set, else return None.
|
| 69 |
+
|
| 70 |
+
When None is returned the backend loads its copy from the Modal volume.
|
| 71 |
+
"""
|
| 72 |
+
path = os.environ.get(BLUE_MODEL_REGISTRY_ENV, "").strip()
|
| 73 |
+
if not path:
|
| 74 |
+
path = os.environ.get(MODEL_REGISTRY_ENV, "").strip()
|
| 75 |
+
if not path:
|
| 76 |
+
return None
|
| 77 |
+
|
| 78 |
+
data = _load_json_file(path)
|
| 79 |
+
if isinstance(data, dict):
|
| 80 |
+
data = data.get("models", data)
|
| 81 |
+
return data
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
def score_blue_with_pairwise(
|
| 85 |
+
model_names: Iterable[str],
|
| 86 |
+
*,
|
| 87 |
+
submission_id: str | None = None,
|
| 88 |
+
submitter: str | None = None,
|
| 89 |
+
) -> tuple[float, list[dict[str, Any]]]:
|
| 90 |
+
"""Score a blue team submission via the deployed Modal backend.
|
| 91 |
+
|
| 92 |
+
If HACKATHON_BLUE_MODEL_REGISTRY (or HACKATHON_MODEL_REGISTRY) is set,
|
| 93 |
+
the registry is sent to the backend. Otherwise the backend loads its
|
| 94 |
+
own copy from the Modal volume.
|
| 95 |
+
|
| 96 |
+
Blue heldout images are always loaded server-side (secret).
|
| 97 |
+
When submission_id is provided, the backend saves the result to the
|
| 98 |
+
Modal volume for crash recovery.
|
| 99 |
+
"""
|
| 100 |
+
model_registry = _load_blue_model_registry()
|
| 101 |
+
|
| 102 |
+
fn = _get_modal_function("score_blue_submission")
|
| 103 |
+
result = fn.remote(
|
| 104 |
+
model_names=list(model_names),
|
| 105 |
+
model_registry=model_registry,
|
| 106 |
+
batch_size=_get_batch_size(),
|
| 107 |
+
submission_id=submission_id,
|
| 108 |
+
submitter=submitter,
|
| 109 |
+
)
|
| 110 |
+
avg_cka = float(result.get("avg_cka", 0.0))
|
| 111 |
+
return avg_cka, list(result.get("pairwise", []))
|
| 112 |
+
|
| 113 |
+
|
| 114 |
+
def score_red_with_pairwise(
|
| 115 |
+
selected_stimuli: Iterable[dict[str, str] | str],
|
| 116 |
+
*,
|
| 117 |
+
submission_id: str | None = None,
|
| 118 |
+
submitter: str | None = None,
|
| 119 |
+
) -> tuple[float, list[dict[str, Any]]]:
|
| 120 |
+
"""Score a red team submission via the deployed Modal backend.
|
| 121 |
+
|
| 122 |
+
The red team model registry is always loaded server-side from the
|
| 123 |
+
Modal volume (secret — never sent from the public Space).
|
| 124 |
+
When submission_id is provided, the backend saves the result to the
|
| 125 |
+
Modal volume for crash recovery.
|
| 126 |
+
"""
|
| 127 |
+
stimuli_list: list[dict[str, str]] = []
|
| 128 |
+
for item in selected_stimuli:
|
| 129 |
+
if isinstance(item, str):
|
| 130 |
+
parts = item.split("::", 1)
|
| 131 |
+
if len(parts) == 2:
|
| 132 |
+
stimuli_list.append({"dataset_name": parts[0], "image_identifier": parts[1]})
|
| 133 |
+
else:
|
| 134 |
+
raise ValueError(f"Invalid stimulus key format: {item}")
|
| 135 |
+
else:
|
| 136 |
+
stimuli_list.append(dict(item))
|
| 137 |
+
|
| 138 |
+
fn = _get_modal_function("score_red_submission")
|
| 139 |
+
result = fn.remote(
|
| 140 |
+
selected_stimuli=stimuli_list,
|
| 141 |
+
batch_size=_get_batch_size(),
|
| 142 |
+
submission_id=submission_id,
|
| 143 |
+
submitter=submitter,
|
| 144 |
+
)
|
| 145 |
+
score = float(result.get("score", 0.0))
|
| 146 |
+
return score, list(result.get("pairwise", []))
|
| 147 |
+
|
| 148 |
+
|
| 149 |
+
def fetch_volume_submissions(team: str | None = None) -> list[dict[str, Any]]:
|
| 150 |
+
"""Fetch submissions saved on the Modal volume.
|
| 151 |
+
|
| 152 |
+
Used to sync submissions after a Space restart.
|
| 153 |
+
"""
|
| 154 |
+
fn = _get_modal_function("list_submissions")
|
| 155 |
+
return fn.remote(team=team)
|
src/hackathon/scoring.py
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from itertools import combinations
|
| 4 |
+
from typing import Iterable
|
| 5 |
+
|
| 6 |
+
import numpy as np
|
| 7 |
+
|
| 8 |
+
from src.cka.compute import linear_cka
|
| 9 |
+
from src.hackathon.data import get_dummy_model_embeddings, list_dummy_stimuli, resolve_stimulus_indices
|
| 10 |
+
from src.hackathon.modal_client import (
|
| 11 |
+
is_modal_enabled,
|
| 12 |
+
score_blue_with_pairwise as modal_score_blue_with_pairwise,
|
| 13 |
+
score_red_with_pairwise as modal_score_red_with_pairwise,
|
| 14 |
+
)
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def _validate_models(model_names: Iterable[str], embeddings_by_model: dict[str, np.ndarray]) -> list[str]:
|
| 18 |
+
names = [name.strip() for name in model_names if name.strip()]
|
| 19 |
+
if len(names) < 2:
|
| 20 |
+
raise ValueError("Select at least two models.")
|
| 21 |
+
if len(names) != len(set(names)):
|
| 22 |
+
raise ValueError("Model selections must be unique.")
|
| 23 |
+
|
| 24 |
+
missing = [name for name in names if name not in embeddings_by_model]
|
| 25 |
+
if missing:
|
| 26 |
+
missing_str = ", ".join(missing)
|
| 27 |
+
raise ValueError(f"Unknown models requested: {missing_str}")
|
| 28 |
+
|
| 29 |
+
return names
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
def _format_score(score: float) -> float:
|
| 33 |
+
return round(float(score), 4)
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def _pairwise_scores(
|
| 37 |
+
model_names: Iterable[str],
|
| 38 |
+
embeddings_by_model: dict[str, np.ndarray],
|
| 39 |
+
) -> tuple[float, list[dict[str, float | str]]]:
|
| 40 |
+
scores = []
|
| 41 |
+
pairwise: list[dict[str, float | str]] = []
|
| 42 |
+
for model_a, model_b in combinations(model_names, 2):
|
| 43 |
+
score = linear_cka(embeddings_by_model[model_a], embeddings_by_model[model_b])
|
| 44 |
+
scores.append(score)
|
| 45 |
+
pairwise.append(
|
| 46 |
+
{
|
| 47 |
+
"Model A": model_a,
|
| 48 |
+
"Model B": model_b,
|
| 49 |
+
"CKA": _format_score(score),
|
| 50 |
+
}
|
| 51 |
+
)
|
| 52 |
+
|
| 53 |
+
if not scores:
|
| 54 |
+
return 0.0, []
|
| 55 |
+
return float(np.mean(scores)), pairwise
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
def score_blue_with_pairwise(
|
| 59 |
+
model_names: Iterable[str],
|
| 60 |
+
*,
|
| 61 |
+
embeddings_by_model: dict[str, np.ndarray] | None = None,
|
| 62 |
+
submission_id: str | None = None,
|
| 63 |
+
submitter: str | None = None,
|
| 64 |
+
) -> tuple[float, list[dict[str, float | str]]]:
|
| 65 |
+
if embeddings_by_model is None and is_modal_enabled():
|
| 66 |
+
avg_cka, pairwise = modal_score_blue_with_pairwise(
|
| 67 |
+
model_names, submission_id=submission_id, submitter=submitter,
|
| 68 |
+
)
|
| 69 |
+
formatted = [
|
| 70 |
+
{"Model A": item["model_a"], "Model B": item["model_b"], "CKA": _format_score(item["cka"])}
|
| 71 |
+
for item in pairwise
|
| 72 |
+
]
|
| 73 |
+
return float(avg_cka), formatted
|
| 74 |
+
|
| 75 |
+
if embeddings_by_model is None:
|
| 76 |
+
embeddings_by_model = get_dummy_model_embeddings()
|
| 77 |
+
|
| 78 |
+
model_names = _validate_models(model_names, embeddings_by_model)
|
| 79 |
+
avg_cka, pairwise = _pairwise_scores(model_names, embeddings_by_model)
|
| 80 |
+
return float(avg_cka), pairwise
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
def score_blue(
|
| 84 |
+
model_names: Iterable[str],
|
| 85 |
+
*,
|
| 86 |
+
embeddings_by_model: dict[str, np.ndarray] | None = None,
|
| 87 |
+
) -> float:
|
| 88 |
+
avg_cka, _ = score_blue_with_pairwise(model_names, embeddings_by_model=embeddings_by_model)
|
| 89 |
+
return float(avg_cka)
|
| 90 |
+
|
| 91 |
+
|
| 92 |
+
def score_red_with_pairwise(
|
| 93 |
+
selected_stimuli: Iterable[dict[str, str] | str],
|
| 94 |
+
*,
|
| 95 |
+
embeddings_by_model: dict[str, np.ndarray] | None = None,
|
| 96 |
+
stimuli_catalog: Iterable[dict[str, str]] | None = None,
|
| 97 |
+
submission_id: str | None = None,
|
| 98 |
+
submitter: str | None = None,
|
| 99 |
+
) -> tuple[float, list[dict[str, float | str]]]:
|
| 100 |
+
if embeddings_by_model is None and is_modal_enabled():
|
| 101 |
+
score, pairwise = modal_score_red_with_pairwise(
|
| 102 |
+
selected_stimuli, submission_id=submission_id, submitter=submitter,
|
| 103 |
+
)
|
| 104 |
+
formatted = [
|
| 105 |
+
{"Model A": item["model_a"], "Model B": item["model_b"], "CKA": _format_score(item["cka"])}
|
| 106 |
+
for item in pairwise
|
| 107 |
+
]
|
| 108 |
+
return float(score), formatted
|
| 109 |
+
|
| 110 |
+
if embeddings_by_model is None:
|
| 111 |
+
embeddings_by_model = get_dummy_model_embeddings()
|
| 112 |
+
if stimuli_catalog is None:
|
| 113 |
+
stimuli_catalog = list_dummy_stimuli()
|
| 114 |
+
|
| 115 |
+
model_names = _validate_models(embeddings_by_model.keys(), embeddings_by_model)
|
| 116 |
+
stimulus_indices = resolve_stimulus_indices(selected_stimuli, stimuli_catalog)
|
| 117 |
+
if len(stimulus_indices) < 2:
|
| 118 |
+
raise ValueError("Select at least two stimuli.")
|
| 119 |
+
|
| 120 |
+
filtered = {name: embeddings_by_model[name][stimulus_indices] for name in model_names}
|
| 121 |
+
avg_cka, pairwise = _pairwise_scores(model_names, filtered)
|
| 122 |
+
return float(1.0 - avg_cka), pairwise
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
def score_red(
|
| 126 |
+
selected_stimuli: Iterable[dict[str, str] | str],
|
| 127 |
+
*,
|
| 128 |
+
embeddings_by_model: dict[str, np.ndarray] | None = None,
|
| 129 |
+
stimuli_catalog: Iterable[dict[str, str]] | None = None,
|
| 130 |
+
) -> float:
|
| 131 |
+
score, _ = score_red_with_pairwise(
|
| 132 |
+
selected_stimuli,
|
| 133 |
+
embeddings_by_model=embeddings_by_model,
|
| 134 |
+
stimuli_catalog=stimuli_catalog,
|
| 135 |
+
)
|
| 136 |
+
return float(score)
|
src/hackathon/storage.py
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
+
import threading
|
| 6 |
+
from typing import Any, Literal
|
| 7 |
+
|
| 8 |
+
from datasets import Dataset, load_dataset
|
| 9 |
+
|
| 10 |
+
TeamName = Literal["blue", "red"]
|
| 11 |
+
|
| 12 |
+
DATA_DIR_ENV = "HACKATHON_DATA_DIR"
|
| 13 |
+
BLUE_PATH_ENV = "HACKATHON_BLUE_DATA_PATH"
|
| 14 |
+
RED_PATH_ENV = "HACKATHON_RED_DATA_PATH"
|
| 15 |
+
HF_DATASET_ENV = "HACKATHON_HF_DATASET"
|
| 16 |
+
HF_BLUE_DATASET_ENV = "HACKATHON_HF_BLUE_DATASET"
|
| 17 |
+
HF_RED_DATASET_ENV = "HACKATHON_HF_RED_DATASET"
|
| 18 |
+
HF_TOKEN_ENV = "HF_TOKEN_SUBMISSIONS"
|
| 19 |
+
HF_TOKEN_FALLBACK_ENV = "HF_TOKEN"
|
| 20 |
+
|
| 21 |
+
DEFAULT_DATA_DIR = os.environ.get(DATA_DIR_ENV, os.path.join(os.getcwd(), "hackathon-data"))
|
| 22 |
+
DEFAULT_BLUE_PATH = os.environ.get(BLUE_PATH_ENV, os.path.join(DEFAULT_DATA_DIR, "blue_submissions.json"))
|
| 23 |
+
DEFAULT_RED_PATH = os.environ.get(RED_PATH_ENV, os.path.join(DEFAULT_DATA_DIR, "red_submissions.json"))
|
| 24 |
+
|
| 25 |
+
_TEAM_PATHS = {
|
| 26 |
+
"blue": DEFAULT_BLUE_PATH,
|
| 27 |
+
"red": DEFAULT_RED_PATH,
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
_LOCK = threading.Lock()
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def _resolve_hf_dataset(team: TeamName) -> str | None:
|
| 34 |
+
dataset_name = (
|
| 35 |
+
os.environ.get(HF_BLUE_DATASET_ENV, "").strip()
|
| 36 |
+
if team == "blue"
|
| 37 |
+
else os.environ.get(HF_RED_DATASET_ENV, "").strip()
|
| 38 |
+
)
|
| 39 |
+
if dataset_name:
|
| 40 |
+
return dataset_name
|
| 41 |
+
|
| 42 |
+
legacy_dataset = os.environ.get(HF_DATASET_ENV, "").strip()
|
| 43 |
+
if legacy_dataset:
|
| 44 |
+
raise ValueError(
|
| 45 |
+
"Set HACKATHON_HF_BLUE_DATASET and HACKATHON_HF_RED_DATASET for separate datasets. "
|
| 46 |
+
f"HACKATHON_HF_DATASET is no longer supported: {legacy_dataset}"
|
| 47 |
+
)
|
| 48 |
+
return None
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
def _require_hf_token() -> str:
|
| 52 |
+
token = os.environ.get(HF_TOKEN_ENV) or os.environ.get(HF_TOKEN_FALLBACK_ENV)
|
| 53 |
+
if not token:
|
| 54 |
+
raise ValueError(
|
| 55 |
+
"HF_TOKEN_SUBMISSIONS (or HF_TOKEN) is required to access the private submissions dataset."
|
| 56 |
+
)
|
| 57 |
+
return token
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
def _load_hf_submissions(dataset_name: str, token: str) -> list[dict[str, Any]]:
|
| 61 |
+
try:
|
| 62 |
+
dataset = load_dataset(dataset_name, split="train", token=token)
|
| 63 |
+
except Exception as exc:
|
| 64 |
+
message = str(exc).lower()
|
| 65 |
+
if any(code in message for code in ("401", "403", "permission", "unauthorized", "forbidden")):
|
| 66 |
+
raise ValueError(
|
| 67 |
+
f"HF_TOKEN_SUBMISSIONS does not have access to the private dataset: {dataset_name}"
|
| 68 |
+
) from exc
|
| 69 |
+
if any(
|
| 70 |
+
text in message
|
| 71 |
+
for text in ("not found", "404", "doesn't exist", "no such dataset", "split")
|
| 72 |
+
):
|
| 73 |
+
return []
|
| 74 |
+
raise
|
| 75 |
+
return dataset.to_list()
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
def _save_hf_submissions(dataset_name: str, token: str, submissions: list[dict]) -> None:
|
| 79 |
+
dataset = Dataset.from_list(submissions)
|
| 80 |
+
dataset.push_to_hub(dataset_name, token=token, private=True)
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
def _resolve_data_path(team: TeamName, data_path: str | None) -> str:
|
| 84 |
+
if data_path:
|
| 85 |
+
return data_path
|
| 86 |
+
if team not in _TEAM_PATHS:
|
| 87 |
+
raise ValueError(f"Unknown team: {team}")
|
| 88 |
+
return _TEAM_PATHS[team]
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
def load_submissions(team: TeamName, data_path: str | None = None) -> list[dict[str, Any]]:
|
| 92 |
+
dataset_name = _resolve_hf_dataset(team)
|
| 93 |
+
if dataset_name:
|
| 94 |
+
token = _require_hf_token()
|
| 95 |
+
return _load_hf_submissions(dataset_name, token)
|
| 96 |
+
|
| 97 |
+
resolved_path = _resolve_data_path(team, data_path)
|
| 98 |
+
if not os.path.exists(resolved_path):
|
| 99 |
+
return []
|
| 100 |
+
|
| 101 |
+
with _LOCK:
|
| 102 |
+
with open(resolved_path, "r") as f:
|
| 103 |
+
data = json.load(f)
|
| 104 |
+
|
| 105 |
+
if not isinstance(data, list):
|
| 106 |
+
raise ValueError(f"Expected a list in {resolved_path}.")
|
| 107 |
+
|
| 108 |
+
return data
|
| 109 |
+
|
| 110 |
+
|
| 111 |
+
def save_submissions(
|
| 112 |
+
team: TeamName,
|
| 113 |
+
submissions: list[dict[str, Any]],
|
| 114 |
+
data_path: str | None = None,
|
| 115 |
+
) -> None:
|
| 116 |
+
dataset_name = _resolve_hf_dataset(team)
|
| 117 |
+
if dataset_name:
|
| 118 |
+
token = _require_hf_token()
|
| 119 |
+
_save_hf_submissions(dataset_name, token, submissions)
|
| 120 |
+
return
|
| 121 |
+
|
| 122 |
+
resolved_path = _resolve_data_path(team, data_path)
|
| 123 |
+
data_dir = os.path.dirname(resolved_path)
|
| 124 |
+
if data_dir:
|
| 125 |
+
os.makedirs(data_dir, exist_ok=True)
|
| 126 |
+
|
| 127 |
+
tmp_path = f"{resolved_path}.tmp"
|
| 128 |
+
with _LOCK:
|
| 129 |
+
with open(tmp_path, "w") as f:
|
| 130 |
+
json.dump(submissions, f, indent=2)
|
| 131 |
+
os.replace(tmp_path, resolved_path)
|
| 132 |
+
|
| 133 |
+
|
| 134 |
+
def append_submission(
|
| 135 |
+
team: TeamName,
|
| 136 |
+
submission: dict[str, Any],
|
| 137 |
+
data_path: str | None = None,
|
| 138 |
+
) -> list[dict[str, Any]]:
|
| 139 |
+
dataset_name = _resolve_hf_dataset(team)
|
| 140 |
+
if dataset_name:
|
| 141 |
+
token = _require_hf_token()
|
| 142 |
+
with _LOCK:
|
| 143 |
+
submissions = _load_hf_submissions(dataset_name, token)
|
| 144 |
+
submissions.append(submission)
|
| 145 |
+
_save_hf_submissions(dataset_name, token, submissions)
|
| 146 |
+
return submissions
|
| 147 |
+
|
| 148 |
+
submissions = load_submissions(team, data_path)
|
| 149 |
+
submissions.append(submission)
|
| 150 |
+
save_submissions(team, submissions, data_path)
|
| 151 |
+
return submissions
|
src/hackathon/validation.py
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import json
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from typing import Iterable
|
| 6 |
+
|
| 7 |
+
from src.hackathon.data import list_dummy_models, list_dummy_stimuli, stimulus_key
|
| 8 |
+
|
| 9 |
+
MODEL_REGISTRY_ENV = "HACKATHON_MODEL_REGISTRY"
|
| 10 |
+
BLUE_MODEL_REGISTRY_ENV = "HACKATHON_BLUE_MODEL_REGISTRY"
|
| 11 |
+
RED_MODEL_REGISTRY_ENV = "HACKATHON_RED_MODEL_REGISTRY"
|
| 12 |
+
STIMULI_CATALOG_ENV = "HACKATHON_STIMULI_CATALOG"
|
| 13 |
+
BLUE_STIMULI_CATALOG_ENV = "HACKATHON_BLUE_STIMULI_CATALOG"
|
| 14 |
+
|
| 15 |
+
BLUE_TEAM_REQUIRED_MODELS = 20
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def _ensure_unique(values: list[str], label: str) -> None:
|
| 19 |
+
if len(values) != len(set(values)):
|
| 20 |
+
raise ValueError(f"{label} must be unique.")
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def _load_json(path: Path) -> object:
|
| 24 |
+
try:
|
| 25 |
+
return json.loads(path.read_text())
|
| 26 |
+
except FileNotFoundError as exc:
|
| 27 |
+
raise ValueError(f"File not found: {path}") from exc
|
| 28 |
+
except json.JSONDecodeError as exc:
|
| 29 |
+
raise ValueError(f"Invalid JSON in {path}: {exc}") from exc
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
def _parse_registry_entries(path: str | None) -> list[dict | str]:
|
| 33 |
+
"""Parse registry file into raw entries (strings or dicts)."""
|
| 34 |
+
if not path:
|
| 35 |
+
return []
|
| 36 |
+
|
| 37 |
+
data = _load_json(Path(path))
|
| 38 |
+
if isinstance(data, dict):
|
| 39 |
+
entries = data.get("models")
|
| 40 |
+
if entries is None:
|
| 41 |
+
raise ValueError("Model registry JSON must be a list or contain a 'models' list.")
|
| 42 |
+
elif isinstance(data, list):
|
| 43 |
+
entries = data
|
| 44 |
+
else:
|
| 45 |
+
raise ValueError("Model registry JSON must be a list or object.")
|
| 46 |
+
|
| 47 |
+
return entries
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def load_model_registry(path: str | None) -> set[str]:
|
| 51 |
+
if not path:
|
| 52 |
+
return set(list_dummy_models())
|
| 53 |
+
|
| 54 |
+
entries = _parse_registry_entries(path)
|
| 55 |
+
names: list[str] = []
|
| 56 |
+
for idx, entry in enumerate(entries, start=1):
|
| 57 |
+
if isinstance(entry, str):
|
| 58 |
+
name = entry.strip()
|
| 59 |
+
elif isinstance(entry, dict):
|
| 60 |
+
name = str(entry.get("model_name", "")).strip()
|
| 61 |
+
else:
|
| 62 |
+
raise ValueError(f"Model registry entry {idx} must be a string or object.")
|
| 63 |
+
|
| 64 |
+
if not name:
|
| 65 |
+
raise ValueError(f"Model registry entry {idx} is missing model_name.")
|
| 66 |
+
names.append(name)
|
| 67 |
+
|
| 68 |
+
_ensure_unique(names, "Model registry entries")
|
| 69 |
+
return set(names)
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
def load_model_registry_specs(path: str | None) -> dict[str, dict]:
|
| 73 |
+
"""Load full model specs keyed by model_name.
|
| 74 |
+
|
| 75 |
+
Returns a dict mapping model_name -> {"layer": ..., "embedding": ..., "preprocess": ...}.
|
| 76 |
+
"""
|
| 77 |
+
if not path:
|
| 78 |
+
return {}
|
| 79 |
+
|
| 80 |
+
entries = _parse_registry_entries(path)
|
| 81 |
+
specs: dict[str, dict] = {}
|
| 82 |
+
for idx, entry in enumerate(entries, start=1):
|
| 83 |
+
if not isinstance(entry, dict):
|
| 84 |
+
continue
|
| 85 |
+
name = str(entry.get("model_name", "")).strip()
|
| 86 |
+
if not name:
|
| 87 |
+
continue
|
| 88 |
+
specs[name] = {
|
| 89 |
+
"layer": str(entry.get("layer", "")).strip(),
|
| 90 |
+
"embedding": str(entry.get("embedding", "flatten")).strip(),
|
| 91 |
+
"preprocess": entry.get("preprocess", {}),
|
| 92 |
+
}
|
| 93 |
+
return specs
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
def load_stimuli_catalog(path: str | None) -> list[dict[str, str]]:
|
| 97 |
+
if not path:
|
| 98 |
+
return list_dummy_stimuli()
|
| 99 |
+
|
| 100 |
+
path_obj = Path(path)
|
| 101 |
+
if path_obj.suffix == ".jsonl":
|
| 102 |
+
lines = path_obj.read_text().splitlines()
|
| 103 |
+
entries = [json.loads(line) for line in lines if line.strip()]
|
| 104 |
+
else:
|
| 105 |
+
data = _load_json(path_obj)
|
| 106 |
+
if isinstance(data, dict):
|
| 107 |
+
entries = data.get("stimuli")
|
| 108 |
+
if entries is None:
|
| 109 |
+
raise ValueError("Stimuli catalog JSON must be a list or contain a 'stimuli' list.")
|
| 110 |
+
elif isinstance(data, list):
|
| 111 |
+
entries = data
|
| 112 |
+
else:
|
| 113 |
+
raise ValueError("Stimuli catalog JSON must be a list or object.")
|
| 114 |
+
|
| 115 |
+
stimuli: list[dict[str, str]] = []
|
| 116 |
+
for idx, entry in enumerate(entries, start=1):
|
| 117 |
+
if not isinstance(entry, dict):
|
| 118 |
+
raise ValueError(f"Stimulus entry {idx} must be an object.")
|
| 119 |
+
dataset_name = str(entry.get("dataset_name", "")).strip()
|
| 120 |
+
image_identifier = str(entry.get("image_identifier", "")).strip()
|
| 121 |
+
if not dataset_name or not image_identifier:
|
| 122 |
+
raise ValueError(f"Stimulus entry {idx} must include dataset_name and image_identifier.")
|
| 123 |
+
stimuli.append({"dataset_name": dataset_name, "image_identifier": image_identifier})
|
| 124 |
+
|
| 125 |
+
keys = [stimulus_key(stimulus) for stimulus in stimuli]
|
| 126 |
+
_ensure_unique(keys, "Stimuli catalog entries")
|
| 127 |
+
return stimuli
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
def validate_blue_submission(
|
| 131 |
+
payload: dict,
|
| 132 |
+
*,
|
| 133 |
+
model_registry: Iterable[str] | None = None,
|
| 134 |
+
registry_specs: dict[str, dict] | None = None,
|
| 135 |
+
) -> list[str]:
|
| 136 |
+
if model_registry is None:
|
| 137 |
+
model_registry = list_dummy_models()
|
| 138 |
+
registry_set = set(model_registry)
|
| 139 |
+
|
| 140 |
+
models = payload.get("models")
|
| 141 |
+
if not isinstance(models, list):
|
| 142 |
+
raise ValueError("Blue submission must include a list of models.")
|
| 143 |
+
|
| 144 |
+
names: list[str] = []
|
| 145 |
+
layer_mismatches: list[str] = []
|
| 146 |
+
missing_layers: list[str] = []
|
| 147 |
+
for idx, item in enumerate(models, start=1):
|
| 148 |
+
if isinstance(item, str):
|
| 149 |
+
name = item.strip()
|
| 150 |
+
layer_name = None
|
| 151 |
+
elif isinstance(item, dict):
|
| 152 |
+
name = str(item.get("model_name", "")).strip()
|
| 153 |
+
layer_name = str(item.get("layer_name", "")).strip() or None
|
| 154 |
+
else:
|
| 155 |
+
raise ValueError(f"Model entry {idx} must be a string or object with model_name.")
|
| 156 |
+
if not name:
|
| 157 |
+
raise ValueError(f"Model entry {idx} is missing model_name.")
|
| 158 |
+
names.append(name)
|
| 159 |
+
|
| 160 |
+
# layer_name is required when registry_specs are available
|
| 161 |
+
if registry_specs:
|
| 162 |
+
if not layer_name:
|
| 163 |
+
missing_layers.append(f"Model entry {idx} ({name}) is missing layer_name.")
|
| 164 |
+
elif name in registry_specs:
|
| 165 |
+
expected_layer = registry_specs[name].get("layer", "")
|
| 166 |
+
if layer_name != expected_layer:
|
| 167 |
+
layer_mismatches.append(
|
| 168 |
+
f"{name}: submitted layer_name '{layer_name}' "
|
| 169 |
+
f"does not match registry layer '{expected_layer}'"
|
| 170 |
+
)
|
| 171 |
+
|
| 172 |
+
_ensure_unique(names, "Model selections")
|
| 173 |
+
|
| 174 |
+
if len(names) != BLUE_TEAM_REQUIRED_MODELS:
|
| 175 |
+
raise ValueError(
|
| 176 |
+
f"Blue team submission must contain exactly {BLUE_TEAM_REQUIRED_MODELS} "
|
| 177 |
+
f"unique models, but got {len(names)}."
|
| 178 |
+
)
|
| 179 |
+
|
| 180 |
+
missing = [name for name in names if name not in registry_set]
|
| 181 |
+
if missing:
|
| 182 |
+
missing_str = ", ".join(missing)
|
| 183 |
+
raise ValueError(f"Unknown models requested: {missing_str}")
|
| 184 |
+
|
| 185 |
+
if missing_layers:
|
| 186 |
+
raise ValueError(
|
| 187 |
+
f"Missing layer_name for {len(missing_layers)} model(s):\n"
|
| 188 |
+
+ "\n".join(f" - {m}" for m in missing_layers)
|
| 189 |
+
)
|
| 190 |
+
|
| 191 |
+
if layer_mismatches:
|
| 192 |
+
raise ValueError(
|
| 193 |
+
f"Layer name mismatch for {len(layer_mismatches)} model(s):\n"
|
| 194 |
+
+ "\n".join(f" - {m}" for m in layer_mismatches)
|
| 195 |
+
)
|
| 196 |
+
|
| 197 |
+
return names
|
| 198 |
+
|
| 199 |
+
|
| 200 |
+
def validate_red_submission(
|
| 201 |
+
payload: dict,
|
| 202 |
+
*,
|
| 203 |
+
stimuli_catalog: Iterable[dict[str, str]] | None = None,
|
| 204 |
+
) -> list[str]:
|
| 205 |
+
if stimuli_catalog is None:
|
| 206 |
+
stimuli_catalog = list_dummy_stimuli()
|
| 207 |
+
|
| 208 |
+
images = payload.get("differentiating_images")
|
| 209 |
+
if not isinstance(images, list):
|
| 210 |
+
raise ValueError("Red submission must include differentiating_images.")
|
| 211 |
+
if len(images) < 2:
|
| 212 |
+
raise ValueError("Select at least two stimuli.")
|
| 213 |
+
|
| 214 |
+
keys: list[str] = []
|
| 215 |
+
for idx, item in enumerate(images, start=1):
|
| 216 |
+
if not isinstance(item, dict):
|
| 217 |
+
raise ValueError(f"Stimulus entry {idx} must be an object.")
|
| 218 |
+
dataset_name = str(item.get("dataset_name", "")).strip()
|
| 219 |
+
image_identifier = str(item.get("image_identifier", "")).strip()
|
| 220 |
+
if not dataset_name or not image_identifier:
|
| 221 |
+
raise ValueError(f"Stimulus entry {idx} must include dataset_name and image_identifier.")
|
| 222 |
+
keys.append(stimulus_key({"dataset_name": dataset_name, "image_identifier": image_identifier}))
|
| 223 |
+
|
| 224 |
+
_ensure_unique(keys, "Stimulus selections")
|
| 225 |
+
|
| 226 |
+
available = {stimulus_key(stimulus) for stimulus in stimuli_catalog}
|
| 227 |
+
missing = [key for key in keys if key not in available]
|
| 228 |
+
if missing:
|
| 229 |
+
missing_str = ", ".join(missing)
|
| 230 |
+
raise ValueError(f"Unknown stimuli requested: {missing_str}")
|
| 231 |
+
|
| 232 |
+
return keys
|
test_submissions/blue_submission.jsonl
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"model_name": "resnet18", "layer_name": "fc"}
|
| 2 |
+
{"model_name": "resnet34", "layer_name": "fc"}
|
test_submissions/red_submission.jsonl
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000001.JPEG"}
|
| 2 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000002.JPEG"}
|
| 3 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000003.JPEG"}
|
| 4 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000004.JPEG"}
|
| 5 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000005.JPEG"}
|
| 6 |
+
{"dataset_name": "imagenet_val", "image_identifier": "ILSVRC2012_val_00000006.JPEG"}
|
| 7 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/baking_sheet/01f362ca48a547c.png"}
|
| 8 |
+
{"dataset_name": "objectnet", "image_identifier": "objectnet-1.0/images/baking_sheet/03660225e3e0440.png"}
|