Closed aplusc98 closed 5 years ago
Hi check out the latest file. It has incorporated open CV 3.4 changes. All you have to do is first check your version of open CV. If it's 2 or something then remove it and install 3.4 and the code will run just fine.
Can you please specify how to fix the prediction error occuring in AutoRCcar, After training im getting 57 percent accuracy but during test im getting only [0].. (ie left) can please let me know about the changes made in the NN model?
import cv2 import numpy as np import glob import sys from sklearn.model_selection import train_test_split
print 'Loading training data...' t0 = cv2.getTickCount()
load training data
image_array = np.zeros((1, 76800)) label_array = np.zeros((1, 4), 'float') training_data = glob.glob('trainin_data/1524310354.npz')
if no data, exit
if not training_data: print "No training data in directory, exit" sys.exit()
for single_npz in training_data: with np.load(single_npz) as data: train_temp = data['train'] train_labels_temp = data['train_labels']
image_array = np.vstack((image_array, train_temp)) label_array = np.vstack((label_array, train_labels_temp))
X = image_array[1:, :] y = label_array[1:, :] print 'Image array shape: ', X.shape print 'Label array shape: ', y.shape
t00 = cv2.getTickCount() time0 = (t00 - t0)/ cv2.getTickFrequency() print 'Loading image duration:', time0
train test split, 7:3
train, test, train_labels, test_labels = train_test_split(X, y, test_size=0.3)
set start time
t1 = cv2.getTickCount()
create MLP
layer_sizes = np.int32([76800, 32, 4]) model = cv2.ml.ANN_MLP_create() model.setLayerSizes(layer_sizes) criteria = (cv2.TERM_CRITERIA_COUNT | cv2.TERM_CRITERIA_EPS, 500, 0.0001)
criteria2 = (cv2.TERM_CRITERIA_COUNT, 100, 0.001)
params = dict(term_crit = criteria, train_method = cv2.ml.ANN_MLP_BACKPROP, bp_dw_scale = 0.01, bp_moment_scale = 0.0 )
print 'Training MLP ...' num_iter = model.train(np.float32(X), cv2.ml.ROW_SAMPLE, np.float32(y))
set end time
t2 = cv2.getTickCount() time = (t2 - t1)/cv2.getTickFrequency() print 'Training duration:', time
print 'Ran for %d iterations' % num_iter
train data
ret_0, resp_0 = model.predict(train) prediction_0 = resp_0.argmax(-1) true_labels_0 = train_labels.argmax(-1)
train_rate = np.mean(prediction_0 == true_labels_0) print 'Train accuracy: ', "{0:.2f}%".format(train_rate * 100)
test data
ret_1, resp_1 = model.predict(test) prediction_1 = resp_1.argmax(-1) true_labels_1 = test_labels.argmax(-1)
test_rate = np.mean(prediction_1 == true_labels_1) print 'Test accuracy: ', "{0:.2f}%".format(test_rate * 100)
save model
model.save('mlp_xml/mlp.xml')