def get_feature(self, img, state): ''' 利用图片和当前关键点计算特征,多次使用并且 直接用了类的参数所以 创建一个类方便修改 :param img: :param state: :return: ''' return get_hog_feature(img, label_to_landmark(state), self.feature_block, self.block_size) # (4-1)*(4-1)*9*4*12 =3888
def compute_strid(self,img, state, decent_map): ''' 输入单张图片 和 标注 利用计算出来的每一步方向求出每一步的步伐 :param imgs: :param state: :param decent_map: :return: ''' phi = get_hog_feature(img, label_to_landmark(state),self.feature_block) # (4-1)*(4-1)*9*4*12 =3888 phi = np.array(phi) phi_one = np.ones(phi.shape) A = np.hstack((phi, phi_one)) A = np.mat(A) return np.dot(A, decent_map)
def compute_strid(self,img, state, decent_map): ''' 输入单张图片 和 标注 利用计算出来的每一步方向求出每一步的步伐 :param imgs: :param state: :param decent_map: :return: ''' R = decent_map phi = get_hog_feature(img, label_to_landmark(state)) # (4-1)*(4-1)*9*4*12 =3888 phi = np.array(phi) A = phi-self.avg_phi_star return np.dot(A, R)
def compute_strid_batch(self,imgs, states, decent_map): ''' 输入多张图片 和 标注 利用计算出来的每一步方向求出每一步的步伐 :param imgs: :param state: :param decent_map: :return: ''' R = decent_map phi = [get_hog_feature(imgs[idx], label_to_landmark(states[idx]))for idx in range(len(imgs))] # (4-1)*(4-1)*9*4*12 =3888 phi = np.array(phi) train_phi_star = [self.avg_phi_star for idx in range(len(imgs))] train_phi_star = np.array(train_phi_star) A = phi-train_phi_star return np.dot(A, R)
def get_phis(self,imgs,label): phi_star = [get_hog_feature(imgs[idx], label_to_landmark(label[idx]),self.feature_block) for idx in range(len(imgs))] # (4-1)*(4-1)*9*4*12 =3888 phi_star = np.array(phi_star) return phi_star