Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
face
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Кубота
face
Commits
b9588f96
Commit
b9588f96
authored
Jun 17, 2018
by
vincent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
build dist
parent
4a1a9629
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
110 additions
and
55 deletions
+110
-55
Point.d.ts
dist/Point.d.ts
+9
-1
Point.js
dist/Point.js
+12
-0
Point.js.map
dist/Point.js.map
+2
-2
Rect.d.ts
dist/Rect.d.ts
+1
-0
Rect.js
dist/Rect.js
+3
-0
Rect.js.map
dist/Rect.js.map
+2
-2
extractFaceTensors.js
dist/extractFaceTensors.js
+1
-1
extractFaceTensors.js.map
dist/extractFaceTensors.js.map
+2
-2
extractFaces.js
dist/extractFaces.js
+1
-1
extractFaces.js.map
dist/extractFaces.js.map
+2
-2
face-api.js
dist/face-api.js
+44
-23
face-api.min.js
dist/face-api.min.js
+0
-0
FaceDetection.d.ts
dist/faceDetectionNet/FaceDetection.d.ts
+2
-0
FaceDetection.js
dist/faceDetectionNet/FaceDetection.js
+7
-1
FaceDetection.js.map
dist/faceDetectionNet/FaceDetection.js.map
+2
-2
FaceLandmarks.d.ts
dist/faceLandmarkNet/FaceLandmarks.d.ts
+3
-1
FaceLandmarks.js
dist/faceLandmarkNet/FaceLandmarks.js
+8
-3
FaceLandmarks.js.map
dist/faceLandmarkNet/FaceLandmarks.js.map
+2
-2
index.js
dist/faceLandmarkNet/index.js
+5
-10
index.js.map
dist/faceLandmarkNet/index.js.map
+2
-2
utils.js.map
dist/utils.js.map
+0
-0
No files found.
dist/Point.d.ts
View file @
b9588f96
export
declare
class
Point
{
export
interface
IPoint
{
x
:
number
;
y
:
number
;
}
export
declare
class
Point
implements
IPoint
{
x
:
number
;
y
:
number
;
constructor
(
x
:
number
,
y
:
number
);
add
(
pt
:
IPoint
):
Point
;
sub
(
pt
:
IPoint
):
Point
;
mul
(
pt
:
IPoint
):
Point
;
div
(
pt
:
IPoint
):
Point
;
}
dist/Point.js
View file @
b9588f96
...
...
@@ -3,6 +3,18 @@ var Point = /** @class */ (function () {
this
.
x
=
x
;
this
.
y
=
y
;
}
Point
.
prototype
.
add
=
function
(
pt
)
{
return
new
Point
(
this
.
x
+
pt
.
x
,
this
.
y
+
pt
.
y
);
};
Point
.
prototype
.
sub
=
function
(
pt
)
{
return
new
Point
(
this
.
x
-
pt
.
x
,
this
.
y
-
pt
.
y
);
};
Point
.
prototype
.
mul
=
function
(
pt
)
{
return
new
Point
(
this
.
x
*
pt
.
x
,
this
.
y
*
pt
.
y
);
};
Point
.
prototype
.
div
=
function
(
pt
)
{
return
new
Point
(
this
.
x
/
pt
.
x
,
this
.
y
/
pt
.
y
);
};
return
Point
;
}());
export
{
Point
};
...
...
dist/Point.js.map
View file @
b9588f96
{"version":3,"file":"Point.js","sourceRoot":"","sources":["../src/Point.ts"],"names":[],"mappings":"AAAA;IAIE,eAAY,CAAS,EAAE,CAAS;QAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IACH,YAAC;AAAD,CAAC,AARD,IAQC"}
\ No newline at end of file
{"version":3,"file":"Point.js","sourceRoot":"","sources":["../src/Point.ts"],"names":[],"mappings":"AAKA;IAIE,eAAY,CAAS,EAAE,CAAS;QAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IAEM,mBAAG,GAAV,UAAW,EAAU;QACnB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,mBAAG,GAAV,UAAW,EAAU;QACnB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,mBAAG,GAAV,UAAW,EAAU;QACnB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,mBAAG,GAAV,UAAW,EAAU;QACnB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IACH,YAAC;AAAD,CAAC,AAxBD,IAwBC"}
\ No newline at end of file
dist/Rect.d.ts
View file @
b9588f96
...
...
@@ -4,4 +4,5 @@ export declare class Rect {
width
:
number
;
height
:
number
;
constructor
(
x
:
number
,
y
:
number
,
width
:
number
,
height
:
number
);
floor
():
Rect
;
}
dist/Rect.js
View file @
b9588f96
...
...
@@ -5,6 +5,9 @@ var Rect = /** @class */ (function () {
this
.
width
=
width
;
this
.
height
=
height
;
}
Rect
.
prototype
.
floor
=
function
()
{
return
new
Rect
(
Math
.
floor
(
this
.
x
),
Math
.
floor
(
this
.
y
),
Math
.
floor
(
this
.
width
),
Math
.
floor
(
this
.
height
));
};
return
Rect
;
}());
export
{
Rect
};
...
...
dist/Rect.js.map
View file @
b9588f96
{"version":3,"file":"Rect.js","sourceRoot":"","sources":["../src/Rect.ts"],"names":[],"mappings":"AAAA;IAME,cAAY,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QAC7D,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACH,WAAC;AAAD,CAAC,AAZD,IAYC"}
\ No newline at end of file
{"version":3,"file":"Rect.js","sourceRoot":"","sources":["../src/Rect.ts"],"names":[],"mappings":"AAAA;IAME,cAAY,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QAC7D,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEM,oBAAK,GAAZ;QACE,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CACxB,CAAA;IACH,CAAC;IACH,WAAC;AAAD,CAAC,AArBD,IAqBC"}
\ No newline at end of file
dist/extractFaceTensors.js
View file @
b9588f96
...
...
@@ -17,7 +17,7 @@ export function extractFaceTensors(image, detections) {
// TODO handle batches
var
_a
=
imgTensor
.
shape
,
batchSize
=
_a
[
0
],
imgHeight
=
_a
[
1
],
imgWidth
=
_a
[
2
],
numChannels
=
_a
[
3
];
var
faceTensors
=
detections
.
map
(
function
(
det
)
{
var
_a
=
det
.
forSize
(
imgWidth
,
imgHeight
).
getBox
(),
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
var
_a
=
det
.
forSize
(
imgWidth
,
imgHeight
).
getBox
()
.
floor
()
,
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
return
tf
.
slice
(
imgTensor
,
[
0
,
y
,
x
,
0
],
[
1
,
height
,
width
,
numChannels
]);
});
return
faceTensors
;
...
...
dist/extractFaceTensors.js.map
View file @
b9588f96
{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../src/extractFaceTensors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD;;;;;;;;;;GAUG;AACH,MAAM,6BACJ,KAAuC,EACvC,UAA2B;IAE3B,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;QAEvC,sBAAsB;QAChB,IAAA,oBAA+D,EAA9D,iBAAS,EAAE,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAAmB;QAErE,IAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,UAAA,GAAG;YAC9B,IAAA,8CAAmE,EAAjE,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM,CAA8C;YACzE,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;QAC3E,CAAC,CAAC,CAAA;QAEF,OAAO,WAAW,CAAA;IACpB,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../src/extractFaceTensors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD;;;;;;;;;;GAUG;AACH,MAAM,6BACJ,KAAuC,EACvC,UAA2B;IAE3B,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;QAEvC,sBAAsB;QAChB,IAAA,oBAA+D,EAA9D,iBAAS,EAAE,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAAmB;QAErE,IAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,UAAA,GAAG;YAC9B,IAAA,sDAA2E,EAAzE,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM,CAAsD;YACjF,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;QAC3E,CAAC,CAAC,CAAA;QAEF,OAAO,WAAW,CAAA;IACpB,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
dist/extractFaces.js
View file @
b9588f96
...
...
@@ -9,7 +9,7 @@ import { createCanvas, getContext2dOrThrow } from './utils';
export
function
extractFaces
(
image
,
detections
)
{
var
ctx
=
getContext2dOrThrow
(
image
);
return
detections
.
map
(
function
(
det
)
{
var
_a
=
det
.
forSize
(
image
.
width
,
image
.
height
).
getBox
(),
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
var
_a
=
det
.
forSize
(
image
.
width
,
image
.
height
).
getBox
()
.
floor
()
,
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
var
faceImg
=
createCanvas
({
width
:
width
,
height
:
height
});
getContext2dOrThrow
(
faceImg
)
.
putImageData
(
ctx
.
getImageData
(
x
,
y
,
width
,
height
),
0
,
0
);
...
...
dist/extractFaces.js.map
View file @
b9588f96
{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../src/extractFaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,uBACJ,KAAwB,EACxB,UAA2B;IAE3B,IAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAEtC,OAAO,UAAU,CAAC,GAAG,CAAC,UAAA,GAAG;QACjB,IAAA,oDAAyE,EAAvE,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM,CAAoD;QAE/E,IAAM,OAAO,GAAG,YAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;QAC/C,mBAAmB,CAAC,OAAO,CAAC;aACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../src/extractFaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,uBACJ,KAAwB,EACxB,UAA2B;IAE3B,IAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAEtC,OAAO,UAAU,CAAC,GAAG,CAAC,UAAA,GAAG;QACjB,IAAA,4DAAiF,EAA/E,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM,CAA4D;QACvF,IAAM,OAAO,GAAG,YAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;QAC/C,mBAAmB,CAAC,OAAO,CAAC;aACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
dist/face-api.js
View file @
b9588f96
...
...
@@ -714,6 +714,9 @@
this
.
width
=
width
;
this
.
height
=
height
;
}
Rect
.
prototype
.
floor
=
function
()
{
return
new
Rect
(
Math
.
floor
(
this
.
x
),
Math
.
floor
(
this
.
y
),
Math
.
floor
(
this
.
width
),
Math
.
floor
(
this
.
height
));
};
return
Rect
;
}());
...
...
@@ -723,7 +726,7 @@
this
.
_imageWidth
=
width
;
this
.
_imageHeight
=
height
;
this
.
_score
=
score
;
this
.
_box
=
new
Rect
(
Math
.
floor
(
relativeBox
.
x
*
width
),
Math
.
floor
(
relativeBox
.
y
*
height
),
Math
.
floor
(
relativeBox
.
width
*
width
),
Math
.
floor
(
relativeBox
.
height
*
height
)
);
this
.
_box
=
new
Rect
(
relativeBox
.
x
*
width
,
relativeBox
.
y
*
height
,
relativeBox
.
width
*
width
,
relativeBox
.
height
*
height
);
}
FaceDetection
.
prototype
.
getScore
=
function
()
{
return
this
.
_score
;
...
...
@@ -731,6 +734,12 @@
FaceDetection
.
prototype
.
getBox
=
function
()
{
return
this
.
_box
;
};
FaceDetection
.
prototype
.
getImageWidth
=
function
()
{
return
this
.
_imageWidth
;
};
FaceDetection
.
prototype
.
getImageHeight
=
function
()
{
return
this
.
_imageHeight
;
};
FaceDetection
.
prototype
.
getRelativeBox
=
function
()
{
return
new
Rect
(
this
.
_box
.
x
/
this
.
_imageWidth
,
this
.
_box
.
y
/
this
.
_imageHeight
,
this
.
_box
.
width
/
this
.
_imageWidth
,
this
.
_box
.
height
/
this
.
_imageHeight
);
};
...
...
@@ -1019,6 +1028,26 @@
};
}
var
Point
=
/** @class */
(
function
()
{
function
Point
(
x
,
y
)
{
this
.
x
=
x
;
this
.
y
=
y
;
}
Point
.
prototype
.
add
=
function
(
pt
)
{
return
new
Point
(
this
.
x
+
pt
.
x
,
this
.
y
+
pt
.
y
);
};
Point
.
prototype
.
sub
=
function
(
pt
)
{
return
new
Point
(
this
.
x
-
pt
.
x
,
this
.
y
-
pt
.
y
);
};
Point
.
prototype
.
mul
=
function
(
pt
)
{
return
new
Point
(
this
.
x
*
pt
.
x
,
this
.
y
*
pt
.
y
);
};
Point
.
prototype
.
div
=
function
(
pt
)
{
return
new
Point
(
this
.
x
/
pt
.
x
,
this
.
y
/
pt
.
y
);
};
return
Point
;
}());
function
extractConvParamsFactory
(
extractWeights
)
{
return
function
(
channelsIn
,
channelsOut
,
filterSize
)
{
var
filters
=
tensor4d
(
extractWeights
(
channelsIn
*
channelsOut
*
filterSize
*
filterSize
),
[
filterSize
,
filterSize
,
channelsIn
,
channelsOut
]);
...
...
@@ -1068,27 +1097,21 @@
};
}
var
Point
=
/** @class */
(
function
()
{
function
Point
(
x
,
y
)
{
this
.
x
=
x
;
this
.
y
=
y
;
}
return
Point
;
}());
var
FaceLandmarks
=
/** @class */
(
function
()
{
function
FaceLandmarks
(
relativeFaceLandmarkPositions
,
imageDims
)
{
function
FaceLandmarks
(
relativeFaceLandmarkPositions
,
imageDims
,
shift
)
{
if
(
shift
===
void
0
)
{
shift
=
new
Point
(
0
,
0
);
}
var
width
=
imageDims
.
width
,
height
=
imageDims
.
height
;
this
.
_imageWidth
=
width
;
this
.
_imageHeight
=
height
;
this
.
_faceLandmarks
=
relativeFaceLandmarkPositions
.
map
(
function
(
pt
)
{
return
new
Point
(
pt
.
x
*
width
,
pt
.
y
*
height
);
});
this
.
_shift
=
shift
;
this
.
_faceLandmarks
=
relativeFaceLandmarkPositions
.
map
(
function
(
pt
)
{
return
pt
.
mul
(
new
Point
(
width
,
height
)).
add
(
shift
);
});
}
FaceLandmarks
.
prototype
.
getPositions
=
function
()
{
return
this
.
_faceLandmarks
;
};
FaceLandmarks
.
prototype
.
getRelativePositions
=
function
()
{
var
_this
=
this
;
return
this
.
_faceLandmarks
.
map
(
function
(
pt
)
{
return
new
Point
(
pt
.
x
/
_this
.
_imageWidth
,
pt
.
y
/
_this
.
_imageHeight
);
});
return
this
.
_faceLandmarks
.
map
(
function
(
pt
)
{
return
pt
.
sub
(
_this
.
_shift
).
div
(
new
Point
(
_this
.
_imageWidth
,
_this
.
_imageHeight
)
);
});
};
FaceLandmarks
.
prototype
.
getJawOutline
=
function
()
{
return
this
.
_faceLandmarks
.
slice
(
0
,
17
);
...
...
@@ -1114,6 +1137,9 @@
FaceLandmarks
.
prototype
.
forSize
=
function
(
width
,
height
)
{
return
new
FaceLandmarks
(
this
.
getRelativePositions
(),
{
width
:
width
,
height
:
height
});
};
FaceLandmarks
.
prototype
.
shift
=
function
(
x
,
y
)
{
return
new
FaceLandmarks
(
this
.
getRelativePositions
(),
{
width
:
this
.
_imageWidth
,
height
:
this
.
_imageHeight
},
new
Point
(
x
,
y
));
};
return
FaceLandmarks
;
}());
...
...
@@ -1134,19 +1160,14 @@
var
params
=
extractParams$1
(
weights
);
function
detectLandmarks
(
input
)
{
return
__awaiter$1
(
this
,
void
0
,
void
0
,
function
()
{
var
adjustRelativeX
,
adjustRelativeY
,
imageDimensions
,
outTensor
,
faceLandmarksArray
,
_a
,
_b
,
xCoords
,
yCoords
;
var
imageDimensions
,
outTensor
,
faceLandmarksArray
,
_a
,
_b
,
xCoords
,
yCoords
;
return
__generator$1
(
this
,
function
(
_c
)
{
switch
(
_c
.
label
)
{
case
0
:
adjustRelativeX
=
0
;
adjustRelativeY
=
0
;
outTensor
=
tidy
(
function
()
{
var
imgTensor
=
getImageTensor
(
input
);
var
_a
=
imgTensor
.
shape
.
slice
(
1
),
height
=
_a
[
0
],
width
=
_a
[
1
];
imageDimensions
=
{
width
:
width
,
height
:
height
};
imgTensor
=
padToSquare
(
imgTensor
,
true
);
adjustRelativeX
=
(
height
>
width
)
?
imgTensor
.
shape
[
2
]
/
(
2
*
width
)
:
0
;
adjustRelativeY
=
(
width
>
height
)
?
imgTensor
.
shape
[
1
]
/
(
2
*
height
)
:
0
;
// work with 128 x 128 sized face images
if
(
imgTensor
.
shape
[
1
]
!==
128
||
imgTensor
.
shape
[
2
]
!==
128
)
{
imgTensor
=
image
.
resizeBilinear
(
imgTensor
,
[
128
,
128
]);
...
...
@@ -1171,10 +1192,10 @@
return
[
4
/*yield*/
,
outTensor
.
data
()];
case
1
:
faceLandmarksArray
=
_b
.
apply
(
_a
,
[
_c
.
sent
()]);
xCoords
=
faceLandmarksArray
.
filter
(
function
(
c
,
i
)
{
return
(
i
-
1
)
%
2
;
}).
map
(
function
(
x
)
{
return
x
+
adjustRelativeX
;
});
yCoords
=
faceLandmarksArray
.
filter
(
function
(
c
,
i
)
{
return
i
%
2
;
}).
map
(
function
(
y
)
{
return
y
+
adjustRelativeY
;
});
outTensor
.
dispose
();
return
[
2
/*return*/
,
new
FaceLandmarks
(
Array
(
68
).
fill
(
0
).
map
(
function
(
_
,
i
)
{
return
({
x
:
xCoords
[
i
],
y
:
yCoords
[
i
]
});
}),
imageDimensions
)];
xCoords
=
faceLandmarksArray
.
filter
(
function
(
c
,
i
)
{
return
(
i
-
1
)
%
2
;
});
yCoords
=
faceLandmarksArray
.
filter
(
function
(
c
,
i
)
{
return
i
%
2
;
});
return
[
2
/*return*/
,
new
FaceLandmarks
(
Array
(
68
).
fill
(
0
).
map
(
function
(
_
,
i
)
{
return
new
Point
(
xCoords
[
i
],
yCoords
[
i
]);
}),
imageDimensions
)];
}
});
});
...
...
@@ -1400,7 +1421,7 @@
function
extractFaces
(
image
,
detections
)
{
var
ctx
=
getContext2dOrThrow
(
image
);
return
detections
.
map
(
function
(
det
)
{
var
_a
=
det
.
forSize
(
image
.
width
,
image
.
height
).
getBox
(),
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
var
_a
=
det
.
forSize
(
image
.
width
,
image
.
height
).
getBox
()
.
floor
()
,
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
var
faceImg
=
createCanvas
({
width
:
width
,
height
:
height
});
getContext2dOrThrow
(
faceImg
)
.
putImageData
(
ctx
.
getImageData
(
x
,
y
,
width
,
height
),
0
,
0
);
...
...
@@ -1425,7 +1446,7 @@
// TODO handle batches
var
_a
=
imgTensor
.
shape
,
batchSize
=
_a
[
0
],
imgHeight
=
_a
[
1
],
imgWidth
=
_a
[
2
],
numChannels
=
_a
[
3
];
var
faceTensors
=
detections
.
map
(
function
(
det
)
{
var
_a
=
det
.
forSize
(
imgWidth
,
imgHeight
).
getBox
(),
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
var
_a
=
det
.
forSize
(
imgWidth
,
imgHeight
).
getBox
()
.
floor
()
,
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
return
slice
(
imgTensor
,
[
0
,
y
,
x
,
0
],
[
1
,
height
,
width
,
numChannels
]);
});
return
faceTensors
;
...
...
dist/face-api.min.js
View file @
b9588f96
This source diff could not be displayed because it is too large. You can
view the blob
instead.
dist/faceDetectionNet/FaceDetection.d.ts
View file @
b9588f96
...
...
@@ -8,6 +8,8 @@ export declare class FaceDetection {
constructor
(
score
:
number
,
relativeBox
:
Rect
,
imageDims
:
Dimensions
);
getScore
():
number
;
getBox
():
Rect
;
getImageWidth
():
number
;
getImageHeight
():
number
;
getRelativeBox
():
Rect
;
forSize
(
width
:
number
,
height
:
number
):
FaceDetection
;
}
dist/faceDetectionNet/FaceDetection.js
View file @
b9588f96
...
...
@@ -5,7 +5,7 @@ var FaceDetection = /** @class */ (function () {
this
.
_imageWidth
=
width
;
this
.
_imageHeight
=
height
;
this
.
_score
=
score
;
this
.
_box
=
new
Rect
(
Math
.
floor
(
relativeBox
.
x
*
width
),
Math
.
floor
(
relativeBox
.
y
*
height
),
Math
.
floor
(
relativeBox
.
width
*
width
),
Math
.
floor
(
relativeBox
.
height
*
height
)
);
this
.
_box
=
new
Rect
(
relativeBox
.
x
*
width
,
relativeBox
.
y
*
height
,
relativeBox
.
width
*
width
,
relativeBox
.
height
*
height
);
}
FaceDetection
.
prototype
.
getScore
=
function
()
{
return
this
.
_score
;
...
...
@@ -13,6 +13,12 @@ var FaceDetection = /** @class */ (function () {
FaceDetection
.
prototype
.
getBox
=
function
()
{
return
this
.
_box
;
};
FaceDetection
.
prototype
.
getImageWidth
=
function
()
{
return
this
.
_imageWidth
;
};
FaceDetection
.
prototype
.
getImageHeight
=
function
()
{
return
this
.
_imageHeight
;
};
FaceDetection
.
prototype
.
getRelativeBox
=
function
()
{
return
new
Rect
(
this
.
_box
.
x
/
this
.
_imageWidth
,
this
.
_box
.
y
/
this
.
_imageHeight
,
this
.
_box
.
width
/
this
.
_imageWidth
,
this
.
_box
.
height
/
this
.
_imageHeight
);
};
...
...
dist/faceDetectionNet/FaceDetection.js.map
View file @
b9588f96
{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../src/faceDetectionNet/FaceDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B;IAME,uBACE,KAAa,EACb,WAAiB,EACjB,SAAqB;QAEb,IAAA,uBAAK,EAAE,yBAAM,CAAc;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAClB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,CAAC,EACjC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,EAClC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,EACrC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,CACxC,CAAA;IACH,CAAC;IAEM,gCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAEM,8BAAM,GAAb;QACE,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAClC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CACrC,CAAA;IACH,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EAAE,EACrB,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAC,CACjB,CAAA;IACH,CAAC;IACH,oBAAC;AAAD,CAAC,AA/CD,IA+CC"}
\ No newline at end of file
{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../src/faceDetectionNet/FaceDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B;IAME,uBACE,KAAa,EACb,WAAiB,EACjB,SAAqB;QAEb,IAAA,uBAAK,EAAE,yBAAM,CAAc;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAClB,WAAW,CAAC,CAAC,GAAG,KAAK,EACrB,WAAW,CAAC,CAAC,GAAG,MAAM,EACtB,WAAW,CAAC,KAAK,GAAG,KAAK,EACzB,WAAW,CAAC,MAAM,GAAG,MAAM,CAC5B,CAAA;IACH,CAAC;IAEM,gCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAEM,8BAAM,GAAb;QACE,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEM,qCAAa,GAApB;QACE,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAClC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CACrC,CAAA;IACH,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EAAE,EACrB,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAC,CACjB,CAAA;IACH,CAAC;IACH,oBAAC;AAAD,CAAC,AAvDD,IAuDC"}
\ No newline at end of file
dist/faceLandmarkNet/FaceLandmarks.d.ts
View file @
b9588f96
...
...
@@ -4,7 +4,8 @@ export declare class FaceLandmarks {
private
_faceLandmarks
;
private
_imageWidth
;
private
_imageHeight
;
constructor
(
relativeFaceLandmarkPositions
:
Point
[],
imageDims
:
Dimensions
);
private
_shift
;
constructor
(
relativeFaceLandmarkPositions
:
Point
[],
imageDims
:
Dimensions
,
shift
?:
Point
);
getPositions
():
Point
[];
getRelativePositions
():
Point
[];
getJawOutline
():
Point
[];
...
...
@@ -15,4 +16,5 @@ export declare class FaceLandmarks {
getRightEye
():
Point
[];
getMouth
():
Point
[];
forSize
(
width
:
number
,
height
:
number
):
FaceLandmarks
;
shift
(
x
:
number
,
y
:
number
):
FaceLandmarks
;
}
dist/faceLandmarkNet/FaceLandmarks.js
View file @
b9588f96
import
{
Point
}
from
'../Point'
;
var
FaceLandmarks
=
/** @class */
(
function
()
{
function
FaceLandmarks
(
relativeFaceLandmarkPositions
,
imageDims
)
{
function
FaceLandmarks
(
relativeFaceLandmarkPositions
,
imageDims
,
shift
)
{
if
(
shift
===
void
0
)
{
shift
=
new
Point
(
0
,
0
);
}
var
width
=
imageDims
.
width
,
height
=
imageDims
.
height
;
this
.
_imageWidth
=
width
;
this
.
_imageHeight
=
height
;
this
.
_faceLandmarks
=
relativeFaceLandmarkPositions
.
map
(
function
(
pt
)
{
return
new
Point
(
pt
.
x
*
width
,
pt
.
y
*
height
);
});
this
.
_shift
=
shift
;
this
.
_faceLandmarks
=
relativeFaceLandmarkPositions
.
map
(
function
(
pt
)
{
return
pt
.
mul
(
new
Point
(
width
,
height
)).
add
(
shift
);
});
}
FaceLandmarks
.
prototype
.
getPositions
=
function
()
{
return
this
.
_faceLandmarks
;
};
FaceLandmarks
.
prototype
.
getRelativePositions
=
function
()
{
var
_this
=
this
;
return
this
.
_faceLandmarks
.
map
(
function
(
pt
)
{
return
new
Point
(
pt
.
x
/
_this
.
_imageWidth
,
pt
.
y
/
_this
.
_imageHeight
);
});
return
this
.
_faceLandmarks
.
map
(
function
(
pt
)
{
return
pt
.
sub
(
_this
.
_shift
).
div
(
new
Point
(
_this
.
_imageWidth
,
_this
.
_imageHeight
)
);
});
};
FaceLandmarks
.
prototype
.
getJawOutline
=
function
()
{
return
this
.
_faceLandmarks
.
slice
(
0
,
17
);
...
...
@@ -37,6 +39,9 @@ var FaceLandmarks = /** @class */ (function () {
FaceLandmarks
.
prototype
.
forSize
=
function
(
width
,
height
)
{
return
new
FaceLandmarks
(
this
.
getRelativePositions
(),
{
width
:
width
,
height
:
height
});
};
FaceLandmarks
.
prototype
.
shift
=
function
(
x
,
y
)
{
return
new
FaceLandmarks
(
this
.
getRelativePositions
(),
{
width
:
this
.
_imageWidth
,
height
:
this
.
_imageHeight
},
new
Point
(
x
,
y
));
};
return
FaceLandmarks
;
}());
export
{
FaceLandmarks
};
...
...
dist/faceLandmarkNet/FaceLandmarks.js.map
View file @
b9588f96
{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/FaceLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC;IAKE,uBACE,6BAAsC,EACtC,SAAqB;QAEb,IAAA,uBAAK,EAAE,yBAAM,CAAc;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC1B,IAAI,CAAC,cAAc,GAAG,6BAA6B,CAAC,GAAG,CACrD,UAAA,EAAE,IAAI,OAAA,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,EAAtC,CAAsC,CAC7C,CAAA;IACH,CAAC;IAEM,oCAAY,GAAnB;QACE,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAEM,4CAAoB,GAA3B;QAAA,iBAIC;QAHC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAC5B,UAAA,EAAE,IAAI,OAAA,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,GAAG,KAAI,CAAC,YAAY,CAAC,EAA5D,CAA4D,CACnE,CAAA;IACH,CAAC;IAEM,qCAAa,GAApB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,uCAAe,GAAtB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,+BAAO,GAAd;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,kCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,mCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,gCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;IAC1E,CAAC;IACH,oBAAC;AAAD,CAAC,AA1DD,IA0DC"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/FaceLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAU,MAAM,UAAU,CAAC;AAGzC;IAME,uBACE,6BAAsC,EACtC,SAAqB,EACrB,KAA8B;QAA9B,sBAAA,EAAA,YAAmB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEtB,IAAA,uBAAK,EAAE,yBAAM,CAAc;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,cAAc,GAAG,6BAA6B,CAAC,GAAG,CACrD,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAA3C,CAA2C,CAClD,CAAA;IACH,CAAC;IAEM,oCAAY,GAAnB;QACE,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAEM,4CAAoB,GAA3B;QAAA,iBAIC;QAHC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAC5B,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,GAAG,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAI,CAAC,WAAW,EAAE,KAAI,CAAC,YAAY,CAAC,CAAC,EAAvE,CAAuE,CAC9E,CAAA;IACH,CAAC;IAEM,qCAAa,GAApB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,uCAAe,GAAtB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,+BAAO,GAAd;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,kCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,mCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,gCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,oBAAoB,EAAE,EAC3B,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAClB,CAAA;IACH,CAAC;IAEM,6BAAK,GAAZ,UAAa,CAAS,EAAE,CAAS;QAC/B,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,oBAAoB,EAAE,EAC3B,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EACtD,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAChB,CAAA;IACH,CAAC;IACH,oBAAC;AAAD,CAAC,AAxED,IAwEC"}
\ No newline at end of file
dist/faceLandmarkNet/index.js
View file @
b9588f96
...
...
@@ -2,7 +2,7 @@ import * as tslib_1 from "tslib";
import
*
as
tf
from
'@tensorflow/tfjs-core'
;
import
{
convLayer
}
from
'../commons/convLayer'
;
import
{
getImageTensor
}
from
'../getImageTensor'
;
import
{
padToSquare
}
from
'../padToSquare
'
;
import
{
Point
}
from
'../Point
'
;
import
{
extractParams
}
from
'./extractParams'
;
import
{
FaceLandmarks
}
from
'./FaceLandmarks'
;
import
{
fullyConnectedLayer
}
from
'./fullyConnectedLayer'
;
...
...
@@ -17,19 +17,14 @@ export function faceLandmarkNet(weights) {
var
params
=
extractParams
(
weights
);
function
detectLandmarks
(
input
)
{
return
tslib_1
.
__awaiter
(
this
,
void
0
,
void
0
,
function
()
{
var
adjustRelativeX
,
adjustRelativeY
,
imageDimensions
,
outTensor
,
faceLandmarksArray
,
_a
,
_b
,
xCoords
,
yCoords
;
var
imageDimensions
,
outTensor
,
faceLandmarksArray
,
_a
,
_b
,
xCoords
,
yCoords
;
return
tslib_1
.
__generator
(
this
,
function
(
_c
)
{
switch
(
_c
.
label
)
{
case
0
:
adjustRelativeX
=
0
;
adjustRelativeY
=
0
;
outTensor
=
tf
.
tidy
(
function
()
{
var
imgTensor
=
getImageTensor
(
input
);
var
_a
=
imgTensor
.
shape
.
slice
(
1
),
height
=
_a
[
0
],
width
=
_a
[
1
];
imageDimensions
=
{
width
:
width
,
height
:
height
};
imgTensor
=
padToSquare
(
imgTensor
,
true
);
adjustRelativeX
=
(
height
>
width
)
?
imgTensor
.
shape
[
2
]
/
(
2
*
width
)
:
0
;
adjustRelativeY
=
(
width
>
height
)
?
imgTensor
.
shape
[
1
]
/
(
2
*
height
)
:
0
;
// work with 128 x 128 sized face images
if
(
imgTensor
.
shape
[
1
]
!==
128
||
imgTensor
.
shape
[
2
]
!==
128
)
{
imgTensor
=
tf
.
image
.
resizeBilinear
(
imgTensor
,
[
128
,
128
]);
...
...
@@ -54,10 +49,10 @@ export function faceLandmarkNet(weights) {
return
[
4
/*yield*/
,
outTensor
.
data
()];
case
1
:
faceLandmarksArray
=
_b
.
apply
(
_a
,
[
_c
.
sent
()]);
xCoords
=
faceLandmarksArray
.
filter
(
function
(
c
,
i
)
{
return
(
i
-
1
)
%
2
;
}).
map
(
function
(
x
)
{
return
x
+
adjustRelativeX
;
});
yCoords
=
faceLandmarksArray
.
filter
(
function
(
c
,
i
)
{
return
i
%
2
;
}).
map
(
function
(
y
)
{
return
y
+
adjustRelativeY
;
});
outTensor
.
dispose
();
return
[
2
/*return*/
,
new
FaceLandmarks
(
Array
(
68
).
fill
(
0
).
map
(
function
(
_
,
i
)
{
return
({
x
:
xCoords
[
i
],
y
:
yCoords
[
i
]
});
}),
imageDimensions
)];
xCoords
=
faceLandmarksArray
.
filter
(
function
(
c
,
i
)
{
return
(
i
-
1
)
%
2
;
});
yCoords
=
faceLandmarksArray
.
filter
(
function
(
c
,
i
)
{
return
i
%
2
;
});
return
[
2
/*return*/
,
new
FaceLandmarks
(
Array
(
68
).
fill
(
0
).
map
(
function
(
_
,
i
)
{
return
new
Point
(
xCoords
[
i
],
yCoords
[
i
]);
}),
imageDimensions
)];
}
});
});
...
...
dist/faceLandmarkNet/index.js.map
View file @
b9588f96
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
dist/utils.js.map
View file @
b9588f96
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment