2020-10-17 12:30:00 +02:00
<!DOCTYPE html>
< html lang = "en" >
2021-04-04 15:25:18 +02:00
< head >
2021-05-26 14:47:31 +02:00
< meta charset = "utf-8" >
2021-04-04 15:25:18 +02:00
< title > Human< / title >
2021-04-17 00:00:24 +02:00
< meta name = "viewport" content = "width=device-width" id = "viewport" >
2021-04-04 15:25:18 +02:00
< meta name = "keywords" content = "Human" >
< meta name = "application-name" content = "Human" >
< meta name = "description" content = "Human: 3D Face Detection, Body Pose, Hand & Finger Tracking, Iris Tracking, Age & Gender Prediction, Emotion Prediction & Gesture Recognition; Author: Vladimir Mandic <https://github.com/vladmandic>" >
< meta name = "msapplication-tooltip" content = "Human: 3D Face Detection, Body Pose, Hand & Finger Tracking, Iris Tracking, Age & Gender Prediction, Emotion Prediction & Gesture Recognition; Author: Vladimir Mandic <https://github.com/vladmandic>" >
2021-05-31 00:45:39 +02:00
< meta name = "theme-color" content = "#000000" >
2021-04-04 15:25:18 +02:00
< link rel = "manifest" href = "./manifest.webmanifest" >
< link rel = "shortcut icon" href = "../favicon.ico" type = "image/x-icon" >
< link rel = "apple-touch-icon" href = "../assets/icon.png" >
2021-04-17 00:00:24 +02:00
< link rel = "stylesheet" type = "text/css" href = "./icons.css" >
2021-03-29 20:40:34 +02:00
< script src = "./index.js" type = "module" > < / script >
2020-11-03 15:34:36 +01:00
< style >
2020-11-21 13:33:41 +01:00
@font-face { font-family: 'Lato'; font-display: swap; font-style: normal; font-weight: 100; src: local('Lato'), url('../assets/lato-light.woff2') }
2020-11-07 17:25:03 +01:00
html { font-family: 'Lato', 'Segoe UI'; font-size: 16px; font-variant: small-caps; }
2021-04-19 01:33:40 +02:00
body { margin: 0; background: black; color: white; overflow-x: hidden; width: 100vw; height: 100vh; }
2020-11-03 15:34:36 +01:00
body::-webkit-scrollbar { display: none; }
2020-11-19 20:45:59 +01:00
hr { width: 100%; }
2021-04-17 00:00:24 +02:00
.play { position: absolute; width: 256px; height: 256px; z-index: 9; bottom: 15%; left: 50%; margin-left: -125px; display: none; filter: grayscale(1); }
.play:hover { filter: grayscale(0); }
2020-11-19 20:45:59 +01:00
.btn-background { fill:grey; cursor: pointer; opacity: 0.6; }
.btn-background:hover { opacity: 1; }
.btn-foreground { fill:white; cursor: pointer; opacity: 0.8; }
.btn-foreground:hover { opacity: 1; }
2021-04-26 13:19:30 +02:00
.status { position: absolute; width: 100vw; bottom: 10%; text-align: center; font-size: 3rem; font-weight: 100; text-shadow: 2px 2px #303030; }
2020-11-03 15:34:36 +01:00
.thumbnail { margin: 8px; box-shadow: 0 0 4px 4px dimgrey; }
.thumbnail:hover { box-shadow: 0 0 8px 8px dimgrey; filter: grayscale(1); }
2021-04-19 01:33:40 +02:00
.log { position: absolute; bottom: 0; margin: 0.4rem 0.4rem 0 0.4rem; font-size: 0.9rem; }
2021-04-12 23:48:59 +02:00
.menubar { width: 100vw; background: #303030; display: flex; justify-content: space-evenly; text-align: center; padding: 8px; cursor: pointer; }
2020-11-03 15:34:36 +01:00
.samples-container { display: flex; flex-wrap: wrap; }
.video { display: none; }
2020-11-05 21:59:28 +01:00
.canvas { margin: 0 auto; }
2020-11-12 23:00:06 +01:00
.bench { position: absolute; right: 0; bottom: 0; }
2021-09-22 21:16:14 +02:00
.compare-image { width: 256px; position: absolute; top: 150px; left: 30px; box-shadow: 0 0 2px 2px black; background: black; display: none; }
2021-04-17 00:00:24 +02:00
.loader { width: 300px; height: 300px; border: 3px solid transparent; border-radius: 50%; border-top: 4px solid #f15e41; animation: spin 4s linear infinite; position: absolute; bottom: 15%; left: 50%; margin-left: -150px; z-index: 15; }
2020-11-03 15:34:36 +01:00
.loader::before, .loader::after { content: ""; position: absolute; top: 6px; bottom: 6px; left: 6px; right: 6px; border-radius: 50%; border: 4px solid transparent; }
.loader::before { border-top-color: #bad375; animation: 3s spin linear infinite; }
.loader::after { border-top-color: #26a9e0; animation: spin 1.5s linear infinite; }
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
2020-11-04 17:43:51 +01:00
.wave { position: fixed; top: 0; left: -90%; width: 100vw; height: 100vh; border-radius: 10%; opacity: .3; z-index: -1; }
.wave.one { animation: rotate 10000ms infinite linear; background: #2F4F4F; }
.wave.two { animation: rotate 15000ms infinite linear; background: #1F3F3F; }
.wave.three { animation: rotate 20000ms infinite linear; background: #0F1F1F; }
@keyframes rotate {
from { transform: rotate(0deg); }
from { transform: rotate(360deg); }
}
2020-11-19 20:45:59 +01:00
.button { text-shadow: 2px 2px black; display: flex; }
.button:hover { text-shadow: -2px -2px black; color: lightblue; }
.button::before { display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; -webkit-font-smoothing: antialiased; font-family: "FA"; font-weight: 900; font-size: 2.4rem; margin-right: 0.4rem; }
.button-display::before { content: "\f8c4"; }
.button-image::before { content: "\f3f2"; }
.button-process::before { content: "\f3f0"; }
.button-model::before { content: "\f2c2"; }
.button-start::before { content: "\f144"; }
.button-stop::before { content: "\f28b"; }
2021-04-17 00:00:24 +02:00
.icon { width: 180px; text-align: -webkit-center; text-align: -moz-center; filter: grayscale(1); }
.icon:hover { background: #505050; filter: grayscale(0); }
2021-06-02 23:29:50 +02:00
.hint { opacity: 0; transition-duration: 0.5s; transition-property: opacity; font-style: italic; position: fixed; top: 5rem; padding: 8px; margin: 8px; box-shadow: 0 0 2px 2px #303030; }
2021-06-05 17:54:49 +02:00
.input-file { align-self: center; width: 5rem; }
2021-09-15 17:15:38 +02:00
.results { position: absolute; left: 0; top: 6rem; background: #303030; width: 20rem; height: 90%; font-size: 0.8rem; overflow-y: auto; display: none }
.results::-webkit-scrollbar { background-color: #303030; }
.results::-webkit-scrollbar-thumb { background: black; border-radius: 10px; }
.json-line { margin: 4px 0; display: flex; justify-content: flex-start; }
.json { margin-right: 8px; margin-left: 8px; }
.json-type { color: lightyellow; }
.json-key { color: white; }
.json-index { color: lightcoral; }
.json-value { margin-left: 20px; }
.json-number { color: lightgreen; }
.json-boolean { color: lightyellow; }
.json-string { color: lightblue; }
.json-size { color: gray; }
.hide { display: none; }
.fas { display: inline-block; width: 0; height: 0; border-style: solid; }
.fa-caret-down { border-width: 10px 8px 0 8px; border-color: white transparent }
.fa-caret-right { border-width: 10px 0 8px 10px; border-color: transparent transparent transparent white; }
2020-11-03 15:34:36 +01:00
< / style >
2020-10-17 12:30:00 +02:00
< / head >
2020-11-03 15:34:36 +01:00
< body >
2021-04-17 00:00:24 +02:00
< div id = "play" class = "play icon-play" > < / div >
2020-11-04 17:43:51 +01:00
< div id = "background" >
< div class = 'wave one' > < / div >
< div class = 'wave two' > < / div >
< div class = 'wave three' > < / div >
< / div >
2020-11-03 15:34:36 +01:00
< div id = "loader" class = "loader" > < / div >
< div id = "status" class = "status" > < / div >
2020-11-19 20:45:59 +01:00
< div id = "menubar" class = "menubar" >
2021-05-28 16:43:48 +02:00
< div id = "btnDisplay" class = "icon" > < div class = "icon-binoculars" > < / div > display< / div >
< div id = "btnImage" class = "icon" > < div class = "icon-brush" > < / div > input< / div >
< div id = "btnProcess" class = "icon" > < div class = "icon-stats" > < / div > options< / div >
< div id = "btnModel" class = "icon" > < div class = "icon-games" > < / div > models< / div >
2021-04-17 00:00:24 +02:00
< div id = "btnStart" class = "icon" > < div class = "icon-webcam" > < / div > < span id = "btnStartText" > start video< / span > < / div >
2020-11-19 20:45:59 +01:00
< / div >
2020-11-04 17:43:51 +01:00
< div id = "media" >
< canvas id = "canvas" class = "canvas" > < / canvas >
< video id = "video" playsinline class = "video" > < / video >
< / div >
2021-05-26 14:47:31 +02:00
< div id = "compare-container" class = "compare-image" >
2021-09-22 21:16:14 +02:00
< canvas id = "compare-canvas" width = "256" height = "256" > < / canvas >
2021-03-21 19:18:51 +01:00
< div id = "similarity" > < / div >
2020-11-13 22:13:35 +01:00
< / div >
2021-09-22 21:16:14 +02:00
< div id = "segmentation-container" class = "compare-image" >
< canvas id = "segmentation-mask" width = "256" height = "256" style = "width: 256px; height: 256px;" > < / canvas >
< canvas id = "segmentation-canvas" width = "256" height = "256" style = "width: 256px; height: 256px;" > < / canvas >
< / div >
2020-11-03 15:34:36 +01:00
< div id = "samples-container" class = "samples-container" > < / div >
2021-06-02 23:29:50 +02:00
< div id = "hint" class = "hint" > < / div >
2020-11-03 15:34:36 +01:00
< div id = "log" class = "log" > < / div >
2021-09-15 17:15:38 +02:00
< div id = "results" class = "results" > < / div >
2020-10-17 12:30:00 +02:00
< / body >
< / html >