Skip to content

Instantly share code, notes, and snippets.

@dikarel
Last active June 20, 2025 17:08
Show Gist options
  • Select an option

  • Save dikarel/38a12ce263199a41ad67c15eac7f4b45 to your computer and use it in GitHub Desktop.

Select an option

Save dikarel/38a12ce263199a41ad67c15eac7f4b45 to your computer and use it in GitHub Desktop.
ml5.js TypeScript definitions draft
// Not quite there yet, but better than nothing
// TODO: JSDoc, based on website documentation
// TODO: Interface/class types for each of these ML algorithm instances
// TODO: Break this apart into multiple files for readability
// TODO: Test autocomplete in a vanilla JS project
// TODO: Test autocomplete in a TypeScript project
import { MediaElement } from "p5";
export as namespace ml5;
type PoseNetOptions = {
detectionType: "single" | "multiple";
flipHorizontal: boolean;
imageScaleFactor: number;
maxPoseDetections: number;
minConfidence: number;
multiplier: number;
nmsRadius: number;
outputStride: number;
scoreThreshold: number;
};
type ImageClassifierOptions = {
alpha: number;
topk: number;
version: number;
};
type YoloOptions = {
classProbThreshold: number;
filterBoxesThreshold: number;
IOUThreshold: number;
};
type SketchRnnModel =
| "alarm_clock"
| "ambulance"
| "angel"
| "ant"
| "antyoga"
| "backpack"
| "barn"
| "basket"
| "bear"
| "bee"
| "beeflower"
| "bicycle"
| "bird"
| "book"
| "brain"
| "bridge"
| "bulldozer"
| "bus"
| "butterfly"
| "cactus"
| "calendar"
| "castle"
| "cat"
| "catbus"
| "catpig"
| "chair"
| "couch"
| "crab"
| "crabchair"
| "crabrabbitfacepig"
| "cruise_ship"
| "diving_board"
| "dog"
| "dogbunny"
| "dolphin"
| "duck"
| "elephant"
| "elephantpig"
| "eye"
| "face"
| "fan"
| "fire_hydrant"
| "firetruck"
| "flamingo"
| "flower"
| "floweryoga"
| "frog"
| "frogsofa"
| "garden"
| "hand"
| "hedgeberry"
| "hedgehog"
| "helicopter"
| "kangaroo"
| "key"
| "lantern"
| "lighthouse"
| "lion"
| "lionsheep"
| "lobster"
| "map"
| "mermaid"
| "monapassport"
| "monkey"
| "mosquito"
| "octopus"
| "owl"
| "paintbrush"
| "palm_tree"
| "parrot"
| "passport"
| "peas"
| "penguin"
| "pig"
| "pigsheep"
| "pineapple"
| "pool"
| "postcard"
| "power_outlet"
| "rabbit"
| "rabbitturtle"
| "radio"
| "radioface"
| "rain"
| "rhinoceros"
| "rifle"
| "roller_coaster"
| "sandwich"
| "scorpion"
| "sea_turtle"
| "sheep"
| "skull"
| "snail"
| "snowflake"
| "speedboat"
| "spider"
| "squirrel"
| "steak"
| "stove"
| "strawberry"
| "swan"
| "swing_set"
| "the_mona_lisa"
| "tiger"
| "toothbrush"
| "toothpaste"
| "tractor"
| "trombone"
| "truck"
| "whale"
| "windmill"
| "yoga"
| "yogabicycle"
| "everything";
export function imageClassifier(
model: "MobileNet" | "Darknet" | "Darknet-tiny" | string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function imageClassifier(
model: "MobileNet" | "Darknet" | "Darknet-tiny" | string,
options?: ImageClassifierOptions,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function imageClassifier(
model: "MobileNet" | "Darknet" | "Darknet-tiny" | string,
video?: MediaElement | HTMLVideoElement,
options?: ImageClassifierOptions,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function poseNet(
video?: MediaElement | HTMLVideoElement,
type?: "single" | "multiple",
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function poseNet(
video?: MediaElement | HTMLVideoElement,
options?: PoseNetOptions,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function poseNet(
callback?: (error: any, result: any) => void,
options?: PoseNetOptions
): undefined | Promise<any>;
export function bodyPix(
video?: MediaElement | HTMLVideoElement,
type?: "single" | "multiple",
callback?: (error: any, result: any) => void,
options?: any
): undefined | Promise<any>;
export function uNet(
model: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function styleTransfer(
model: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function styleTransfer(
model: string,
video?: MediaElement | HTMLVideoElement,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function pix2pix(
model: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function CVAE(
model: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function DCGAN(
modelPath: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function SketchRNN(
model: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function YOLO(
video?: MediaElement | HTMLVideoElement,
options?: YoloOptions,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function YOLO(
options?: YoloOptions,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function soundClassifier(
model: string,
options?: { probabilityThreshold: number },
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function pitchDetection(
model: "CREPE",
audioContext: AudioContext,
stream: MediaStream,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function charRNN(
model: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function sentiment(
model: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function word2vec(
model: string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
export function SketchRNN(
model: SketchRnnModel | string,
callback?: (error: any, result: any) => void
): undefined | Promise<any>;
@DavidGriswoldTeacher

Copy link
Copy Markdown

Thank you so much for this draft. It isn't everything but it's enough for starter projects with my students, who I've trained to love the autocomplete in VS Code!

@KokoDoko

KokoDoko commented Jun 2, 2021

Copy link
Copy Markdown

Awesome work! Could you add NeuralNetwork to the declaration?

@chrisk8er

Copy link
Copy Markdown

Thanks for this! is very helpful.

@lleft17567

Copy link
Copy Markdown

thanks a lot, it's really helpful for me, definitely

@jihoon-overthehand

jihoon-overthehand commented Jul 15, 2024

Copy link
Copy Markdown

where is .setBackend() ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment