-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
86 lines (69 loc) · 2.02 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
'use strict';
let runner;
let x, y, nsfw_prob;
let image;
function append(img) {
img.width = 224 * 2;
img.height = 'auto';
img.style['display'] = 'block';
img.setAttribute('class', 'section, media')
let card = document.createElement('div');
if (nsfw_prob > 0.5) {
card.setAttribute('class', 'card error');
}
else {
card.setAttribute('class', 'card ok');
}
let header = document.createElement('div');
header.textContent = (100 * nsfw_prob).toFixed(2) + ' %';
header.setAttribute('class', 'section');
card.append(header);
card.append(img);
document.querySelector('#image-placeholder').append(card);
}
async function init() {
runner = await WebDNN.load('./output', {
cacheStrategy: 'networkOnly',
saveCache: false,
});
x = runner.inputs[0];
y = runner.outputs[0];
document.querySelectorAll('button').forEach((b) => b.disabled = false)
}
async function run(img_src) {
console.log(img_src);
let image_array = await WebDNN.Image.getImageArray(img_src, {
dstW: 224, dstH: 224,
bias: [104, 117, 123],
color: WebDNN.Image.Color.BGR,
order: WebDNN.Image.Order.CHW,
});
x.set(image_array);
await runner.run();
let y_vec = y.toActual();
nsfw_prob = Math.exp(y_vec[1]) / (Math.exp(y_vec[0]) + Math.exp(y_vec[1]));
console.log('NSFW prob', nsfw_prob);
console.log('Computed vector', y_vec);
append(img_src);
}
function image_received() {
run(image);
}
function download(url) {
image = new Image;
image.crossOrigin = "anonymous";
image.addEventListener("load", image_received, false);
image.src = url;
}
async function run_url() {
if (!runner) await init();
let img_url = document.querySelector('#imageurl').value;
download(img_url);
}
async function run_file() {
if (!runner) await init();
let img_src = await WebDNN.Image.loadImageByDialog();
console.log(img_src);
await run(img_src);
}
window.onload = () => init();