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:
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:
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 highlightds = 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.
[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