From 573d0b724aa42e1494d4cb3efa4121d0701d70b4 Mon Sep 17 00:00:00 2001
From: tgupta6 <tgupta6@illinois.edu>
Date: Wed, 9 Mar 2016 12:57:21 -0600
Subject: [PATCH] Working code for atr (color) classifier

---
 color_classifiers/atr_data_io_helper.py    |   2 +-
 color_classifiers/atr_data_io_helper.pyc   | Bin 0 -> 4538 bytes
 color_classifiers/eval_atr_classifier.py   |  16 ++++++++--------
 color_classifiers/train_atr_classifier.py  |  13 ++++++-------
 color_classifiers/train_atr_classifier.pyc | Bin 0 -> 7635 bytes
 5 files changed, 15 insertions(+), 16 deletions(-)
 create mode 100644 color_classifiers/atr_data_io_helper.pyc
 create mode 100644 color_classifiers/train_atr_classifier.pyc

diff --git a/color_classifiers/atr_data_io_helper.py b/color_classifiers/atr_data_io_helper.py
index 67337b8..a68f75e 100644
--- a/color_classifiers/atr_data_io_helper.py
+++ b/color_classifiers/atr_data_io_helper.py
@@ -42,7 +42,7 @@ def atr_mini_batch_loader(json_filename, image_dir, mean_image, start_index, bat
     return (atr_images, atr_labels)
 
 def mean_image_batch(json_filename, image_dir, start_index, batch_size, img_height=100, img_width=100, channels=3):
-    batch = obj_mini_batch_loader(json_filename, image_dir, np.empty([]), start_index, batch_size, img_height, img_width, channels)
+    batch = atr_mini_batch_loader(json_filename, image_dir, np.empty([]), start_index, batch_size, img_height, img_width, channels)
     mean_image = np.mean(batch[0], 0)
     return mean_image
 
diff --git a/color_classifiers/atr_data_io_helper.pyc b/color_classifiers/atr_data_io_helper.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f1e7f0bf9e4b06fc1016b65356fdae76ff343f8e
GIT binary patch
literal 4538
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
Ich#c$C*2>tkpKVy

literal 0
HcmV?d00001

diff --git a/color_classifiers/eval_atr_classifier.py b/color_classifiers/eval_atr_classifier.py
index 2f41202..c6a14dd 100644
--- a/color_classifiers/eval_atr_classifier.py
+++ b/color_classifiers/eval_atr_classifier.py
@@ -5,33 +5,33 @@ import matplotlib.image as mpimg
 import numpy as np
 from scipy import misc
 import tensorflow as tf
-import obj_data_io_helper as shape_data_loader 
-from train_obj_classifier import placeholder_inputs, comp_graph_v_1, evaluation
+import atr_data_io_helper as atr_data_loader 
+from train_atr_classifier import placeholder_inputs, comp_graph_v_2, evaluation
 
 sess=tf.InteractiveSession()
 
 x, y, keep_prob = placeholder_inputs()
-y_pred = comp_graph_v_1(x, y, keep_prob)
+y_pred = comp_graph_v_2(x, y, keep_prob)
 
 accuracy = evaluation(y, y_pred)
 
 saver = tf.train.Saver()
 
-saver.restore(sess, '/home/tanmay/Code/GenVQA/Exp_Results/Shape_Classifier_v_1/obj_classifier_9.ckpt')
+saver.restore(sess, '/home/tanmay/Code/GenVQA/Exp_Results/Atr_Classifier_v_1/obj_classifier_1.ckpt')
 
-mean_image = np.load('/home/tanmay/Code/GenVQA/Exp_Results/Shape_Classifier_v_1/mean_image.npy')
+mean_image = np.load('/home/tanmay/Code/GenVQA/Exp_Results/Atr_Classifier_v_1/mean_image.npy')
 
 # Test Data
 test_json_filename = '/home/tanmay/Code/GenVQA/GenVQA/shapes_dataset/test_anno.json'
 image_dir = '/home/tanmay/Code/GenVQA/GenVQA/shapes_dataset/images'
 
 # Base dir for html visualizer
-html_dir = '/home/tanmay/Code/GenVQA/Exp_Results/Shape_Classifier_v_1/html'
+html_dir = '/home/tanmay/Code/GenVQA/Exp_Results/Atr_Classifier_v_1/html'
 if not os.path.exists(html_dir):
     os.mkdir(html_dir)
 
 # HTML file writer
-html_writer = shape_data_loader.html_obj_table_writer(os.path.join(html_dir,'index.html'))
+html_writer = atr_data_loader.html_atr_table_writer(os.path.join(html_dir,'index.html'))
 col_dict={
     0: 'Grount Truth',
     1: 'Prediction',
@@ -47,7 +47,7 @@ shape_dict = {
 batch_size = 100
 correct = 0
 for i in range(50): 
-    test_batch = shape_data_loader.obj_mini_batch_loader(test_json_filename, image_dir, mean_image, 10000+i*batch_size, batch_size, 75, 75)
+    test_batch = atr_data_loader.atr_mini_batch_loader(test_json_filename, image_dir, mean_image, 10000+i*batch_size, batch_size, 75, 75)
     feed_dict_test={x: test_batch[0], y: test_batch[1], keep_prob: 1.0}
     result = sess.run([accuracy, y_pred], feed_dict=feed_dict_test)
     correct = correct + result[0]*batch_size
diff --git a/color_classifiers/train_atr_classifier.py b/color_classifiers/train_atr_classifier.py
index 6d9c88f..1bc622a 100644
--- a/color_classifiers/train_atr_classifier.py
+++ b/color_classifiers/train_atr_classifier.py
@@ -89,24 +89,23 @@ def comp_graph_v_1(x, y, keep_prob):
 
 def comp_graph_v_2(x, y, keep_prob):
     # Specify computation graph
-    W_conv1 = weight_variable([5, 5, 3, 10])
-    b_conv1 = bias_variable([10])
+    W_conv1 = weight_variable([5, 5, 3, 4])
+    b_conv1 = bias_variable([4])
     
     h_conv1 = tf.nn.relu(conv2d(x, W_conv1) + b_conv1)
     h_pool1 = max_pool_2x2(h_conv1)
     h_conv1_drop = tf.nn.dropout(h_pool1, keep_prob)
     
-    W_conv2 = weight_variable([5, 5, 10, 20])
-    b_conv2 = bias_variable([20])
+    W_conv2 = weight_variable([3, 3, 4, 8])
+    b_conv2 = bias_variable([8])
     
     h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
     h_pool2 = max_pool_2x2(h_conv2)
-    h_conv2_drop = tf.nn.dropout(h_pool2, keep_prob)
 
-    W_fc1 = weight_variable([7*7*20, 4])
+    W_fc1 = weight_variable([7*7*8, 4])
     b_fc1 = bias_variable([4])
     
-    h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*20])
+    h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*8])
     h_pool2_flat_drop = tf.nn.dropout(h_pool2_flat, keep_prob)
     
     y_pred = tf.nn.softmax(tf.matmul(h_pool2_flat_drop,W_fc1) + b_fc1)
diff --git a/color_classifiers/train_atr_classifier.pyc b/color_classifiers/train_atr_classifier.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..513dd9fab63523be1e847885b6c07fe3093f399c
GIT binary patch
literal 7635
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
bf3c7A^9z$B_^rtA_~hc`+T`TqTUG1dGfz&Z

literal 0
HcmV?d00001

-- 
GitLab