Curatrix
Referenz

Python-SDK

Das SDK ist eine dünne Schicht über der Release-Struktur: Es löst Versionen auf, prüft Prüfsummen und liefert Episoden und Frames. Alles, was es tut, geht auch mit pyarrow und einem Video-Reader.

Installation

Der Client wird über einen privaten Index verteilt. Die Zugangsdaten für den Index werden zusammen mit dem Datensatzzugang vergeben — installierbar ist das Paket also nur für Lizenznehmer.

Installation aus dem privaten Index
pip install curatrix --index-url https://pkg.curatrix.de/simple

Authentifizierung

Das SDK liest CURATRIX_API_KEY aus der Umgebung. Schlüssel sind auf die von Ihnen gehaltenen Datensätze, Versionen und Lizenzstufen beschränkt; ein Schlüssel erweitert diesen Umfang nie.

Schlüssel bereitstellen
export CURATRIX_API_KEY="ck_live_..."

Datensatz öffnen und iterieren

Episoden filtern und Frames lesen
from curatrix import Dataset

# Pin the version. Omitting it resolves to the newest licensed release,
# which makes a training run non-reproducible.
ds = Dataset.open("electrical-assembly", version="1.3.0")

print(ds.schema_version, ds.episode_count, ds.accepted_hours)

for episode in ds.episodes(outcome="failure", environment="workshop"):
    frames = episode.frames(stream="head", fps=10)  # lazy, decoded on demand
    recovery = [s for s in episode.subtasks if s.label == "recover"]
    if recovery:
        print(episode.id, len(frames), recovery[0].start_s)

Vorgeschlagene Splits verwenden

Trainings- und Evaluierungssets ohne Überschneidung der Mitwirkenden
train = ds.split("train")
evaluation = ds.split("eval")

assert set(train.contributors).isdisjoint(evaluation.contributors)

Ohne das SDK

Nichts in einem Release setzt unseren Client voraus. Die Tabellen sind Parquet, das Video ist MP4.

Ein Release nur mit pyarrow lesen
import pyarrow.parquet as pq

episodes = pq.read_table("episodes/episodes.parquet").to_pandas()
spans = pq.read_table("episodes/annotations.parquet").to_pandas()

failures = episodes[episodes.outcome == "failure"]
print(spans[spans.episode_id.isin(failures.episode_id)]
      .groupby("label").size().sort_values(ascending=False))
Nächster Schritt

Mit einem klar abgegrenzten Pilotprojekt starten

Bringen Sie eine Aufgabe mit. Im Gespräch definieren wir Aufnahmeprotokoll, Episodenumfang, Annotationsschema und Lieferformat.

Pilotprojekte starten in der Regel ab rund 25.000 €. Das ist ein Richtwert — endgültiger Umfang und Preis werden nach einem technischen Qualifizierungsgespräch festgelegt.