Open chullhwan-song opened 4 years ago
Pipeline
def compute_crow_channel_weight(X):
"""
Given a tensor of features, compute channel weights as the
log of inverse channel sparsity.
:param ndarray X:
3d tensor of activations with dimensions (channels, height, width)
:returns ndarray:
a channel weight vector
"""
K, w, h = X.shape
area = float(w * h)
nonzeros = np.zeros(K, dtype=np.float32)
for i, x in enumerate(X):
nonzeros[i] = np.count_nonzero(x) / area
nzsum = nonzeros.sum() for i, d in enumerate(nonzeros): nonzeros[i] = np.log(nzsum / d) if d > 0. else 0.
return nonzeros
* Descriptor Aggregation
* class수만큼의 K dimension(max=k, pca적용했다면 <=K) feature들이 존재하고 각각의 sum
* 사실 모든 class를 고려해야하는건 좀 무리인것같다.. class 선택하는 방법에 대해 논문에서는 2가지 방법을 고려
* Online Aggregation (OnA) vs Offline Aggregation (OfA)
![image](https://user-images.githubusercontent.com/40360823/67549795-04ae2500-f740-11e9-9822-8a2ffa28ec6a.png)
![image](https://user-images.githubusercontent.com/40360823/67549739-e9dbb080-f73f-11e9-8eee-599d149624c9.png)
* 이후, l2 normalization+PCA + l2 normalization
https://arxiv.org/abs/1707.02581