-
Notifications
You must be signed in to change notification settings - Fork 13
/
data_shuffled_btn.py
88 lines (67 loc) · 2.24 KB
/
data_shuffled_btn.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env python
from __future__ import division
import random
import os
import sys
from collections import OrderedDict
import cv2
import params
import preprocess
import local_common as cm
################ parameters ###############
data_dir = params.data_dir
epochs = params.epochs
img_height = params.img_height
img_width = params.img_width
img_channels = params.img_channels
purposes = ['train', 'val']
imgs = OrderedDict()
wheels = OrderedDict()
for purpose in purposes:
imgs[purpose] = []
wheels[purpose] = []
# load all preprocessed training images into memory
def load_imgs():
global imgs
global wheels
for p in purposes:
for epoch_id in epochs[p]:
print 'processing and loading "{}" epoch {} into memory, current num of imgs is {}...'.format(
p, epoch_id, len(imgs[p]))
# vid_path = cm.jn(data_dir, 'epoch{:0>2}_front.mkv'.format(epoch_id))
vid_path = cm.jn(data_dir, 'out-video-{}.avi'.format(epoch_id))
assert os.path.isfile(vid_path)
frame_count = cm.frame_count(vid_path)
cap = cv2.VideoCapture(vid_path)
# csv_path = cm.jn(data_dir, 'epoch{:0>2}_steering.csv'.format(epoch_id))
csv_path = cm.jn(data_dir, 'out-key-btn-{}.csv'.format(epoch_id))
assert os.path.isfile(csv_path)
print "DBG:", csv_path
rows = cm.fetch_csv_data(csv_path)
print len(rows), frame_count
assert frame_count == len(rows)
yy = [[int(row['btn'])] for row in rows]
while True:
ret, img = cap.read()
if not ret:
break
img = preprocess.preprocess(img)
imgs[p].append(img)
wheels[p].extend(yy)
assert len(imgs[p]) == len(wheels[p])
cap.release()
def load_batch(purpose):
p = purpose
assert len(imgs[p]) == len(wheels[p])
n = len(imgs[p])
assert n > 0
ii = random.sample(xrange(0, n), params.batch_size)
assert len(ii) == params.batch_size
xx, yy = [], []
for i in ii:
xx.append(imgs[p][i])
yy.append(wheels[p][i])
return xx, yy
if __name__ == '__main__':
load_imgs()
load_batch()