accumulate_prob += ftrs[i*ftrs.shape[0]/5:(i+1)*ftrs.shape[0]/5,:] accumulate_prob = accumulate_prob/5.0 log_observ_likelihood = log(accumulate_prob.T + numpy.finfo(numpy.float32).eps) else: log_observ_likelihood = log(ftrs.T + numpy.finfo(numpy.float32).eps) log_observ_likelihood[-1, 0:5] = 0 log_observ_likelihood[-1, -5:] = 0 print("\t Viterbi path decoding " ) # do it in log space avoid numeric underflow [path, predecessor_state_index, global_score] = viterbi_path_log(log(Prior), log(Transition_matrix), log_observ_likelihood) #[path, predecessor_state_index, global_score] = viterbi_path(Prior, Transition_matrix, observ_likelihood) # Some gestures are not within the vocabulary [pred_label, begin_frame, end_frame, Individual_score, frame_length] = viterbi_colab_clean(path, global_score, threshold=-100, mini_frame=19) #begin_frame = begin_frame + 1 end_frame = end_frame + 5 # note here 3DCNN should add 5 frames because we used 4 frames ### plot the path and prediction if True: im = imdisplay(global_score) plt.clf() plt.imshow(im, cmap='gray') plt.plot(range(global_score.shape[-1]), path, color='c',linewidth=2.0) plt.xlim((0, global_score.shape[-1])) # plot ground truth gesturesList=smp.getGestures() for gesture in gesturesList: # Get the gesture ID, and start and end frames for the gesture gestureID,startFrame,endFrame=gesture
##################### log_observ_likelihood = log(ftrs.T) log_observ_likelihood[-1, 0:5] = 0 log_observ_likelihood[-1, -5:] = 0 print("\t Viterbi path decoding ") # do it in log space avoid numeric underflow [path, predecessor_state_index, global_score] = viterbi_path_log(log(Prior), log(Transition_matrix), log_observ_likelihood) #[path, predecessor_state_index, global_score] = viterbi_path(Prior, Transition_matrix, observ_likelihood) # Some gestures are not within the vocabulary [pred_label, begin_frame, end_frame, Individual_score, frame_length] = viterbi_colab_clean(path, global_score, threshold=-100, mini_frame=19) #begin_frame = begin_frame + 1 end_frame = end_frame + 5 # note here 3DCNN should add 5 frames because we used 4 frames ### plot the path and prediction if False: im = imdisplay(global_score) plt.imshow(im, cmap='gray') plt.plot(range(global_score.shape[-1]), path, color='c', linewidth=2.0) plt.xlim((0, global_score.shape[-1])) # plot ground truth gesturesList = smp.getGestures()
load_path_depth= os.path.join(outPred_depth,file) dic_cropped= cPickle.load( open(load_path_cropped, "rb" ) ) dic_depth = cPickle.load( open(load_path_depth, "rb" ) ) log_observ_likelihood_cropped= dic_cropped['log_observ_likelihood'] log_observ_likelihood_depth = dic_depth['log_observ_likelihood'] log_observ_likelihood = log_observ_likelihood_cropped + log_observ_likelihood_depth print "Viterbi path decoding " + file # do it in log space avoid numeric underflow [path, predecessor_state_index, global_score] = viterbi_path_log(log(Prior), log(Transition_matrix), log_observ_likelihood) #[path, predecessor_state_index, global_score] = viterbi_path(Prior, Transition_matrix, observ_likelihood) # Some gestures are not within the vocabulary [pred_label, begin_frame, end_frame, Individual_score, frame_length] = viterbi_colab_clean(path, global_score, threshold=-100, mini_frame=19) ### In theory we need add frame, but it seems that the groutnd truth is about 3 frames more, a bit random end_frame = end_frame + 3 print "Elapsed time %d sec" % int(time.time() - time_tic) prediction=[] for i in range(len(begin_frame)): prediction.append([ pred_label[i], begin_frame[i], end_frame[i]] ) if True: import matplotlib.pyplot as plt im = imdisplay(global_score) plt.clf() plt.imshow(im, cmap='gray') plt.plot(range(global_score.shape[-1]), path, color='c',linewidth=2.0) plt.xlim((0, global_score.shape[-1]))