05_CV(Computer Vision)/OCR

검출기 _ CRAFT

jiniby 2025. 3. 24. 13:15
728x90

🔹 01. CRAFT를 배우기 전 (배경지식)

📌 일반적인 OCR Pipeline

이미지 입력 → 전처리 → Text Detection → Text Recognition → 결과물 출력

CRAFT는 이 중에서 Text Detection(텍스트 검출) 단계에 사용되는 대표적인 모델=


🔹 02. CRAFT 소개

📌 CRAFT (Character Region Awareness For Text Detection)

문자(Character) 단위로 텍스트 영역을 검출하는 모델
기존 Word-level 방식의 한계를 극복 (곡선, 복잡한 모양도 정확히 검출 가능)

모델 구조: VGG16-BN 기반 FCN/U-net 구조
주요 출력: Region score map(문자 위치), Affinity score map(문자 간 연결 관계)

 


🔹 03. CRAFT의 주요 개념 및 특징

글자단위로 검출한 다음에 해당글자를 단어형식으로 모아줌 

 

📌 Word-level vs Character-level Text Detection

구분 Word-level (기존방식) Character-level (Bottom up 방식)
학습 난이도 낮음 (단순한 직사각형 형태) 높음 (세부적인 문자별 형태)
Annotation 비용 낮음 높음
곡선/복잡한 글자 검출 어려움 뛰어남
적용 환경 스캔된 문서 등 정형화된 데이터 간판, 실제 장면 등 복잡한 환경

📌 CRAFT 모델 출력의 핵심 개념

Region score map: 개별 문자의 위치를 Heatmap 형태로 표현

 

Affinity score map: 개별 문자들이 서로 인접했는지 판단, 문자를 그룹화하는 Heatmap


🔹 04. CRAFT 모델 학습 방법

 

📌 학습 과정

입력 이미지에서 각 문자 영역을 Gaussian(가우시안) 값으로 표현한

Region/Affinity GT 생성

Region score map과 Affinity score map 각각에 대한 Loss 계산으로 모델 학습

 

📌 Character-level annotation 문제

실제 데이터는 대부분 Word-level annotation만 존재 (비용 문제)

Synthetic(합성) 이미지 데이터를 활용해 모델을 먼저 학습 (Character-level Annotation 가능)


 

📌 Weakly-supervised learning 방법

- 먼저 합성 데이터를 이용해 모델 사전 학습

- 사전학습한 모델로 실제 이미지에서 Pseudo GT(가짜 정답 데이터) 생성

- 이 Pseudo GT로 다시 실제 데이터 학습

 

📌 Pseudo GT 생성 세부 과정

실제 이미지의 Word-level annotation을 기반으로 Word 단위로 이미지를 잘라냄
사전학습된 모델로 잘라낸 이미지에서 Region score map 생성


Watershed 알고리즘으로 세부 문자 영역을 나누어 Character-level annotation 생성

 

📌 Confidence Score

잘못 생성된 Pseudo GT로 인한 오류를 방지하기 위해, **Confidence score(신뢰도)**를 적용
신뢰도에 따라 학습 시 Loss의 반영 정도를 다르게 설정 (신뢰도 높으면 더 많이 반영)

 


🔹 05. CRAFT 모델의 추론 (Inference)

📌 추론 과정 (전체 순서)

이미지 입력 → CRAFT 모델 → Region score map과 Affinity score map 생성 → Threshold를 적용하여 Binary map 생성 → Connected Component Labeling (CCL) 적용 → Text 영역을 최종 검출

📌 모델 구조

Encoder: VGG16-BN 사용 (이미지를 작은 Feature map으로 압축)
Decoder: UNet 형태로 다시 큰 해상도로 복원
Head: 최종적으로 Region 및 Affinity Score Map 출력

📌 QuadBox vs Polygon 방식

QuadBox 방식: 글자를 둘러싼 직사각형 형태의 박스를 출력 (일반적인 글자)
Polygon 방식: 곡선형, 복잡한 형태의 글자를 더 정확히 표현하기 위해 사용

📌 Curved Text를 위한 Polygon 추론 과정

QuadBox를 Warp Transform으로 변형 → **수평 방향으로 Scan하여 각 문자별 중심점(중앙선)**을 찾음 → 중앙선을 따라 Polygon 형태의 글자 박스 생성 → Reverse Transform으로 원래 이미지에 맞춤


🔹 06. CRAFT의 장단점

장점

휘어진 텍스트, 긴 텍스트, 손글씨 등 복잡한 텍스트 영역 검출 성능 우수

 

단점

-  Multi-language issue : 다국어 처리의 어려움 (특히 아랍어, 방글라어 등 분리 어려운 문자)
- Text Scale Variance Issue

- Edge-side Failure Issue  : 복잡한 환경에서 글자 크기 변화나 텍스트의 양 끝 부분 검출 오류 발생 가능

- Vertical Writing Failure Issue  :  세로쓰기(Vertical Writing)의 경우 정확도가 떨어짐

 

학습 및 추론 단계의 복잡성 (비용과 시간이 더 필요)

- 실제 데이터 학습 전 합성 데이터 사전 학습 필요

- 복잡한 후처리 과정 존재 (Connected Component Labeling, Polygon 추론 등)


🧠 한눈에 보는 CRAFT 정리

항목 내용
모델 구조 VGG16-BN 기반 FCN / UNet 구조
검출 방식 Character-level Text Detection
주요 Output Region score, Affinity score
Annotation 비용 높음 (세밀한 작업 필요)
학습 방법 Synthetic Image 사전 학습 → Real Image Weakly-supervised
검출 가능 형태 곡선, 복잡한 글자 형태 뛰어남
주의할 점 복잡성 증가, 다국어 및 세로쓰기 문제

 


 

728x90

'05_CV(Computer Vision) > OCR' 카테고리의 다른 글

인식기  (0) 2025.03.24
성능 높이기  (0) 2025.03.24
검출기  (0) 2025.03.24
OCR 데이터  (0) 2025.03.24
OCR 개론  (0) 2025.03.24