Yang Gu commited on
Commit
51802c2
1 Parent(s): a8ddd77

Polish gallery mode

Browse files
demos.js CHANGED
@@ -7,49 +7,46 @@ const categoryDemos = [
7
  name: 'Benchmark',
8
  description: `Benchmark by Transformers.js`,
9
  filename: "https://huggingface.co/spaces/Xenova/webgpu-embedding-benchmark",
10
- openInNewTab: true,
11
  },
12
  'tjs-clip': {
13
  name: 'OpenAI Clip',
14
  description: `Zero-shot Image Classification with OpenAI's CLIP by Transformers.js`,
15
  filename: "https://huggingface.co/spaces/Xenova/webgpu-clip",
16
- openInNewTab: true,
17
  },
18
  'tjs-depthAnything': {
19
  name: 'Depth Anything',
20
  description: `Depth Anything by Transformers.js`,
21
  filename: "https://huggingface.co/spaces/Xenova/webgpu-depth-anything",
22
- openInNewTab: true,
 
 
 
 
23
  },
24
  'tjs-musicGen': {
25
  name: 'Text to Music (WASM)',
26
  description: `Text to music by Transformers.js`,
27
  filename: "https://huggingface.co/spaces/Xenova/musicgen-web",
28
- openInNewTab: true,
29
  },
30
  'tjs-phi3': {
31
  name: 'Phi3',
32
  description: `Phi3 by Transformers.js`,
33
  filename: "https://huggingface.co/spaces/Xenova/experimental-phi3-webgpu",
34
- openInNewTab: true,
35
  },
36
  'tjs-removeImageBackground': {
37
  name: 'Remove Image Background',
38
  description: `Image Background Removal by Transformers.js`,
39
  filename: "https://huggingface.co/spaces/Xenova/remove-background-webgpu",
40
- openInNewTab: true,
41
  },
42
  'tjs-removeVideoBackground': {
43
  name: 'Remove Video Background',
44
  description: `Video Background Removal by Transformers.js`,
45
  filename: "https://huggingface.co/spaces/Xenova/webgpu-video-background-removal",
46
- openInNewTab: true,
47
  },
48
  'tjs-yolo': {
49
  name: 'Realtime Video Object Detection',
50
  description: `Realtime video object detection by Transformers.js`,
51
  filename: "https://huggingface.co/spaces/Xenova/video-object-detection",
52
- openInNewTab: true,
53
  },
54
  },
55
  },
@@ -103,13 +100,11 @@ const categoryDemos = [
103
  name: 'Web Stable Diffusion',
104
  description: `Web Stable Diffusion`,
105
  filename: "https://websd.mlc.ai/",
106
- openInNewTab: true,
107
  },
108
  'tvm-llama3': {
109
  name: 'Web LLM Llama3',
110
  description: `Web LLM Llama3`,
111
  filename: "https://webllm.mlc.ai/",
112
- openInNewTab: true,
113
  },
114
  },
115
  },
 
7
  name: 'Benchmark',
8
  description: `Benchmark by Transformers.js`,
9
  filename: "https://huggingface.co/spaces/Xenova/webgpu-embedding-benchmark",
 
10
  },
11
  'tjs-clip': {
12
  name: 'OpenAI Clip',
13
  description: `Zero-shot Image Classification with OpenAI's CLIP by Transformers.js`,
14
  filename: "https://huggingface.co/spaces/Xenova/webgpu-clip",
 
15
  },
16
  'tjs-depthAnything': {
17
  name: 'Depth Anything',
18
  description: `Depth Anything by Transformers.js`,
19
  filename: "https://huggingface.co/spaces/Xenova/webgpu-depth-anything",
20
+ },
21
+ 'tjs-moondream': {
22
+ name: 'Moondream',
23
+ description: `Moondream (Vision-Language Model) by Transformers.js`,
24
+ filename: "https://huggingface.co/spaces/Xenova/experimental-moondream-webgpu",
25
  },
26
  'tjs-musicGen': {
27
  name: 'Text to Music (WASM)',
28
  description: `Text to music by Transformers.js`,
29
  filename: "https://huggingface.co/spaces/Xenova/musicgen-web",
 
30
  },
