From 6e521fb3a6c85a1ceeb28701d32bab792080ffb6 Mon Sep 17 00:00:00 2001
From: tgupta6 <tgupta6@illinois.edu>
Date: Fri, 18 Mar 2016 14:11:25 -0500
Subject: [PATCH] optimized obj train and eval

---
 .../atr_data_io_helper.py                     |   1 +
 .../atr_data_io_helper.pyc                    | Bin 4538 -> 4538 bytes
 .../train_atr_classifier.py                   |  11 +++-----
 .../train_atr_classifier.pyc                  | Bin 4071 -> 4119 bytes
 .../object_classifiers/eval_obj_classifier.py |  12 ++++++---
 .../eval_obj_classifier.pyc                   | Bin 2699 -> 2950 bytes
 .../object_classifiers/obj_data_io_helper.py  |  18 ++++++-------
 .../object_classifiers/obj_data_io_helper.pyc | Bin 4614 -> 4419 bytes
 .../train_obj_classifier.py                   |  24 +++++++++++++-----
 .../train_obj_classifier.pyc                  | Bin 3261 -> 3318 bytes
 classifiers/train_classifiers.py              |  11 ++++----
 11 files changed, 44 insertions(+), 33 deletions(-)

diff --git a/classifiers/attribute_classifiers/atr_data_io_helper.py b/classifiers/attribute_classifiers/atr_data_io_helper.py
index 572704d..36b810b 100644
--- a/classifiers/attribute_classifiers/atr_data_io_helper.py
+++ b/classifiers/attribute_classifiers/atr_data_io_helper.py
@@ -19,6 +19,7 @@ def atr_mini_batch_loader(json_data, image_dir, mean_image, start_index, batch_s
         #image = np.zeros(shape=[img_height, img_width, channels])
         crop_shape = np.array([image.shape[0], image.shape[1]])/3
         grid_config = json_data[i] 
+
         counter = 0;
         for grid_row in xrange(0,3):
             for grid_col in xrange(0,3):
diff --git a/classifiers/attribute_classifiers/atr_data_io_helper.pyc b/classifiers/attribute_classifiers/atr_data_io_helper.pyc
index 457ee8ea56d594f13e29953a5ac035b031255cd4..187b0e4658b6c36ac6b9bbd41bd3757353a845e4 100644
GIT binary patch
delta 85
zcmV-b0IL7GBf2971M>|El}51!f(8Ksvxx>y0Rbzs*ax!#0Wh<S3CsZjJF{5}b^!rE
rv(OAE0Rcvn`3?L5Nt5;tu>m@>s1E}I4<Hf+5(*O*3<3-RBLNKoUJDlI

delta 85
zcmV-b0IL7GBf2971M>|E{6Vn>f(8Krvxx>y0Rbwr*ax!#0WY(R3CsZjI<r{|b^!rD
rv(OAE0Rcsm`3?L5NR##su>m==s1E}I4<8Z*5(*O*3<3-RBLNKod9oKk

diff --git a/classifiers/attribute_classifiers/train_atr_classifier.py b/classifiers/attribute_classifiers/train_atr_classifier.py
index 0c59564..00fc144 100644
--- a/classifiers/attribute_classifiers/train_atr_classifier.py
+++ b/classifiers/attribute_classifiers/train_atr_classifier.py
@@ -83,20 +83,15 @@ def train(train_params):
     train_acc_array_epoch = np.zeros([max_epoch])
     for epoch in range(max_epoch):
         for i in range(max_iter):
-            print(i)
-         #   start = time.time()
+            if i%100==0:
+                print('Iter: ' + str(i))
             train_batch = atr_data_loader.atr_mini_batch_loader(train_json_data, image_dir, mean_image, 1+i*batch_size, batch_size, img_height, img_width)
-        #    end = time.time()
-        #    print(end-start)
             feed_dict_train={x: train_batch[0], y: train_batch[1], keep_prob: 0.5}
             _, current_train_batch_acc = sess.run([train_step, accuracy], feed_dict=feed_dict_train)
             train_acc_array_epoch[epoch] =  train_acc_array_epoch[epoch] + current_train_batch_acc
-        #    val_acc_array_iter[i+epoch*max_iter] = accuracy.eval(feed_dict_val)
-        #    plotter.plot_accuracy(np.arange(0,i+1+epoch*max_iter)+1, val_acc_array_iter[0:i+1+epoch*max_iter], xlim=[1, max_epoch*max_iter], ylim=[0, 1.], savePath=os.path.join(outdir,'valAcc_vs_iter.pdf'))
-        #    print('Step: {}  Val Accuracy: {}'.format(i+1+epoch*max_iter, val_acc_array_iter[i+epoch*max_iter]))
         
         train_acc_array_epoch[epoch] = train_acc_array_epoch[epoch] / max_iter 
-        val_acc_array_epoch[epoch] = val_acc_array_iter[i+epoch*max_iter]
+        val_acc_array_epoch[epoch] = accuracy.eval(feed_dict_val)
         plotter.plot_accuracies(xdata=np.arange(0,epoch+1)+1, ydata_train=train_acc_array_epoch[0:epoch+1], ydata_val=val_acc_array_epoch[0:epoch+1], xlim=[1, max_epoch], ylim=[0, 1.], savePath=os.path.join(outdir,'acc_vs_epoch.pdf'))
         _ = atr_saver.save(sess, os.path.join(outdir,'atr_classifier'), global_step=epoch)
         _ = obj_atr_saver.save(sess, os.path.join(outdir,'obj_atr_classifier'), global_step=epoch)
diff --git a/classifiers/attribute_classifiers/train_atr_classifier.pyc b/classifiers/attribute_classifiers/train_atr_classifier.pyc
index 500169dccf17b7b3efcb303cb4ea2258248b13b3..a80445734eae7f1bbe09a014ed07d0acab095d64 100644
GIT binary patch
delta 378
zcmYk0y-EX75QWcVv+Ej-35g`)Uv^2d`BS3?3xka)M6t9G1QFo|aTUS1h{cT-`vh`9
zOPhe$C>neK!Nyk*D-nW)h1glSHz~B5!#C%gnO5S$(3J0B;A`bfd!x;}k8`DRPfiNl
zfJ<21Xiz<k;|EA&cF+~-7PtjAgc#GY>qG5DVHTWjNxf9Ova}C~YySde#HW9NvO-g5
zPs6a&;G@#Pli+F0ITq{;SPsqz>@2)8k1`W+*Vi5_51#smO;(W6KcC6Qq|tkJ+e?hg
z4WqW6fD?t?4?7GV1uMc8kLqyOBxLoJcvp?$bVtjZu8-;}4lb27POx)u0dfF4-&PD*
z&6b)atwlYD8h~Y|S}Pl3P`{x<^I3l--S5%r(bitG5lAR>BA$Xfp)f@#M@cd%=8I5N
Ql>2^YUd)7UmGxfw1w>C%761SM

delta 347
zcmYk0Jxjw-6o%iEG%=J$i!Ch**2FYv8b7KIf*>e<po^1(lek=w-c88haDziOH@TqQ
z{0B<OfA9}D2~IA>#X&a*F}Dgj-G}GA?>*<n8BCk{hh6M%UYRen(|^6zqaMXg2nQ))
z`{<GqALl(N<^C!p0Yre^J^4`Bn#{R?l_Z29a0j9UQO2nT){>sFdNHG-!dLBTeL{GO
z*J2+$01FXMfw#acWtoe5n)mXDwIQ1Sw96vo)xVs}W>ql1Qf-=36GlUxM_d7~f|nsG
zxm=J>Mq{J{_4A_qGMvuR537}_Mu~y5Tm4WSA0h=P26%f&3^)jvvwd?wa^1S4D0{P>
kDSIq7bQ1F2?%Iad);)5mW{gu!^3hM)kSAmJ`f-WA0W-}^z5oCK

diff --git a/classifiers/object_classifiers/eval_obj_classifier.py b/classifiers/object_classifiers/eval_obj_classifier.py
index e9320c4..6d209df 100644
--- a/classifiers/object_classifiers/eval_obj_classifier.py
+++ b/classifiers/object_classifiers/eval_obj_classifier.py
@@ -1,4 +1,5 @@
 import sys
+import json
 import os
 import matplotlib.pyplot as plt
 import matplotlib.image as mpimg
@@ -20,6 +21,13 @@ def eval(eval_params):
     saver.restore(sess, eval_params['model_name'] + '-' + str(eval_params['global_step']))
     mean_image = np.load(os.path.join(eval_params['out_dir'], 'mean_image.npy'))
     test_json_filename = eval_params['test_json']
+    with open(test_json_filename, 'r') as json_file: 
+        raw_json_data = json.load(json_file)
+        test_json_data = dict()
+        for entry in raw_json_data:
+            if entry['image_id'] not in test_json_data:
+                test_json_data[entry['image_id']]=entry['config']
+
     image_dir = eval_params['image_dir']
     html_dir = eval_params['html_dir']
     if not os.path.exists(html_dir):
@@ -39,9 +47,7 @@ def eval(eval_params):
     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)
