[MEMO] 학습 데이터셋 정제 작업 메모

2025. 12. 31. 20:48·3. 자습 & 메모(실전, 실습, 프로젝트)/3-2 메모(실전, 프로젝트)

학습 데이터셋 정제 작업 메모

작업 일자

2026년 1월 1일

작업 목적

PP-OCRv5 모델 학습을 위한 코드 문법 데이터셋 품질 검증 및 정제


1. 데이터셋 생성

1.1 코드 문법 데이터셋 생성

  • 스크립트: prepare_code_syntax_dataset.py
  • 생성 위치: code_syntax_dataset/
  • 데이터 규모:
    • 학습 데이터: 25,000개 이미지 (train_images/train_*.jpg)
    • 검증 데이터: 5,000개 이미지 (val_images/val_*.jpg)
  • 이미지 사양:
    • 크기: 48px (높이) x 640px (너비)
    • 형식: JPG
    • 코드 샘플: 150개 이상 (함수, 클래스, 조건문, 반복문, 예외 처리, 한글 주석 등)

1.2 데이터셋 배치

  • 대상 폴더: core/paddle_train/data/rec/codescan_paddle/
  • 이미지 복사:
    • 학습: code_syntax_dataset/train_images/*.jpg → codescan_paddle/train_images/train/
    • 검증: code_syntax_dataset/val_images/*.jpg → codescan_paddle/train_images/val/
  • 라벨 파일:
    • code_syntax_dataset/train_list.txt → codescan_paddle/train_label.txt
    • code_syntax_dataset/val_list.txt → codescan_paddle/val_label.txt

2. 데이터셋 검증

2.1 검증 스크립트

  • 파일: core/paddle_train/09_validate_dataset.py
  • 검증 항목:
    1. 공백문자 및 특수문자 확인
    2. 이미지 텍스트 잘림 확인
    3. 경로 일치 확인
    4. 학습 형식 호환성 확인

2.2 검증 결과

Train 데이터셋 (25,000개)

  • ✅ 공백문자: 문제 없음
  • ⚠️ 텍스트 잘림: 197개 (경고 수준, 학습에는 문제 없음)
  • ⚠️ 작은 이미지: 9개 (최소 크기 이상)
  • ✅ 경로 일치: 모든 이미지 파일 경로 일치
  • ✅ 학습 형식: 모든 라인 유효
  • ⚠️ 긴 텍스트: 3,716개 (20자 이상, 학습에는 문제 없음)

Val 데이터셋 (5,000개)

  • ✅ 공백문자: 문제 없음
  • ⚠️ 텍스트 잘림: 99개 (경고 수준, 학습에는 문제 없음)
  • ✅ 경로 일치: 모든 이미지 파일 경로 일치 (수정 완료)
  • ✅ 학습 형식: 모든 라인 유효
  • ⚠️ 긴 텍스트: 759개 (20자 이상, 학습에는 문제 없음)

3. 발견된 문제 및 수정

3.1 텍스트 길이 초과 문제

  • 문제: 일부 텍스트가 25자 초과 (Train: 1,516개, Val: 311개)
  • 원인: 코드 문법 텍스트가 길어서 PaddleOCR 최대 길이(25자) 초과
  • 해결: 10_fix_dataset_issues.py 스크립트로 자동 잘림 처리
  • 결과: 모든 텍스트가 25자 이하로 정제됨

3.2 경로 불일치 문제

  • 문제:
    • Train 라벨: train_images/train/train_*.jpg 형식이지만 실제 파일은 word_*.png 형식도 혼재
    • Val 라벨: train_images/train/val_*.jpg로 잘못된 경로
  • 해결:
    1. code_syntax_dataset의 실제 이미지 파일을 codescan_paddle로 복사
    2. 11_fix_image_paths.py로 경로 매칭 시도
    3. Val 라벨 경로를 train_images/train/val_ → train_images/val/val_로 수정
  • 결과: 모든 이미지 경로 일치 확인

3.3 공백문자 정리

  • 처리 내용:
    • 앞뒤 공백 제거
    • 연속 공백을 단일 공백으로 변환
    • 탭 문자 제거
    • 줄바꿈 문자 제거
    • 제어 문자 제거
  • 결과: 공백문자 문제 없음

4. 사용된 스크립트

4.1 데이터셋 생성

  • prepare_code_syntax_dataset.py: 코드 문법 이미지 생성

4.2 데이터셋 검증

  • 09_validate_dataset.py: 데이터셋 품질 검증

4.3 데이터셋 수정

  • 10_fix_dataset_issues.py: 텍스트 길이 제한 및 공백 정리
  • 11_fix_image_paths.py: 이미지 경로 수정

5. 최종 데이터셋 상태

5.1 Train 데이터셋

  • 파일 수: 25,000개
  • 라벨 파일: core/paddle_train/data/rec/codescan_paddle/train_label.txt
  • 이미지 경로: core/paddle_train/data/rec/codescan_paddle/train_images/train/
  • 상태: ✅ 학습 준비 완료

5.2 Val 데이터셋

  • 파일 수: 5,000개
  • 라벨 파일: core/paddle_train/data/rec/codescan_paddle/val_label.txt
  • 이미지 경로: core/paddle_train/data/rec/codescan_paddle/train_images/val/
  • 상태: ✅ 학습 준비 완료

6. 학습 설정

6.1 학습 경로 분리

  • PP-OCRv5 학습 경로: output/rec_ke_v5_model (기존 rec_ke_model과 분리)
  • Inference 경로: output/rec_ke_v5_inference
  • 설정 파일: core/paddle_train/configs/rec_ke_finetune.yml

6.2 데이터셋 경로 설정

Train:
  dataset:
    data_dir: C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/rec/codescan_paddle
    label_file_list:
      - C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/rec/codescan_paddle/train_label.txt  # 25,000개 코드 문법 데이터셋

Eval:
  dataset:
    data_dir: C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/rec/codescan_paddle
    label_file_list:
      - C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/rec/codescan_paddle/val_label.txt  # 5,000개 검증 데이터셋

7. 검증 체크리스트

✅ 완료된 항목

  • 공백문자 확인 및 정리
  • 이미지 텍스트 잘림 확인
  • 경로 일치 확인 및 수정
  • 학습 형식 호환성 확인
  • 텍스트 길이 제한 (25자) 준수
  • OCR 인덱스 문제 확인
  • Train 데이터셋 25,000개 준비 완료
  • Val 데이터셋 5,000개 준비 완료
  • PP-OCRv5 학습 경로 분리 완료

⚠️ 경고 사항 (학습에는 문제 없음)

  • 일부 텍스트가 이미지 경계에 닿아 잘릴 수 있음 (PaddleOCR이 자동 처리)
  • 일부 텍스트가 20자 이상 (최대 25자 이하로 제한됨)

8. 다음 단계

  1. 학습 시작: 06_train_rec.bat 실행
  2. 학습 모니터링: output/rec_ke_v5_model/ 폴더에서 체크포인트 확인
  3. 모델 추출: 학습 완료 후 07_export_rec_inference.bat 실행

9. 참고 사항

  • 데이터셋 원본: code_syntax_dataset/ (백업용으로 유지)
  • 정제된 데이터셋: core/paddle_train/data/rec/codescan_paddle/
  • 검증 스크립트: 필요 시 09_validate_dataset.py 재실행 가능
  • 백업 파일: 라벨 파일 수정 시 .bak 파일로 자동 백업됨

10. 작업 요약

항목 내용
생성된 데이터셋 Train: 25,000개, Val: 5,000개
검증 결과 모든 검증 통과 ✅
수정된 문제 텍스트 길이 초과, 경로 불일치, 공백문자
최종 상태 학습 준비 완료 ✅
학습 경로 output/rec_ke_v5_model (PP-OCRv5 전용)

작성일: 2026년 1월 1일
작성자: AI Assistant
버전: 1.0

'3. 자습 & 메모(실전, 실습, 프로젝트) > 3-2 메모(실전, 프로젝트)' 카테고리의 다른 글

[PaddleOCR] 학습용 REC 데이터셋 생성 스크립트  (0) 2026.01.02
[MEMO] PaddleOCR 코드 문법 인식 모델 학습  (0) 2026.01.01
[파인 튜닝] PaddleOCR 성능 분석 및 체크포인트  (0) 2025.12.30
[파인 튜닝] PaddleOCR Detection 모델 학습 가이드  (1) 2025.12.30
PaddleOCR Detection 파인튜닝 실전 기록 (중간 점검)  (0) 2025.12.28
'3. 자습 & 메모(실전, 실습, 프로젝트)/3-2 메모(실전, 프로젝트)' 카테고리의 다른 글
  • [PaddleOCR] 학습용 REC 데이터셋 생성 스크립트
  • [MEMO] PaddleOCR 코드 문법 인식 모델 학습
  • [파인 튜닝] PaddleOCR 성능 분석 및 체크포인트
  • [파인 튜닝] PaddleOCR Detection 모델 학습 가이드
고니3000원
고니3000원
공부 내용 정리, 자기발전 블로그 입니다. 기존 네이버 블로그에서 티스토리로 이전했습니다. https://blog.naver.com/pak1010pak
  • 고니3000원
    곤이의 공부 블로그
    고니3000원
  • 전체
    오늘
    어제
    • 분류 전체보기 (176)
      • 1. AI 논문 + 모델 분석 (19)
        • AI 논문 분석 (13)
        • AI 모델 분석 (6)
      • 2. 자료구조와 알고리즘 (16)
        • 2-1 자료구조와 알고리즘 (13)
        • 2-2 강화학습 알고리즘 (3)
      • 3. 자습 & 메모(실전, 실습, 프로젝트) (25)
        • 3-1 문제 해석 (4)
        • 3-2 메모(실전, 프로젝트) (14)
        • 3-3 배포 실전 공부 (7)
      • 4. [팀] 프로젝트 및 공모전 (14)
        • 4-1 팀 프로젝트(메모, 공부) (1)
        • 4-2 Meat-A-Eye (6)
        • 4-3 RL-Tycoon-Agent (3)
        • 4-4 구조물 안정성 물리 추론 AI 경진대회(D.. (4)
      • 5. [개인] 프로젝트 및 공모전 (0)
        • 4-1 귀멸의칼날디펜스(자바스크립트 활용) (5)
        • 4-2 바탕화면 AI 펫 프로그램 (4)
        • 4-3 개인 프로젝트(기타) (3)
      • 개념 정리 step1 (32)
        • Python 기초 (7)
        • DBMS (1)
        • HTML | CSS (3)
        • Git | GitHub (1)
        • JavaScript (5)
        • Node.js (5)
        • React (1)
        • 데이터 분석 (6)
        • Python Engineering (3)
      • 개념 정리 step2 (56)
        • Machine | Deep Learning (15)
        • 멀티모달(Multi-modal) (23)
        • 강화 학습 (10)
        • AI Agent (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 곤이의 블로그(Naver->Tistory)
    • Github
  • 공지사항

  • 인기 글

  • 태그

    강화 학습
    ViT
    OCR
    Python
    강화학습
    bottleneck
    html
    귀칼
    pandas
    자바스크립트
    공모전
    파인튜닝
    paddleocr
    데이터분석
    파이썬
    프로젝트
    transformer
    javascript
    Grad-CAM
    OCR학습
    github
    자료구조
    논문 리뷰
    학습
    Ai
    EfficientNet
    Attention Is All You Need
    구현
    Vision
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고니3000원
[MEMO] 학습 데이터셋 정제 작업 메모
상단으로

티스토리툴바