본문 바로가기

Computer Vision

Amulet: Aggregation Multi-level Convolutional Features for Salient Object Detection

Amulet: Aggregation Multi-level Convolutional Features for Salient Object Detection


한줄요약

Multi-scale의 정보를 학습으로 잘 합쳐서 Salient Object Detection을 잘 해보겠다. CNN에서 Multi-scale을 어떻게 다루면 좋을지는 아직 확실한 방법이 없는 상태. 여기선 모든 Scale의 feature를 혼합하여서 학습을 통해 알아서 잘 되기를 바라는게 큰 의미에서의 접근방법. 어떻게 합칠건지, 좋은 inference 결과를 얻기위해 어떻게 각 scale간의 정보를 주고받을건지도 제안함


Salient Object Detection이라는 일반적인 object detection과 달리 image에 하나의 object만 존재하고 해당 object의 boundary를 찾는 문제. Segmentation과 유사해보이나, 여기선 특정 object의 boundary만 찾는다는게 다름.


여기서 Image와 GT를 보면 어떠한 task인지 한방에 눈에 들어옴.
그리고 해당 Figure가 제안한 프레임워크인데 일단 굉장히 화살표도 많고 복잡...
각각의 Scale level을 빨간,보라,노란,초록,파란색으로 표시함.
RFC는 이러한 여러 multi-scale feature를 합치는 모듈임.
특이한게, 합친 모듈을 또 여러 scale을 가지도록 함.


conv with stride or pooling, deconv로 resolution 조절하고, 채널별로 concat하고 1x1 conv로 합침.
즉, feature의 resolution을 학습을 통해 함.

그리고 SMP라는 모듈은, 각 scale-level의 input을 받아서 prediction을 하는 모듈임. 각각의 scale에서 독립적으로 prediction을 하고 각 결과를 합치기 위해 또 conv 한번 씌워서 할 수 있는데, 여기선 그렇게 독립적으로 prediction하면 다른 scale-level간의 정보의 이동이 없다고 각 level간의 연결을 추가함. eq(2)
가장 높은 scale level에선 그냥 prediction하고 아래 level부터는 한단계 상위의 결과를 참고함. recursive weight라는 것도 있는데, 여긴 필요하면 구조를 더 자세히 들여다봐야 할 듯.

BPR은 Boundary를 조금 더 refine해주기위한 모듈로, 가장 bottom level의 결과에서 앞서 SMP에서 나온 각 level에서의 결과를 합치고 다시 conv한다. 자세한건 eq(3). 즉, 가장 boundary를 정확하게 구할 수 있을 것 같은 bottom layer에서의 결과를 기준으로 각 scale의 결과를 좀 더 보태주는 느낌.

각 level에서의 결과를 합치기 위해(FSP 모듈) 또..weigth를 만듬. 그리고 loss는 eq(4), 각각 level에서의 결과에 대한 loss는 eq(5). 그리고 최종적으로 이를 합쳐서 하나의 loss로 만들어서 학습시킴 eq(6).

이 뒤의 bidirection stream과 inference는 그냥 건너뜀....
나중에 필요하다고 생각되면 다시 보는걸로...