Spaces:
Running on Zero
Running on Zero
fix: clean up duplicate closing tags at end of showcase container in index.html
Browse files- index.html +140 -142
index.html
CHANGED
|
@@ -201,7 +201,7 @@
|
|
| 201 |
</span>
|
| 202 |
</a>
|
| 203 |
|
| 204 |
-
<span class="px-3 py-1 text-xs font-semibold rounded bg-
|
| 205 |
<span class="h-1.5 w-1.5 rounded-full bg-nvidia-brand animate-pulse"></span>
|
| 206 |
ZeroGPU Server
|
| 207 |
</span>
|
|
@@ -211,128 +211,203 @@
|
|
| 211 |
<!-- MAIN MINIMAL LAYOUT CONTAINER -->
|
| 212 |
<main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 pt-8 lg:pt-10 space-y-8">
|
| 213 |
|
| 214 |
-
<
|
|
|
|
| 215 |
|
| 216 |
-
<!--
|
| 217 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
|
| 219 |
-
<!-- Main
|
| 220 |
-
<div class="space-y-
|
| 221 |
<span class="text-[9px] font-bold text-nvidia-brand uppercase tracking-widest block font-mono">AI Research from NVIDIA</span>
|
| 222 |
-
<h1 class="font-outfit text-
|
| 223 |
Locate<span class="text-nvidia-brand font-light">Anything</span>
|
| 224 |
</h1>
|
| 225 |
-
<p class="text-
|
| 226 |
-
|
| 227 |
</p>
|
| 228 |
</div>
|
| 229 |
|
| 230 |
-
<!--
|
| 231 |
-
<div class="glass-panel rounded-2xl p-
|
| 232 |
-
<div class="grid grid-cols-2 gap-
|
| 233 |
|
| 234 |
<!-- Media Type toggle selection -->
|
| 235 |
-
<div class="space-y-1
|
| 236 |
-
<label class="text-[
|
| 237 |
-
<div class="grid grid-cols-2 gap-
|
| 238 |
-
<button id="media-type-image" class="py-1
|
| 239 |
Image
|
| 240 |
</button>
|
| 241 |
-
<button id="media-type-video" class="py-1
|
| 242 |
Video
|
| 243 |
</button>
|
| 244 |
</div>
|
| 245 |
</div>
|
| 246 |
|
| 247 |
<!-- Task Selector -->
|
| 248 |
-
<div class="space-y-1
|
| 249 |
-
<label for="task-type" class="text-[
|
| 250 |
-
<select id="task-type" class="w-full bg-black/40 border border-white/5 rounded-
|
| 251 |
-
<option value="Detection">Detection
|
| 252 |
-
<option value="Grounding">Grounding
|
| 253 |
-
<option value="OCR">OCR
|
| 254 |
-
<option value="GUI">GUI
|
| 255 |
-
<option value="Pointing">Pointing
|
| 256 |
</select>
|
| 257 |
</div>
|
| 258 |
|
| 259 |
</div>
|
| 260 |
|
| 261 |
-
<!--
|
| 262 |
-
<
|
| 263 |
-
<
|
| 264 |
-
<span id="btn-text">Run Inference</span>
|
| 265 |
-
</button>
|
| 266 |
-
|
| 267 |
-
<!-- Advanced parameters sliders (Collapsible details) -->
|
| 268 |
-
<details class="group border-t border-white/5 pt-4">
|
| 269 |
-
<summary class="list-none flex justify-between items-center cursor-pointer select-none text-[10px] font-bold text-slate-400 tracking-wider uppercase hover:text-slate-200 transition-colors">
|
| 270 |
<span>⚙️ Advanced parameters</span>
|
| 271 |
-
<svg class="h-3
|
| 272 |
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
|
| 273 |
</svg>
|
| 274 |
</summary>
|
| 275 |
-
<div class="space-y-
|
| 276 |
|
| 277 |
<!-- Inference Mode Selection -->
|
| 278 |
-
<div class="space-y-1
|
| 279 |
-
<label for="inference-mode" class="text-[
|
| 280 |
-
<select id="inference-mode" class="w-full bg-black/40 border border-white/5 rounded-
|
| 281 |
-
<option value="hybrid">Hybrid
|
| 282 |
-
<option value="fast">Fast
|
| 283 |
-
<option value="slow">Slow
|
| 284 |
</select>
|
| 285 |
</div>
|
| 286 |
|
| 287 |
<!-- Short side resize cap -->
|
| 288 |
-
<div class="space-y-1
|
| 289 |
-
<label for="short-size" class="text-[
|
| 290 |
-
<input type="number" id="short-size" placeholder="Auto-Cap (1024)" class="w-full bg-black/40 border border-white/5 rounded-
|
| 291 |
</div>
|
| 292 |
|
| 293 |
<!-- Temp -->
|
| 294 |
-
<div class="space-y-1
|
| 295 |
-
<div class="flex justify-between text-[
|
| 296 |
<span>Temperature</span>
|
| 297 |
<span id="temp-val" class="font-mono text-nvidia-brand">0.7</span>
|
| 298 |
</div>
|
| 299 |
-
<input type="range" id="temp" min="0.1" max="2.0" step="0.1" value="0.7" class="w-full h-
|
| 300 |
</div>
|
| 301 |
|
| 302 |
<!-- Top P -->
|
| 303 |
-
<div class="space-y-1
|
| 304 |
-
<div class="flex justify-between text-[
|
| 305 |
<span>Top P</span>
|
| 306 |
<span id="topp-val" class="font-mono text-nvidia-brand">0.9</span>
|
| 307 |
</div>
|
| 308 |
-
<input type="range" id="topp" min="0.05" max="1.0" step="0.05" value="0.9" class="w-full h-
|
| 309 |
</div>
|
| 310 |
|
| 311 |
<!-- Top K -->
|
| 312 |
-
<div class="space-y-1
|
| 313 |
-
<div class="flex justify-between text-[
|
| 314 |
<span>Top K</span>
|
| 315 |
<span id="topk-val" class="font-mono text-nvidia-brand">20</span>
|
| 316 |
</div>
|
| 317 |
-
<input type="range" id="topk" min="1" max="100" step="1" value="20" class="w-full h-
|
| 318 |
</div>
|
| 319 |
|
| 320 |
<!-- Video Frames (Only displayed for Video mode) -->
|
| 321 |
-
<div id="video-frames-wrapper" class="space-y-1
|
| 322 |
-
<div class="flex justify-between text-[
|
| 323 |
<span>Max Video Frames</span>
|
| 324 |
<span id="frames-val" class="font-mono text-nvidia-brand">4</span>
|
| 325 |
</div>
|
| 326 |
-
<input type="range" id="max-frames" min="1" max="10" step="1" value="4" class="w-full h-
|
| 327 |
</div>
|
| 328 |
|
| 329 |
</div>
|
| 330 |
</details>
|
| 331 |
</div>
|
| 332 |
|
| 333 |
-
<!--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 334 |
<div class="glass-panel rounded-2xl p-5 space-y-4">
|
| 335 |
-
<span class="text-[9px] font-bold text-slate-400 uppercase tracking-widest block">🖼️ Interactive Quick Sandbox</span>
|
| 336 |
<div class="grid grid-cols-4 gap-3">
|
| 337 |
|
| 338 |
<!-- Card 1 -->
|
|
@@ -366,93 +441,16 @@
|
|
| 366 |
<div class="glass-panel rounded-2xl p-4 text-[10px] text-slate-500 font-mono flex justify-between items-center select-none bg-black/40">
|
| 367 |
<span class="truncate block">compiled: <span id="raw-prompt-preview" class="text-slate-400"></span></span>
|
| 368 |
</div>
|
|
|
|
| 369 |
|
| 370 |
-
<
|
| 371 |
-
|
| 372 |
-
<!-- RIGHT PANEL: Full Showcase Media Sandbox (Col Span: 7) -->
|
| 373 |
-
<section class="lg:col-span-7 space-y-6">
|
| 374 |
-
|
| 375 |
-
<!-- GTC Polygon Frame Workspace -->
|
| 376 |
-
<div class="gtc-polygon-wrapper w-full aspect-video min-h-[360px] sm:min-h-[440px] relative">
|
| 377 |
-
<div class="gtc-neon-border"></div>
|
| 378 |
-
<div class="gtc-inner-box p-0 flex flex-col relative"> <!-- Full-bleed inner box -->
|
| 379 |
-
|
| 380 |
-
<!-- Floating Glassmorphic Workspace Status -->
|
| 381 |
-
<div class="absolute bottom-4 right-4 z-30 bg-black/60 backdrop-blur px-2.5 py-1 rounded-lg border border-white/10 text-[9px] text-slate-400 font-mono select-none pointer-events-none">
|
| 382 |
-
status: <span id="workspace-status" class="text-slate-200 font-semibold">No Media Loaded</span>
|
| 383 |
-
</div>
|
| 384 |
-
|
| 385 |
-
<!-- Dynamic Canvas Box Inside Polygon Frame -->
|
| 386 |
-
<div class="flex-1 relative flex items-center justify-center overflow-hidden min-h-0 z-20">
|
| 387 |
-
|
| 388 |
-
<!-- 1. Floating Glassmorphic Categories Search Bar Overlay (SAM 3 Keynote Feature) -->
|
| 389 |
-
<div class="absolute top-5 left-4 right-4 z-30 flex justify-center pointer-events-none">
|
| 390 |
-
<div class="sam-input-bar rounded-xl px-4 py-2.5 flex items-center gap-2.5 w-full max-w-md pointer-events-auto">
|
| 391 |
-
<svg class="h-4.5 w-4.5 text-nvidia-brand" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
|
| 392 |
-
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
|
| 393 |
-
</svg>
|
| 394 |
-
<input type="text" id="categories" value="car, bus, person, potted plant" placeholder="Describe objects to locate (e.g. car, person)..." class="bg-transparent border-none outline-none focus:outline-none w-full text-slate-100 placeholder-slate-600 font-semibold text-xs">
|
| 395 |
-
<button id="clear-search-btn" class="text-slate-500 hover:text-white transition-colors p-0.5 rounded-full hover:bg-white/5">
|
| 396 |
-
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
|
| 397 |
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
|
| 398 |
-
</svg>
|
| 399 |
-
</button>
|
| 400 |
-
</div>
|
| 401 |
-
</div>
|
| 402 |
-
|
| 403 |
-
<!-- Input Media Upload Zone (Initially shown if no media loaded) -->
|
| 404 |
-
<div id="drop-zone" class="absolute inset-0 border-none rounded-none bg-black/40 flex flex-col items-center justify-center p-4 text-center cursor-pointer transition-all">
|
| 405 |
-
<div id="upload-prompt" class="space-y-3 pt-8"> <!-- Offset for search bar -->
|
| 406 |
-
<div class="inline-flex h-11 w-11 rounded-full bg-white/5 items-center justify-center text-slate-400">
|
| 407 |
-
<svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.2">
|
| 408 |
-
<path stroke-linecap="round" stroke-linejoin="round" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" />
|
| 409 |
-
</svg>
|
| 410 |
-
</div>
|
| 411 |
-
<div>
|
| 412 |
-
<p class="text-xs font-bold text-slate-200">Drag & drop your file here</p>
|
| 413 |
-
<p class="text-[10px] text-slate-500 mt-1">or click to browse local folders</p>
|
| 414 |
-
</div>
|
| 415 |
-
</div>
|
| 416 |
-
|
| 417 |
-
<!-- Dynamic Preview Media Rendering inside Hexagon Frame -->
|
| 418 |
-
<img id="preview-image" src="" alt="Input Preview" class="hidden max-h-full max-w-full rounded-lg object-contain shadow-lg">
|
| 419 |
-
<video id="preview-video" src="" controls class="hidden max-h-full max-w-full rounded-lg shadow-lg"></video>
|
| 420 |
-
|
| 421 |
-
<!-- File Upload Trigger -->
|
| 422 |
-
<input type="file" id="media-file-input" accept="image/*,video/*" class="absolute inset-0 opacity-0 cursor-pointer">
|
| 423 |
-
</div>
|
| 424 |
-
|
| 425 |
-
<!-- Inference Output Zone (Takes over when result loaded) -->
|
| 426 |
-
<div class="absolute inset-0 pointer-events-none flex items-center justify-center">
|
| 427 |
-
<img id="output-image" src="" alt="Inference Output" class="hidden max-h-full max-w-full rounded-lg object-contain shadow-lg pointer-events-auto">
|
| 428 |
-
<video id="output-video" src="" controls class="hidden max-h-full max-w-full rounded-lg shadow-lg pointer-events-auto"></video>
|
| 429 |
-
</div>
|
| 430 |
-
|
| 431 |
-
<!-- Processing Overlays -->
|
| 432 |
-
<div id="processing-overlay" class="absolute inset-0 bg-black/85 backdrop-blur-sm hidden flex-col items-center justify-center gap-4 z-50">
|
| 433 |
-
<div class="flex gap-1.5">
|
| 434 |
-
<span class="dot-pulse inline-block h-3 w-3 rounded-full bg-nvidia-brand" style="animation-delay: 0s;"></span>
|
| 435 |
-
<span class="dot-pulse inline-block h-3 w-3 rounded-full bg-emerald-400" style="animation-delay: 0.2s;"></span>
|
| 436 |
-
<span class="dot-pulse inline-block h-3 w-3 rounded-full bg-emerald-300" style="animation-delay: 0.4s;"></span>
|
| 437 |
-
</div>
|
| 438 |
-
<div class="text-center space-y-1">
|
| 439 |
-
<p id="processing-status" class="text-[11px] font-bold tracking-widest text-slate-200 uppercase">Executing Model...</p>
|
| 440 |
-
<p class="text-[9px] text-slate-500 uppercase tracking-wider font-mono">Gradio Queue Engine Active</p>
|
| 441 |
-
</div>
|
| 442 |
-
</div>
|
| 443 |
-
|
| 444 |
-
</div>
|
| 445 |
-
|
| 446 |
-
</div>
|
| 447 |
-
</div>
|
| 448 |
-
|
| 449 |
-
<!-- PERFORMANCE ANALYTICS & LOG CONSOLE -->
|
| 450 |
<div class="glass-panel rounded-2xl p-5 space-y-4">
|
| 451 |
<div class="grid grid-cols-1 sm:grid-cols-12 gap-4 items-stretch">
|
| 452 |
|
| 453 |
<!-- Performance Statistics Metrics Console (Grid: 5) -->
|
| 454 |
<div class="sm:col-span-5 bg-black/60 rounded-xl p-4 border border-white/5 font-mono text-[10px] text-slate-300 space-y-2 leading-normal">
|
| 455 |
-
<div class="text-nvidia-brand font-bold border-b border-white/5 pb-1 mb-1.5 uppercase tracking-widest text-[9px]">📊 Metrics Log</div>
|
| 456 |
<div class="flex justify-between"><span class="text-slate-500">Status:</span> <span id="meta-status" class="text-emerald-500 font-semibold">Idle</span></div>
|
| 457 |
<div class="flex justify-between"><span class="text-slate-500">Tokens/Frames:</span> <span id="meta-tokens">-</span></div>
|
| 458 |
<div class="flex justify-between"><span class="text-slate-500">Detections:</span> <span id="meta-boxes">-</span></div>
|
|
@@ -476,10 +474,10 @@
|
|
| 476 |
<!-- Optional dynamic trace wrapper -->
|
| 477 |
<div id="rich-trace-log" class="hidden border-t border-white/5 pt-3"></div>
|
| 478 |
</div>
|
| 479 |
-
|
| 480 |
-
</section>
|
| 481 |
|
| 482 |
</div>
|
|
|
|
| 483 |
</main>
|
| 484 |
|
| 485 |
<!-- Gradio client connection & app runtime logic -->
|
|
|
|
| 201 |
</span>
|
| 202 |
</a>
|
| 203 |
|
| 204 |
+
<span class="px-3 py-1 text-xs font-semibold rounded bg-nvidia-brand/10 text-nvidia-brand border border-nvidia-brand/20 flex items-center gap-1.5 font-mono">
|
| 205 |
<span class="h-1.5 w-1.5 rounded-full bg-nvidia-brand animate-pulse"></span>
|
| 206 |
ZeroGPU Server
|
| 207 |
</span>
|
|
|
|
| 211 |
<!-- MAIN MINIMAL LAYOUT CONTAINER -->
|
| 212 |
<main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 pt-8 lg:pt-10 space-y-8">
|
| 213 |
|
| 214 |
+
<!-- Giant Showcase Container (SAM 3 Full-Bleed Style) -->
|
| 215 |
+
<div class="relative w-full rounded-[32px] overflow-hidden border border-white/5 bg-[#080a0e] shadow-2xl h-[580px] lg:h-[640px] flex select-none">
|
| 216 |
|
| 217 |
+
<!-- 1. Background Media Canvas (Coverage Layer) -->
|
| 218 |
+
<div class="absolute inset-0 z-0 flex items-center justify-center bg-black/40">
|
| 219 |
+
<!-- Drop Zone (Initially shown) -->
|
| 220 |
+
<div id="drop-zone" class="absolute inset-0 border-none rounded-none bg-transparent flex flex-col items-center justify-center p-4 text-center cursor-pointer transition-all z-10">
|
| 221 |
+
<div id="upload-prompt" class="space-y-3 opacity-60 hover:opacity-100 transition-opacity">
|
| 222 |
+
<div class="inline-flex h-12 w-12 rounded-full bg-white/5 items-center justify-center text-slate-300">
|
| 223 |
+
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
| 224 |
+
<path stroke-linecap="round" stroke-linejoin="round" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" />
|
| 225 |
+
</svg>
|
| 226 |
+
</div>
|
| 227 |
+
<div>
|
| 228 |
+
<p class="text-xs font-bold text-slate-200">Drag & drop your file here</p>
|
| 229 |
+
<p class="text-[10px] text-slate-500 mt-1">or click to browse local folders</p>
|
| 230 |
+
</div>
|
| 231 |
+
</div>
|
| 232 |
+
|
| 233 |
+
<!-- Dynamic Preview Media -->
|
| 234 |
+
<img id="preview-image" src="" alt="Input Preview" class="hidden max-h-full max-w-full rounded-2xl object-contain shadow-2xl z-20 border border-white/5">
|
| 235 |
+
<video id="preview-video" src="" controls class="hidden max-h-full max-w-full rounded-2xl object-contain shadow-2xl z-20 border border-white/5"></video>
|
| 236 |
+
|
| 237 |
+
<!-- File Input -->
|
| 238 |
+
<input type="file" id="media-file-input" accept="image/*,video/*" class="absolute inset-0 opacity-0 cursor-pointer z-30">
|
| 239 |
+
</div>
|
| 240 |
+
|
| 241 |
+
<!-- Inference Output Zone -->
|
| 242 |
+
<div class="absolute inset-0 pointer-events-none flex items-center justify-center z-20">
|
| 243 |
+
<img id="output-image" src="" alt="Inference Output" class="hidden max-h-full max-w-full rounded-2xl object-contain shadow-2xl pointer-events-auto border border-white/5">
|
| 244 |
+
<video id="output-video" src="" controls class="hidden max-h-full max-w-full rounded-2xl object-contain shadow-2xl pointer-events-auto border border-white/5"></video>
|
| 245 |
+
</div>
|
| 246 |
+
|
| 247 |
+
<!-- Processing Overlays -->
|
| 248 |
+
<div id="processing-overlay" class="absolute inset-0 bg-black/85 backdrop-blur-sm hidden flex-col items-center justify-center gap-4 z-40">
|
| 249 |
+
<div class="flex gap-1.5">
|
| 250 |
+
<span class="dot-pulse inline-block h-3 w-3 rounded-full bg-nvidia-brand" style="animation-delay: 0s;"></span>
|
| 251 |
+
<span class="dot-pulse inline-block h-3 w-3 rounded-full bg-emerald-400" style="animation-delay: 0.2s;"></span>
|
| 252 |
+
<span class="dot-pulse inline-block h-3 w-3 rounded-full bg-emerald-300" style="animation-delay: 0.4s;"></span>
|
| 253 |
+
</div>
|
| 254 |
+
<div class="text-center space-y-1">
|
| 255 |
+
<p id="processing-status" class="text-[11px] font-bold tracking-widest text-slate-200 uppercase">Executing Model...</p>
|
| 256 |
+
<p class="text-[9px] text-slate-500 uppercase tracking-wider font-mono">ZeroGPU Queue Active</p>
|
| 257 |
+
</div>
|
| 258 |
+
</div>
|
| 259 |
+
</div>
|
| 260 |
+
|
| 261 |
+
<!-- 2. Left Floating Overlay Panel (Title, simple selectors, accordion, and action buttons) -->
|
| 262 |
+
<div class="absolute left-6 lg:left-12 top-8 bottom-8 z-30 flex flex-col justify-between max-w-sm sm:max-w-md pointer-events-none">
|
| 263 |
|
| 264 |
+
<!-- Main Header Overlay text -->
|
| 265 |
+
<div class="space-y-3 pt-4 pointer-events-auto bg-gradient-to-b from-[#080a0e]/90 via-[#080a0e]/60 to-transparent p-4 rounded-2xl">
|
| 266 |
<span class="text-[9px] font-bold text-nvidia-brand uppercase tracking-widest block font-mono">AI Research from NVIDIA</span>
|
| 267 |
+
<h1 class="font-outfit text-3xl sm:text-5xl font-black tracking-tight text-white leading-none">
|
| 268 |
Locate<span class="text-nvidia-brand font-light">Anything</span>
|
| 269 |
</h1>
|
| 270 |
+
<p class="text-xs text-slate-400 max-w-sm font-medium leading-relaxed">
|
| 271 |
+
NVIDIA's advanced 3B vision-language model. Locate any object, UI target, or text in images and videos with natural language.
|
| 272 |
</p>
|
| 273 |
</div>
|
| 274 |
|
| 275 |
+
<!-- Setup Glass Card Controls -->
|
| 276 |
+
<div class="glass-panel rounded-2xl p-4 space-y-4 pointer-events-auto max-w-xs shadow-2xl">
|
| 277 |
+
<div class="grid grid-cols-2 gap-3">
|
| 278 |
|
| 279 |
<!-- Media Type toggle selection -->
|
| 280 |
+
<div class="space-y-1">
|
| 281 |
+
<label class="text-[8px] font-bold text-slate-400 uppercase tracking-widest">Media Type</label>
|
| 282 |
+
<div class="grid grid-cols-2 gap-0.5 bg-black/40 p-0.5 rounded-lg border border-white/5 text-center">
|
| 283 |
+
<button id="media-type-image" class="py-1 rounded-md font-semibold text-[9px] transition-all bg-nvidia-brand text-black font-outfit font-black shadow shadow-nvidia-brand/10">
|
| 284 |
Image
|
| 285 |
</button>
|
| 286 |
+
<button id="media-type-video" class="py-1 rounded-md font-semibold text-[9px] text-slate-400 hover:text-slate-200 transition-all">
|
| 287 |
Video
|
| 288 |
</button>
|
| 289 |
</div>
|
| 290 |
</div>
|
| 291 |
|
| 292 |
<!-- Task Selector -->
|
| 293 |
+
<div class="space-y-1">
|
| 294 |
+
<label for="task-type" class="text-[8px] font-bold text-slate-400 uppercase tracking-widest">Task Type</label>
|
| 295 |
+
<select id="task-type" class="w-full bg-black/40 border border-white/5 rounded-lg px-2 py-1 text-[9px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200 font-semibold">
|
| 296 |
+
<option value="Detection">Detection</option>
|
| 297 |
+
<option value="Grounding">Grounding</option>
|
| 298 |
+
<option value="OCR">OCR</option>
|
| 299 |
+
<option value="GUI">GUI</option>
|
| 300 |
+
<option value="Pointing">Pointing</option>
|
| 301 |
</select>
|
| 302 |
</div>
|
| 303 |
|
| 304 |
</div>
|
| 305 |
|
| 306 |
+
<!-- Advanced parameters sliders (Collapsible details inside the left overlay) -->
|
| 307 |
+
<details class="group border-t border-white/5 pt-3">
|
| 308 |
+
<summary class="list-none flex justify-between items-center cursor-pointer select-none text-[8px] font-bold text-slate-400 tracking-wider uppercase hover:text-slate-200 transition-colors">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 309 |
<span>⚙️ Advanced parameters</span>
|
| 310 |
+
<svg class="h-3 w-3 transform group-open:rotate-180 transition-transform text-slate-500" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
| 311 |
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
|
| 312 |
</svg>
|
| 313 |
</summary>
|
| 314 |
+
<div class="space-y-3 pt-3">
|
| 315 |
|
| 316 |
<!-- Inference Mode Selection -->
|
| 317 |
+
<div class="space-y-1">
|
| 318 |
+
<label for="inference-mode" class="text-[8px] font-bold text-slate-400 uppercase tracking-widest">Inference Mode</label>
|
| 319 |
+
<select id="inference-mode" class="w-full bg-black/40 border border-white/5 rounded-lg px-2 py-1 text-[9px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200">
|
| 320 |
+
<option value="hybrid">Hybrid</option>
|
| 321 |
+
<option value="fast">Fast</option>
|
| 322 |
+
<option value="slow">Slow</option>
|
| 323 |
</select>
|
| 324 |
</div>
|
| 325 |
|
| 326 |
<!-- Short side resize cap -->
|
| 327 |
+
<div class="space-y-1">
|
| 328 |
+
<label for="short-size" class="text-[8px] font-bold text-slate-400 uppercase tracking-widest">Resize Cap (px)</label>
|
| 329 |
+
<input type="number" id="short-size" placeholder="Auto-Cap (1024)" class="w-full bg-black/40 border border-white/5 rounded-lg px-2 py-1 text-[9px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200 font-mono">
|
| 330 |
</div>
|
| 331 |
|
| 332 |
<!-- Temp -->
|
| 333 |
+
<div class="space-y-1">
|
| 334 |
+
<div class="flex justify-between text-[8px] uppercase font-bold text-slate-400 tracking-wider">
|
| 335 |
<span>Temperature</span>
|
| 336 |
<span id="temp-val" class="font-mono text-nvidia-brand">0.7</span>
|
| 337 |
</div>
|
| 338 |
+
<input type="range" id="temp" min="0.1" max="2.0" step="0.1" value="0.7" class="w-full h-0.5 bg-black rounded appearance-none cursor-pointer accent-nvidia-brand">
|
| 339 |
</div>
|
| 340 |
|
| 341 |
<!-- Top P -->
|
| 342 |
+
<div class="space-y-1">
|
| 343 |
+
<div class="flex justify-between text-[8px] uppercase font-bold text-slate-400 tracking-wider">
|
| 344 |
<span>Top P</span>
|
| 345 |
<span id="topp-val" class="font-mono text-nvidia-brand">0.9</span>
|
| 346 |
</div>
|
| 347 |
+
<input type="range" id="topp" min="0.05" max="1.0" step="0.05" value="0.9" class="w-full h-0.5 bg-black rounded appearance-none cursor-pointer accent-nvidia-brand">
|
| 348 |
</div>
|
| 349 |
|
| 350 |
<!-- Top K -->
|
| 351 |
+
<div class="space-y-1">
|
| 352 |
+
<div class="flex justify-between text-[8px] uppercase font-bold text-slate-400 tracking-wider">
|
| 353 |
<span>Top K</span>
|
| 354 |
<span id="topk-val" class="font-mono text-nvidia-brand">20</span>
|
| 355 |
</div>
|
| 356 |
+
<input type="range" id="topk" min="1" max="100" step="1" value="20" class="w-full h-0.5 bg-black rounded appearance-none cursor-pointer accent-nvidia-brand">
|
| 357 |
</div>
|
| 358 |
|
| 359 |
<!-- Video Frames (Only displayed for Video mode) -->
|
| 360 |
+
<div id="video-frames-wrapper" class="space-y-1 opacity-50 pointer-events-none transition-opacity duration-300">
|
| 361 |
+
<div class="flex justify-between text-[8px] uppercase font-bold text-slate-400 tracking-wider">
|
| 362 |
<span>Max Video Frames</span>
|
| 363 |
<span id="frames-val" class="font-mono text-nvidia-brand">4</span>
|
| 364 |
</div>
|
| 365 |
+
<input type="range" id="max-frames" min="1" max="10" step="1" value="4" class="w-full h-0.5 bg-black rounded appearance-none cursor-pointer accent-nvidia-brand" disabled>
|
| 366 |
</div>
|
| 367 |
|
| 368 |
</div>
|
| 369 |
</details>
|
| 370 |
</div>
|
| 371 |
|
| 372 |
+
<!-- CTA Action Button (Floats at bottom-left corner of visual container) -->
|
| 373 |
+
<div class="pointer-events-auto pt-2 max-w-xs">
|
| 374 |
+
<button id="run-btn" class="pill-btn-green w-full py-3 px-6 rounded-full text-black font-extrabold text-sm flex items-center justify-center gap-2 select-none shadow-2xl">
|
| 375 |
+
<span id="btn-icon">🧠</span>
|
| 376 |
+
<span id="btn-text">Run Inference</span>
|
| 377 |
+
</button>
|
| 378 |
+
</div>
|
| 379 |
+
|
| 380 |
+
</div>
|
| 381 |
+
|
| 382 |
+
<!-- 3. Floating Categories Search Bar Overlay (Right/Center side, extremely clean glass box) -->
|
| 383 |
+
<div class="absolute top-1/2 right-6 lg:right-16 -translate-y-1/2 z-30 flex justify-center pointer-events-none w-full max-w-xs">
|
| 384 |
+
<div class="sam-input-bar rounded-2xl px-3.5 py-2.5 flex items-center gap-2 w-full pointer-events-auto">
|
| 385 |
+
<svg class="h-4 w-4 text-nvidia-brand shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
|
| 386 |
+
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
|
| 387 |
+
</svg>
|
| 388 |
+
<input type="text" id="categories" value="car, bus, person, potted plant" placeholder="Describe objects to locate..." class="bg-transparent border-none outline-none focus:outline-none w-full text-slate-100 placeholder-slate-600 font-semibold text-xs">
|
| 389 |
+
<button id="clear-search-btn" class="text-slate-500 hover:text-white transition-colors p-0.5 rounded-full hover:bg-white/5 shrink-0">
|
| 390 |
+
<svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
|
| 391 |
+
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
|
| 392 |
+
</svg>
|
| 393 |
+
</button>
|
| 394 |
+
</div>
|
| 395 |
+
</div>
|
| 396 |
+
|
| 397 |
+
<!-- Floating Workspace Status -->
|
| 398 |
+
<div class="absolute bottom-4 right-4 z-30 bg-black/60 backdrop-blur px-2.5 py-1 rounded-lg border border-white/10 text-[9px] text-slate-400 font-mono select-none pointer-events-none">
|
| 399 |
+
status: <span id="workspace-status" class="text-slate-200 font-semibold">No Media Loaded</span>
|
| 400 |
+
</div>
|
| 401 |
+
|
| 402 |
+
</div>
|
| 403 |
+
|
| 404 |
+
<!-- Shelf Section (Examples and Log metrics placed directly below the giant showcase) -->
|
| 405 |
+
<div class="grid grid-cols-1 lg:grid-cols-12 gap-6 items-start">
|
| 406 |
+
|
| 407 |
+
<!-- Left: Examples Library Shelf (Col Span: 5) -->
|
| 408 |
+
<div class="lg:col-span-5 space-y-4">
|
| 409 |
<div class="glass-panel rounded-2xl p-5 space-y-4">
|
| 410 |
+
<span class="text-[9px] font-bold text-slate-400 uppercase tracking-widest block font-mono">🖼️ Interactive Quick Sandbox</span>
|
| 411 |
<div class="grid grid-cols-4 gap-3">
|
| 412 |
|
| 413 |
<!-- Card 1 -->
|
|
|
|
| 441 |
<div class="glass-panel rounded-2xl p-4 text-[10px] text-slate-500 font-mono flex justify-between items-center select-none bg-black/40">
|
| 442 |
<span class="truncate block">compiled: <span id="raw-prompt-preview" class="text-slate-400"></span></span>
|
| 443 |
</div>
|
| 444 |
+
</div>
|
| 445 |
|
| 446 |
+
<!-- Right: Performance Metrics & Tag draw overlays (Col Span: 7) -->
|
| 447 |
+
<div class="lg:col-span-7 space-y-4">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 448 |
<div class="glass-panel rounded-2xl p-5 space-y-4">
|
| 449 |
<div class="grid grid-cols-1 sm:grid-cols-12 gap-4 items-stretch">
|
| 450 |
|
| 451 |
<!-- Performance Statistics Metrics Console (Grid: 5) -->
|
| 452 |
<div class="sm:col-span-5 bg-black/60 rounded-xl p-4 border border-white/5 font-mono text-[10px] text-slate-300 space-y-2 leading-normal">
|
| 453 |
+
<div class="text-nvidia-brand font-bold border-b border-white/5 pb-1 mb-1.5 uppercase tracking-widest text-[9px] font-mono">📊 Metrics Log</div>
|
| 454 |
<div class="flex justify-between"><span class="text-slate-500">Status:</span> <span id="meta-status" class="text-emerald-500 font-semibold">Idle</span></div>
|
| 455 |
<div class="flex justify-between"><span class="text-slate-500">Tokens/Frames:</span> <span id="meta-tokens">-</span></div>
|
| 456 |
<div class="flex justify-between"><span class="text-slate-500">Detections:</span> <span id="meta-boxes">-</span></div>
|
|
|
|
| 474 |
<!-- Optional dynamic trace wrapper -->
|
| 475 |
<div id="rich-trace-log" class="hidden border-t border-white/5 pt-3"></div>
|
| 476 |
</div>
|
| 477 |
+
</div>
|
|
|
|
| 478 |
|
| 479 |
</div>
|
| 480 |
+
|
| 481 |
</main>
|
| 482 |
|
| 483 |
<!-- Gradio client connection & app runtime logic -->
|