dhkim0225 / 1day_1paper

read 1 paper everyday (only weekday)
53 stars 1 forks source link

[2일차] ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network #2

Open dhkim0225 opened 4 years ago

dhkim0225 commented 4 years ago

https://arxiv.org/abs/2002.10200

image image

neural net output 으로 bezier_curve 를 뱉자는 논문. 우선 이것부터 보기를 추천. 중학생도 이해하는 bezier curve blog

실험적으로 3차 bezier-curve면 충분하다는 것을 보임. (사실 3차 이상으로 표현할 만한 curve text 도 없을 듯 ...) 즉, 4개의 control point를 예측하면 되는 문제임.

박스마다 위 아래의 bezier-curve 를 예측하면 되기 때문에 총 8개의 control point를 예측하면 박스 하나가 딱 나옴.

image

Total text 는 위 아래 5 개씩 annotation (m=5), CTW1500 은 위 아래 7 개씩 annotation (m=7) 되어 있음 p 가 annotated 되어진 point 이고 basis function B 는 정해져 있기 때문에, least square method로 기존 GT 와 가장 유사한 control point b 4개를 구할 수 있음.

image image

image 빨간 점들이 control points. 요것들을 gt 로 두고 regression.

4 와 regression 방식이 유사함.

image 위와 같은 식으로 16channel output (8 points {x, y}) 을 활용.
즉, feature map 1 칸마다 1개의 detection 을 만들도록 하는 것.

수식을 보면 잉? 이게 뭐지 할 수 있음.
설명이 불친절하다 느꼈음 ㅎㅎ
그냥 x_min, y_min 이 4개 control point 중 가장 작은 x, y 값임.
가장 작은 x, y 값 기준으로 (top-left point) 거리를 계산하고 그걸 prediction 하는 거임. loss 는 #4 와 같은 smooth ln loss 일 듯 (확인해 봐야 함) (0, 0) 기준으로 옮겨다 놓고, regression 하겠다는 이야기임.

BezierAlign

BezierAlign 을 제시함, RoiAlign의 개선 버전. 아래 이미지를 보면 딱 느낌이 옴. image

predicted bezier curve를 그려보고 박스 윗 라인 의 point (upper boundary point) tp와 박스 아래 라인 의 point (lower boundary point) bp를 계산.

다음과 같은 식으로 sampling point op를 계산할 수 있음. image 이 과정이 그냥 위 BezierAlign 이미지를 수식화한 것.

이제, sampling point op 를 갖고, ROIAlign 하듯이 bilinear interpolation 수행하면 됨.

Recognizer

recognition은 6 conv + 1 bidir-lstm + ctc loss 를 사용했다. 97 characters (eng + digit + symbols) image

학습 시 recognition 의 입력은 GT bezier controlpoints 로 BezierAlign 한 feature 가 들어감.

Result

SynthText 기법으로 추가 데이터 150k 를 만들었는데, 이것 때문에 fair comparison 은 아닌 듯. image

공식 구현체: https://github.com/Yuliang-Liu/bezier_curve_text_spotting

DK-sr commented 4 years ago

게이 이신가요?