1.0.3 • Published 5 years ago

@spriteful/node-tfjs-retrain v1.0.3

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

node-tfjs-retrain

Retraining image classification model using TensorFlow.js in Node.

Based on the following js.tensorflow.org tutorials:

Excellent article from James Thomas that helped (skip the stuff about downloading the model shards manually; there's a much simpler way described in the comments):
Machine Learning in Node.js with TensorFlow.js

Example Usages

  • Retrain and test model:
    node app.js --images_dir="C:/Retraining_Project/Images" --model_dir="C:/Retraining_Project/Model"
  • Skip retraining; just test model:
    node app.js --images_dir="C:/Retraining_Project/Images" --model_dir="C:/Retraining_Project/Model" --skip_training=true
  • Create sample images:
    node create_images.js C:/Retraining_Project/Images

_ Full example with tensorboard:

	cli commands to start tensorboard (localhost:6006)

	start virtual environment -

	source ./venv/bin/activate

start tensorboard on localhost:6006 -

	(venv) $ tensorboard --logdir /tmp/tf_fit_logs

node-tfjs-retrain cli -

	node app.js --images_dir="/Users/claymation296/dev/magic/synthetic" --model_dir="/Users/claymation296/dev/nathanML/ml-lock/src/model" --sizing="contain" --epochs="500"

shutdown virtual environment

	(venv) $ deactivate
  • app.js args:
    
    		--batch_size_fraction -> Number default 0.2
    		--dense_units 				-> Number default 100
    		--epochs 							-> Number default 50
    		--learning_rate 			-> Number default 0.0001
    		--sizing 							-> String default 'cover'
    		--logdir 							-> String default '/tmp/tf_fit_logs', tensorboard --logdir /tmp/tf_fit_logs
  • augment_images.js args:
    
    		--flip_images 					-> Boolean default false
    		--adjust_brightness 		-> Boolean default false
    		--ignore_subdirectories -> Boolean default false
    		--labels_to_skip 				-> String default ''

Help

I'm quite new to Node and TF, so there's a lot of room for cleanup and code improvements. My initial goal was to get something working and worry about minor improvements later. Feel free to submit a PR :)

Initial TODOs:

  • Create a script to automatically build a training data set to enable users to immediately get started
  • Save trained model in the project directory
  • Replace ui_mock.js with a TrainingParams class