[ICCV-2019] Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network

안녕하세요. 열 두 번째 X-Review입니다. 금주 리뷰할 논문은 ICCV 2019에 게재된 <Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network>입니다. 바로 시작하도록 하겠습니다.

1. Introduction

최근 Scene text detection에서 가장 챌린지한 task라고 하면? Arbitrary한 text를 검출하는 것입니다. 여기서 Arbitrary text는 현실세계에서 text가 가질수 있는 임의의 모양의 text를 의미합니다. 예로 곡선으로 된 text를 들 수 있겠네요. 그래서 이런 arbitrary한 text를 더 잘 검출하고자 하는 방향으로 연구가 진행되고 있었는데, 이를 다루는 많은 방법론들은 모델이 무겁거나 복잡한 후처리 과정으로 인해서 inference 속도가 느려 실제 산업환경과 같은 곳에 적용하기 어렵다는 한계를 가지고 있었습니다. 반면에 좀 더 효율성이 좋은(inference속도가 빠른) 이전 text detector들은 대부분 사각형 모양의 text를 검출하기 위해 설계되었기 때문에 곡선으로 되어 있는 text를 검출할 때 이슈가 있었습니다. 따라서 효율적이고 정확하게 Arbitrary 모양의 text detector를 설계하는 일은 해결해야 하는 과제로 남아있었습니다.

이러한 문제를 해결하기 위해 본 논문에서는 속도와 성능 측면의 밸런스를 잘 잡은 arbitrary-shaped text detector, 이른바 Pixel Aggregation Network(이하 PAN)을 제안합니다.

PAN은 [Figure 2]에 나와있는 것과 같이 단순한 파이프라인을 따라 arbitrary-shaped text를 검출합니다. 보시면 먼저, segmantation 네트워크를 통해 text가 존재하는 영역을 나타내는 text region, 다른 text region과의 구분을 확실히 하기 위한 kernel, 이 kernel간의 일정한 거리를 두도록 하기 위한 similar vector를 예측하고, 예측한 kernel로부터 완전한 text instance를 최종적으로 검출하는 두 단계로 이루어집니다. 본 논문의 저자가 결국 해결하고자 하는 것중에 빠른 inference 속도도 있었죠. 그렇기에 저자는 이 두 단계에 소요되는 time cost를 줄이기 위해 가장 먼저 segmentation network에 ligntweight backbone을 사용하였습니다. PAN의 default 백본으로 ResNet18을 사용하였는데, 이 가벼운 백본은 많은 feature를 추출해내기 어렵고, 작은 receptive field를 가지며 표현력이 약합다는 단점을 가지고 있습니다.

이 단점을 해결하기 위해 저자는 적은 computation cost를 가지는 segmentation head를 제안하였습니다. 이 segmentation head는 Feature Pyramid Enhancement Module(FPEM)과 Feature Fusion Module(FFM) 이 두 모듈로 구성되어 있습니다.

먼저, FPEM은 위에 그림과 같이 separable convolution으로 구성된 U자 모양의 모듈입니다. 그렇기에 최소한의 cost로 low level과 high level의 정보를 융합함으로써 다양한 scale의 feature를 향상시킬 수 있습니다. 또한 FPEM은 cascadable한데, lightweight한 backbone 모델의 depth를 보충해주기 위해 뒤에 FPEM을 더 추가해 사용할 수 있습니다. 최종적인 segmentation을 진행하기 전에 low level과 high level의 semantic한 정보를 모두 가져가기 위해 FFM(Feature Fusion Module)을 이용하여 FPEM(Feature Pyramid Enhancement Module)의 여러 depth에서 생성한 feature들을 합쳐주었습니다.

추가로 text instnace를 정확하게 검출하기 위해 learnable한 후처리 방식인 Pixel Aggregation(PA)을 제안하였는데, 이는 vector간의 유사도를 예측하여 pixel level로 text pixel에 해당하는 올바른 kernel을 찾는 과정이라고 보시면 됩니다.

본 논문 저자는 곡선으로 된 text를 검출하기 위해 설계된 데이터셋인 CTW1500, Total Text 벤치마크 데이터셋에 대한 실험을 수행하였습니다. 위 [Figure 1]은 CTW1500에서 실험한 결과인데, 가로축은 FPS이고, 세로축은 F-measure을 의미합니다. 보시면 PAN-640의 F-score는 83.7%로 CTD+TLOC보다 10.7% 높은 성능을 보였으며, PAN-320의 FPS는 EAST 보다 4배 빠른 84.2로, PAN이 text detection task에서 좋은 성능과 빠른 속도를 가지는 결과를 보였습니다.

