This was a personal project to learn medical image fine-tuning — not a clinical tool.
1from transformers import pipeline
2
3classifier = pipeline(
4 "image-classification",
5 model="Kuldeepmishra3/vit-large-skin-cancer-ham10000",
6)
7
8results = classifier("skin_image.jpg", top_k=3)
9for r in results:
10 print(f"{r['label']}: {r['score']:.2%}")
1from transformers import ViTForImageClassification, ViTImageProcessor
2from PIL import Image
3import torch
4
5model = ViTForImageClassification.from_pretrained("Kuldeepmishra3/vit-large-skin-cancer-ham10000")
6processor = ViTImageProcessor.from_pretrained("Kuldeepmishra3/vit-large-skin-cancer-ham10000")
7
8image = Image.open("skin_image.jpg").convert("RGB")
9inputs = processor(images=image, return_tensors="pt")
10
11with torch.no_grad():
12 logits = model(**inputs).logits
13
14predicted_class = logits.argmax(-1).item()
15print(model.config.id2label[predicted_class])
Melanoma was the hardest — it frequently gets confused with Melanocytic Nevi, which is a known challenge in dermoscopy even for trained dermatologists.
Augmentations used during training: random horizontal/vertical flip, rotation up to 30°, color jitter. No augmentation at validation time.
HAM10000 (Human Against Machine with 10000 training images) is a large collection of multi-source dermatoscopic images of common pigmented skin lesions. The dataset has significant class imbalance — Melanocytic Nevi makes up around 67% of all samples.