From 468deb80cea3282081eff9b369d77515d014c488 Mon Sep 17 00:00:00 2001
From: Subodh Malgonde <subodh@Subodhs-MacBook-Air.local>
Date: Wed, 20 Dec 2017 19:28:26 +0530
Subject: [PATCH] Added back batch normalization

---
 Loss.ipynb       | 25 ++++++++++++++++++--
 helper.py        |  8 +++----
 main.py          | 59 ++++++++++++++++++++++++++++++++++++------------
 project_tests.py |  3 ++-
 4 files changed, 73 insertions(+), 22 deletions(-)

diff --git a/Loss.ipynb b/Loss.ipynb
index c4c5aaf..1da862a 100644
--- a/Loss.ipynb
+++ b/Loss.ipynb
@@ -37,9 +37,9 @@
    "outputs": [
     {
      "data": {
-      "image/png": "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\n5IcffqCwsJCbbrqJzZs30717dwo9WiBuu+021q9fT2FhIePGjePxxx9nzpw55OTkMGTIEKKiovji\niy+IjY0lJSWFqKgonnvuOebPnw/ALbfcwvTp08nMzGTEiBEMGDCAb775hujoaJYtW0aLOv4j8rbN\nI0eOcO2115KVlUVZWRl//vOfGT9+PDNmzGD58uUEBAQwbNgwZs2a1URHvTJNUKppidS9bSs4uKLp\n8a67rMS2a1dFwlq3zkpgR49WFM+mRW/at7eSVWysdZb3HO/UyWv7XZs23i/duTkcsGdPRdIqLLSS\nUYcO1jAiom5fOT/f+nru8ssvVsnMtG6Fy862Wlerfh13JxF3D0jPoXscrBizsqyEW1VkpJUMCwqs\n2+3cYmMrkpU/Jy1fvG0jMjKSfv368cknnzB69GiSk5MZP348IkJISAhLly6lVatW7N+/n/PPP59R\no0Yh1fxDmDdvHqGhoaSlpZGWllbpdRlPPfUUbdu2paysjKFDh5KWlsa0adN47rnn+OKLL4iKiqq0\nrdTUVBYsWMDatWsxxtC/f38GDRpEmzZtSE9PZ/Hixbz66qtce+21vP/++0yePLnWY1HdNrdv307H\njh356KOPAOv1GwcOHGDp0qX89NNPiAh5eXl1ONoNowlK+Q8Rq9pwxhngerXAMYyxmhDdCevIEdi/\n3zrLu8vOnZCaCv/617FP5G3VykpUMTHeh+5fmx63XwQA0cYQHQX9orBqce3b1/siU+vWVomL8/65\nw2ElqZ07K0pmplUTc3c0cXc2cY+XlloVUWOse9QuvriiOdL9tdzNkm4HD8J331mHyF3ef7/ic3f3\n/1atrNK6tffxFi2s2qO7uJtWPQtYf6KaytGjx3amcTph4kTKX1WTn2/92d2H3PPQe84TsZJ2U13/\nczfzuROUu4ZhjOHBBx9k9erV2Gw2srOz2bNnDx06dPC6ndWrVzNt2jQA4uPjiY+PL/9syZIlvPLK\nKzgcDnbv3s3mzZsrfV7VmjVruOqqq8qfqH711Vfz1VdfMWrUKLp06VL+Nt2aXulR120OHz6ce++9\nl/vvv5+RI0dy8cUXlz9y6ZZbbuHKK69k5MiRddpHQ2iCUs2LSMU1Lc+f+gMGHLus+1qZ+0yflVXR\nhrdrl/WTfM+ehsXRogWceaZVunatPIyNta631VNAQEXz3vHUpg0MHWoVt4MH4fvvrWS1ebOVEPLz\n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\nGldmZiYHDx6kT58+jBs3jiVLljBt2jR+/fVXbrvtNr766is6d+7MgQPWSx8ee+wx2rVrx6ZNmzDG\nlCelmmzbto2VK1dis9nIz89nzZo12O12PvnkEx5++GHeeecd5s2bR05ODhs3bsRut3PgwAEiIiKY\nNm0aubm5REZGsmDBAm666ab6HvompQlKKdV4DajpHE9du3alb9++5dOLFy/m9ddfx+FwkJOTw+bN\nm49JUC1atGDEiBEA9OnTh6+++srrtq+++uryZTIzMwFYs2YN999/PwAJCQn07NnT67qLFy9m/Pjx\nAEyYMIE//vGPTJs2jW+//ZYhQ4bQuXNnANq2bQvA559/zgcffABYvePatGmDw+Go8btfc8015U2a\neXl5XH/99Wzbtq3SMp9//jnTp0/HbrdX2t91113HokWLmDRpEqmpqSxevLjGfR1vmqCUUiedli1b\nlo+np6fzwgsvsG7dOiIiIpg8ebLX+3SCgoLKx+12e7WJIDg4+Jhl6notf/HixeTm5vLmm28CkJOT\nw44dOzDGeO2e7W2+zWartL+q38Xzuz/00ENcfvnl/OEPfyAjI4Phw4dXu12Am2++mbFjxwIwfvz4\n8gTmK3W6cigiw0Vkq4hkiMgxdV4RuVtENotImoisFJHOHp+VicgGV1ledV2llDqeDh06RHh4OK1a\ntWL37t18+mnTv9R7wIAB5ddqNm3axObNm49ZZvPmzZSVlZGdnU1mZiaZmZncd999JCcnc9FFF7Fq\n1Sp27twJUN7EN2zYMObOnQtYSeXgwYPYbDbatGlDeno6TqeTpUuXVhtXfn4+0dHRALzxxhvl84cN\nG8a8efMoKyurtL9OnToRFRXF008/zY033ti4g9IEak1QImIHXgJGAD2AiSLSo8pi3wNJxph44D3g\nGY/PCo0xia4yqoniVkqpOunduzc9evQgLi6O3/3ud1x00UVNvo877riD7Oxs4uPjefbZZ4mLi6N1\n69aVllm0aBFXXXVVpXljx45l0aJFtG/fnnnz5jF69GgSEhKYNGkSAI8++ih79uwhLi6OxMTE8mbH\nv/71rwwfPpyhQ4cSExNTbVz3338/99133zHf+fe//z0dOnQgPj6ehISESh0hrrvuOrp06cLZZ5/d\nqGPSFGrtZi4iFwCPGWMud00/AGCM+b9qlj8PmGuMucg1XWCMCatrQNrNXKnmwZ+6mfuaw+HA4XAQ\n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\n",
+      "image/png": "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\n",
       "text/plain": [
-       "<matplotlib.figure.Figure at 0x11285e9e8>"
+       "<matplotlib.figure.Figure at 0x112abc048>"
       ]
      },
      "metadata": {},
@@ -66,6 +66,27 @@
     "plt.show()"
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.94702579719679691"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "validation_accuracy_history[-1]\n",
+    "training_accuracy_history[-1]"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
diff --git a/helper.py b/helper.py
index 8e2a9df..9eefa98 100644
--- a/helper.py
+++ b/helper.py
@@ -123,7 +123,7 @@ def get_batches_fn(batch_size):
     return get_batches_fn
 
 
-def gen_test_output(sess, logits, keep_prob, image_pl, data_folder, image_shape):
+def gen_test_output(sess, logits, keep_prob, image_pl, data_folder, image_shape, is_training):
     """
     Generate test output using the test images
     :param sess: TF session
@@ -139,7 +139,7 @@ def gen_test_output(sess, logits, keep_prob, image_pl, data_folder, image_shape)
 
         im_softmax = sess.run(
             [tf.nn.softmax(logits)],
-            {keep_prob: 1.0, image_pl: [image]})
+            {keep_prob: 1.0, image_pl: [image], is_training: False})
         segmentation = (im_softmax[0][0][:,:,1] > 0.5).reshape(image_shape[0], image_shape[1], 1)
         mask = np.dot(segmentation, np.array([[0, 255, 0, 127]]))
         mask = scipy.misc.toimage(mask, mode="RGBA")
@@ -149,7 +149,7 @@ def gen_test_output(sess, logits, keep_prob, image_pl, data_folder, image_shape)
         yield os.path.basename(image_file), np.array(street_im)
 
 
-def save_inference_samples(runs_dir, data_dir, sess, image_shape, logits, keep_prob, input_image):
+def save_inference_samples(runs_dir, data_dir, sess, image_shape, logits, keep_prob, input_image, is_training):
     # Make folder for current run
     output_dir = os.path.join(runs_dir, str(time.time()))
     if os.path.exists(output_dir):
@@ -159,6 +159,6 @@ def save_inference_samples(runs_dir, data_dir, sess, image_shape, logits, keep_p
     # Run NN on test images and save them to HD
     print('Training Finished. Saving test images to: {}'.format(output_dir))
     image_outputs = gen_test_output(
-        sess, logits, keep_prob, input_image, os.path.join(data_dir, 'data_road/testing'), image_shape)
+        sess, logits, keep_prob, input_image, os.path.join(data_dir, 'data_road/testing'), image_shape, is_training)
     for name, image in image_outputs:
         scipy.misc.imsave(os.path.join(output_dir, name), image)
diff --git a/main.py b/main.py
index c70baaf..43ee04c 100644
--- a/main.py
+++ b/main.py
@@ -62,7 +62,7 @@ def load_vgg(sess, vgg_path):
 tests.test_load_vgg(load_vgg, tf)
 
 
-def layers(vgg_layer3_out, vgg_layer4_out, vgg_layer7_out, num_classes):
+def layers(vgg_layer3_out, vgg_layer4_out, vgg_layer7_out, is_training, num_classes):
     """
     Create the layers for a fully convolutional network.  Build skip-layers using the vgg layers.
     :param vgg_layer7_out: TF Tensor for VGG Layer 3 output
@@ -76,6 +76,10 @@ def layers(vgg_layer3_out, vgg_layer4_out, vgg_layer7_out, num_classes):
         vgg_layer4_out = tf.stop_gradient(vgg_layer4_out)
         vgg_layer3_out = tf.stop_gradient(vgg_layer3_out)
 
+    vgg_layer3_out = tf.layers.batch_normalization(vgg_layer3_out, name="new_vgg_layer3_out", training=is_training)
+    vgg_layer4_out = tf.layers.batch_normalization(vgg_layer4_out, name="new_vgg_layer4_out", training=is_training)
+    vgg_layer7_out = tf.layers.batch_normalization(vgg_layer7_out, name="new_vgg_layer7_out", training=is_training)
+
     vgg_layer3_out = tf.multiply(vgg_layer3_out, 0.0001)
     vgg_layer4_out = tf.multiply(vgg_layer4_out, 0.01)
 
@@ -85,23 +89,37 @@ def layers(vgg_layer3_out, vgg_layer4_out, vgg_layer7_out, num_classes):
     new_layer7_1x1_upsampled = tf.layers.conv2d_transpose(new_layer7_1x1_out, filters=num_classes, kernel_size=(4, 4),
                                                           strides=(4, 4), name='new_layer7_1x1_out_upsampled')
 
+    new_layer7_1x1_upsampled_bn = tf.layers.batch_normalization(new_layer7_1x1_upsampled,
+                                                                name="new_layer7_1x1_upsampled_bn", training=is_training)
+
     new_layer4_1x1_out = tf.layers.conv2d(vgg_layer4_out, filters=num_classes, kernel_size=(1, 1), strides=(1, 1),
                                       name="new_layer4_1x1_out")
 
     new_layer4_1x1_upsampled = tf.layers.conv2d_transpose(new_layer4_1x1_out, filters=num_classes, kernel_size=(3, 3),
                                                       strides=(2, 2), name="new_layer4_1x1_upsampled", padding='same')
 
+    new_layer4_1x1_upsampled_bn = tf.layers.batch_normalization(new_layer4_1x1_upsampled,
+                                                                name="new_layer4_1x1_upsampled_bn",
+                                                                training = is_training)
+
 
     new_layer3_1x1_out = tf.layers.conv2d(vgg_layer3_out, filters=num_classes, kernel_size=(1, 1), strides=(1, 1),
                                       name="new_layer3_1x1_out")
 
-    out = tf.add(new_layer7_1x1_upsampled, new_layer4_1x1_upsampled)
-    out = tf.add(out, new_layer3_1x1_out)
+    new_layer3_1x1_out_bn = tf.layers.batch_normalization(new_layer3_1x1_out,
+                                                          name="new_layer3_1x1_upsampled_bn", training = is_training)
+
+    out = tf.add(new_layer7_1x1_upsampled_bn, new_layer4_1x1_upsampled_bn)
+    out = tf.add(out, new_layer3_1x1_out_bn)
 
     new_final_layer_upsampled_4x = tf.layers.conv2d_transpose(out, filters=num_classes, kernel_size=(4, 4),
                                                       strides=(4, 4), name="new_final_layer_upsampled_4x")
 
-    new_final_layer_upsampled_8x = tf.layers.conv2d_transpose(new_final_layer_upsampled_4x, filters=num_classes, kernel_size=(5, 5),
+    new_final_layer_upsampled_4x_bn = tf.layers.batch_normalization(new_final_layer_upsampled_4x,
+                                                                    name="new_final_layer_upsampled_4x_bn",
+                                                                    training=is_training)
+
+    new_final_layer_upsampled_8x = tf.layers.conv2d_transpose(new_final_layer_upsampled_4x_bn, filters=num_classes, kernel_size=(5, 5),
                                                        strides=(2, 2), name="new_final_layer_upsampled_8x", padding='same')
 
     return new_final_layer_upsampled_8x
@@ -127,15 +145,18 @@ def optimize(nn_last_layer, correct_label, learning_rate, num_classes):
     accuracy_op = tf.reduce_mean(tf.cast(is_correct_prediction, tf.float32), name="accuracy_op")
 
     opt = tf.train.AdagradOptimizer(learning_rate=learning_rate)
+    update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
 
     if TRANSFER_LEARNING_MODE:
         trainable_variables = []
         for variable in tf.trainable_variables():
             if "new_" in variable.name:
                 trainable_variables.append(variable)
-        training_op = opt.minimize(cross_entropy_loss, var_list=trainable_variables, name="training_op")
+        with tf.control_dependencies(update_ops):
+            training_op = opt.minimize(cross_entropy_loss, var_list=trainable_variables, name="training_op")
     else:
-        training_op = opt.minimize(cross_entropy_loss, name="training_op")
+        with tf.control_dependencies(update_ops):
+            training_op = opt.minimize(cross_entropy_loss, name="training_op")
 
     return nn_last_layer, training_op, cross_entropy_loss, accuracy_op
 
@@ -166,7 +187,8 @@ def save_model(sess, training_loss_metrics=None, validation_loss_metrics=None,
             pickle.dump(validation_accuracy_history, f)
 
 
-def evaluate(image_paths, data_folder, image_shape, sess, input_image,correct_label, keep_prob, loss_op, accuracy_op):
+def evaluate(image_paths, data_folder, image_shape, sess, input_image,correct_label, keep_prob, loss_op, accuracy_op,
+             is_training):
     data_generator_function = helper.gen_batch_function(data_folder, image_shape, image_paths, augment=False)
     batch_size = 8
     data_generator = data_generator_function(batch_size)
@@ -176,14 +198,14 @@ def evaluate(image_paths, data_folder, image_shape, sess, input_image,correct_la
     for offset in range(0, num_examples, batch_size):
         X_batch, y_batch = next(data_generator)
         loss, accuracy = sess.run([loss_op, accuracy_op], feed_dict={input_image: X_batch, correct_label: y_batch,
-                                                                     keep_prob: 1.0})
+                                                                     keep_prob: 1.0, is_training:False})
         total_loss += (loss * X_batch.shape[0])
         total_acc += (accuracy * X_batch.shape[0])
     return total_loss/num_examples, total_acc/num_examples
 
 
 def train_nn(sess, epochs, data_folder, image_shape, batch_size, training_image_paths, validation_image_paths, train_op,
-             cross_entropy_loss, accuracy_op, input_image, correct_label, keep_prob, learning_rate):
+             cross_entropy_loss, accuracy_op, input_image, correct_label, keep_prob, learning_rate, is_training):
     """
     Train neural network and print out the loss during training.
     :param sess: TF Session
@@ -212,6 +234,8 @@ def train_nn(sess, epochs, data_folder, image_shape, batch_size, training_image_
     validation_loss_metrics = []
     validation_accuracy_metrics = []
 
+    print("Actual learning rate:", LEARNING_RATE, ", Actual keep prob:", KEEP_PROB)
+
     for epoch in range(epochs):
         for batch in tqdm(range(batches_per_epoch)):
             X_batch , y_batch = next(training_batch_generator)
@@ -219,15 +243,16 @@ def train_nn(sess, epochs, data_folder, image_shape, batch_size, training_image_
                 input_image: X_batch,
                 correct_label: y_batch,
                 keep_prob: KEEP_PROB,
-                learning_rate: LEARNING_RATE
+                learning_rate: LEARNING_RATE,
+                is_training: True
             })
         validation_loss, validation_accuracy = evaluate(validation_image_paths, data_folder, image_shape, sess, input_image, correct_label,
-                                   keep_prob, cross_entropy_loss, accuracy_op)
+                                   keep_prob, cross_entropy_loss, accuracy_op, is_training)
         validation_loss_metrics.append(validation_loss)
         validation_accuracy_metrics.append(validation_accuracy)
 
         training_loss, training_accuracy = evaluate(training_image_paths, data_folder, image_shape, sess, input_image, correct_label,
-                                   keep_prob, cross_entropy_loss, accuracy_op)
+                                   keep_prob, cross_entropy_loss, accuracy_op), is_training
         training_loss_metrics.append(training_loss)
         training_accuracy_metrics.append(training_accuracy)
 
@@ -350,9 +375,11 @@ def run():
                 accuracy_op = graph.get_operation_by_name("accuracy_op").outputs[0]
                 correct_label = graph.get_tensor_by_name("correct_label:0")
                 learning_rate = graph.get_tensor_by_name("learning_rate:0")
+                is_training_placeholder = graph.get_tensor_by_name("is_training:0")
             else:
+                is_training_placeholder = tf.placeholder(tf.bool, name="is_training")
                 output_tensor = layers(vgg_layer3_out_tensor, vgg_layer4_out_tensor, vgg_layer7_out_tensor,
-                                       num_classes)
+                                       is_training_placeholder, num_classes)
                 correct_label = tf.placeholder(tf.int8, (None,) + image_shape + (num_classes,), name="correct_label")
                 learning_rate = tf.placeholder(tf.float32, [], name="learning_rate")
                 output_tensor, train_op, cross_entropy_loss, accuracy_op = optimize(output_tensor, correct_label, learning_rate,
@@ -369,7 +396,8 @@ def run():
             train_nn(sess, epochs=num_epochs, data_folder=data_folder,image_shape=image_shape, batch_size=batch_size,
                      training_image_paths=training_image_paths, validation_image_paths=validation_image_paths,
                      train_op=train_op, cross_entropy_loss=cross_entropy_loss, input_image=vgg_input_tensor,
-                     correct_label=correct_label, accuracy_op=accuracy_op, keep_prob=vgg_keep_prob_tensor, learning_rate=learning_rate)
+                     correct_label=correct_label, accuracy_op=accuracy_op, keep_prob=vgg_keep_prob_tensor,
+                     learning_rate=learning_rate, is_training=is_training_placeholder)
 
         else:
             test_model()
@@ -397,11 +425,12 @@ def test_model():
         graph = tf.get_default_graph()
         vgg_input_tensor = graph.get_tensor_by_name(vgg_input_tensor_name)
         vgg_keep_prob_tensor = graph.get_tensor_by_name(vgg_keep_prob_tensor_name)
+        is_training_placeholder = graph.get_tensor_by_name("is_training:0")
 
         logits_tensor = graph.get_operation_by_name(logits_operation_name).outputs[0]
         helper.save_inference_samples(runs_dir=runs_dir, data_dir=data_dir, sess=sess,image_shape=image_shape,
                                       logits=logits_tensor, keep_prob=vgg_keep_prob_tensor,
-                                      input_image=vgg_input_tensor)
+                                      input_image=vgg_input_tensor, is_training=is_training_placeholder)
 
 
 if __name__ == '__main__':
diff --git a/project_tests.py b/project_tests.py
index 292cb4c..a7d3888 100644
--- a/project_tests.py
+++ b/project_tests.py
@@ -86,7 +86,8 @@ def test_layers(layers):
     vgg_layer3_out = tf.placeholder(tf.float32, [None, None, None, 256])
     vgg_layer4_out = tf.placeholder(tf.float32, [None, None, None, 512])
     vgg_layer7_out = tf.placeholder(tf.float32, [None, None, None, 4096])
-    layers_output = layers(vgg_layer3_out, vgg_layer4_out, vgg_layer7_out, num_classes)
+    is_training = tf.placeholder(tf.bool)
+    layers_output = layers(vgg_layer3_out, vgg_layer4_out, vgg_layer7_out, is_training, num_classes)
 
     _assert_tensor_shape(layers_output, [None, None, None, num_classes], 'Layers Output')