(HA-CNN) Harmonious Attention Network for Person Re-Identification

re-identification
attention

(Leo) #1

Essence

Contribution

  • 멀티카메라 환경에서 correlated attention 을 활용해 re-identification 문제 해결
  • 매우 가볍고 성능 좋은 네트워크
  • Preliminaries:
    • Hard/Soft Attention
def ha(x):
    x = Conv(x)
    x = Inception-A(x)
    

Idea

이 논문의 핵심은 Figure 2 에서 볼 수 있듯이 global/local 이라는 두 개의 branch 를 사용하는 것입니다:

  • global branch 는 각각 3개의 Inception-AInception-B 라는 두 블럭을 활용해 사람의 전체 사진에서 최적화된 global feature 를 학습합니다.
  • local branch 는 3개의 Inception-B 로 구성된 T 개의 스트림으로써 각 스트림마다 사진 내 T 개의 local feature 들을 학습합니다.

두 branch 는 .

Figure 3 에서 볼 수 있듯이 hard attentionsoft attention 을 활용해 harmonious attention 을 만듭니다.

  • hard attention 은 global average pooling 을 통해 나온 텐서에 fully connected layer 를 태우는 블럭입니다. 이 블럭을 통해 전체 이미지에 등장한 특징을 T 개의 스트림마다 찾아내려고 합니다.
  • soft attentionspatial attentionchannel attention 이라는 두 블럭으로 나뉩니다.
    • spatial attention
    • channel attention
class HarmoniousAttention(nn.Module):

    def __init__(self, in_channels):
        super(HarmoniousAttention, self).__init__()
        self.soft_attn = SoftAttention(in_channels)
        self.hard_attn = HardAttention(in_channels)

    def forward(self, x):
        y_soft_attn = self.soft_attn(x)
        theta = self.hard_attn(x)
        return y_soft_attn, theta