Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bdb36bc4a4 | |||
| b0df9d73b1 | |||
| 34e764bbcf | |||
| a8360af25c |
@@ -39,8 +39,8 @@ cd ~/torch; bash install-deps;
|
||||
```
|
||||
luarocks install rnn
|
||||
```
|
||||
The Estimation model can be downloaded here and because of size constraints the Tracking model can be abtained by download from this link
|
||||
[tracking_model.mat] (https://drive.google.com/open?id=0Bxkc5_D0JjpiZWx4eTU1d0hsVXc)
|
||||
The Estimation model can be downloaded here and because of size constraints the Tracking model can be abtained by download from this link
|
||||
[tracking_model.dat.gz](https://drive.google.com/open?id=1-BwlbbHykIV52c-SL1ofcppxZ5pTTXai)
|
||||
|
||||
## How to use:
|
||||
|
||||
|
||||
+142
@@ -0,0 +1,142 @@
|
||||
from keras.models import model_from_json
|
||||
import numpy as np
|
||||
import csv
|
||||
import math
|
||||
|
||||
model = model_from_json(open('model.json').read())
|
||||
model.load_weights('weights.h5')
|
||||
data_dir = ""
|
||||
X_test = np.load(data_dir+'VTR_test_X.npy')
|
||||
Y = np.load(data_dir+'VTR_test_Y.npy')
|
||||
|
||||
names = Y[:, :1]
|
||||
Y_test = Y[:,1:]
|
||||
predictions = []
|
||||
|
||||
loss1 = 0.0
|
||||
loss2 = 0.0
|
||||
loss3 = 0.0
|
||||
loss4 = 0.0
|
||||
max_1 = 0.0
|
||||
max_2 = 0.0
|
||||
max_3 = 0.0
|
||||
max_4 = 0.0
|
||||
list_1 = []
|
||||
list_2 = []
|
||||
list_3 = []
|
||||
list_4 = []
|
||||
male = [0.0, 0.0, 0.0, 0.0, 0.0, [], [], [], []]
|
||||
female = [0.0, 0.0, 0.0, 0.0, 0.0, [], [], [], []]
|
||||
karma_list = [0, 0.0, 0.0, 0.0, 0.0]
|
||||
AVG_list = [0, 0.0, 0.0, 0.0, 0.0]
|
||||
|
||||
y_hat = model.predict(X_test)
|
||||
for i in range(0,len(Y_test)):
|
||||
l1 = np.abs(float(Y_test[i, 0]) - y_hat[i, 0])
|
||||
l2 = np.abs(float(Y_test[i, 1]) - y_hat[i, 1])
|
||||
l3 = np.abs(float(Y_test[i, 2]) - y_hat[i, 2])
|
||||
l4 = np.abs(float(Y_test[i, 3]) - y_hat[i, 3])
|
||||
pred = [names[i][0], float(Y_test[i, 0]), float(Y_test[i, 1]), float(Y_test[i, 2]), float(Y_test[i, 3])]
|
||||
|
||||
AVG_list[0] += 1
|
||||
AVG_list[1] += float(Y_test[i, 0]) - y_hat[i, 0]
|
||||
AVG_list[2] += float(Y_test[i, 1]) - y_hat[i, 1]
|
||||
AVG_list[3] += float(Y_test[i, 2]) - y_hat[i, 2]
|
||||
AVG_list[4] += float(Y_test[i, 3]) - y_hat[i, 3]
|
||||
|
||||
pred.extend([y_hat[i, 0], y_hat[i, 1], y_hat[i, 2], y_hat[i, 3]])
|
||||
|
||||
if names[i][0].split('_')[3][0] == 'f':
|
||||
female[0] += 1
|
||||
female[1] += l1
|
||||
female[2] += l2
|
||||
female[3] += l3
|
||||
female[4] += l4
|
||||
female[5].append(l1)
|
||||
female[6].append(l2)
|
||||
female[7].append(l3)
|
||||
female[8].append(l4)
|
||||
elif names[i][0].split('_')[3][0] == 'm':
|
||||
male[0] += 1
|
||||
male[1] += l1
|
||||
male[2] += l2
|
||||
male[3] += l3
|
||||
male[4] += l4
|
||||
male[5].append(l1)
|
||||
male[6].append(l2)
|
||||
male[7].append(l3)
|
||||
male[8].append(l4)
|
||||
|
||||
predictions.append(pred)
|
||||
|
||||
list_1.append(l1)
|
||||
list_2.append(l2)
|
||||
list_3.append(l3)
|
||||
list_4.append(l4)
|
||||
max_1 = max(max_1,l1)
|
||||
max_2 = max(max_2,l2)
|
||||
max_3 = max(max_3,l3)
|
||||
max_4 = max(max_4,l4)
|
||||
|
||||
loss1 += l1
|
||||
loss2 += l2
|
||||
loss3 += l3
|
||||
loss4 += l4
|
||||
|
||||
karma_list[0] += 1
|
||||
karma_list[1] += l1 * l1
|
||||
karma_list[2] += l2 * l2
|
||||
karma_list[3] += l3 * l3
|
||||
karma_list[4] += l4 * l4
|
||||
loss1 /= len(Y_test)
|
||||
loss2 /= len(Y_test)
|
||||
loss3 /= len(Y_test)
|
||||
loss4 /= len(Y_test)
|
||||
total_loss = loss1+loss2+loss3+loss4
|
||||
total_loss /= 4.0
|
||||
print('standard deviation', round(np.std(list_1)*1000, 2), round(np.std(list_2)*1000, 2), round(np.std(list_3)*1000, 2), round(np.std(list_4)*1000, 2))
|
||||
print('median', round(np.median(list_1)*1000, 2), round(np.median(list_2)*1000, 2), round(np.median(list_3)*1000, 2), round(np.median(list_4)*1000, 2))
|
||||
print('max loss ', round(max_1*1000, 2), round(max_2*1000, 2), round(max_3*1000, 2), round(max_4*1000, 2))
|
||||
print('total loss ', round(total_loss*1000, 2))
|
||||
print('Real test score:', round(loss1*1000, 2), round(loss2*1000, 2), round(loss3*1000, 2), round(loss4*1000, 2))
|
||||
|
||||
female[1] = round((female[1] / female[0])*1000, 2)
|
||||
female[2] = round((female[2] / female[0])*1000, 2)
|
||||
female[3] = round((female[3] / female[0])*1000, 2)
|
||||
female[4] = round((female[4] / female[0])*1000, 2)
|
||||
female[5] = round(np.std(female[5])*1000, 2)
|
||||
female[6] = round(np.std(female[6])*1000, 2)
|
||||
female[7] = round(np.std(female[7])*1000, 2)
|
||||
female[8] = round(np.std(female[8])*1000, 2)
|
||||
|
||||
male[1] = round((male[1] / male[0])*1000, 2)
|
||||
male[2] = round((male[2] / male[0])*1000, 2)
|
||||
male[3] = round((male[3] / male[0])*1000, 2)
|
||||
male[4] = round((male[4] / male[0])*1000, 2)
|
||||
male[5] = round(np.std(male[5])*1000, 2)
|
||||
male[6] = round(np.std(male[6])*1000, 2)
|
||||
male[7] = round(np.std(male[7])*1000, 2)
|
||||
male[8] = round(np.std(male[8])*1000, 2)
|
||||
|
||||
print("male: ", male)
|
||||
print("female: ", female)
|
||||
|
||||
# karma
|
||||
|
||||
karma_list[1] /= karma_list[0]
|
||||
karma_list[2] /= karma_list[0]
|
||||
karma_list[3] /= karma_list[0]
|
||||
karma_list[4] /= karma_list[0]
|
||||
print('root mean squared error ', round(math.sqrt(karma_list[1]) * 1000, 2), round(math.sqrt(karma_list[2]) * 1000, 2),
|
||||
round(math.sqrt(karma_list[3]) * 1000, 2), round(math.sqrt(karma_list[4]) * 1000, 2))
|
||||
|
||||
AVG_list[1] /= AVG_list[0]
|
||||
AVG_list[2] /= AVG_list[0]
|
||||
AVG_list[3] /= AVG_list[0]
|
||||
AVG_list[4] /= AVG_list[0]
|
||||
print('AVG ', round(AVG_list[1] * 1000, 2), round(AVG_list[2] * 1000, 2), round(AVG_list[3] * 1000, 2), round(AVG_list[4] * 1000, 2))
|
||||
|
||||
|
||||
with open("results/VTR.csv", "wb") as f:
|
||||
writer = csv.writer(f)
|
||||
writer.writerows(predictions)
|
||||
+2
-1
@@ -26,7 +26,8 @@ def build_data(wav,begin=None,end=None):
|
||||
dstr = wav_in_file.readframes(N)
|
||||
data = np.fromstring(dstr, np.int16)
|
||||
if begin is not None and end is not None:
|
||||
return data[begin*16000:end*16000]
|
||||
#return data[begin*16000:end*16000] #numpy 1.11.0
|
||||
return data[np.int(begin*16000):np.int(end*16000)] #numpy 1.14.0
|
||||
X = []
|
||||
l = len(data)
|
||||
for i in range(0, l-100, 160):
|
||||
|
||||
Reference in New Issue
Block a user