Skip to content

Commit

Permalink
update tfjs-core to latest
Browse files Browse the repository at this point in the history
  • Loading branch information
justadudewhohacks committed Sep 13, 2019
1 parent 3a314e8 commit 6080112
Show file tree
Hide file tree
Showing 31 changed files with 568 additions and 1,027 deletions.
1 change: 0 additions & 1 deletion jasmine-node.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

let spec_files = ['**/*.test.ts'].concat(
process.env.EXCLUDE_UNCOMPRESSED
? ['!**/*.uncompressed.test.ts']
Expand Down
1 change: 1 addition & 0 deletions karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ exclude = exclude.concat(

// exclude nodejs tests
exclude = exclude.concat(['**/*.node.test.ts'])
exclude = exclude.concat(['test/env.node.ts'])


module.exports = function(config) {
Expand Down
1,288 changes: 398 additions & 890 deletions package-lock.json

Large diffs are not rendered by default.

28 changes: 14 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"build": "rm -rf ./build && rm -rf ./dist && npm run rollup && npm run rollup-min && npm run tsc && npm run tsc-es6",
"test": "karma start",
"test-browser": "karma start --single-run",
"test-node": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine-node.js",
"test-node": "ts-node -r ./test/env.node.ts node_modules/jasmine/bin/jasmine --config=jasmine-node.js",
"test-all": "npm run test-browser-exclude-uncompressed && npm run test-node-exclude-uncompressed",
"test-all-include-uncompressed": "npm run test-browser && npm run test-node",
"test-facelandmarknets": "set UUT=faceLandmarkNet&& karma start",
Expand All @@ -26,7 +26,7 @@
"test-cpu": "set BACKEND_CPU=true&& karma start",
"test-exclude-uncompressed": "set EXCLUDE_UNCOMPRESSED=true&& karma start",
"test-browser-exclude-uncompressed": "set EXCLUDE_UNCOMPRESSED=true&& karma start --single-run",
"test-node-exclude-uncompressed": "set EXCLUDE_UNCOMPRESSED=true&& ts-node node_modules/jasmine/bin/jasmine --config=jasmine-node.js",
"test-node-exclude-uncompressed": "set EXCLUDE_UNCOMPRESSED=true&& npm run test-node",
"docs": "typedoc --options ./typedoc.config.js ./src"
},
"keywords": [
Expand All @@ -39,27 +39,27 @@
"author": "justadudewhohacks",
"license": "MIT",
"dependencies": {
"@tensorflow/tfjs-core": "1.2.2",
"tfjs-image-recognition-base": "^0.6.1",
"@tensorflow/tfjs-core": "1.2.9",
"tfjs-image-recognition-base": "^0.6.2",
"tslib": "^1.10.0"
},
"devDependencies": {
"@tensorflow/tfjs-node": "^1.2.3",
"@types/jasmine": "^3.3.13",
"@types/node": "^12.0.10",
"@tensorflow/tfjs-node": "^1.2.9",
"@types/jasmine": "^3.4.0",
"@types/node": "^12.7.5",
"canvas": "2.5.0",
"jasmine": "^3.4.0",
"jasmine-core": "^3.4.0",
"karma": "^4.1.0",
"karma": "^4.3.0",
"karma-chrome-launcher": "^2.2.0",
"karma-jasmine": "^2.0.1",
"karma-typescript": "^4.1.0",
"rollup": "^1.16.2",
"rollup-plugin-commonjs": "^10.0.1",
"rollup-plugin-node-resolve": "^5.1.0",
"karma-typescript": "^4.1.1",
"rollup": "^1.21.2",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-typescript2": "^0.21.2",
"rollup-plugin-uglify": "^6.0.2",
"rollup-plugin-uglify": "^6.0.3",
"ts-node": "^8.3.0",
"typescript": "^3.5.2"
"typescript": "^3.6.3"
}
}
11 changes: 11 additions & 0 deletions test/Environment.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { NeuralNetwork } from 'tfjs-image-recognition-base';

export type TestEnv = {
loadImage: (uri: string) => Promise<HTMLImageElement>
loadJson: <T> (uri: string) => Promise<T>
initNet: <TNet extends NeuralNetwork<any>>(
net: TNet,
uncompressedFilename?: string | boolean,
isUnusedModel?: boolean
) => any
}
32 changes: 32 additions & 0 deletions test/env.node.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import * as fs from 'fs';
import * as path from 'path';
import { NeuralNetwork } from 'tfjs-image-recognition-base';

import { env } from '../src';
import { TestEnv } from './Environment';

require('@tensorflow/tfjs-node')
const canvas = require('canvas')

const { Canvas, Image, ImageData } = canvas
env.monkeyPatch({ Canvas, Image, ImageData })

async function loadImageNode(uri: string): Promise<HTMLImageElement> {
return canvas.loadImage(path.resolve(__dirname, '../', uri))
}

async function loadJsonNode<T>(uri: string): Promise<T> {
return JSON.parse(fs.readFileSync(path.resolve(__dirname, '../', uri)).toString())
}

export async function initNetNode<TNet extends NeuralNetwork<any>>(net: TNet) {
await net.loadFromDisk(path.resolve(__dirname, '../weights'))
}

const nodeTestEnv: TestEnv = {
loadImage: loadImageNode,
loadJson: loadJsonNode,
initNet: initNetNode
}

global['nodeTestEnv'] = nodeTestEnv
57 changes: 23 additions & 34 deletions test/env.ts
Original file line number Diff line number Diff line change
@@ -1,52 +1,41 @@
import * as tf from '@tensorflow/tfjs-core';
import { fetchNetWeights, NeuralNetwork } from 'tfjs-image-recognition-base';

import { env, fetchImage, fetchJson } from '../src';

export let fs: any, path: any, canvas: any
import { fetchImage, fetchJson } from '../src';
import { TestEnv } from './Environment';

jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000

if (env.isNodejs()) {
require('@tensorflow/tfjs-node')
fs = require('fs')
path = require('path')
canvas = require('canvas')

const { Canvas, Image, ImageData } = canvas
env.monkeyPatch({ Canvas, Image, ImageData })
} else {
if ((window['__karma__'].config.jasmine.args as string[]).some(arg => arg === 'backend_cpu')) {
tf.setBackend('cpu')
}
if (typeof window !== 'undefined' && window['__karma__'] && (window['__karma__'].config.jasmine.args as string[]).some(arg => arg === 'backend_cpu')) {
tf.setBackend('cpu')
}

export async function initNet<TNet extends NeuralNetwork<any>>(
async function loadImageBrowser(uri: string): Promise<HTMLImageElement> {
return fetchImage(`base${uri.startsWith('/') ? '' : '/'}${uri}`)
}

async function loadJsonBrowser<T>(uri: string): Promise<T> {
return fetchJson<T>(`base${uri.startsWith('/') ? '' : '/'}${uri}`)
}

async function initNetBrowser<TNet extends NeuralNetwork<any>>(
net: TNet,
uncompressedFilename: string | boolean,
isUnusedModel: boolean = false
) {
if (env.isNodejs()) {
await net.loadFromDisk(path.resolve(__dirname, '../weights'))
} else {
const url = uncompressedFilename
? await fetchNetWeights(`base/weights_uncompressed/${uncompressedFilename}`)
: (isUnusedModel ? 'base/weights_unused' : 'base/weights')
await net.load(url)
}
const url = uncompressedFilename
? await fetchNetWeights(`base/weights_uncompressed/${uncompressedFilename}`)
: (isUnusedModel ? 'base/weights_unused' : 'base/weights')
await net.load(url)
}

export async function loadImage(uri: string): Promise<HTMLImageElement> {
if (env.isNodejs()) {
return canvas.loadImage(path.resolve(__dirname, '../', uri))
}
return fetchImage(`base${uri.startsWith('/') ? '' : '/'}${uri}`)
const browserTestEnv: TestEnv = {
loadImage: loadImageBrowser,
loadJson: loadJsonBrowser,
initNet: initNetBrowser
}

export async function loadJson<T>(uri: string): Promise<T> {
if (env.isNodejs()) {
return JSON.parse(fs.readFileSync(path.resolve(__dirname, '../', uri)).toString())
}
return fetchJson<T>(`base${uri.startsWith('/') ? '' : '/'}${uri}`)
export function getTestEnv(): TestEnv {
return global['nodeTestEnv'] || browserTestEnv
}

6 changes: 3 additions & 3 deletions test/tests/ageGenderNet/ageGenderNet.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as tf from '@tensorflow/tfjs-core';

import { createCanvasFromMedia, NetInput, toNetInput } from '../../../src';
import { AgeAndGenderPrediction } from '../../../src/ageGenderNet/types';
import { loadImage } from '../../env';
import { getTestEnv } from '../../env';
import { describeWithBackend, describeWithNets, expectAllTensorsReleased } from '../../utils';

function expectResultsAngry(result: AgeAndGenderPrediction) {
Expand All @@ -25,8 +25,8 @@ describeWithBackend('ageGenderNet', () => {
let imgElSurprised: HTMLImageElement

beforeAll(async () => {
imgElAngry = await loadImage('test/images/angry_cropped.jpg')
imgElSurprised = await loadImage('test/images/surprised_cropped.jpg')
imgElAngry = await getTestEnv().loadImage('test/images/angry_cropped.jpg')
imgElSurprised = await getTestEnv().loadImage('test/images/surprised_cropped.jpg')
})

describeWithNets('quantized weights', { withAgeGenderNet: { quantized: true } }, ({ ageGenderNet }) => {
Expand Down
4 changes: 2 additions & 2 deletions test/tests/dom/extractFaceTensors.test.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { createCanvasFromMedia, extractFaceTensors, Rect, tf } from '../../../src';
import { loadImage } from '../../env';
import { getTestEnv } from '../../env';
import { describeWithBackend } from '../../utils';

describeWithBackend('extractFaceTensors', () => {

let imgTensor: tf.Tensor3D

beforeAll(async () => {
imgTensor = tf.browser.fromPixels(createCanvasFromMedia(await loadImage('test/images/face1.png')))
imgTensor = tf.browser.fromPixels(createCanvasFromMedia(await getTestEnv().loadImage('test/images/face1.png')))
})

describe('extracts tensors', () => {
Expand Down
4 changes: 2 additions & 2 deletions test/tests/dom/extractFaces.test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { createCanvasFromMedia, env, extractFaces, Rect } from '../../../src';
import { loadImage } from '../../env';
import { getTestEnv } from '../../env';

describe('extractFaces', () => {

let imgEl: HTMLImageElement, canvasEl: HTMLCanvasElement, Canvas: typeof HTMLCanvasElement

beforeAll(async () => {
imgEl = await loadImage('test/images/face1.png')
imgEl = await getTestEnv().loadImage('test/images/face1.png')
canvasEl = createCanvasFromMedia(imgEl)
Canvas = env.getEnv().Canvas
})
Expand Down
8 changes: 4 additions & 4 deletions test/tests/faceExpressionNet/faceExpressionNet.test.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import * as tf from '@tensorflow/tfjs-core';

import { createCanvasFromMedia, NetInput, toNetInput } from '../../../src';
import { loadImage } from '../../env';
import { describeWithBackend, describeWithNets, expectAllTensorsReleased } from '../../utils';
import { FaceExpressions } from '../../../src/faceExpressionNet/FaceExpressions';
import { getTestEnv } from '../../env';
import { describeWithBackend, describeWithNets, expectAllTensorsReleased } from '../../utils';

describeWithBackend('faceExpressionNet', () => {

let imgElAngry: HTMLImageElement
let imgElSurprised: HTMLImageElement

beforeAll(async () => {
imgElAngry = await loadImage('test/images/angry_cropped.jpg')
imgElSurprised = await loadImage('test/images/surprised_cropped.jpg')
imgElAngry = await getTestEnv().loadImage('test/images/angry_cropped.jpg')
imgElSurprised = await getTestEnv().loadImage('test/images/surprised_cropped.jpg')
})

describeWithNets('quantized weights', { withFaceExpressionNet: { quantized: true } }, ({ faceExpressionNet }) => {
Expand Down
14 changes: 7 additions & 7 deletions test/tests/faceLandmarkNet/faceLandmark68Net.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as tf from '@tensorflow/tfjs-core';

import { createCanvasFromMedia, IDimensions, isTensor3D, NetInput, Point, TMediaElement, toNetInput } from '../../../src';
import { FaceLandmarks68 } from '../../../src/classes/FaceLandmarks68';
import { loadImage, loadJson } from '../../env';
import { getTestEnv } from '../../env';
import {
describeWithBackend,
describeWithNets,
Expand All @@ -29,12 +29,12 @@ describeWithBackend('faceLandmark68Net', () => {
let faceLandmarkPositionsRect: Point[]

beforeAll(async () => {
imgEl1 = await loadImage('test/images/face1.png')
imgEl2 = await loadImage('test/images/face2.png')
imgElRect = await loadImage('test/images/face_rectangular.png')
faceLandmarkPositions1 = await loadJson<Point[]>('test/data/faceLandmarkPositions1.json')
faceLandmarkPositions2 = await loadJson<Point[]>('test/data/faceLandmarkPositions2.json')
faceLandmarkPositionsRect = await loadJson<Point[]>('test/data/faceLandmarkPositionsRect.json')
imgEl1 = await getTestEnv().loadImage('test/images/face1.png')
imgEl2 = await getTestEnv().loadImage('test/images/face2.png')
imgElRect = await getTestEnv().loadImage('test/images/face_rectangular.png')
faceLandmarkPositions1 = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositions1.json')
faceLandmarkPositions2 = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositions2.json')
faceLandmarkPositionsRect = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositionsRect.json')
})

describeWithNets('quantized weights', { withFaceLandmark68Net: { quantized: true } }, ({ faceLandmark68Net }) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Point } from '../../../src';
import { FaceLandmarks68 } from '../../../src/classes/FaceLandmarks68';
import { loadImage, loadJson } from '../../env';
import { getTestEnv } from '../../env';
import { describeWithBackend, describeWithNets, expectPointClose } from '../../utils';

describeWithBackend('faceLandmark68Net, uncompressed', () => {
Expand All @@ -11,10 +11,10 @@ describeWithBackend('faceLandmark68Net, uncompressed', () => {
let faceLandmarkPositionsRect: Point[]

beforeAll(async () => {
imgEl1 = await loadImage('test/images/face1.png')
imgElRect = await loadImage('test/images/face_rectangular.png')
faceLandmarkPositions1 = await loadJson<Point[]>('test/data/faceLandmarkPositions1.json')
faceLandmarkPositionsRect = await loadJson<Point[]>('test/data/faceLandmarkPositionsRect.json')
imgEl1 = await getTestEnv().loadImage('test/images/face1.png')
imgElRect = await getTestEnv().loadImage('test/images/face_rectangular.png')
faceLandmarkPositions1 = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositions1.json')
faceLandmarkPositionsRect = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositionsRect.json')
})

describeWithNets('uncompressed weights', { withFaceLandmark68Net: { quantized: false } }, ({ faceLandmark68Net }) => {
Expand Down
14 changes: 7 additions & 7 deletions test/tests/faceLandmarkNet/faceLandmark68TinyNet.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as tf from '@tensorflow/tfjs-core';

import { createCanvasFromMedia, IDimensions, isTensor3D, NetInput, Point, TMediaElement, toNetInput } from '../../../src';
import { FaceLandmarks68 } from '../../../src/classes/FaceLandmarks68';
import { loadImage, loadJson } from '../../env';
import { getTestEnv } from '../../env';
import { describeWithBackend, describeWithNets, expectAllTensorsReleased, expectPointClose } from '../../utils';

function getInputDims (input: tf.Tensor | TMediaElement): IDimensions {
Expand All @@ -23,12 +23,12 @@ describeWithBackend('faceLandmark68TinyNet', () => {
let faceLandmarkPositionsRect: Point[]

beforeAll(async () => {
imgEl1 = await loadImage('test/images/face1.png')
imgEl2 = await loadImage('test/images/face2.png')
imgElRect = await loadImage('test/images/face_rectangular.png')
faceLandmarkPositions1 = await loadJson<Point[]>('test/data/faceLandmarkPositions1Tiny.json')
faceLandmarkPositions2 = await loadJson<Point[]>('test/data/faceLandmarkPositions2Tiny.json')
faceLandmarkPositionsRect = await loadJson<Point[]>('test/data/faceLandmarkPositionsRectTiny.json')
imgEl1 = await getTestEnv().loadImage('test/images/face1.png')
imgEl2 = await getTestEnv().loadImage('test/images/face2.png')
imgElRect = await getTestEnv().loadImage('test/images/face_rectangular.png')
faceLandmarkPositions1 = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositions1Tiny.json')
faceLandmarkPositions2 = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositions2Tiny.json')
faceLandmarkPositionsRect = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositionsRectTiny.json')
})

describeWithNets('quantized weights', { withFaceLandmark68TinyNet: { quantized: true } }, ({ faceLandmark68TinyNet }) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Point } from '../../../src';
import { FaceLandmarks68 } from '../../../src/classes/FaceLandmarks68';
import { loadImage, loadJson } from '../../env';
import { describeWithNets, expectPointClose, describeWithBackend } from '../../utils';
import { getTestEnv } from '../../env';
import { describeWithBackend, describeWithNets, expectPointClose } from '../../utils';

describeWithBackend('faceLandmark68TinyNet, uncompressed', () => {

Expand All @@ -11,10 +11,10 @@ describeWithBackend('faceLandmark68TinyNet, uncompressed', () => {
let faceLandmarkPositionsRect: Point[]

beforeAll(async () => {
imgEl1 = await loadImage('test/images/face1.png')
imgElRect = await loadImage('test/images/face_rectangular.png')
faceLandmarkPositions1 = await loadJson<Point[]>('test/data/faceLandmarkPositions1Tiny.json')
faceLandmarkPositionsRect = await loadJson<Point[]>('test/data/faceLandmarkPositionsRectTiny.json')
imgEl1 = await getTestEnv().loadImage('test/images/face1.png')
imgElRect = await getTestEnv().loadImage('test/images/face_rectangular.png')
faceLandmarkPositions1 = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositions1Tiny.json')
faceLandmarkPositionsRect = await getTestEnv().loadJson<Point[]>('test/data/faceLandmarkPositionsRectTiny.json')
})

describeWithNets('uncompressed weights', { withFaceLandmark68TinyNet: { quantized: false } }, ({ faceLandmark68TinyNet }) => {
Expand Down
14 changes: 7 additions & 7 deletions test/tests/faceRecognitionNet/faceRecognitionNet.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as tf from '@tensorflow/tfjs-core';

import { createCanvasFromMedia, NetInput, toNetInput } from '../../../src';
import { euclideanDistance } from '../../../src/euclideanDistance';
import { loadImage, loadJson } from '../../env';
import { getTestEnv } from '../../env';
import { describeWithBackend, describeWithNets, expectAllTensorsReleased } from '../../utils';

describeWithBackend('faceRecognitionNet', () => {
Expand All @@ -15,12 +15,12 @@ describeWithBackend('faceRecognitionNet', () => {
let faceDescriptorRect: number[]

beforeAll(async () => {
imgEl1 = createCanvasFromMedia(await loadImage('test/images/face1.png'))
imgEl2 = createCanvasFromMedia(await loadImage('test/images/face2.png'))
imgElRect = createCanvasFromMedia(await loadImage('test/images/face_rectangular.png'))
faceDescriptor1 = await loadJson<number[]>('test/data/faceDescriptor1.json')
faceDescriptor2 = await loadJson<number[]>('test/data/faceDescriptor2.json')
faceDescriptorRect = await loadJson<number[]>('test/data/faceDescriptorRect.json')
imgEl1 = createCanvasFromMedia(await getTestEnv().loadImage('test/images/face1.png'))
imgEl2 = createCanvasFromMedia(await getTestEnv().loadImage('test/images/face2.png'))
imgElRect = createCanvasFromMedia(await getTestEnv().loadImage('test/images/face_rectangular.png'))
faceDescriptor1 = await getTestEnv().loadJson<number[]>('test/data/faceDescriptor1.json')
faceDescriptor2 = await getTestEnv().loadJson<number[]>('test/data/faceDescriptor2.json')
faceDescriptorRect = await getTestEnv().loadJson<number[]>('test/data/faceDescriptorRect.json')
})

describeWithNets('quantized weights', { withFaceRecognitionNet: { quantized: true } }, ({ faceRecognitionNet }) => {
Expand Down
Loading

0 comments on commit 6080112

Please sign in to comment.