radames's picture
new base
cb92d2b
raw
history blame
5.81 kB
<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>