def vlad(data, means, assignments, components,
normalize=['l2c']):
"""
compute 'vector of locally aggregated descriptors'
"""
def encode(k):
uk_ = assignments[:,k].T.dot(data)
clustermass = assignments[:,k].sum()
if clustermass > 0:
uk_ -= clustermass * means[k]
if 'l2c' in normalize:
n = max(math.sqrt(np.sum(uk_ * uk_)), 1e-12)
uk_ /= n
return uk_
uk = map(encode, range(components))
uk = np.concatenate(uk, axis=0).reshape(1,-1)
return uk
评论列表
文章目录