data-label-factory / web /lib /types.ts
waltgrace's picture
Initial release: data-label-factory v0.1.0
4cda727 verified
// Types matching pod_label.py output format
export type Bbox = {
x1: number;
y1: number;
x2: number;
y2: number;
x1_norm: number;
y1_norm: number;
x2_norm: number;
y2_norm: number;
cx_norm: number;
cy_norm: number;
w_norm: number;
h_norm: number;
area_fraction: number;
annotation_id?: number; // links to verified.json verdict (when present)
};
// VLM verdict from verify_vlm.py output
export type VlmVerdict = {
annotation_id: number;
image_id: number;
image_file: string;
category_name: string;
bbox: number[]; // [x, y, w, h]
verdict: "YES" | "NO" | "UNSURE";
reasoning: string;
elapsed: number;
};
export type VerifiedRun = {
run_name: string;
model: string;
prompt_version: string;
crop_padding: number;
summary: {
completed: number;
total: number;
yes: number;
no: number;
unsure: number;
yes_rate: number;
elapsed_seconds: number;
avg_seconds_per_bbox: number;
};
annotations: VlmVerdict[];
};
export type QueryResult = {
bboxes: Bbox[];
count: number;
elapsed?: number;
error?: string;
};
export type ImageResult = {
width: number;
height: number;
queries: Record<string, QueryResult>;
error?: string;
};
export type LabelPartial = {
completed: number;
results: Record<string, ImageResult>;
};
// Verdicts: human review state stored alongside Falcon labels
export type BboxVerdict = "approved" | "rejected" | "unsure";
export type ImageReview = {
image_path: string; // R2 key (e.g. "raw/positive/fiber_spool_drone/foo.jpg")
bucket: string;
width: number;
height: number;
bboxes: Array<Bbox & {
query: string;
verdict?: BboxVerdict; // human verdict
vlm_verdict?: "YES" | "NO" | "UNSURE"; // Qwen verdict from verify_vlm.py
vlm_reasoning?: string;
note?: string;
}>;
image_verdict?: "approved" | "rejected" | "unsure"; // overall image-level call
reviewed_at?: string;
};