Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
47 lines (41 loc) · 1.79 KB
/
Copy pathscript.js
File metadata and controls
47 lines (41 loc) · 1.79 KB
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
const imageUpload = document.getElementById('imageUpload')
Promise.all([
faceapi.nets.faceRecognitionNet.loadFromUri('/models'),
faceapi.nets.faceLandmark68Net.loadFromUri('/models'),
faceapi.nets.ssdMobilenetv1.loadFromUri('/models'),
]).then(start)
async function start() {
let canvas
let image
const labeledFaceDescriptors = await loadLabeledImages()
console.log(labeledFaceDescriptors)
imageUpload.addEventListener('change', async () => {
if (canvas) canvas.remove()
if (image) image.remove()
console.log(imageUpload.files[0])
image = await faceapi.bufferToImage(imageUpload.files[0])
document.body.append(image)
canvas = faceapi.createCanvasFromMedia(image)
document.body.append(canvas)
const displaySize = { width: image.width, height: image.height }
faceapi.matchDimensions(canvas, displaySize)
const detections = await faceapi.detectAllFaces(image).withFaceLandmarks().withFaceDescriptors()
const resizedDetections = faceapi.resizeResults(detections, displaySize)
})
}
function loadLabeledImages() {
const labels = ['Ant Man', 'Black Widow', 'Captain America', 'Captain Marvel', 'Hawkeye', 'Hulk', 'Iron Man', 'Jim Rhodes', 'Nebula', 'Thor', 'Tony Stark']
console.log('Here')
return Promise.all(
labels.map(async label => {
const descriptions = []
for (let i = 1; i <= 2; i ++) {
const img = await faceapi.fetchImage(`https://raw.githubusercontent.com/WebDevSimplified/Face-Recognition-JavaScript/master/labeled_images/${label}/${i}.jpg`)
const detections = await faceapi.detectSingleFace(img).withFaceLandmarks().withFaceDescriptor()
descriptions.push(detections.descriptor)
}
console.log(descriptions)
return new faceapi.LabeledFaceDescriptors(label, descriptions)
})
)
}