Spotlight v1.2: Interaktive Datensatz-Exploration zur Bildklassifizierung | von Markus Stoll | Juni 2023

0
29


Wir freuen uns, die Veröffentlichung von bekannt zu geben Renumics Spotlight v1.2 auf GitHubwas eine verbesserte Unterstützung für bringt Bildklassifizierungsdatensätze von Hugging Face:

Cifar10-Datensatz [1] mit Einbettungen visualisiert mit github.com/renumics/spotlight — Screenshot von der Demo unter Huggingface.co/spaces/renumics/cifar10-embeddings

Hier ist zunächst ein Codeausschnitt, der Ihnen den Einstieg in Highlight mithilfe des beliebten CIFAR-10 erleichtert [1] Datensatz:

import datasets
from renumics import highlight

# select any picture classification dataset from
# https://huggingface.co/datasets?task_categories=task_categories:image-classification
ds = datasets.load_dataset("cifar10", break up="prepare").prepare_for_task(
"image-classification"
)
df = ds.to_pandas()
df["label_str"] = df["labels"].apply(lambda x: ds.options["labels"].int2str(x))
dtypes = {"picture": highlight.Picture}
highlight.present(
df,
dtype=dtypes,
)

Im neuen Browserfenster können Sie den Datensatz interaktiv erkunden, indem Sie Zeilen in der Tabelle auswählen, um die entsprechenden Bilder in der Detailansicht anzuzeigen:

Cifar10-Datensatz [1] visualisiert mit github.com/renumics/spotlight

Sie können Einbettungen beispielsweise mit google/vit-base-patch16–224 erstellen [2] und bringen Sie sie ins Rampenlicht, um eine Ähnlichkeitskarte aller Bilder zu erhalten, die es ermöglicht, den Datensatz anhand von Ähnlichkeiten auszuwerten:

import datasets
from transformers import AutoFeatureExtractor, AutoModel
import torch
from renumics import highlight

ds = datasets.load_dataset("cifar10", break up="prepare").prepare_for_task(
"image-classification"
)
modelname = "google/vit-base-patch16-224"

def extract_embeddings(mannequin, feature_extractor):
machine = mannequin.machine

def pp(batch):
photographs = batch["image"]
inputs = feature_extractor(
photographs=[x.convert("RGB") for x in images], return_tensors="pt"
).to(machine)
embeddings = mannequin(**inputs).last_hidden_state[:, 0].cpu()
return {"embedding": embeddings}

return pp

# initialize huggingface mannequin
feature_extractor = AutoFeatureExtractor.from_pretrained(modelname)
mannequin = AutoModel.from_pretrained(modelname, output_hidden_states=True)

# compute embeddings
machine = "cuda" if torch.cuda.is_available() else "cpu"
extract_fn = extract_embeddings(mannequin.to(machine), feature_extractor)
updated_dataset = ds.map(extract_fn, batched=True, batch_size=24)

df = updated_dataset.to_pandas()

# visualize
df["label_str"] = df["labels"].apply(lambda x: ds.options["labels"].int2str(x))
dtypes = {
"picture": highlight.Picture,
"embedding": highlight.Embedding,
}
highlight.present(
df,
dtype=dtypes,
)

Im neuen Browserfenster können Sie den Datensatz auch anhand von Ähnlichkeiten erkunden, indem Sie interaktiv Punkte auswählen und ähnliche Bilder in der Detailansicht anzeigen. Die Berechnung der Einbettung kann einige Zeit in Anspruch nehmen. Sie können sich auch die On-line-Demo in a Hugging Face Area ansehen Hier.

Cifar10-Datensatz [1] mit Einbettungen visualisiert mit github.com/renumics/spotlight

[1] Alex Krizhevsky, Lernen mehrerer Funktionsebenen aus winzigen Bildern (2009), Universität Toronto

[2] Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, Neil Houlsby Ein Bild sagt mehr als 16 x 16 Worte: Transformatoren für die Bilderkennung im Maßstab (2020), arXiv



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here