31
  'tjs-phi3': {
32
  name: 'Phi3',
33
  description: `Phi3 by Transformers.js`,
34
  filename: "https://huggingface.co/spaces/Xenova/experimental-phi3-webgpu",
 
35
  },
36
  'tjs-removeImageBackground': {
37
  name: 'Remove Image Background',
38
  description: `Image Background Removal by Transformers.js`,
39
  filename: "https://huggingface.co/spaces/Xenova/remove-background-webgpu",
 
40
  },
41
  'tjs-removeVideoBackground': {
42
  name: 'Remove Video Background',
43
  description: `Video Background Removal by Transformers.js`,
44
  filename: "https://huggingface.co/spaces/Xenova/webgpu-video-background-removal",
 
45
  },
46
  'tjs-yolo': {
47
  name: 'Realtime Video Object Detection',
48
  description: `Realtime video object detection by Transformers.js`,
49
  filename: "https://huggingface.co/spaces/Xenova/video-object-detection",
 
50
  },
51
  },
52
  },
 
100
  name: 'Web Stable Diffusion',
101
  description: `Web Stable Diffusion`,
102
  filename: "https://websd.mlc.ai/",
 
103
  },
104
  'tvm-llama3': {
105
  name: 'Web LLM Llama3',
106
  description: `Web LLM Llama3`,
107
  filename: "https://webllm.mlc.ai/",
 
108
  },
109
  },
110
  },
demos/ort-phi2-test/index.html CHANGED
@@ -26,6 +26,7 @@
26
  csv: 0,
27
  max_tokens: 256,
28
  local: 1,
 
29
  }
30
  let vars = query.split("&");
31
  for (var i = 0; i < vars.length; i++) {
 
26
  csv: 0,
27
  max_tokens: 256,
28
  local: 1,
29
+ ortUrl: "default",
30
  }
31
  let vars = query.split("&");
32
  for (var i = 0; i < vars.length; i++) {
demos/ort-phi3-test/index.html CHANGED
@@ -22,6 +22,7 @@
22
  csv: 0,
23
  max_tokens: 256,
24
  local: 1,
 
25
  }
26
  let vars = query.split("&");
27
  for (var i = 0; i < vars.length; i++) {
 
22
  csv: 0,
23
  max_tokens: 256,
24
  local: 1,
25
+ ortUrl: "default",
26
  }
27
  let vars = query.split("&");