요약하자면, 본 논문의 contribution은 다음과 같습니다.

  1. Feature Pyramid Enhancement Moduel과 Feature Fusion Module로 구성된 lightweight segmentation neck을 제안하였음
  2. 학습가능한 후처리방식인 Pixel Aggregation (PA)를 제안하였음
  3. 제안된 방법론은 두개의 curved text 벤치마크에 대해 SOTA며, inference 속도도 58FPS로 지금까지의 curved text를 detect하는 방법론들 중에 본 논문의 방법론이 real time으로 동작하는 첫번째 방법론임.

2. Proposed Method

2.1. Overall Architecture

PAN은 arbitrary한 모양의 text instance를 검출하기 위해 위 그림과 같은 segmentation 기반의 pipeline을 따릅니다. 높은 효율성을 위해서는 segmentatino network의 백본은 가벼와야겠죠. 하지만, 가벼운 백본에서 추출되는 feature들은 종종 작은 receptive field를 가지거나, 표현력이 부족합니다. 이러한 이유로 본 논문의 저자는 더 정교한 feature를 가져갈 수 있고 compuatation 측면에서도 효율적인 segmentation head를 제안하였습니다. 이 segmentation head에는 Feature Pyramid Enhancement Module(FPEM)과 Feature Fusion Module(FFM) 두 모듈이 포함되어 있습니다.

[Figure 3]와 아래 [Figure 4]에서도 볼 수 있듯이, FPEM은 cascadable하며, computation cost가 적기 때문에 backbone 뒤에 추가하여 다양한 scale의 feature를 더 깊고 표현력을 풍푸하게 할 수 있습니다. 그 후에 FFM(Feature Fusion Module)을 사용하여 FPEM에 의해 생성된 서로 다른 depth를 가지는 feature들을 fusion하여 segmentation을 하기 위한 최종 feature로 만듭니다.

PAN은 [Figure 3]의 (g)부분에서 text region을 예측하여 text의 완전한 모양을 나타내며, (h) 부분에서 서로 다른 text를 구별하기 위해 kernel을 사용하고, (i) 부분에서 각각의 text pixel에 대한 similarity vector를 예측함으로써 동일한 text instance(동일한 kernel)의 pixel들과 kernel의 similarity vector 사이의 거리가 작도록 동작합니다. 자세한 동작과정은 후술하도록 하겠습니다.

[Figure3]을 통해 전체적인 구조를 다시 확인해보자면, backbone으로 좀 가벼운 모델인 ResNet18을 사용하였으며, backbone 네트워크의 conv2, conv3, conv4, conv5에서 각각 생성된 4개의 feature map이 있고[Fig 3-(b)], 이 feature map들은 입력으로 들어오는 이미지에 대해 각각 4, 8, 16, 32 pixel의 stride를 가지고 생성한 feature map들입니다. 이후 각 feature map의 channel 수를 128로 줄이기 위해 1×1 convolution을 사용하였으며, 이렇게 하여 thin feature pyrimid인 F_r을 얻어냅니다. 이 feature pyrimid는 n_c개의 직렬로 연결된 FPEM들에 의해 향상됩니다. 각각의 FPEM은 향상된 feature pyramid를 생성해내고, 그럼 FPEM을 다 거치게 되면 n_c개의 enhanced feature pyraimd F^1, F^2,…, F^{n_c}가 나오게 되겠죠. 그럼 FFM module에서 이 n_c개의 feature pyramid를 fusion하여 feature map F_f를 생성합니다. 이 때 stride는 4, channel 수는 512로 설정하였습니다. 이렇게 생성된 F_f는 text region, kernel, 그리고 similarity vector들을 예측하는데 사용됩니다. 마지막으로 intro에서 언급했던 효율적이고 간단한 후처리 알고리즘(PA)을 통해 최종적인 text instance를 얻을 수 있게 되는 것입니다.

2.2. Feature Pyramid Enhancement Module (FPEM)

FPEM은 [Fig-4]에 보이는 것처럼 U 모양이며,up-scale enhancement, down-scale enhancement 두 단계로 구성됩니다. up-scale enhancement에는 앞선 lightweight backbone에서 최종적으로 생성된 feature pyramid에 적용되게 되며, Down-scale enhancement에서는 up-scale enhancement에 의해 생성된 feature pyramid가 input으로 사용됩니다.

