Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bdb36bc4a4 | |||
| b0df9d73b1 | |||
| 34e764bbcf | |||
| a8360af25c |
@@ -40,7 +40,7 @@ cd ~/torch; bash install-deps;
|
|||||||
luarocks install rnn
|
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
|
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)
|
[tracking_model.dat.gz](https://drive.google.com/open?id=1-BwlbbHykIV52c-SL1ofcppxZ5pTTXai)
|
||||||
|
|
||||||
## How to use:
|
## 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)
|
dstr = wav_in_file.readframes(N)
|
||||||
data = np.fromstring(dstr, np.int16)
|
data = np.fromstring(dstr, np.int16)
|
||||||
if begin is not None and end is not None:
|
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 = []
|
X = []
|
||||||
l = len(data)
|
l = len(data)
|
||||||
for i in range(0, l-100, 160):
|
for i in range(0, l-100, 160):
|
||||||
|
|||||||
Reference in New Issue
Block a user