28
  for (var i = 0; i < vars.length; i++) {
demos/ort-sdturbo/index.html CHANGED
@@ -261,7 +261,7 @@ fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
261
  async function load_models(models) {
262
  let loadedCount = 0;
263
  for (const [name, model] of Object.entries(models)) {
264
- const model_bytes = await getModelOPFS(model.url, `models/${model.url}`, false);
265
  const sess_opt = { ...opt, ...model.opt };
266
  // profiling
267
  //ort.env.webgpu.profiling = { mode: "default" };
@@ -279,17 +279,17 @@ fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
279
 
280
  const models = {
281
  "unet": {
282
- url: "https://huggingface.co/webai-community/models/resolve/main/sdturbo-unet.onnx", size: 640,
283
  // should have 'steps: 1' but will fail to create the session
284
  opt: { freeDimensionOverrides: { batch_size: 1, num_channels: 4, height: 64, width: 64, sequence_length: 77, } }
285
  },
286
  "text_encoder": {
287
- url: "https://huggingface.co/webai-community/models/resolve/main/sdturbo-text-encoder.onnx", size: 1700,
288
  // should have 'sequence_length: 77' but produces a bad image
289
  opt: { freeDimensionOverrides: { batch_size: 1, } },
290
  },
291
  "vae_decoder": {
292
- url: "https://huggingface.co/webai-community/models/resolve/main/sdturbo-vae-decoder.onnx", size: 95,
293
  opt: { freeDimensionOverrides: { batch_size: 1, num_channels_latent: 4, height_latent: 64, width_latent: 64 } }
294
  }
295
  }
 
261
  async function load_models(models) {
262
  let loadedCount = 0;
263
  for (const [name, model] of Object.entries(models)) {
264
+ const model_bytes = await getModelOPFS(model.url.split('/').pop(), model.url, false);
265
  const sess_opt = { ...opt, ...model.opt };
266
  // profiling
267
  //ort.env.webgpu.profiling = { mode: "default" };
 
279
 
280
  const models = {
281
  "unet": {
282
+ url: `${getModelsPath()}sdturbo-unet.onnx`, size: 640,
283
  // should have 'steps: 1' but will fail to create the session
284
  opt: { freeDimensionOverrides: { batch_size: 1, num_channels: 4, height: 64, width: 64, sequence_length: 77, } }
285
  },
286
  "text_encoder": {
287
+ url: `${getModelsPath()}sdturbo-text-encoder.onnx`, size: 1700,
288
  // should have 'sequence_length: 77' but produces a bad image
289
  opt: { freeDimensionOverrides: { batch_size: 1, } },
290
  },
291
  "vae_decoder": {
292
+ url: `${getModelsPath()}sdturbo-vae-decoder.onnx`, size: 95,
293
  opt: { freeDimensionOverrides: { batch_size: 1, num_channels_latent: 4, height_latent: 64, width_latent: 64 } }
294
  }
295
  }
demos/tflite-gemma/index.js CHANGED
@@ -14,14 +14,14 @@
14
 
15
  // ---------------------------------------------------------------------------------------- //
16
 
17
- import {FilesetResolver, LlmInference} from 'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai';
18
 
19
  const input = document.getElementById('input');
20
  const output = document.getElementById('output');
21
  const submit = document.getElementById('submit');
22
  const status = document.getElementById('status');
23
 
24
- const modelFileName = 'https://huggingface.co/webai-community/models/resolve/main/gemma-2b-it-gpu-int4.bin'; /* Update the file name */
25
  let startTime;
26
 
27
  /**
@@ -50,7 +50,7 @@ async function runDemo() {
50
  const genaiFileset = await FilesetResolver.forGenAiTasks(
51
  'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/wasm');
52
  let llmInference;
53
- const modelBuffer = new Int8Array(await getModelOPFS(modelFileName, modelFileName, false));
54
 
55
  submit.onclick = () => {
56
  startTime = performance.now();
 
14
 
15
  // ---------------------------------------------------------------------------------------- //
16
 
17
+ import {FilesetResolver, LlmInference} from 'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@0.10.12/wasm/genai_wasm_internal.min.js';
18
 
19
  const input = document.getElementById('input');
20
  const output = document.getElementById('output');
21
  const submit = document.getElementById('submit');
22
  const status = document.getElementById('status');
23
 
24
+ const modelFileName = `gemma-2b-it-gpu-int4.bin`; /* Update the file name */
25
  let startTime;
26
 
27
  /**
 
50
  const genaiFileset = await FilesetResolver.forGenAiTasks(
51
  'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/wasm');
52
  let llmInference;
53
+ const modelBuffer = new Int8Array(await getModelOPFS(modelFileName.split('/').pop(), modelFileName, false));
54
 
55
  submit.onclick = () => {
56
  startTime = performance.now();
demos/tjs-moondream/tjs-moondream.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ff63f88cd5ad127f34c788482ea19d5c02a2fe04fa425abc1df83f684e2ec5f3
3
+ size 603647
gallery.html CHANGED
@@ -65,16 +65,15 @@
65
  video.controls = true;
66
 
67
  const a = document.createElement('a');
68
- a.href = `demos/${demoInfo.filename}`;
69
- a.textContent = `${demoInfo.name || key}${demoInfo.openInNewTab ? '' : ''}`;
70
- a.style.fontSize = 28;
71
- if (demoInfo.openInNewTab) {
72
- a.target = '_blank';
73
  } else {
74
- a.onclick = (e) => {
75
- setSampleIFrameURL(e, demoInfo);
76
- };
77
  }
 
 
 
 
78
 
79
  li.appendChild(video);
80
  li.appendChild(a);
 
65
  video.controls = true;
66
 
67
  const a = document.createElement('a');
68
+ if (demoInfo.filename.startsWith('https')) {
69
+ a.href = demoInfo.filename;
 
 
 
70
  } else {
71
+ a.href = `demos/${demoInfo.filename}`;
 
 
72
  }
73
+ a.textContent = `${demoInfo.name || key}`;
74
+ a.title = demoInfo.description;
75
+ a.style.fontSize = 28;
76
+ a.target = '_blank';
77
 
78
  li.appendChild(video);
79
  li.appendChild(a);