Skip to content

Commit 5a06613

Browse files
Merge pull request justadudewhohacks#109 from justadudewhohacks/v-0_15
v0.15
2 parents 2145e28 + 2d92c08 commit 5a06613

File tree

129 files changed

+4093
-3975
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+4093
-3975
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ node_modules
44
tmp
55
proto
66
weights_uncompressed
7-
weights_unused
7+
weights_unused
8+
docs

.npmignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ weights
77
weights_uncompressed
88
weights_unused
99
test
10-
tools
10+
tools
11+
docs

README.md

Lines changed: 410 additions & 201 deletions
Large diffs are not rendered by default.

examples/public/commons.js

Lines changed: 0 additions & 279 deletions
This file was deleted.

examples/public/js/bbt.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
const classes = ['amy', 'bernadette', 'howard', 'leonard', 'penny', 'raj', 'sheldon', 'stuart']
2+
3+
function getFaceImageUri(className, idx) {
4+
return `images/${className}/${className}${idx}.png`
5+
}
6+
7+
function renderFaceImageSelectList(selectListId, onChange, initialValue) {
8+
const indices = [1, 2, 3, 4, 5]
9+
function renderChildren(select) {
10+
classes.forEach(className => {
11+
const optgroup = document.createElement('optgroup')
12+
optgroup.label = className
13+
select.appendChild(optgroup)
14+
indices.forEach(imageIdx =>
15+
renderOption(
16+
optgroup,
17+
`${className} ${imageIdx}`,
18+
getFaceImageUri(className, imageIdx)
19+
)
20+
)
21+
})
22+
}
23+
24+
renderSelectList(
25+
selectListId,
26+
onChange,
27+
getFaceImageUri(initialValue.className, initialValue.imageIdx),
28+
renderChildren
29+
)
30+
}
31+
32+
// fetch first image of each class and compute their descriptors
33+
async function createBbtFaceMatcher(numImagesForTraining = 1) {
34+
const maxAvailableImagesPerClass = 5
35+
numImagesForTraining = Math.min(numImagesForTraining, maxAvailableImagesPerClass)
36+
37+
const labeledFaceDescriptors = await Promise.all(classes.map(
38+
async className => {
39+
const descriptors = []
40+
for (let i = 1; i < (numImagesForTraining + 1); i++) {
41+
const img = await faceapi.fetchImage(getFaceImageUri(className, i))
42+
descriptors.push(await faceapi.computeFaceDescriptor(img))
43+
}
44+
45+
return new faceapi.LabeledFaceDescriptors(
46+
className,
47+
descriptors
48+
)
49+
}
50+
))
51+
52+
return new faceapi.FaceMatcher(labeledFaceDescriptors)
53+
}

0 commit comments

Comments
 (0)