This repository has been archived by the owner on Nov 27, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
train_person_classification.py
61 lines (50 loc) · 2.72 KB
/
train_person_classification.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# import IN THIS ORDER - otherwise cv2 gets loaded after tensorflow,
# and tensorflow loads an incompatible internal version of libpng
# https://github.com/tensorflow/tensorflow/issues/1924
import cv2
import numpy as np
import tensorflow as tf
from Datasets.Dataset import batcher
from Datasets.tud import load_tud
from Datasets.inria import load_inria
from Datasets.zurich import load_zurich
import Model
class PersonModel(Model.BooleanModel):
def train(self, person_iter):
batch_size = 50
for batch_no, batch in enumerate(batcher(person_iter, batch_size=100)):
train_accuracy = self.accuracy.eval(feed_dict={
self.x:batch[0], self.y_: batch[1], self.keep_prob: 1.0})
if batch_no % 5 == 0:
print("Step %i, training accuracy %g"%(batch_no, train_accuracy))
# r = y_conv.eval(feed_dict={self.x: batch[0], keep_prob: 1.0})
# print('Guess: ', np.round(r.flatten()))
# print('Actual:', np.round(batch[1].flatten()))
self.train_step.run(feed_dict={self.x: batch[0], self.y_: batch[1], self.keep_prob: 0.5})
if __name__ == '__main__':
combined_dataset = load_tud('/mnt/data/Datasets/pedestrians/tud/tud-pedestrians') + \
load_tud('/mnt/data/Datasets/pedestrians/tud/tud-campus-sequence') + \
load_tud('/mnt/data/Datasets/pedestrians/tud/tud-crossing-sequence') + \
load_tud('/mnt/data/Datasets/pedestrians/tud/TUD-Brussels') + \
load_tud('/mnt/data/Datasets/pedestrians/tud/train-210') + \
load_tud('/mnt/data/Datasets/pedestrians/tud/train-400') + \
load_tud('/mnt/data/Datasets/pedestrians/tud/TUD-MotionPairs/positive') + \
load_tud('/mnt/data/Datasets/pedestrians/tud/TUD-MotionPairs/negative') + \
load_inria('/mnt/data/Datasets/pedestrians/INRIA/INRIAPerson') + \
load_zurich('/mnt/data/Datasets/pedestrians/zurich')
combined_dataset.train.generate_negative_examples()
combined_dataset.test.generate_negative_examples()
combined_dataset.shuffle()
combined_dataset.balance()
train_pos = combined_dataset.train.num_positive_examples
train_neg = combined_dataset.train.num_negative_examples
print(len(combined_dataset.train), 'training examples ({},{}).'.format(train_pos, train_neg))
print(len(combined_dataset.test), 'testing examples ({},{}).'.format(combined_dataset.test.num_positive_examples, combined_dataset.test.num_negative_examples))
nn_im_w = 64
nn_im_h = 160
with tf.Session() as sess:
model = PersonModel(sess)
model.build_graph(nn_im_w, nn_im_h)
print("Training...")
model.train(combined_dataset.train.iter_people())
model.save('saved_model/')