down-scale enhancement의 output으로 나오는 feature pyramid는 FPEM의 최종 output입니다. 저자는 결합 부분인 ⊕을 구성할 때 일반적인 convolution 대신에 separable convolution을 사용하였습니다. [Figure -4]의 그림 하단에 점선 부분을 보면 자세히 나와있는데, 이 3×3 depthwise conv + 1×1 projection을 사용함으로써 적은 computation cost로 receptive field를 확장하고 network를 더 깊게 쌓을 수 있게 된 것입니다.

FPEM은 FPN(Feature Pyramid Network)와 비슷하게 low-level과 high level 정보를 융합하여 다양한 scale의 feature를 향상시킬 수 있죠. 하지만 FPN과 다른 점이라고 하면, 1) FPEM은 cascadable 모듈이다라는 점과, 2) FPEM은 computation cost가 적게 든다 라는 두 이점이 있다고 할 수 있겠습니다. 정리해보자면, FPEM은 cascade 수 n_c가 커질수록 서로 다른 scale의 feature map이 더 효과적으로 fusion되고, receptive field가 커지며, seperable conv를 사용했기 때문에 최소한의 계산만 필요하게 됩니다. FPEM의 FLOPS는 FPN의 약 1/5정도라고 하네요.

2.3. Feature Fusion Module (FFM)

Feature Fusion Module은 feature pyramids F^1, F^2, … , F^{n_c}를 fusion하기 위해 사용됩니다. low-level과 hight level의 semantic한 정보 모두 semantic segmentation에 중요하기 때문이죠 ! 이런 feature pyramid를 결합하는 가장 효과적인 방법은 더 작은 feature map을 upsample한 후 둘을 concat하는 방식이 있습니다. 하지만, 이 방법으로 결합하여 얻어낸 feature map은 channel수가 크다는 단점이 있어 최종 prediction까지 시간이 좀 더 걸리게 됩니다. 이 방식으로 나온 feature map은 4 x 128 x n_c의 channel 수를 갖게 되는데, 여기서 128은 각 feature map의 channel수로, lightweight backbone에서 생성된 feature map을 1×1 conv를 통해 128로 맞춰주었다고 앞에서 언급한 바 있습니다. 또 4같은 경우는 각 feature pyramid(F_1, F_2 ,,, )의 depth 입니다.

아무튼 그래서 저자는 [Figure-5]와 같은 fusion 방법을 제안하였습니다. 먼저, 여러 feature pyramid 내에 동일한 scale을 가지는 feature map들에 대해 element-wise addition을 한 후, addition후의 feature map을 upsampling하여 4×128채널만 가지는 최종 feature map으로 concat하는 식으로 동작합니다.

2.4. Pixel Aggregation

[fig-3]의 (g)를 보면, text region은 text instance의 완전한 형태를 유지하고는 있지만, 서로 가까이 붙어있는 text instance의 text region은 종종 겹치는 문제가 있고, 그에 반하여 (h)를 보면 kernel을 사용하면 text instance가 잘 구변될 수 있지만 완전한 형태가 아님을 볼 수 있습니다. 따라서 complete한 text instance를 재구성하기 위해서는 text region 안에 있는 pixel을 kernel과 병합하는 방법이 있겠죠. 그래서 저자는 학습가능한 알고리즘 이른바, Pixel Aggregation(PA)를 제안하여 text pixel을 그에 맞는, 올바른 kernel로 이끌도록 하였습니다

Pixel Aggregation에서는 clustering을 차용하여 kernel에서 complete한 text instance를 재구성하였는데, text instance를 하나의 cluster로 생각해보았을 때 text instance의 kernel은 cluster의 중심에 해당합니다. 여기서 text region의 pixel은 clustering할 sample이 되겠죠. 당연하게도 text pixel을 그에 해당하는 kernel에 aggregation하기 위해서는 text pixel과 동일한 text instance kernel과의 거리가 작아야 합니다.

이를 구현하기 위해 학습 할 때 aggregation loss L_{agg}를 사용하였습니다. 이 loss는 아래와 같습니다.

  • N : text instance 수
  • T_i : i번째 text instance

D(p, K_i)는 text pixel p와 text instance T_i의 kernel K_i 간의 거리로 식은 아래와 같습니다.

  • δ_agg : 쉬운 sample을 필터링하는데 사용되는, 실험적으로 0.5로 설정된 상수
  • F(p) : pixel p의 similarity vector
  • G(·) : kernel K_i의 similarity vector

