Skip to content

Commit 43bf688

Browse files
move shared logic for nets working on face images to FaceProcessor
1 parent b3bcb3e commit 43bf688

25 files changed

+187
-202
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';
2+
import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';
3+
import { FaceProcessor } from '../faceProcessor/FaceProcessor';
4+
5+
export class FaceExpressionNet extends FaceProcessor<FaceFeatureExtractorParams> {
6+
7+
constructor(faceFeatureExtractor: FaceFeatureExtractor) {
8+
super('FaceExpressionNet', faceFeatureExtractor)
9+
}
10+
11+
public dispose(throwOnRedispose: boolean = true) {
12+
this.faceFeatureExtractor.dispose(throwOnRedispose)
13+
super.dispose(throwOnRedispose)
14+
}
15+
16+
protected getDefaultModelName(): string {
17+
return 'face_expression_model'
18+
}
19+
20+
protected getClassifierChannelsIn(): number {
21+
return 256
22+
}
23+
24+
protected getClassifierChannelsOut(): number {
25+
return 7
26+
}
27+
}

src/faceExpressionNet/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './FaceExpressionNet';

src/faceFeatureExtractor/FaceFeatureExtractor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ConvParams, SeparableConvParams } from 'tfjs-tiny-yolov2';
55
import { depthwiseSeparableConv } from './depthwiseSeparableConv';
66
import { extractParams } from './extractParams';
77
import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';
8-
import { DenseBlock4Params, NetParams } from './types';
8+
import { DenseBlock4Params, IFaceFeatureExtractor, FaceFeatureExtractorParams } from './types';
99

1010
function denseBlock(
1111
x: tf.Tensor4D,
@@ -33,7 +33,7 @@ function denseBlock(
3333
})
3434
}
3535

36-
export class FaceFeatureExtractor extends NeuralNetwork<NetParams> {
36+
export class FaceFeatureExtractor extends NeuralNetwork<FaceFeatureExtractorParams> implements IFaceFeatureExtractor<FaceFeatureExtractorParams> {
3737

3838
constructor() {
3939
super('FaceFeatureExtractor')

src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ConvParams, SeparableConvParams } from 'tfjs-tiny-yolov2';
55
import { depthwiseSeparableConv } from './depthwiseSeparableConv';
66
import { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';
77
import { extractParamsTiny } from './extractParamsTiny';
8-
import { DenseBlock3Params, TinyNetParams } from './types';
8+
import { DenseBlock3Params, IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';
99

1010
function denseBlock(
1111
x: tf.Tensor4D,
@@ -30,7 +30,7 @@ function denseBlock(
3030
})
3131
}
3232

33-
export class TinyFaceFeatureExtractor extends NeuralNetwork<TinyNetParams> {
33+
export class TinyFaceFeatureExtractor extends NeuralNetwork<TinyFaceFeatureExtractorParams> implements IFaceFeatureExtractor<TinyFaceFeatureExtractorParams> {
3434

3535
constructor() {
3636
super('TinyFaceFeatureExtractor')

src/faceFeatureExtractor/extractParams.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { extractWeightsFactory, ParamMapping } from 'tfjs-image-recognition-base';
22

33
import { extractorsFactory } from './extractorsFactory';
4-
import { NetParams } from './types';
4+
import { FaceFeatureExtractorParams } from './types';
55

6-
export function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {
6+
export function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {
77

88
const paramMappings: ParamMapping[] = []
99

src/faceFeatureExtractor/extractParamsFromWeigthMap.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import * as tf from '@tensorflow/tfjs-core';
22
import { disposeUnusedWeightTensors, ParamMapping } from 'tfjs-image-recognition-base';
33

44
import { loadParamsFactory } from './loadParamsFactory';
5-
import { NetParams } from './types';
5+
import { FaceFeatureExtractorParams } from './types';
66

77
export function extractParamsFromWeigthMap(
88
weightMap: tf.NamedTensorMap
9-
): { params: NetParams, paramMappings: ParamMapping[] } {
9+
): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {
1010

1111
const paramMappings: ParamMapping[] = []
1212

src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import * as tf from '@tensorflow/tfjs-core';
22
import { disposeUnusedWeightTensors, ParamMapping } from 'tfjs-image-recognition-base';
33

44
import { loadParamsFactory } from './loadParamsFactory';
5-
import { TinyNetParams } from './types';
5+
import { TinyFaceFeatureExtractorParams } from './types';
66

77
export function extractParamsFromWeigthMapTiny(
88
weightMap: tf.NamedTensorMap
9-
): { params: TinyNetParams, paramMappings: ParamMapping[] } {
9+
): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {
1010

1111
const paramMappings: ParamMapping[] = []
1212

src/faceFeatureExtractor/extractParamsTiny.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { extractWeightsFactory, ParamMapping } from 'tfjs-image-recognition-base';
22

33
import { extractorsFactory } from './extractorsFactory';
4-
import { TinyNetParams } from './types';
4+
import { TinyFaceFeatureExtractorParams } from './types';
55

6-
export function extractParamsTiny(weights: Float32Array): { params: TinyNetParams, paramMappings: ParamMapping[] } {
6+
export function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {
77

88
const paramMappings: ParamMapping[] = []
99

src/faceFeatureExtractor/types.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as tf from '@tensorflow/tfjs-core';
2+
import { NetInput, NeuralNetwork } from 'tfjs-image-recognition-base';
23
import { ConvParams, SeparableConvParams } from 'tfjs-tiny-yolov2';
34

45
export type ConvWithBatchNormParams = BatchNormParams & {
@@ -27,16 +28,19 @@ export type DenseBlock4Params = DenseBlock3Params & {
2728
conv3: SeparableConvParams
2829
}
2930

30-
export type TinyNetParams = {
31+
export type TinyFaceFeatureExtractorParams = {
3132
dense0: DenseBlock3Params
3233
dense1: DenseBlock3Params
3334
dense2: DenseBlock3Params
3435
}
3536

36-
export type NetParams = {
37+
export type FaceFeatureExtractorParams = {
3738
dense0: DenseBlock4Params
3839
dense1: DenseBlock4Params
3940
dense2: DenseBlock4Params
4041
dense3: DenseBlock4Params
4142
}
4243

44+
export interface IFaceFeatureExtractor<TNetParams extends TinyFaceFeatureExtractorParams | FaceFeatureExtractorParams> extends NeuralNetwork<TNetParams> {
45+
forward(input: NetInput): tf.Tensor4D
46+
}

0 commit comments

Comments
 (0)