Deep Aggregation of Regional Convolutional Activations for Content Based Image Retrieval
Opened this issue · 1 comments
chullhwan-song commented
Abstract
- aggregation method built on top of existing regional pooling approaches
- regional > r-mac에서의 grid region과 비슷한것같다.
- aggregation feature > average activations(SPoC)+maximum activation(MAC)
- 여기서 실제 이 논문의 aggregation의 의미는 regional마다 aggregation feature를 다시 aggregation하는 방법을 의미
- 여기서 궁금한것은 region마다 합칠때, 어떻게..하는것인가?
- training ? NRA(Nonlinear Rank Approximation) loss function 적용 > metric learning
- backbone neural network & to learn the aggregation weights
- aggregation weights를 어떻게 학습? 어떤 의미? > learns the importance of each of the regions and assigns it an individual weight
- backbone neural network & to learn the aggregation weights
PROPOSED METHOD
Nonlinear Rank Approximation Loss
- refer 논문을 더 자세히 봐야할듯.
- triplet loss기반인데, 다만, distance(ex-cosine)를 min-max scaling기법으로 representation하는 방법인듯.
Global and Regional Pooling
- 이 연구의 접근은 DIR의 R-MAC과 거의 접근이 비슷하다. 다만, 밑에서 설명하는 그 차이점이 이 논문의 핵심인듯..
- R-MAC : 각 Region(ROI) 별 MAC feature를 추출하여 이를 합함으로써 global feature로 만듦.
- 그래서, R-MAC의 문제점은
- 작은 region도 high로 나타날수있다.(mac feature의 특성상) > 영역이 작다고 주요하지 않다는 보장이 있나? 다만 확률적으로.낮을수 있지만..
- regions들안에는 over-lapping 영역이 많다..그래서, max-pooling 을 사용하는 것이라면, over-lapping되는 영역의 feature와 동일해질수 있다.(over-lapping의 영역이 max...)
- 이와 같은 문제점때문에, max-pooling보다는 average pooling이 더 좋은 결과가 나올수 있다.
- 다만, average pooling은 input image size에 민감하다.
- 이연구는 다양한 input size에 대한 비교를 통해 둘을 비교하는듯..
- average pooling
- max pooling
- average pooling + max pooling
- Max Global은 모든 input size에 대해 성능이 안좋았다.
- Avg Global은 이미지가 커질수록 어느순간부터 성능이 떨어졌다. > Avg Global는 큰 이미지로 학습할필요가 없다란 의미 또는 이미지가 클수록 좋은것만은 아니다란 의미로 해석!!
- 반면에 R-MAC(Max Regional)은 다른 feature보다 좋았다.
- 그러나, Avg+Max 로 Global과 Regional으로 동시에 R-MAC를 극복
- 여기서 주의 또는 이상한점??은 Global이 더 좋았다는 것!!
- Global 과 Regional 차이가 Global이 아마도 region=1즉, 전체 이미지 한장의 영역에서만.. > 이런의미면, Regional이 더높아야하는거 아닌가?
- feature의 구성은 R-MAC과 거의 유사
- region별 pooling feature > region별 l2-normalize > 각 region에 대한 aggregation :sum pooling 이제 여기서부터는 global feature > l2-normalize
- 여기서, average pooling + max pooling 하는데, 나중에 따로따로 구한다음 concat하는지?? 아님 초기단계부터 ?? 궁금하다. > Fig.4
- eval input size : {224, 448, 672, 896, 1120}
- Fig.2에서 언급했듯이, Avg+Max의 경우 Regional 보다 Global이 더 좋은 성능을 보임
- 이 이유, 모든 Region이 다 중요한것이 아니다.란 의미로 해석하고있음.
- 각 region의 크기에 따라 weight를 더 줘야하고, 이는 max pooling보다 avg pooling이 크기가 큰 region에서 더 효과적이란 의미라고 주장.
- 궁금한점은?
- test 결과는 448사이즈로 할때 가장 좋은데, 실제 학습에서는 448 아닌 299 사이즈로 한다 > 메모리 문제일까?
Weighted Aggregation of CNN Activations
- 여기서 하고 싶은얘기는 region마다 중요도가 다르니 그에 따른 weight를 주고 싶은것!!
- region은 21개의 ROI
- backbone net에서의 layer중 어디를?? > by the last convolutional layer with a ReLU activation
- 그래서, 21 region과 2개의 pooling feature를 사용하므로, 총 42개의 regional feature가 생성.
- DARAC : (Deeply Aggregated Regional Activations of Convolutions 제안
- 42x1x2048 에서 16x1x2048 feature map으로 넘어가는 단계가 이해가 잘 안된다.
- 위의 feature map 사이즈로 설명한것은 이해가 가나? 하위 convolution 설명들은 이해가 잘 안감?
- 위의 feature map의 dimension(channel)은 이해가서 하위 convolution에 대한 설명은 input/output의 dimension의미는 아님.
- 일단 정리하면, 이 42x1x2048 에서 16x1x2048 feature map 단계는 논문에서는, Region별 weight의 계산하는 방법이다라고 이 논문의 핵심으로 말하고 있다.
- 하지만,
- 42x1x2048 에서 16x1x2048 feature map 단계에서, 42 > 16으로 가는게 이해가 안간다. > tf.nn.conv2d 함수와 매치해 볼때, 더 이해가 안감
- 이걸 이해했다치고, 이게 왜 region별 가중치를 계산한것인지에 대해 더 이해가 안간다.
- 논문에서는
- "the first step a convolution layer with l kernels of size 42 × 1 aggregates the pooled data to a matrix of dimension l × C."
- 크기가 42x1가진 l개 kernel의 convolution layer가 pooled 데이터를 가지고, lxC 차원 matric로 합친다. (해석이 잘되었다면..)의 의미 인것같은데..
- pooled 데이터는 이 convolution에서의 입력데이터 >즉, 이미 앞부분에 설명했던 Max/Avg pooling
- paper : l=16
- 크기가 42x1가진 l개 kernel의 convolution layer가 pooled 데이터를 가지고, lxC 차원 matric로 합친다. (해석이 잘되었다면..)의 의미 인것같은데..
- 이해가 가는데로 업데이트하겠음~!!
- "the first step a convolution layer with l kernels of size 42 × 1 aggregates the pooled data to a matrix of dimension l × C."
- 아무리 생각해도 transpose 밖에 없을것같다. feature map의 channel을 42로 transpose하고 Conv 연산(1x1)으로 16으로 줄인후, 다시 feature map의 channel 2048로(원상복귀>transpose)하는 방법이...
- 그러니까, 42와 16을 channel로 생각하면 된다.
- 참고로, REMAP 연구도 idea는 매우 비슷하다.
- 푸념같지만, 설명방식도 비슷하다.. 이전까지는 이해가 잘가다가, 애매하게 region별 weight하는방법에 대한 중요부분에서 이해가 안간다.(나의 능력부족 ㅠ)
학습셋
- google landmark
- This modification leads to a total of 1196934 images from 12602 classes.
- 299x299 resize
- First all images are resized to 320 pixels on the smaller side and then they are randomly cropped to form a square with 299 pixels.
- DIR 의 학습셋도 사용?
- Since the training on a cleaned landmarks data set appeared to be crucial for optimal retrieval results in (DIR we perform an additional training on a subset of the used collection with identical hyper-parameters after convergence.
- The resulting feature vectors from the first training procedure are further denoted as
DARAC-GL and the vectors produced after the second training as DARAC-CL.- DARAC-GL : GL > google landmark
- DARAC-CL : CL > DIR clean neuralcode's data
- validation set에 대한 구성언급이 없음