def myBuildDBNtest(self): #提取所有帧中,原始的骨架点,得到一个矩阵,Skeleton_matrix ,同时返回骨架是否归0化 #Skeleton_matrix, valid_skel = Extract_feature_UNnormalized(smp, used_joints, 1, smp.getNumFrames()) time_tic = time.time() import cPickle Skeleton_matrix=cPickle.load(open("testSkeleton_matrix","rb")) #print Skeleton_matrix Feature = Extract_feature_Realtime(Skeleton_matrix, self.njoints) Feature_normalized = normalize(Feature, self.Mean1, self.Std1) ''' ########################## ### model 1 第一种网络构架模式 # ########################## dbn = GRBM_DBN(numpy_rng=numpy_rng, n_ins=528, hidden_layers_sizes=[1000, 1000, 500], n_outs=201) dbn.load('dbn_2014-05-23-20-07-28.npy')#预先训练好的构架 #这里就是theano的奇葩函数构架 validate_model = theano.function(inputs=[], outputs=dbn.logLayer.p_y_given_x,#输出是逻辑回归层的输出 givens={ dbn.x: shared_x}) ''' observ_likelihood_1 = self.validate_model(Feature_normalized)#调用函数得到结果 ########################## # viterbi path decoding ##################### observ_likelihood_1=observ_likelihood_1[0:50,:] #这里自己改了,只有第一个网络结构的, log_observ_likelihood = log(observ_likelihood_1.T) #这里是一个矩阵, 行是样本,列是概率 [1884个样本, 201列] 用T转置了 print "处理时间 %d sec" % int(time.time() - time_tic) time_tic = time.time() #下面就是vibiter算法了 print("\t Viterbi path decoding " ) # do it in log space avoid numeric underflow [path, predecessor_state_index, global_score] =viterbi_path_log( self.Prior, self.Transition_matrix, log_observ_likelihood ) label=viterbi_endframe(path,5,30) # 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) print "标记是:" print label print "viterbi处理时间 %d sec" % int(time.time() - time_tic)
def myViterbi(self,log_observ_likelihood): time_tic = time.time() #下面就是vibiter算法了 print("\t Viterbi path decoding " ) # do it in log space avoid numeric underflow [path, predecessor_state_index, global_score] =viterbi_path_log( self.Prior, self.Transition_matrix, log_observ_likelihood ) label=viterbi_endframe(path,5,30) # 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) print "标记是:" print label print "viterbi处理时间 %d sec" % int(time.time() - time_tic) return label