여기서 G(·), i번째 kernel의 similarity vector는 P_{q∈K_i} F(q)/|K_i|로 계산됩니다. 즉, K_i의 pixel들에 대한 F(q) 값을 K_i의 크기로 나눈 값입니다.

저자는 aggregation Loss만 사용한 것이 아니라 아래 식의 discrimination Loss인 L_{dis}도 설계하여 사용하였습니다.

  • N : text instance 수
  • D(K_i, K_j) : 두 커널간의 거리

이 loss는 서로 다른 text instance의 kernel 간에는 충분한 거리를 유지해야 한다는 아이디어에서 설계된 loss입니다. 그렇기에 학습 중에 모델이 서로 다른 text instance의 kernel을 구분하고 겹치지 않게 유지하도록 하는데 사용되겠죠.

  • δ_dis : 실험적으로 3으로 설정된 상수로, 다른 text instance kernel간의 거리를 유지하기 위해 사용

정리해보면, 학습 할 때 Pixel Aggregation은 text pixel과 kernel 간의 거리를 최적화하여 text instance를 재구성하고, 커널 간의 거리를 유지한다고 보면 되겠습니다. training 후에 test할 때에는 예측된 similirity vector를 사용하여 text region내의 pixel을 해당 kernel로 매칭합니다. 세부적으로 후처리 과정은 다음과 같습니다. 1) kernel의 segmentation 결과에서 연결되어 있는 구성요소를 찾은 후에, 그 연결되어 있는 덩어리들을 하나의 single kernel로 봅니다. 2) 그 다음 각 커널 K_i에 대해서 미리 예측해둔 text region에서 K_i와의 similarity vector간의 유클리드 거리가 d보다 작을 때까지 이웃하는 text pixel p를 병합합니다. 이는 주변 text pixel이 kernel에 속할 수 있는 조건을 정의한 것이겠죠. 즉, 이웃 text pixel과 kernel 간의 유사성을 고려하여 pixel을 병합하는 것입니다. 3) 남아있는 이웃 text pixel이 없을 때까지 1, 2번 과정을 반복합니다.

2.5. Loss Function

  • L_{tex} : text region의 loss로, 모델이 예측한 text region과 실제 text region의 gt간의 비교
  • L_{ker} : kernel의 loss로, 모델이 예측한 kernel과 실제 kernel의 gt간의 비교
  • α, β : L_{tex}, L_{ker}, L_{dis} 의 balance를 조절하는 weight로 각각 0.5와 0.25로 설정

아래는 L_{tex}, L_{ker}의 수식으로써, text와 non-text의 극단적인 불균형을 고려하여 설계되었습니다.

  • P_{tex} : 모델의 text region segmentation 결과의 i번째 pixel
  • G_{tex} : GT text region의 i번째 pixel

text region의 gt는 binary 이미지로 text가 존재하는 pixel은 1로 text가 존재하지 않는 pixel은 0으로 둔 것입니다.

  • P_{ker} : 모델의 kernel segmentation 결과의 i번째 pixel
  • G_{ker} : GT kernel의 i번째 pixel

kernel의 GT는 polygon 형태의 원본 gt를 축소시켜 만든 것입니다. 또, 저자는 Online Hard Example Mining을 사용하여 L_{tex}를 계산할 때 쉬운 non-text pixel은 무시하였으며, L_{ker}, L_{agg}, L_{dis}를 계산할 때에는 gt에 있는 text pixel만 고려하도록 하였습니다. 

4. Experiment

대부분의 다른 text detection 모델과 동일하게 합성 데이터셋인 SynthText로 사전학습을 시켰으며, fine-tuning 및 test할 때 사용한 데이터셋은 CTW1500, Total-Text, ICDAR 2015, MSRA-TD500입니다.

4.1. Ablation Study

실험 결과에 대한 일반성을 부여하기 위해 ablation study는 사각형 모양의 text만 존재하는 dataset인 ICDAR2015와 곡선으로 된 text만 존재하는 CTW1500 데이터셋에서 수행되었습니다.

The influence of the number of cascaded FPEMs

먼저 FPEM의 cascade 횟수인 n_c를 바꿔가며 성능에 미치는 영향을 알아보았습니다. n_c가 0인 경우에는 FPEM을 사용하지 않고, 이전 lightweight backbone에서 추출한 feature pyramid feature를 upsampling하여 concat하게 됩니다.