-        #print(test_batch[0].dtype)
-#        print([np.amax(test_batch[0][0,:, :, :]), np.amax(mean_image)])
+        test_batch = shape_data_loader.obj_mini_batch_loader(test_json_data, 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/classifiers/object_classifiers/eval_obj_classifier.pyc b/classifiers/object_classifiers/eval_obj_classifier.pyc
index 48898ca0a27747f6356b9311b4ebe8a2e4f3f745..8b6be912f6e9110be8d3644516b9293701cce808 100644
GIT binary patch
delta 1264
zcmZuwOOG2x5dM1XUBAYU^<(W>?;|lJL<$##w5N#YO34KzjKIsF$Z_1>T~EC0UAqw*
zsRtiSxNtzrhztAyxWb7G7ybfL#0hcY!i@vhd^NTukmBj-uIl=#>Z_{pm$fhI&BQ<X
z?4R%a{b3)=pTqMFzSHlnnlH|L2O7`{qXdE^{I!+3jvxg;y;3vqv$5=8l*6eD--TLw
z=HVAsxFY=0O5T89Uda{sRp<mh2mG4kd;eCFB(8q+3OhV=eBTyQ-(3Cv!^{+6Gteo_
z9enix!YoV)K@K*Hxk8wO*}xnKU0l8jo5R8V+X(ZpdFV7e>*7%glc%wsiS?!B&c#!3
zbvh*e-l1jPS$JUqBIPI*VO#|H8G<rwQF2Y+QgT&Us_G0dRRpyK5CMIQ(5?^_W+e<0
z(4<kozNVqXV*|R3{cr=8HEhC?x`G-ep(_g<`yx1Yg*d$lJ*yMX&NUFmkg$r&@0F=T
zd*XX=|63K30eLjQVl7E<PFt`w*b1t3Zn`OJo<g`Olq{nb*a-*wB9<s7m}?t0$y9Y%
zg}{Sdhh4+5GlSlNtuvPjnV|~XSh!1YlHtwWdzTeqB&l{$jad=x!DJDT$ufx-j~{sA
z;K+d|E!tW^7*lvW2l8eUmNA-m<Y0Q}#4}m7dJh4uER?Na&mDx@Fxv=7nAI%H^rDXv
zFV8r`EqF2tOR-6jZI&VILjOOEz6P#2NB5jbT^u@Gor_;pN1XTM%TxM#%!8wAp~kZA
z-jfzG25kliu4A4N82FvP5apAd9mTJEV$$4)r@iArcc{%emHznbXm}j;lmDt#^zqs+
zTk@|MpAXKA2*Gr`5cIHbqQ?4PYUk_JX9tF{V_WxVI2xEdwMp;OuAsZRXL_c<8#9=i
z|6Hx{icu$z+v42L{`4f}sh7lcdcqCLb!w`t%1%+;R4tXITvQpAS0%OQL_eo*C>8yY
zzERmE)+EI3@wDCI+1`!HnFne+nr2$Bm&GdE_+b!J=?=%;lfmeGFlpZuTSK;^?(w8|
ze$wqv20b$*=_R5X{g%0wd6$q|d=b5p9^96W-8miWPey~+q=!=>;3|2Fd|dKdXs+`N
DS;y~I

delta 950
zcmZuvJ!=$E6g_ulvmf)ZpEJ8VPBbwXNg>#6Ef`2DiwFh=1A-4FV<LpzBEp+&v1(%x
z!gT%uC0N;8St(Yw7B*TaSVT#y=S_ACAv5pIocG?j_nv$2d)|8y#`bUD`Fi@}&V5WD
zi~k#(!^5Na$~d)=l%N15*qK9GMpBtAt4L}Ewy@)1*G1w&rc@7!KjYPrG-kMoq&35B
zBpoOlPk|&b0dB997<l_HpIa+JI6C^^*CPUl^Csu;`q8)7V@){~M41DFszfeE9#S7^
z1KPzzF#J;NG^a~>OlK{m?HR9b4pa>j%dj&K+cuN~<zk>bD4)MNR0D&|ho<Wev~QTQ
zUBXy3&xp*#5ZeV&F_(aRnuW-iu#2pT{Z}$#Ze3%$y7f}BR-q$=u0d0O6{-i_f^Hz_
z@uT`?Oe)CQMv|s)7m>CwFwiHoF&?N0y2MyiB}lu_W#~CPw4g3PcNj~u0Gi1&v@ti%
zDTX_1>-!y}$b^a!6spJ$F>;Vn$uvk<^ayxn;emz7l&CwS1j(6@b2xNBF+Du8Fg%fI
zOU_C?kF;MT8WuITko7T&kWw)Br)h@yNBi2C23<s^6`HU|$SRvA#8CgcQ5V56Ve8K6
z)ZU43Z0>EzrZJw!1iYS?3LR|V0z#&>wr(m&A3PfY=_O2Rh6Y~7#e7`a%>R^5Wg-7L
z_bz{5{w`5|Tsf$0lzA67DsOkIk;I<4mv{MrcvdKFX<H4sDof%>{-(ApcK*4xTn~9Z
zvJLgga3juL=N^6SI7`yV51m*R^JC|-wDM2RqO9h>oP&Nqt|y)}_<GXhEMDs$tD3B^

diff --git a/classifiers/object_classifiers/obj_data_io_helper.py b/classifiers/object_classifiers/obj_data_io_helper.py
index 1e9b435..16280b4 100644
--- a/classifiers/object_classifiers/obj_data_io_helper.py
+++ b/classifiers/object_classifiers/obj_data_io_helper.py
@@ -7,10 +7,7 @@ import numpy as np
 import tensorflow as tf
 from scipy import misc
 
-def obj_mini_batch_loader(json_filename, image_dir, mean_image, start_index, batch_size, img_height = 100, img_width = 100, channels = 3):
-
-    with open(json_filename, 'r') as json_file:
-        json_data = json.load(json_file)
+def obj_mini_batch_loader(json_data, image_dir, mean_image, start_index, batch_size, img_height = 100, img_width = 100, channels = 3):
 
     obj_images = np.empty(shape=[9 * batch_size, img_height / 3, img_width / 3, channels])
     obj_labels = np.zeros(shape=[9 * batch_size, 4])
@@ -19,8 +16,7 @@ def obj_mini_batch_loader(json_filename, image_dir, mean_image, start_index, bat
         image_name = os.path.join(image_dir, str(i) + '.jpg')
         image = misc.imresize(mpimg.imread(image_name), (img_height, img_width), interp='nearest')
         crop_shape = np.array([image.shape[0], image.shape[1]]) / 3
-        selected_anno = [ q for q in json_data if q['image_id'] == i ]
-        grid_config = selected_anno[0]['config']
+        grid_config = json_data[i]
 
         counter = 0
         for grid_row in range(0, 3):
@@ -28,27 +24,29 @@ def obj_mini_batch_loader(json_filename, image_dir, mean_image, start_index, bat
                 start_row = grid_row * crop_shape[0]
                 start_col = grid_col * crop_shape[1]
                 cropped_image = image[start_row:start_row + crop_shape[0], start_col:start_col + crop_shape[1], :]
+
                 if np.ndim(mean_image) == 0:
                     obj_images[9 * (i - start_index) + counter, :, :, :] = cropped_image / 254.0
                 else:
                     obj_images[9 * (i - start_index) + counter, :, :, :] = (cropped_image / 254.0) - mean_image
+
                 obj_labels[9 * (i - start_index) + counter, grid_config[6 * grid_row + 2 * grid_col]] = 1
                 counter = counter + 1
 
     return (obj_images, obj_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)
+def mean_image_batch(json_data, image_dir, start_index, batch_size, img_height = 100, img_width = 100, channels = 3):
+    batch = obj_mini_batch_loader(json_data, image_dir, np.empty([]), start_index, batch_size, img_height, img_width, channels)
     mean_image = np.mean(batch[0], 0)
     return mean_image
 
 
-def mean_image(json_filename, image_dir, num_images, batch_size, img_height = 100, img_width = 100, channels = 3):
+def mean_image(json_data, image_dir, num_images, batch_size, img_height = 100, img_width = 100, channels = 3):
     max_iter = np.floor(num_images / batch_size)
     mean_image = np.zeros([img_height / 3, img_width / 3, channels])
     for i in range(max_iter.astype(np.int16)):
-        mean_image = mean_image + mean_image_batch(json_filename, image_dir, 1 + i * batch_size, batch_size, img_height, img_width, channels)
+        mean_image = mean_image + mean_image_batch(json_data, image_dir, 1 + i * batch_size, batch_size, img_height, img_width, channels)
 
     mean_image = mean_image / max_iter
     return mean_image
diff --git a/classifiers/object_classifiers/obj_data_io_helper.pyc b/classifiers/object_classifiers/obj_data_io_helper.pyc
index 9bdb6c7015cc3a0da7906325045969549a720070..ae5847b62758c1ea8aec0706d785fa461c734d1f 100644
GIT binary patch
delta 1184
zcmZux&1(}u6o0eXWRuNzvT2&wQoq`y1(jM;Ev<@e1)(ZsdngKJiQObknvXVFF~wO5
z20iFW=Au_GLT}<9V8M%c5WIQw<V{cF!JF?*idrZ$`^($+-n`#$-puC7>Gvl!&(E+v
zvHbmww#0T*0HEWufKTVV0^k7D7}z)!;3^p03$_PR+}HonprS$#nCq9B%72-*3Kd1h
z0?_@+91rmRR3Y6{U~%mub9Hc3sCl901J1zFc7f~ALo%<-af9Iap%wr~hguMLkYcC+
z*~>_U8Z_uB%neEM5bzMx!eIL$b6^D^LmIFkYIeiGfe12ggp%ASbQeh%+88HIyK7U-
zjX`(fuzM}T+&J(U@P2i}O#nv+z9EC*CW)D&4`)9k{TSPYZk+uja@ar<jj{(d7*ccu
zcwe9&HWkRW_ZT<8*0IAV3Tx=pwLybN#bwWE_8_Fd;1S^yCaU3q!^<GeakJRF7#KE+
zjDwNRVDsj9l*Fg83ELjFy8Q!Ix9`F#mc<GfU&)8@3fvaIJPTr3HPk4+iJsa$&d|U^
z18CaSMxO4A6F{hST20F?Iz=(!t%z6No5JV&Ha3P4P$t-rl4T<-heKC<Yyd|DM?p!k
zS!GTUX|1(HsV3Dmy$F(_Q7Sg`RNRacBnS)wVl@W{(gcGD4z0RZbk;Y_r1-2oWI1um
z|6!L3%22u9YPC%trEBCPtJraNwn{QwZ90?F<~Ta@bp8Jk;?2XY-fvjdMzK=r97*lR
zlt!^@Rh?4XOw#gW2zh+O7tQiX*O|A!1EVY;_tn}eHN~l5j!mM{N|=^gR<&7mENe!*
z3+@M}sKx~XO*{<^v4VIVdd9AZsqmxVC3NRyp9*3>{DNH<cOtdy-xYE<>-AQrl&6z2
z3q%p6O-QFzuGUL8#7gvRY?{Ke1Xl^JiRaO}_Z*rRg%W$2luGGT@dLsCf}M`(7kjb!
z)G#H}-H=S!nXMgD6)ZkJBTtZ8*zW<AGUq8Vh_K-_>ehp{Y?0)fp|GSU=1uV_o{JAB
Qd<i`{5Mm*wvkVKfKarf%umAu6

delta 1390
zcmZuwO^@4D6g|)Rb{r>@aVGI}paNReQ&lZe#bPu=nYJT=W}s5dV!8k#Gj`IrN!&?{
zNTp|u=!kAWAoXoPZ1@X^KTwGcJN^PI5ZzLhk4lJpU#bX=i0zyE?mNEs+;g9Qc=^GZ
zQttPfx%Bk$ccndX<N~PDbDf^)0|Q6_34{X22EJTDRz@li8<1rj3uG1ShrrESX%2B7
zp@A?5nTI0_2=i#k;{30KejdjVnF&VH<^mZO&^Pp66|*DDNQ;n^L#Js|(Vh4I5SfLv
zgt&~j0x6K1kQSE@i(p7rLs~^lpc-Nuvc`MFfU5VXP6;8AHAH6X;&n(HaRXrm?sLzC
z%Nzubm~>W0pSrG4=`~~xNWxYLYvGQ8$unMmVBqi>vL(nRohP*5W=(dpWz2R2H9<Zl
z(+yk}nS<H+6H!-WEl3Blu2VSK3gi(*Xi0pWtj#<n1?iqc+Mkl{6sCI);sD7{H#xl=
zap>q4iI;ANI56dZgzO-!(Kt*!AB*MfIC2^7#oKd7{cSj_&#?wNC-Lex<E2}~PF7Fm
zk<>h~b>M`gZwpS_CF!@Q1i{-R%Hh7)KfFrMC)lU7l!5l&^%``}ZqSJWChD8q^}V!A
z?qC%3qwXLi6@i0f+#B?1AoP2bY!5g#po0moNhZycN$y5t?Zne$?hKP4R8MoWGYr&Q
z<8UzY_;k}50T|fr4TjM;7)9!feE(GCztMED3WGFIPx9}ync|^-cNz_&gER`e!FZgg
z?ZPh?F3=u~rf3=G#hS4yPK$GNtqa>IiWRzSx?U44v1x1x^>#7YdzJ9M$%el*&2JP1
zV~@-FZ8jY?t87lOS!448n-|HX1u`E7>A`K^RX^E1H7vEny1HNbvBgRCc5j#@6W`)j
zYN}gycQ2Fc>6(iI^c?}?k49ZB`1F5E@jOPstUE}fiO>4^uTaT;f!#~rU#y%J1;0eT
zde1y3HZ_~aW{tc*%}3rA<6mdPqSKcTkmP!-y<{>9QjbIa74>uVGqJ6P*8S>L3V1wJ
zivDGNCEipIYw_wLk?!qam`o#&Cqf|ZU)puCt3J0cHs0Xi4x6{w?5b}YcZ&W7`5S7p
z{&n5wel(Hky{T`jU+dReXBoN7an_aexO>kx)s@EjhMp4(H}9O&_<IcGvE5Eb!|ulu
eEsQR9jkk4eF8grlbhFqrmsc!d2~)VDCjJFmGz7i?

diff --git a/classifiers/object_classifiers/train_obj_classifier.py b/classifiers/object_classifiers/train_obj_classifier.py
index debc76d..b371127 100644
--- a/classifiers/object_classifiers/train_obj_classifier.py
+++ b/classifiers/object_classifiers/train_obj_classifier.py
@@ -1,5 +1,6 @@
 import sys
 import os
+import json
 import matplotlib.pyplot as plt
 import matplotlib.image as mpimg
 import numpy as np
@@ -25,17 +26,25 @@ def train(train_params):
     img_width = 75
     img_height = 75
     train_json_filename = train_params['train_json']
+    with open(train_json_filename, 'r') as json_file: 
+        raw_json_data = json.load(json_file)
+        train_json_data = dict()
+        for entry in raw_json_data:
+            if entry['image_id'] not in train_json_data:
+                train_json_data[entry['image_id']]=entry['config']
+
+
     image_dir = train_params['image_dir']
     if train_params['mean_image']=='':
         print('Computing mean image')
-        mean_image = atr_data_loader.mean_image(train_json_filename, image_dir, 1000, 100, img_height, img_width)
+        mean_image = shape_data_loader.mean_image(train_json_data, image_dir, 1000, 100, img_height, img_width)
     else:
         print('Loading mean image')
         mean_image = np.load(train_params['mean_image'])
     np.save(os.path.join(outdir, 'mean_image.npy'), mean_image)
 
     # Val Data
-    val_batch = shape_data_loader.obj_mini_batch_loader(train_json_filename, image_dir, mean_image, 9501, 499, img_height, img_width)
+    val_batch = shape_data_loader.obj_mini_batch_loader(train_json_data, image_dir, mean_image, 9501, 499, img_height, img_width)
     feed_dict_val = {x: val_batch[0], y: val_batch[1], keep_prob: 1.0}
     
     # Session Saver
@@ -51,16 +60,17 @@ def train(train_params):
     train_acc_array_epoch = np.zeros([max_epoch])
     for epoch in range(max_epoch):
         for i in range(max_iter):
-            train_batch = shape_data_loader.obj_mini_batch_loader(train_json_filename, image_dir, mean_image, 1 + i * batch_size, batch_size, img_height, img_width)
+            if i%100==0:
+                print('Iter: ' + str(i))
+                print('Val Acc: ' + str(accuracy.eval(feed_dict_val)))
+
+            train_batch = shape_data_loader.obj_mini_batch_loader(train_json_data, image_dir, mean_image, 1 + i * batch_size, batch_size, img_height, img_width)
             feed_dict_train = {x: train_batch[0], y: train_batch[1], keep_prob: 0.5}
             _, current_train_batch_acc = sess.run([train_step, accuracy], feed_dict=feed_dict_train)
             train_acc_array_epoch[epoch] = train_acc_array_epoch[epoch] + current_train_batch_acc
-            val_acc_array_iter[i + epoch * max_iter] = accuracy.eval(feed_dict_val)
-            plotter.plot_accuracy(np.arange(0, i + 1 + epoch * max_iter) + 1, val_acc_array_iter[0:i + 1 + epoch * max_iter], xlim=[1, max_epoch * max_iter], ylim=[0, 1.0], savePath=os.path.join(outdir, 'valAcc_vs_iter.pdf'))
-            print 'Step: {}  Val Accuracy: {}'.format(i + 1 + epoch * max_iter, val_acc_array_iter[i + epoch * max_iter])
 
         train_acc_array_epoch[epoch] = train_acc_array_epoch[epoch] / max_iter
-        val_acc_array_epoch[epoch] = val_acc_array_iter[i + epoch * max_iter]
+        val_acc_array_epoch[epoch] = accuracy.eval(feed_dict_val)
         plotter.plot_accuracies(xdata=np.arange(0, epoch + 1) + 1, ydata_train=train_acc_array_epoch[0:epoch + 1], ydata_val=val_acc_array_epoch[0:epoch + 1], xlim=[1, max_epoch], ylim=[0, 1.0], savePath=os.path.join(outdir, 'acc_vs_epoch.pdf'))
         save_path = saver.save(sess, os.path.join(outdir, 'obj_classifier'), global_step=epoch)
 
diff --git a/classifiers/object_classifiers/train_obj_classifier.pyc b/classifiers/object_classifiers/train_obj_classifier.pyc
index b0dd5d511a461b073a33139526028efddda13b3c..ade9078d1c8faa943b94a78edd7d8a3f03589eaf 100644
GIT binary patch
delta 1534
zcmZ8h&u<$=6#ix%|Na^OcI+f}oIp{<p{j_W<NzX7%Lx%kgH{x?@@yS%UE5g?C6#uu
zkU1hywCafq0wlx@!4V-iAa2}{IPe!#;)dEY?~QFW!RwiQ@0*!7-}~mx{#<)ftB3wg
zC$7Hn&#f*NKZD+{P@8;nR^OhQ1|%Q_1|c{rFvCkX0w)SHwshk#6H7Y@GqtqSa56Bn
zOE(8|b!q2e79b6L0+>bECCCu&8gRdaUBnC!L*VR(Vx~=GR;j(lq{3%^{xnq?c(g+p
zGXtL=!cRkG;pE_@F%$4JP^%ok&*JndybShlUxrV^ImifVUKV$wa35(us{O^t-pM1-
z|LBNPe)AoV@{XbAuY#>OYBHhuy*Cvyi5oXn9!>!i&7+ivP8wbkUIMcS{5*zL$PCXa
zYG(5Y%q|axN>B+nNjPPAamXyE;^ny)9JjKFOOPbiL}4B}3crA9KLn4Y%M*74yKEN7
z3}IIm;jLiTFG2wh9Z^;5P=Y7m)HJxp2=NfI1iuVfhF^iKz^`gvb$C^H6%>0yYe|cU
zZG)i&vWDsZp*l{#7HXX*QRMyG4~5^r=^tQ-7%=n;d~()Vr7{ucbN<$lwC4t+G^KLm
zrliftjltQ3M<t*c5KeV)L6a$oLc&wLGKv-Io{F;p)@I|WHe@cfS(|G^v9%apl(*_p
zeN)bxw3~R>fZv4Qf=5V$6m6k0H}_6@#?cb3PElIG=ec?mzkxl~gwuj-Xx+A$2%*HG
zLPyIlNwn+d;FhG6*De5?Iz1AcRy28pj+O1!qGk>kMYF}_GDAdoB`zpR>q1Snd01}q
z{xd`PTR3@}lAzpafNmF8$hNkq+TXgg6FgqIvM%V3xhh6||DM&eJAJ7l<a9^FJN;g;
z6aJz$VgGeyyVshNIGMMsLG#sa_gXXfHCzpzk31Xv6>bKHkr%~I@LA-yqZOJn8rws~
zhBFz>jlsy08j=03qT5P0``8-W9cd}6!-KYa5G7Rc*JwD_QzzDadmd%f9|m7Vk6#Y)
zI^}B6zHbc_FBuO;is;c7VQzP<ZubM%>h|r4&c$-AVb2cCSX;D%k7D0nSDXej>)h!N
zY?UU@wLa`<g!$-5%C-8#b6A*WQBv-M1J>gp`r`|6M<l9br>IS2@Lgg(l^0nN7ip0b
zo1x(M#4|7D2&fy+iMD8ovXK`BF%g%IgwTq2I`?>w&ZRO%P&&5<lY<6_Zw1Zd`y}Yc
z$%4oS50lr$cJOzyRWI_)Bz2s0=hz;MNw+J!q8e0EpEfifk)kI{&-_ij5#LXV{{UiK
BE&c!i

delta 1520
zcmaJ>ON%2_6#j0dJ4xsLes<?EJxGf$T-eag2tMh-MI&jL9x_TSax3YSnIuznZD;Tn
zS!9-OhH@cp{0o9hapzL-FZcrnH-gMY+H<N?Od7$2d+V$3oO{ms&Z(-u>%Y{Sk-yRj
z_2#p?L#%%WUEihUe)qI_b7@D=-+~0Bz;qjS6#ZCu8%KX9#0m71Ax^<gqn`<Hv*_nS
zoJYR^Y2XRaFTyH8M(~9J=UZ4stN<|!GMyf5Q3aFB%gW{D$xsk()5_8MfR?-a^pBsH
znmo5r_tIb#MP0^%P|qRbIKHDYu(Qx9=rkminSf40C$Ngb%V1W6OtM!Fc0LTS5^Q3s
z0F{89gk6NDvni|$=nU^dm0*`C?veu&Cn<a;j2(lQ#Uuiqh0LO^4IDDe5sctaQl>2&
zdO0X?C+!ML_J|d*s{vVKhUyTq0FOFVgja+t!7BxI)uBt!MU=*3$!=abpc~AMMZi@4
z!&LF8W2h$k(2);6D;Qo4kB$XXr7P-4cy)xzLSZ>*%2z<CO53`5B(M<(Y%E_WY`joN
zoneI(Igq4d&~c0n$O?3ma*0n3c)RfSpsUa|>dPLgSMWA@+Ply>E=f}$N?zj%OV!(I
z4|XdM*5<TilFJ+&T-#|b)Z;20S{pZPU0G!#iRVyU3XPs-k`Kxv)tiHE@Q7DNM93!W
zPLO9K)U~3P)jIhe-+3sEvrtP3<xtDD`s<qH*AU3)Lhf!Tp<*b*T7V4N!WypVu55vh
zZW5uG@$&zbv;!rG3Z3W2nZ|KVXot<R%ZXNo@LG8Ir#R!8-3Z=7em?gDL~s7-!3}!p
zPE?F`Q<@J3Q-`qs&sNJn+Wy{uwq5gIjkez^kom%#zBe2WF5JOHS<dSVIdU6BpDJtd
zcIRua)46L-JLK`DV-6oP<42+g{>RZHanpYi{q>V9r%=v7n#vqZ=ccrr9)AfGf0Skm
z#hB>;xaNfw0DC@}sXUq7b8}&B9`=8To%`8%`Bs{&i|Jeq%yn`VCB}5j+1Lu;Xzn~P
zmEr<6{U(;{zaQThZGRO1G1iNaxwrMx{T*8*%7l}&+<X4-i9P>$;-&n{VqbJcK{Ule
zyk-<c#eXAN&ak86lkQ`;SNG47pO;%qC3v%D?%Wwo=U?@*{%^^T-r-iO8gHY)*fAI9
ygP~)YYBHY<&aLT!`oTgKCl2adldsTyuk4?szG+klrbJ3)>3?;l-PpO668{2Y?kwQ|

diff --git a/classifiers/train_classifiers.py b/classifiers/train_classifiers.py
index e7d0ba9..dc0d5aa 100644
--- a/classifiers/train_classifiers.py
+++ b/classifiers/train_classifiers.py
@@ -1,4 +1,5 @@
 import sys
+import json
 import os
 import matplotlib.pyplot as plt
 import matplotlib.image as mpimg
@@ -10,9 +11,9 @@ import attribute_classifiers.train_atr_classifier as atr_trainer
 import attribute_classifiers.eval_atr_classifier as atr_evaluator
 
 workflow = {
-    'train_obj': False,
-    'eval_obj': False,
-    'train_atr': False,
+    'train_obj': True,
+    'eval_obj': True,
+    'train_atr': True,
     'eval_atr': True,
 }
 
@@ -21,8 +22,8 @@ obj_classifier_train_params = {
     'adam_lr': 0.001,
     'train_json': '/home/tanmay/Code/GenVQA/GenVQA/shapes_dataset/train_anno.json',
     'image_dir': '/home/tanmay/Code/GenVQA/GenVQA/shapes_dataset/images',
-    'mean_image': '/home/tanmay/Code/GenVQA/Exp_Results/Obj_Classifier/mean_image.npy',
-#    'mean_image': '',
+#    'mean_image': '/home/tanmay/Code/GenVQA/Exp_Results/Obj_Classifier/mean_image.npy',
+    'mean_image': '',
 }
 
 obj_classifier_eval_params = {
-- 
GitLab