[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.12.19
📕 프로젝트 작업 내역
- OCR 모델 Fine Tuning
📗 수행 결과
1. OCR 모델 Fine Tuning
1) 모델 정보
- 이름: team-lucid/trocr-small-korean
- 특징
- VisionEncoderDecoderModel “이미지 → 텍스트(한국어 특화)”
- 입력 이미지 사이즈: 384×384 (고정)
2) 사용한 데이터 셋
- 출처: AI Hub의 수학 과목 자동 풀이 데이터 (초등 3~6학년)
- 구성
- 데이터 수: 15,224개 (훈련:검증 = 8:2)
- 입력 데이터(X): 이미지와 이미지 내 텍스트 영역 좌표 (bboxes)
- 텍스트 라벨(Y): 해당 영역에서 추출된 텍스트
3) 학습 방식
(i) 텍스트 영역 좌표(bboxes)를 기준으로 원본 이미지를 리사이징(384×384) 하여 텍스트 예측
- 최종적으로 모든 텍스트 영역 좌표에서 나온 텍스트를 합쳐 하나의 문장으로 예측
(ii) 텍스트 영역을 크롭하여 별도의 이미지를 생성 후 텍스트 예측
- 각 텍스트 영역을 잘라내어 리사이징(384×384)하고, 별도의 이미지로 처리하여 텍스트를 예측
- 최종적으로 여러 크롭된 이미지에서 나온 텍스트를 합쳐 하나의 문장으로 예측
4) 평가 지표
(1) 문자 정확도(Character Accuracy)
- predicted_text와 ground_truth 간의 일치한 문자 개수 비율
- 예측 텍스트와 정답 텍스트의 각 문자가 일치하면 1, 그렇지 않으면 0으로 간주하여 일치한 문자의 개수를 계산
- 두 문자열의 공통된 길이까지만 비교
def calculate_character_accuracy(predicted_text, ground_truth):
correct_characters = sum(p == g for p, g in zip(predicted_text, ground_truth))
total_characters = len(ground_truth)
return (correct_characters / total_characters) * 100 if total_characters > 0 else 0
(2) 단어 오류율(Word Error Rate, WER)
- 단어 기반 편집 거리(삽입, 삭제, 교체)를 계산하여 오차율 반환
def calculate_wer(predicted_text, ground_truth):
return jiwer.wer(ground_truth, predicted_text)
5) 모델 학습 프로세스
① 데이터를 훈련(train)과 검증(validation)으로 나눔 (8:2)
② OCRDataset으로 데이터 로드 후 DataLoader 생성
③ 사전 학습된 모델(team-lucid/trocr-small-korean)과 프로세서(TrOCRProcessor) 사용
④ 훈련 루프
10 Epochs / 1 Batch / Learning Rate 5e-5
(i) 텍스트 영역 전체를 사용한 학습
(ii) 크롭된 이미지 각각에 대해 텍스트를 예측한 뒤 결합
⑤ 손실(loss) 계산 및 모델 가중치 업데이트
⑥ 검증 루프
- Character Accuracy 및 WER 계산
- 검증 손실 저장
⑦ 모델 및 결과 저장
6) 출력 파일
- 훈련 결과: training_results.json
- 검증 결과: validation_results.json
- 모델 저장 경로: OCR_MODEL_SAVE_PATH
📙 내일 일정
- OCR 모델 학습
'TIL _Today I Learned > 2024.12' 카테고리의 다른 글
[DAY 109] 최종 프로젝트_ Labeling Pipeline 자동화 (2) | 2024.12.23 |
---|---|
[DAY 108] 최종 프로젝트_ 모델 추가 학습 (0) | 2024.12.20 |
[DAY 106] 최종 프로젝트_ Labeling Pipeline (2) | 2024.12.18 |
[DAY 105] 최종 프로젝트_ 모델 학습 파이프라인 (1) | 2024.12.17 |
[DAY 104] 최종 프로젝트_ 인터넷 게이트웨이, 라우팅 테이블, ACL (0) | 2024.12.16 |