실험 결과, n_c가 증가함에 따라 F-measure도 증가하는 경향을 보였으며, n_c가 2 이상일 때에는 성능이 수렴하였다고 판단하였다고 합니다. 더 많은 FPEM을 사용할수록 FPS가 2~5정도 감소하였기 때문에 저자는 성능과 속도 사이의 balance를 유지하기 위해 이후의 실험에서 n_c를 2로 설정하였습니다.

The effectiveness of FPEM

저자는 FPEM의 효과를 검증하기 위해 2가지의 실험을 하였습니다. 먼저, FPEM을 사용하지 않은 모델과 FPEM을 사용한 모델을 비교하였는데, 결과적으로 [table 1]의 #FPEM이 0일때와 1일때의 F-measure를 보면, FPEM을 사용한 모델이 F-measure가 약 1.5% 높았다고 합니다.

두번째 실험은 FPEM을 사용한 모델과 자주 사용되는 타 segmentation 모델을 비교하였는데, [Table2]를 보면 그 결과로 ‘resnet18 + 2 FPEM + FFM’은 더 가벼운 백본을 사용했음에도 ‘resnet50 + PSPNet’과 거의 동일한 성능을 달성하고 속도는 더 빠른 것을 확인할 수 있습니다.

The effectiveness of FFM & PA

FFM의 효과를 확인하기 위해, FFM을 제거하고 마지막 feature pyramid F^{n_c}의 feature map을 concat하는 식으로 동작하도록 하였습니다.

[table 3]의 #1과 #2부분을 보고 비교해보면 되는데, FFM을 제거하였을 때 F-measure이 0.6~ 0.8% 정도 감소한 것을 볼 수 있습니다.

또, PA의 효과를 확인한 실험인 [table3]의 #1과 #4를 비교해보면, PA를 사용하지 않았을 때는 F-measure가 1%정도 하락하였네요.

4.2. Comparisons with State-of-the-Art Methods

Curve text detection

curve된 text에 대한 detection 성능을 측정하기 위해 다양한 곡선 text instance를 포함하고 있는 데이터셋인 CTW1500, Total-Text 데이터셋을 사용하였습니다.

[table4]가 CTW1500에 대한 결과이고, [table5]가 Total-Text에 대한 실험 결과입니다.

보시면 CTW1500에서 윗부분 표를 보면 pretraining을 하지 않았음에도 PAN-320은 84.2 FPS, F-measure 77.1%의 성능을 내었습니다. 이 속도는 real-time에 근접하는 것으로 볼 수 있겠습니다. 또한 SynthText으로 pre-train한 후 fine-tuning을 수행하게 되면 79.9%의 성능으로 향상됨을 보이네요. ToTal-Text 데이터셋에서도 유사한 결과를 확인할 수 있습니다.

Oriented text detection

이제 oriented text에 대한 detection 결과를 확인해봅시다. 실험은 ICDAR2015, MSRA-TD500 데이터셋에서 진행하였습니다.

확실히 위의 curved text detection 실험 결과보다 다른 방법론들의 성능이 높은 것을 확인할 수 있죠. 단순히 사각형 박스만으로도 detection이 가능한 수준의 데이터셋이기 때문입니다. 결과를 보면 PAN은 pre training없이 F-measure 80.4%를 달성하였고, 여기서의 FPS는 26.1입니다. EAST와 비교하자면 PAN은 F-measure에서 2.1% 더 높은 성능을 보이지만 FPS는 2배 가까이 되네요. 좀 의아한 점은 curved text detection을 할 때의 FPS가 oriented text detection을 할 때보다 두 배 이상 된다는 점입니다. 오히려 곡선 없이 회전만 되어있는 text만 존재하는 더 쉬운 데이터셋에서 FPS가 빠른 줄 알았는데, 이런 결과가 나오는 이유가 궁금하네요 . .

4.3. Result Visualization

마지막으로 정성적 결과입니다. [Figure 6 -(b)]는 모델이 예측한 text region인데, 보시면 글자마다 크기가 다른 것도 캐치할 정도로 text instance의 완전한 shape 정보를 가져가는 것을 확인할 수 있습니다. (c)는 모델이 예측한 kernel인데, 확실이 text region을 예측한 것보다 서로 다른 text instance를 구분할 수 있게 된 것 같습니다. 마지막으로 (d)를 보자면 이는 similarity vector를 시각화한건데, 같은 kernel에 속하는 pixel들이 같은 색을 띄고 있음을, 잘 cluster되고 있음을 볼 수 있습니다.

