Spaces:
Runtime error
Runtime error
<script lang="ts"> | |
import { onMount } from 'svelte'; | |
import { PUBLIC_BASE_URL } from '$env/static/public'; | |
onMount(() => { | |
getSettings(); | |
}); | |
async function getSettings() { | |
const settings = await fetch(`${PUBLIC_BASE_URL}/settings`).then((r) => r.json()); | |
console.log(settings); | |
} | |
</script> | |
<div class="fixed right-2 top-2 max-w-xs rounded-lg p-4 text-center text-sm font-bold" id="error" /> | |
<main class="container mx-auto flex max-w-4xl flex-col gap-4 px-4 py-4"> | |
<article class="mx-auto max-w-xl text-center"> | |
<h1 class="text-3xl font-bold">Real-Time Latent Consistency Model</h1> | |
<h2 class="mb-4 text-2xl font-bold">Image to Image</h2> | |
<p class="text-sm"> | |
This demo showcases | |
<a | |
href="https://huggingface.co/SimianLuo/LCM_Dreamshaper_v7" | |
target="_blank" | |
class="text-blue-500 underline hover:no-underline">LCM</a | |
> | |
Image to Image pipeline using | |
<a | |
href="https://github.com/huggingface/diffusers/tree/main/examples/community#latent-consistency-pipeline" | |
target="_blank" | |
class="text-blue-500 underline hover:no-underline">Diffusers</a | |
> with a MJPEG stream server. | |
</p> | |
<p class="text-sm"> | |
There are <span id="queue_size" class="font-bold">0</span> user(s) sharing the same GPU, | |
affecting real-time performance. Maximum queue size is 4. | |
<a | |
href="https://huggingface.co/spaces/radames/Real-Time-Latent-Consistency-Model?duplicate=true" | |
target="_blank" | |
class="text-blue-500 underline hover:no-underline">Duplicate</a | |
> and run it on your own GPU. | |
</p> | |
</article> | |
<div> | |
<h2 class="font-medium">Prompt</h2> | |
<p class="text-sm text-gray-500"> | |
Change the prompt to generate different images, accepts <a | |
href="https://github.com/damian0815/compel/blob/main/doc/syntax.md" | |
target="_blank" | |
class="text-blue-500 underline hover:no-underline">Compel</a | |
> syntax. | |
</p> | |
<div class="text-normal flex items-center rounded-md border border-gray-700 px-1 py-1"> | |
<textarea | |
type="text" | |
id="prompt" | |
class="mx-1 w-full px-3 py-2 font-light outline-none dark:text-black" | |
title="Prompt, this is an example, feel free to modify" | |
placeholder="Add your prompt here..." | |
>Portrait of The Terminator with , glare pose, detailed, intricate, full of colour, | |
cinematic lighting, trending on artstation, 8k, hyperrealistic, focused, extreme details, | |
unreal engine 5, cinematic, masterpiece</textarea | |
> | |
</div> | |
</div> | |
<div class=""> | |
<details> | |
<summary class="cursor-pointer font-medium">Advanced Options</summary> | |
<div class="grid max-w-md grid-cols-3 items-center gap-3 py-3"> | |
<label class="text-sm font-medium" for="guidance-scale">Guidance Scale </label> | |
<input | |
type="range" | |
id="guidance-scale" | |
name="guidance-scale" | |
min="1" | |
max="30" | |
step="0.001" | |
value="8.0" | |
oninput="this.nextElementSibling.value = Number(this.value).toFixed(2)" | |
/> | |
<output | |
class="w-[50px] rounded-md border border-gray-700 px-1 py-1 text-center text-xs font-light" | |
> | |
8.0</output | |
> | |
<label class="text-sm font-medium" for="strength">Strength</label> | |
<input | |
type="range" | |
id="strength" | |
name="strength" | |
min="0.20" | |
max="1" | |
step="0.001" | |
value="0.50" | |
oninput="this.nextElementSibling.value = Number(this.value).toFixed(2)" | |
/> | |
<output | |
class="w-[50px] rounded-md border border-gray-700 px-1 py-1 text-center text-xs font-light" | |
> | |
0.5</output | |
> | |
<label class="text-sm font-medium" for="seed">Seed</label> | |
<input | |
type="number" | |
id="seed" | |
name="seed" | |
value="299792458" | |
class="rounded-md border border-gray-700 p-2 text-right font-light dark:text-black" | |
/> | |
<button | |
onclick="document.querySelector('#seed').value = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER)" | |
class="button" | |
> | |
Rand | |
</button> | |
</div> | |
</details> | |
</div> | |
<div class="flex gap-3"> | |
<button id="start" class="button"> Start </button> | |
<button id="stop" class="button"> Stop </button> | |
<button id="snap" disabled class="button ml-auto"> Snapshot </button> | |
</div> | |
<div class="relative overflow-hidden rounded-lg border border-slate-300"> | |
<img | |
id="player" | |
class="aspect-square w-full rounded-lg" | |
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=" | |
/> | |
<div class="absolute left-0 top-0 aspect-square w-1/4"> | |
<video | |
id="webcam" | |
class="relative z-10 aspect-square w-full object-cover" | |
playsinline | |
autoplay | |
muted | |
loop | |
/> | |
<svg | |
xmlns="http://www.w3.org/2000/svg" | |
viewBox="0 0 448 448" | |
width="100" | |
class="absolute top-0 z-0 w-full p-4 opacity-20" | |
> | |
<path | |
fill="currentColor" | |
d="M224 256a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm-45.7 48A178.3 178.3 0 0 0 0 482.3 29.7 29.7 0 0 0 29.7 512h388.6a29.7 29.7 0 0 0 29.7-29.7c0-98.5-79.8-178.3-178.3-178.3h-91.4z" | |
/> | |
</svg> | |
</div> | |
</div> | |
</main> | |
<style lang="postcss"> | |
:global(html) { | |
@apply text-black dark:bg-gray-900 dark:text-white; | |
} | |
.button { | |
@apply rounded bg-gray-700 p-2 font-normal text-white hover:bg-gray-800 disabled:cursor-not-allowed disabled:bg-gray-300 dark:disabled:bg-gray-700 dark:disabled:text-black; | |
} | |
</style> | |