/pixel-seven-recognizer

This is a simple realization of a one digit recognition

Primary LanguageJavaMIT LicenseMIT

pixel seven recognizer

The Pixel Seven Recognizer is a simple recognizer, which allows to draw one digit and get the answer on a question "Is this digit intended?"

status version oss lifecycle maintenance latest release date last commit

license Contributor Covenant


📇 Table of Contents

📖 About

The Pixel Seven Recognizer is a simple recognizer, which allows to draw one digit and get the answer on a question "Is this digit intended?". This recognizer based on the single layer perceptron and could be trained to recognition of one digit (from 1 to 9). The following image demonstrates this recognition.

📸 Demo

This image demonstrates the recognizer usage. The green background means that the digit is intended, the red background - no.

This image demonstrates the visualisation of the recognizer training process. Each pixel of the image is colored according to its weight for the neural network. Green means positive weight for a given pixel, red means negative weight. A more saturated color means a higher value, black means 0.

🎚 Features

  • The simple funny digit recognizer, which allows to draw one digit and to get the answer on a question "Is this digit intended?".

To Do

  • For more information on an upcoming development, please read the todo list. No plans.

Changelog

  • For more information on a releases, a features and a changes, please read the changelog notes.

🚦 Getting Started

These instructions allow to get a copy of this project and run it on a local machine.

Prerequisites

Before using it, make sure that follows software are installed on the local machine:

If any of the listed software is not installed, then it can be installed by instruction as described below.

  1. Oracle JDK 11+

    • Install Oracle JDK 11+ according to instructions from an official instruction.

Installing

In order to install it is quite simple to clone or download this repository, or download jar file from release assets.

Cloning

For the cloning this repository to a local machine, just use the follows link:

https://github.com/ololx/pixel-seven-recognizer.git

Using

To use it is necessary to:

  1. Build the project.
  2. Launch the instance .jar with the follows args:
{digit} {path_to_training_data} {network_training_probability}

where

  • {digit} - is a digit from 0 to 9;
  • {path_to_training_data} - path to directory with the MNIST database training data (mnist_png/training/*);
  • {network_training_probability} - OPTIONAL - the real number from 0 to 100, which specifies the probability for training the network.

For instance: java -jar pixel-seven-recognizer.jar 2 /Volumes/disk1/mnist_png/training

!Important: the data set could be downloaded by the following link http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz (main page link - http://yann.lecun.com/exdb/mnist/)

  1. Wait until the training data is loaded and the training process is complete (after training will be a black frame).
  2. Draw digit and clear it, and again:
    1. Use the first mouse button to draw.
    2. Use the second mouse button to clear.
    3. Use the mouse wheel (up/down) to resize the brush stroke.

🛠 Built With

Oracle JDK - java development kit;

🎉 Contributing

If you want to contribute this project - you are welcome and have fun. Please visit the contributing section for details on this code of conduct, and the process for submitting pull requests.

📝 Code of Conduct

In order to ensure that all is welcoming, please review and abide by the code of conduct.

🗒 Versioning

For the versioning is used Semantic Versioning. For the versions available, see the changelog or the tags on this repository.

©️ Authors

  • Alexander A. Kropotin - Initial work - ololx.

🔏 Licensing

This project is licensed under the MIT license - see the lisence document for details.