コード例 #1
0
    def predict(self, img, pre_label, show=False):

        state = [copy.deepcopy(self.f_value[0][0])]
        if show:
            showpic(img, label_to_landmark(state))
        phi_star = self.get_feature(img, pre_label)
        for i in range(len(self.derection)):

            deta_X = pre_label - state
            deta_phi = phi_star - self.get_feature(img, state)
            pca_deta_X = np.dot(self.pca_base[i][0], np.transpose(deta_X))
            print(pca_deta_X.shape)
            pca_deta_phi = np.dot(self.pca_base[i][1], np.transpose(deta_phi))
            if pca_deta_X[0] >= 0:
                if pca_deta_X[1] >= 0:
                    if pca_deta_phi[0] >= 0:
                        subindex = 0
                    else:
                        subindex = 1
                else:
                    if pca_deta_phi[0] >= 0:
                        subindex = 2
                    else:
                        subindex = 3
            else:
                if pca_deta_X[1] >= 0:
                    if pca_deta_phi[0] >= 0:
                        subindex = 4
                    else:
                        subindex = 5
                else:
                    if pca_deta_phi[0] >= 0:
                        subindex = 6
                    else:
                        subindex = 7
            state += self.learning_rate * self.compute_strid(
                img, state, self.derection[i][subindex])
        if show:
            showpic(img, label_to_landmark(state))
        return state
コード例 #2
0
 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)
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
 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