Author: 정 윤서

4 thoughts on “[ICCV-2019] Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network

  1. 안녕하세요.
    질문이 몇가지 있는데요.

    1. Text region과 Kernel을 구분을 두는 이유가 무엇인가요. Text region을 그냥 instance segmentation처럼 text1, text2에 대한 region으로 예측하면 안되나요.

    2. 애초에 kernel이라는 개념이 무엇인가요. text의 정확한 위치를 의미하는 것은 kernel인가요 아니면 text region인가요.(아마 후자인 것 같은데..)

    3. Pixel Aggregation을 수행하는 부분도 좀 모호한 것 같아요. text instance를 하나의 cluster로 본다고 하였는데 여기서 text instance가 정확히 어떤 꼴로 표현이 가능한가요. 어떻게 표현이 되길래 text instance의 kernel이 cluster의 중심이 된다는 것인가요.

    4. 그리고 text region의 pixel들이 clustering할 샘플들이라고 하였는데 애초에 이 의미도 좀 모호하네요. 우리가 아는 k-means clustering 같은 개념인가요. 그럼 이 샘플들은 어떤 값으로 표현이 되는 것인가요. RGB 3채널, 0~255 값을 가지는 픽셀 값을 의미하나요. 무언가 vector 혹은 영상의 coordinate 같은 개념은 아닌 것 같은데 그러면 어떻게 clustering의 관점에서 접근할 수 있는지 흐름이 잘 연결되지 않네요.

    감사합니다.

    1. 안녕하세요 ! 댓글 감사합니다.

      1. Text region과 kernel을 구분하는 이유는, [Figure 3 -(g)]를 보면 두 text instance가 겹쳐져 있기 때문에 각 text instance를 명확하게 구분할 수 없는 경우를 고려하여 kernel 개념을 도입한 것입니다.
      2. text의 정확한 위치를 의미하는 것은 text region이고, kernel 개념을 도입한 이유는 1번에서도 언급했듯이,, 가까이 있는 text instance들의 text region이 겹쳐있는 경우가 있을 수 있고, 이런 경우에는 한 단어로 인식하는 경우가 생길 수 있기 때문에 각 text instancer를 명확하게 구분하기 위해 text region을 조금 축소시킨 kernel을 사용하였습니다
      3. text instance는 text region 꼴로 표현가능합니다. 이 text region을 shirinking하여 생성한 것이 text kernel이고, 그렇기에 text instance를 하나의 cluster로 생각한다면, kernel이 cluster의 중심에 해당한다고 볼 수 있겠습니다.
      4. 우리가 아는 k-means clustering같은 개념이라고 봐도 되겠습니다. sample들이 어떤 값으로 표현이 되냐고 물으셨는데, 이 sample들의 값을 가지고 clustering을 하는 것이 아닌 해당 sample(pixel)과 kernel간의 거리를 가지고 clustering한다고 보면 될 것 같습니다.

  2. 안녕하세요. 좋은 리뷰 감사합니다.
    pixel aggregation에서 kernel간의 거리를 유지하기 위한 상수까지 설정하여, kernel간에는 충분한 거리를 유지해야 한다고 하셨는데, 이 상수를 3으로 설정하였지만 그보다 실제 kernel이 더 가까이 있을 경우도 있지 않나요 ?
    또, 세부적인 후처리 과정에서 segmentation 결과에서 연결되어 있는 구성요소를 찾는 것이 첫번째 과정이라고 하셨는데, 구체적으로 연결되어 있는 구성요소를 어떻게 찾는다는건지 궁금합니다.

    1. 안녕하세요 ! 댓글 감사합니다.

      kernel은 text region을 shirinking하여 생성한 것으로, 원래 text가 붙어있는 경우에도 각각의 text instance를 축소한 영역인 kernel간에는 일정한 거리가 존재할 것으로 보여집니다.

      또, 연결되어 있는 구성 요소는 cv2.connectedComponents를 사용한 것으로 보여집니다. 구체적으로는 kernel을 입력으로 넣고, connectivity를 4로 설정하여 상하좌우를 보면서 연결되어 있는 구성요소를 찾은 후, label number와 label map을 반환받는다고 보면 될 것 같습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다