def _fisher_vector(self, img_descriptors):
"""
:param img_descriptors: X
:return: fisher vector
:rtype: np.array
"""
means, covariances, weights = self.gmm.means, self.gmm.covariances, self.gmm.weights
s0, s1, s2 = self._likelihood_statistics(img_descriptors)
T = img_descriptors.shape[0]
diagonal_covariances = np.float32([np.diagonal(covariances[k]) for k in range(0, covariances.shape[0])])
""" Refer page 4, first column of reference [1] """
g_weights = self._fisher_vector_weights(s0, s1, s2, means, diagonal_covariances, weights, T)
g_means = self._fisher_vector_means(s0, s1, s2, means, diagonal_covariances, weights, T)
g_sigma = self._fisher_vector_sigma(s0, s1, s2, means, diagonal_covariances, weights, T)
fv = np.concatenate([np.concatenate(g_weights), np.concatenate(g_means), np.concatenate(g_sigma)])
fv = self.normalize(fv)
return fv
评论列表
文章目录