diff --git a/README.md b/README.md index 4938c64..df72620 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,83 @@ > Predicting film genres from their posters with Tensorflow.js +## Dataset +The dataset used with this demo can be found here: -To use: +https://nextcloud.starbeamrainbowlabs.com/index.php/s/wmCdL4tX3HHGAFD + +The format is as follows: + +``` ++ dataset_dir/ + + train/ + + 1234,Comedy,Fantasy.jpg + + 4321,Western,Short,Drama.jpg + + ..... + + validate/ + + 6789,Drama,Mystery,Thriller.jpg + + 9876,History,Documentary,Animation.jpg + + ..... +``` + +The filenames of the images take the following format: `ID,GENRE_1,GENRE_2,GENRE_N.jpg`. + +## System / User Requirements + - [Node.js](https://nodejs.org/) + - [NPM](https://www.npmjs.com/) (installed by default with Node.js) + - A relatively decent CPU + - Basic knowledge of the command-line / terminal + + +## Installation +First, clone this git repo: + +```bash +git clone https://git.starbeamrainbowlabs.com/Demos/film-poster-genres.git +cd film-poster-genres +``` + +Then, install the dependencies: + +```bash +npm install +``` + +## Usage + +### Training +To train a new model: + +```bash +node src/index.mjs train --input path/to/dataset_dir --output path/to/output_dir +``` + +The output directory will look like this: + +``` + + output_dir/ + + metrics.stream.json + + checkpoints/ + + 0/ + + 1/ + + 2/ + + 3/ +``` + + +## Predicting +To make a prediction using an existing model: ```bash -node src/index.mjs train --input datasets/posters-256/ --output output/ -node src/index.mjs predict --input datasets/posters-256/validate/25410,Comedy,Family,Drama.jpg --ai-model output/checkpoints/49 2>/dev/null +node src/index.mjs predict --input path/to/image.jpg --ai-model path/to/checkpoint_dir/ ``` +The result will be written to the standard output. Extra debugging data is written to the standard error, but this can be ignored. + + +## Contributing +Contributions are very welcome! Git patches are preferred - I can move this repo to GitHub if that makes it easier. Please mention in your contribution that you release your work under the MPL-2.0 (see below). + -TODO: Fill out this README (and maybe move it to GitHub & make this repo a clone) +## Licence +This code is released under the Mozilla Public License 2.0. The full license text is included in the `LICENSE` file in this repository. Tldr legal have a [great summary](https://tldrlegal.com/license/mozilla-public-license-2.0-(mpl-2)) of the license if you're interested.