Commit 1d133c54 by vincent

fixed MTCNN forwardParams initialization for optional params

parent 5d874922
...@@ -73,9 +73,9 @@ export function computeFaceDescriptor( ...@@ -73,9 +73,9 @@ export function computeFaceDescriptor(
export function mtcnn( export function mtcnn(
input: TNetInput, input: TNetInput,
forwardParameters: MtcnnForwardParams = getDefaultMtcnnForwardParams() forwardParams: MtcnnForwardParams
): Promise<MtcnnResult[]> { ): Promise<MtcnnResult[]> {
return nets.mtcnn.forward(input, forwardParameters) return nets.mtcnn.forward(input, forwardParams)
} }
export const allFaces: ( export const allFaces: (
......
...@@ -28,7 +28,7 @@ export class Mtcnn extends NeuralNetwork<NetParams> { ...@@ -28,7 +28,7 @@ export class Mtcnn extends NeuralNetwork<NetParams> {
public async forwardInput( public async forwardInput(
input: NetInput, input: NetInput,
{ minFaceSize, scaleFactor, maxNumScales, scoreThresholds, scaleSteps } = getDefaultMtcnnForwardParams() forwardParams: MtcnnForwardParams
): Promise<{ results: MtcnnResult[], stats: any }> { ): Promise<{ results: MtcnnResult[], stats: any }> {
const { params } = this const { params } = this
...@@ -64,6 +64,14 @@ export class Mtcnn extends NeuralNetwork<NetParams> { ...@@ -64,6 +64,14 @@ export class Mtcnn extends NeuralNetwork<NetParams> {
const [height, width] = imgTensor.shape.slice(1) const [height, width] = imgTensor.shape.slice(1)
const {
minFaceSize,
scaleFactor,
maxNumScales,
scoreThresholds,
scaleSteps
} = Object.assign({}, getDefaultMtcnnForwardParams(), forwardParams)
const scales = scaleSteps || pyramidDown(minFaceSize, scaleFactor, [height, width]) const scales = scaleSteps || pyramidDown(minFaceSize, scaleFactor, [height, width])
.filter(scale => { .filter(scale => {
const sizes = getSizesForScale(scale, [height, width]) const sizes = getSizesForScale(scale, [height, width])
...@@ -124,23 +132,23 @@ export class Mtcnn extends NeuralNetwork<NetParams> { ...@@ -124,23 +132,23 @@ export class Mtcnn extends NeuralNetwork<NetParams> {
public async forward( public async forward(
input: TNetInput, input: TNetInput,
forwardParameters: MtcnnForwardParams = getDefaultMtcnnForwardParams() forwardParams: MtcnnForwardParams
): Promise<MtcnnResult[]> { ): Promise<MtcnnResult[]> {
return ( return (
await this.forwardInput( await this.forwardInput(
await toNetInput(input, true, true), await toNetInput(input, true, true),
forwardParameters forwardParams
) )
).results ).results
} }
public async forwardWithStats( public async forwardWithStats(
input: TNetInput, input: TNetInput,
forwardParameters: MtcnnForwardParams = getDefaultMtcnnForwardParams() forwardParams: MtcnnForwardParams
): Promise<{ results: MtcnnResult[], stats: any }> { ): Promise<{ results: MtcnnResult[], stats: any }> {
return this.forwardInput( return this.forwardInput(
await toNetInput(input, true, true), await toNetInput(input, true, true),
forwardParameters forwardParams
) )
} }
......
import { MtcnnForwardParams } from './types'; export function getDefaultMtcnnForwardParams() {
export function getDefaultMtcnnForwardParams(): MtcnnForwardParams {
return { return {
minFaceSize: 20, minFaceSize: 20,
scaleFactor: 0.709, scaleFactor: 0.709,
......
...@@ -47,9 +47,9 @@ export type MtcnnResult = { ...@@ -47,9 +47,9 @@ export type MtcnnResult = {
} }
export type MtcnnForwardParams = { export type MtcnnForwardParams = {
minFaceSize: number minFaceSize?: number
scaleFactor: number scaleFactor?: number
maxNumScales: number maxNumScales?: number
scoreThresholds: number[] scoreThresholds?: number[]
scaleSteps?: number[] scaleSteps?: number[]
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment