"use client"; import { motion } from "framer-motion"; import { COLORS, VizFrame } from "./common"; /** One pretrained backbone, many downstream tasks. */ export function FoundationModels({ width = 920, height = 460, }: { width?: number; height?: number; }) { const cx = 240; const cy = height / 2; const tasks = [ { label: "Classification", sub: "image · video" }, { label: "Detection", sub: "boxes" }, { label: "Segmentation", sub: "masks · pixels" }, { label: "Captioning", sub: "image → text" }, { label: "VQA", sub: "image + question → answer" }, { label: "Robotics", sub: "perception → action" }, ]; const taskX = 580; const taskBaseY = 70; const taskStep = (height - 140) / (tasks.length - 1); return ( {/* Pretrained data column */} unlabelled data, web-scale {Array.from({ length: 8 }, (_, i) => ( ))} {/* Arrow into backbone */} pretrain self-supervised {/* Backbone */} Foundation model shared representation ViT · LLaMA · CLIP {/* Branches to tasks */} {tasks.map((t, i) => { const ty = taskBaseY + i * taskStep; return ( {t.label} {t.sub} ); })} fine-tune with little labelled data ); }