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