Compare commits

...

2 commits

Author SHA1 Message Date
d11aba0d9b
Add comments from live presentation 2020-09-23 17:23:51 +01:00
271d623a78
Fill out README 2020-09-23 17:23:44 +01:00
3 changed files with 80 additions and 8 deletions

View file

@ -2,13 +2,83 @@
> Predicting film genres from their posters with Tensorflow.js > 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 ```bash
node src/index.mjs train --input datasets/posters-256/ --output output/ git clone https://git.starbeamrainbowlabs.com/Demos/film-poster-genres.git
node src/index.mjs predict --input datasets/posters-256/validate/25410,Comedy,Family,Drama.jpg --ai-model output/checkpoints/49 2>/dev/null 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/
``` ```
TODO: Fill out this README (and maybe move it to GitHub & make this repo a clone) ## Predicting
To make a prediction using an existing model:
```bash
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).
## 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.

View file

@ -4,6 +4,8 @@ import path from 'path';
import fs from 'fs'; import fs from 'fs';
import tf from '@tensorflow/tfjs-node'; import tf from '@tensorflow/tfjs-node';
// import tf from '@tensorflow/tfjs-node-gpu';
// import tf from '@tensorflow/tfjs';
import genres from './Genres.mjs'; import genres from './Genres.mjs';

View file

@ -1,9 +1,9 @@
"use strict"; "use strict";
export default [ export default [
"Action", "Action", // 0
"Adventure", "Adventure", // 1
"Animation", "Animation", // 2
"Biography", "Biography",
"Comedy", "Comedy",
"Crime", "Crime",
@ -23,5 +23,5 @@ export default [
"Sport", "Sport",
"Thriller", "Thriller",
"War", "War",
"Western" "Western" // 22
]; ];