• Stars
    star
    237
  • Rank 169,885 (Top 4 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A UI tool for quickly training image classifiers in the browser

ML Classifier UI

ML Classifier is a React front end for a machine learning engine for quickly training image classification models in your browser. Models can be saved with a single command, and the resulting models reused to make image classification predictions.

This package is the UI front end for ml-classifier.

Walkthrough

A walkthrough of the code can be found in the article Image Classification in the Browser with Javascript.

Demo

An interactive demo can be found here.

Demo Screenshot of demo

Getting Started

Installation

ml-classifier-ui can be installed via yarn or npm:

yarn add ml-classifier-ui

or

npm install ml-classifier-ui

Quick Start (Code Sandbox)

You can fork a live running version at codesandbox.io.

Quick Start (Running locally)

Start by instantiating a new MLClassifierUI.

import React from 'react';
import ReactDOM from 'react-dom';
import MLClassifierUI from 'ml-classifier-ui';

ReactDOM.render(<MLClassifierUI />, document.getElementById('root'));

API Documentation

MLClassifierUI accepts a number of parameters:

  • getMLClassifier (Function) Optional - A callback that returns an instance of the underlying ml-classifier object. Call this if you want to programmatically call methods like addData, train, and predict. For more information on ml-classifier's API methods refer to it's documentation.
  • methodParams (Object) Optional - A set of parameters that will be passed in calls to ml-classifier's methods. See below for more information.
  • uploadFormat (string) Optional - A string denoting what type of upload format to accept. Formats can be flat or nested. See below note for more information on that. If omitted, all formats are accepted.
  • imageFormats (string[]) Optional - An array of file extensions to accept. By default, all valid images are accepted. Images are transformed via the native Image tag in the browser, so if the browser can display the image, it'll be processed.
  • showDownload (boolean) Optional - A flag denoting whether to show a download button or not. Defaults to true.

MLClassifierUI also accepts a number of callbacks that are called on the beginnings and ends of ml-classifier functions. You can view a list of those here.

getMLClassifier

getMLClassifier returns an instance of ml-classifier for programmatic access to the underlying methods.

Example

<MLClassifierUI
  getMLClassifier={(mlClassifier) => {
    mlClassifier.addData(...);
  }}
/>

methodParams

methodParams can be used to pass method-specific parameters to ml-classifier. The key will be used to determine which method to pass parameters to.

Accepted keys are train, evaluate, and save. Other keys will be ignored.

Example

<MLClassifierUI
  methodParams={{
    train: {
      epochs: 20,
    },
    evaluate: {
      batchSize: 32,
    },
    save: {
    },
  }}
/>

uploadFormat

uploadFormat corresponds to how uploaded images should be organized. There are two options:

nested

Expects images to be organized in folders matching the label. Only the immediate parent folder's name will be used as the label. For example:

- containing-folder/
  - dogs/
    - IMG-1.jpg
    - IMG-2.jpg
    - IMG-3.jpg
  - cats/
    - IMG-1.jpg
    - IMG-2.jpg
    - IMG-3.jpg

Will product an array of three dogs labels and three cats labels.

Nested folders will be searched recursively, but only immediate parent folders' names will be used. If an invalidly nested structure is found an error will be thrown.

flat (currently in development)

Expects files' names to be the label. Nested folders will be searched recursively (if the browser supports it) to build a flat array of files.

- folder/
  - dog-1.jpg
  - dog-2.jpg
  - dog-3.jpg
  - cat-1.jpg
  - cat-2.jpg
  - cat-3.jpg

Example

<MLClassifierUI
  uploadFormat={"nested"}
/>

imageFormats (currently in development)

imageFormats denotes the list of acceptable image formats for upload. Any images not matching the list of acceptable formats will be ignored.

Example

<MLClassifierUI
  imageFormats={[
    'png',
    'gif',
  ]}
/>

Contributing

Contributions are welcome!

You can run the local example with:

yarn watch

ml-classifier-ui is written in Typescript and React.

Tests

Tests are a work in progress. Currently, the test suite only consists of unit tests. Pull requests for additional tests are welcome!

Run tests with:

yarn test

Author

License

This project is licensed under the MIT License - see the LICENSE file for details

More Repositories

1

UpscalerJS

Image Upscaling in Javascript. Increase image resolution up to 4x using Tensorflow.js.
TypeScript
588
star
2

ml-classifier

A tool for quickly training image classifiers in the browser
JavaScript
108
star
3

emoji-tree

JavaScript
47
star
4

dataset-tutorial-for-image-classification

A tutorial on organizing datasets for image classification
HTML
14
star
5

UpscalerJS-models

Pretrained Models for use with UpscalerJS
6
star
6

neural-network-visualizer

A React component for visualizations of Neural Networks
TypeScript
5
star
7

getting-started-with-facebook-bots

A starter repository to accompany a Medium post on making a bot
JavaScript
4
star
8

testing-file-upload

JavaScript
4
star
9

vicuna-7b

Vicuna 7B is a large language model that runs in the browser. Exposes programmatic access with minimal configuration.
JavaScript
4
star
10

i18n-research

i18n research for a javascript app
JavaScript
3
star
11

gatsby-remark-vega

A Gatsby plugin for displaying Vega charts
JavaScript
3
star
12

react-earth

An Earth visualization in React
JavaScript
3
star
13

Uploadify-Fork

A Fork of the great uploadify
JavaScript
3
star
14

emojiExists

A function to check whether a string contains all emoji or not
JavaScript
3
star
15

Svpply-Nav

Svpply Nav
JavaScript
2
star
16

image-labeler

Autosuggested labels for images and video
TypeScript
2
star
17

how-neural-nets-work

A visualization of how neural nets work
JavaScript
2
star
18

AudioData

Python
1
star
19

emojisalad

Making enemies out of friends, and friends out of enemies
JavaScript
1
star
20

tensorflow.js-mnist-webworkers

A port of the Tensorflow.js MNIST example using Web Workers
JavaScript
1
star
21

Tuneful

tuneful
JavaScript
1
star
22

pixelated-canvas

TypeScript
1
star
23

Botworkz

A tool for project tracking
Ruby
1
star
24

tensorflow.js-mnist-react

A port of the Tensorflow.js MNIST example in React
JavaScript
1
star
25

Tweeny

Basic Framework for Social-y sites
PHP
1
star
26

Cities

JavaScript
1
star
27

space-invaders

JavaScript
1
star
28

tensor-visualizer

TypeScript
1
star
29

mocha-phantom-reporter

A third party reporter for Mocha, running on Phantom
JavaScript
1
star
30

stackoverflow-question-scraper

A google spreadsheet script to pull metadata from stack overflow questions
JavaScript
1
star
31

Library-Booker

JavaScript
1
star