Skip to content

Commit

Permalink
Create collecting-data-for-larger-fpv-model.py
Browse files Browse the repository at this point in the history
submitting a data collection file for people who wish to contribute data.
  • Loading branch information
Sentdex authored May 8, 2017
1 parent baf1d44 commit 1518ee4
Showing 1 changed file with 109 additions and 0 deletions.
109 changes: 109 additions & 0 deletions collecting-data-for-larger-fpv-model.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
'''
This file is meant to collect data for the latest model.
The data should be first person view data with the *HOOD CAMERA* in an armored Karuma.
I mainly train during day, but I would like more data from other times of day/weather, so feel free to submit whatever you like.
I will check all data for fitment to AI (basically how close does my AI predict the data you submit) to validate
against people trying to submit bad data.
When you have some data files, host them to google docs or something of that sort and share with
[email protected]
'''
# create_training_data.py

import numpy as np
from grabscreen import grab_screen
import cv2
import time
from getkeys import key_check
import os


w = [1,0,0,0,0,0,0,0,0]
s = [0,1,0,0,0,0,0,0,0]
a = [0,0,1,0,0,0,0,0,0]
d = [0,0,0,1,0,0,0,0,0]
wa = [0,0,0,0,1,0,0,0,0]
wd = [0,0,0,0,0,1,0,0,0]
sa = [0,0,0,0,0,0,1,0,0]
sd = [0,0,0,0,0,0,0,1,0]
nk = [0,0,0,0,0,0,0,0,1]

def keys_to_output(keys):
'''
Convert keys to a ...multi-hot... array
0 1 2 3 4 5 6 7 8
[W, S, A, D, WA, WD, SA, SD, NOKEY] boolean values.
'''
output = [0,0,0,0,0,0,0,0,0]


if 'W' in keys and 'A' in keys:
output = wa
elif 'W' in keys and 'D' in keys:
output = wd
elif 'S' in keys and 'A' in keys:
output = sa
elif 'S' in keys and 'D' in keys:
output = sd
elif 'W' in keys:
output = w
elif 'S' in keys:
output = s
elif 'A' in keys:
output = a
elif 'D' in keys:
output = d
else:
output = nk
return output


file_name = 'training_data.npy'

if os.path.isfile(file_name):
print('File exists, loading previous data!')
training_data = list(np.load(file_name))
else:
print('File does not exist, starting fresh!')
training_data = []


def main():

for i in list(range(4))[::-1]:
print(i+1)
time.sleep(1)

paused = False
while(True):

if not paused:
# 800x600 windowed mode
screen = grab_screen(region=(0,40,800,640))
last_time = time.time()
screen = cv2.cvtColor(screen, cv2.COLOR_BGR2GRAY)
screen = cv2.resize(screen, (160,120))
# resize to something a bit more acceptable for a CNN
keys = key_check()
output = keys_to_output(keys)
training_data.append([screen,output])

if len(training_data) % 1000 == 0:
print(len(training_data))
np.save(file_name,training_data)

keys = key_check()
if 'T' in keys:
if paused:
paused = False
print('unpaused!')
time.sleep(1)
else:
print('Pausing!')
paused = True
time.sleep(1)

main()

0 comments on commit 1518ee4

Please sign in to comment.