NEURAL NET OBJECT RECOGNITION NOTES 2017-03-15 ============================================== # Install tensorflow_hub cd mkdir imageRetraining cd imageRetraining pip install "tensorflow>=1.7.0" pip install tensorflow-hub mkdir example_code cd example_code curl -LO https://github.com/tensorflow/hub/raw/master/examples/image_retraining/retrain.py python retrain.py --image_dir ../flower_photos curl -LO https://github.com/tensorflow/tensorflow/raw/master/tensorflow/examples/label_image/label_image.py ./classifyImages.sh # Save the retrained model locally. mkdir theNewRetrainedModel cd theNewRetrainedModel mv /tmp/output_graph.pb . mv /tmp/output_labels.txt . # Test this with some pretty flower pictures .. i=SOME_NICE_IMAGE_OF_A_FLOWER # Daisy, Daisy, give me your answer, do ... python label_image.py --graph=$DIR/theNewRetrainedModel/output_graph.pb --labels=$DIR/theNewRetrainedModel/output_labels.txt --input_layer=Placeholder --output_layer=final_result --image=$i # Excellent! # Now we want to set up a sub-folder of kangaroos, sheep .. cd $HOME/openImages # Sheep grep 07bgp train-annotations-bbox.csv | awk -F ',' '{ print "mv */" $1 ".jpg $HOME/imageRetraining/animal_photos/sheep/" }' | bash # Kangaroos grep 07bgp train-annotations-bbox.csv | awk -F ',' '{ print "mv */" $1 ".jpg $HOMOE/imageRetraining/animal_photos/sheep/" }' | bash # But not everything is a kangaroo or a sheep, so create an 'unknown' category. mkdir animal_photos/unknown cp $HOME/openImages/train_01/c0*jpg animal_photos/unknown/ # Hmm .. some of these might be kangaroos or sheep, so remove those. find animal_photos/kangaroo/ -name \*jpg | sed 's/kangaroo/unknown/' | sed 's/^/rm -f /' find animal_photos/sheep/ -name \*jpg | sed 's/sheep/unknown/' | sed 's/^/rm -f /' # Retrain the model .. python retrain.py --image_dir ../animal_photos cd theNewRetrainedModel mv /tmp/output_graph.pb . mv /tmp/output_labels.txt . # See if we can recognize some skippys in test_photos DIR=$HOME/imageRetraining for i in $DIR/test_photos/*jpg do echo ----- Look at image $i echo python label_image.py --graph=$DIR/theNewRetrainedModel/output_graph.pb --labels=$DIR/theNewRetrainedModel/output_labels.txt --input_layer=Placeholder --output_layer=final_result --image=$i python label_image.py --graph=$DIR/theNewRetrainedModel/output_graph.pb --labels=$DIR/theNewRetrainedModel/output_labels.txt --input_layer=Placeholder --output_layer=final_result --image=$i done