본문 바로가기

Computer Vision

Single Shot Text Detector with Regional Attention

Single Shot Text Detector with Regional Attention


한줄요약
multi scale feature와 attention module을 활용해서 Text region과 같이 ambiguous하고 varying한 object를 잘 찾아보자


ICCV 2017 spotlight세션에서 발표했다.
내용은 그닥 복잡하지 않다.
multi-scale을 다루기 위해, 기본적으로 inception module을 사용했고 거기에 더해 여러 개의 inception module을 aggregation했다.
그리고 Text region과 같이 localization을 정확히 잡기가 힘든 object를 잘 찾기 위해 attention module을 사용했다.

전체적은 framework는 아래와 같다.

기본 구조는 SSD와 같다. anchor를 사용했고, mutli-scale feature에서 각각 prediction을 한다.
추가된 것은, inception module과 inception module을 aggregation한 HIM이라는 모듈 그리고 Attention module이다. attention module을 학습을 위해 추가적인 loss를 정의했다.(softmax)

attention을 쓰면 얻을 수 있는 장점은 아래 결과에서 확인할 수 있다.


위쪽이 attention을 안쓴거고, 아래가 쓴거다. text와 같이 localization이 애매모호할 수 있는 object에 대해 localization이 잘 되는 것을 확인할 수 있다.

바로 결과를 좀 보면,


ICDAR 2013에 대해 실험을 하면서, 제안한 2가지 모듈 각각에 대해 성능을 측정했다. 제안한 요소 모두 성능에 이득이 있었고(미세하게 attention이 조금 더 좋다), 혼합해서 사용했을 때 가장 좋은 성능이 나왔다.


이건 다른 method들과 비교한거. Recall에 대해서는 SOTA를 찍었다. Precision도 잘 나옴.


이건 COCO-text에 대한 실험. COCO text는 본적이 없는데, 엄청 어렵나보다.

결론은, Attention과 multi scale을 다루는 모듈을 추가했다는거고 성능도 잘 나왔다.
읽다보니, attention이라는게 매력적이었고 fpn과 조금 다르게 multi-scale을 다루는 듯해서 직접 구현해보면 좋을 것 같다고 생각되서 구현 중이다.
fpn과 조금 비교해보면, fpn은 가장 bottom layer에 top layer의 정보를 잘 전달하는 것이 주 목적이고 여기서는 각각 scale level에서의 정보를 잘 구한 다음 이걸 다 합쳐서 활용한다. 그리고 aggregation을 여러 번해서 fpn처럼 각각의 scale level에서 prediction을 여러번 수행한다.
그리고 attention module은 첫 번째 AIF module에서 나온 feature map에서 transpose conv를 먹여서 만든다. loss는 softmax loss로 되어있는데, binary clssification이라 그냥 sigmoid를 먹이고 bce를 써도 될 듯하다. 일단은 나온대로 구현 중.
그리고 anchor box를 정말 엄청 dense하게 쌓았다. 논문에 언급된대로 matching을 잘 시켜주기 그랬다는데 나는 matching을 더 잘 시켜주니깐 성능이 안 나오던데..?
그리고 여기서는 prediction을 위한 head를 각각 다 만든 것 같은데, 나는 굳이 그렇게해야되나 싶어서 retinanet처럼 그냥 head는 다 shared하는 형태로 구현하는 중이다. 그리고 loss는 focal loss를 쓸 예정.


구현 : https://github.com/HotaekHan/SSTDNet