Downloads · 30 days
40
34% of all-time downloads
Kentucky-Open-Science/DALE-CT-1S-v2
DALE-CT-1S-v2 is a image feature extraction model from Kentucky-Open-Science. Use it for the image feature extraction task on the model card, and read the license before you ship it in a product. It is set up for timm. The card lists the license as cc-by-nc-sa-4.0.
Authors: Evan W. Damron (ORCID 0009-0009-1104-3202) · Mahmut S. Gokmen · Mitchell A. Klusty · Caroline N. Leach · Emily B. Collier · V. K. Cody Bumgardner — Institute for Biomedical Informatics Center for Applied AI (…
Downloads · 30 days
40
34% of all-time downloads
All-time downloads
116
Public
Parameters
304M
1.2 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.2 GB · 100%
From the Hugging Face model README
Authors: Evan W. Damron (ORCID 0009-0009-1104-3202) · Mahmut S. Gokmen · Mitchell A. Klusty · Caroline N. Leach · Emily B. Collier · V. K. Cody Bumgardner — Institute for Biomedical Informatics Center for Applied AI (IBI-CAAI), University of Kentucky
This repository hosts the backbone weights for DALE-CT-1S-v2 (Depth-Aware
Latent-Euclidean Computed Tomography), a foundational Vision Transformer
(ViT-Large) trained from scratch on chest CT with the LeJEPA objective plus a
single-source (1S) dense auxiliary supervision head over the 118
TotalSegmentator anatomical classes, applied to both the [CLS] token and the
patch tokens. The ReXGroundingCT abnormality head is held inert, so this model
isolates the contribution of anatomical supervision against
DALE-CT-2S.
This is the single-source configuration benchmarked in the DALE-CT paper. It
supersedes the earlier
DALE-CT-1S (patch-14, [CLS]-only
supervision), which remains available as the backbone used by Ker-VLJEPA-3B.
import timm
model = timm.create_model("hf-hub:Kentucky-Open-Science/DALE-CT-1S-v2", pretrained=True)
model.eval()
Inputs must be Hounsfield-Unit slices preprocessed exactly as during training (clipping + z-score; see the full example below).
All numbers are our own head-to-head measurements: every model (including the public 3D baselines in the paper) is probed under one linear-probing MIL protocol on shared splits (CT-RATE n = 992 test scans; RAD-ChestCT n = 360). See the paper for the full protocol and confidence intervals.
| Model | CT-RATE Macro AUROC | RAD-ChestCT AUROC (frozen / retrained probe) | Role |
|---|---|---|---|
| DALE-CT-2S | 0.8247 | 0.6252 / 0.7389 | Best in-domain (CT-RATE) |
| DALE-CT-1S-v2 | 0.8098 | 0.6284 / 0.7334 | Anatomical (TotalSegmentator) dense supervision only |
| DALE-CT-0 | 0.8057 | 0.5946 / 0.7477 | Pure self-supervised, CT-RATE |
| Finetuned DINOv2 | 0.7953 | 0.6252 / 0.7550 | Continual-pretraining baseline — strongest dense (patch-level) features |
Paper: DALE-CT: Depth-Aware 2D Slice Encoders Learn an Anatomical World Model of Chest CT · Code: Kentucky-Open-Science/DALE-CT · Benchmark: Kentucky-Open-Science/chest-ct-foundation-model-benchmark
vit_large_patch14_dinov2 (via timm), randomly initialized and trained from scratch with patch_size=16, img_size=512, in_chans=1, dynamic_img_size=True.[CLS] and patch tokens. ReXGroundingCT is inert for this variant.[-997.0, 888.0], mapped to [0, 1], then z-score normalized (dataset mean -142.39, std 360.97 in HU space).bf16, 8×H100 GPUs; 66,667 iterations at global batch 384 (48/GPU), 6,667-step warmup, peak LR 3.0e-4 decaying to 3.0e-5 — budget-matched to DALE-CT-0/2S (25.6M images), so the 0 → 1S-v2 → 2S ladder is architecture-, patch-size-, and budget-controlled.L_LeJEPA + 0.1 · L_Aux, where L_Aux is BCE-with-logits over TotalSegmentator soft-coverage targets on [CLS] and patch tokens, averaged over global/local crops.import torch, numpy as np, timm
model = timm.create_model("hf-hub:Kentucky-Open-Science/DALE-CT-1S-v2", pretrained=True)
model.eval()
clip_min, clip_max, mean_hu, std_hu = -997.0, 888.0, -142.39, 360.97
rng = clip_max - clip_min
norm_mean, norm_std = (mean_hu - clip_min) / rng, std_hu / rng
hu_slice = np.random.uniform(-1000, 1000, size=(512, 512)) # replace with real HU data
x = torch.from_numpy(hu_slice).float().clamp(clip_min, clip_max)
x = ((x - clip_min) / rng - norm_mean) / norm_std
x = x[None, None] # (1, 1, H, W)
with torch.no_grad():
cls_feature = model(x) # (1, 1024)
tokens = model.forward_features(x) # (1, 1 + N_patches, 1024)
If you use this model, please cite the DALE-CT paper (https://arxiv.org/abs/2606.07775).