PaddleOCR 성능 분석 및 체크포인트
1. Loss 1.1의 의미
현재 성능 지표
- Loss: 1.087949 ~ 1.153657 (정상 범위)
- Precision: 91.2% (매우 높음)
- Recall: 88.3% (매우 높음)
- HMean: 89.7% (매우 높음)
Loss 해석
Loss 1.1은 문제가 없습니다
- Detection 모델의 Loss는 일반적으로 0.5~2.0 범위
- 초기 Loss (1.6~1.8)에서 현재 1.1로 개선됨
- Loss는 상대적 값이며, 절대적 성능 지표는 아님
실제 성능은 HMean으로 판단합니다
- HMean 89.7%는 매우 우수한 성능
- Precision 91.2%: 모델이 텍스트라고 예측한 것 중 91.2%가 실제 텍스트
- Recall 88.3%: 실제 텍스트 중 88.3%를 정확히 찾아냄
결론
- Loss 1.1은 정상 범위이며, 모델이 제대로 학습되고 있음
- HMean 89.7%가 실제 OCR 성능을 나타내는 지표
2. 체크포인트 재개 시 변경 가능한 항목
2.1 변경 가능한 항목 (문제없음)
데이터셋 크기 (train_label.txt 라인 수)
- 데이터를 줄이거나 늘려도 체크포인트 재개 가능
- 예: 164,998 라인 → 50,000 라인으로 줄여도 학습 재개 가능
Train.dataset.label_file_list경로만 변경하면 됨
검증 데이터셋 (val_label.txt)
- 검증 데이터셋 크기나 내용 변경 가능
Eval.dataset.label_file_list경로만 변경하면 됨
학습률 (Learning Rate)
Optimizer.lr설정 변경 가능- 단, optimizer 상태(
.pdopt)는 이전 학습률로 저장되어 있음 - 일반적으로 재개 시 초기 학습률로 재설정
Epoch 수
Global.epoch_num변경 가능- 예: 20 → 12로 줄여도 문제없음
평가/저장 주기
Global.eval_batch_step변경 가능Global.save_epoch_step변경 가능
2.2 변경 시 주의해야 할 항목
배치 크기 (batch_size_per_card)
- 변경 가능하지만, optimizer 상태와 약간의 불일치 가능
- 일반적으로 문제없지만, 메모리 제약으로 인한 변경은 안전
- 예: 16 → 8 또는 16 → 12 변경 가능
이미지 크기 (EastRandomCropData.size)
- 변경 가능하지만, 모델이 이미 학습된 이미지 크기에 적응되어 있음
- 크기를 줄이면 속도 향상 (640x640 → 512x512)
- 크기를 늘리면 메모리 사용량 증가 (OOM 주의)
데이터 증강 (transforms)
- 변경 가능하지만, 학습 패턴에 영향
- 일반적으로 문제없음
2.3 변경 불가능한 항목 (체크포인트 재개 불가)
모델 아키텍처 (Architecture)
Backbone,Neck,Head구조 변경 불가- 채널 수, 레이어 수 등 변경 시 체크포인트 로드 불가
- 예:
out_channels: 96→256변경 시 shape mismatch
알고리즘 (algorithm)
DB→EAST등 알고리즘 변경 불가- 완전히 다른 모델 구조
3. Epoch 2 완료 후 데이터 줄이고 속도 향상시키기
3.1 절차
Epoch 2 완료 대기
iter_epoch_2.*파일 생성 확인- 파일:
iter_epoch_2.pdparams,iter_epoch_2.pdopt,iter_epoch_2.states
데이터 줄이기 (선택사항)
# train_label.txt에서 일부만 추출
# 예: 처음 50,000 라인만 사용
Get-Content "C:\Pyg\Projects\semi\yuzyproject-aimodels\core\paddle_train\data\det\train_label.txt" | Select-Object -First 50000 | Set-Content "C:\Pyg\Projects\semi\yuzyproject-aimodels\core\paddle_train\data\det\train_label_reduced.txt"
- 설정 변경 (det_ke_finetune.yml)
# 이미지 크기 줄이기 (속도 향상)
EastRandomCropData:
size: [512, 512] # 640 -> 512
# Epoch 수 줄이기
Global:
epoch_num: 12 # 20 -> 12
# 배치 크기 조정 (OOM 방지)
Train:
loader:
batch_size_per_card: 20 # 16 -> 20 (메모리 여유 시)
- 체크포인트에서 재개
cd C:\Pyg\Tools\PaddleOCR
C:\Pyg\Projects\semi\yuzyproject-aimodels\venv_ocr\Scripts\python.exe tools/train.py ^
-c C:\Pyg\Projects\semi\yuzyproject-aimodels\core\paddle_train\configs\det_ke_finetune.yml ^
-o Global.checkpoints="C:/Pyg/Projects/semi/yuzyproject-aimodels/output/det_ke_model/iter_epoch_2" ^
Train.dataset.label_file_list="C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/det/train_label_reduced.txt" ^
Eval.dataset.label_file_list="C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/det/val_label.txt"
3.2 속도 향상 예상
- 이미지 크기 640→512: 약 1.5배 속도 향상
- 데이터 50% 감소: 약 2배 속도 향상
- Epoch 20→12: 학습 시간 40% 단축
- 종합: 현재 ETA 15일 → 약 4~5일로 단축 가능
3.3 성능 영향
- 데이터 감소: 성능 약간 하락 가능 (89.7% → 87~88% 예상)
- 이미지 크기 감소: 작은 텍스트 검출 성능 약간 하락 가능
- Epoch 감소: 충분히 학습되지 않을 수 있음
4. 권장 사항
옵션 1: 데이터 유지, 이미지 크기만 줄이기 (권장)
- 데이터는 유지하여 성능 보존
- 이미지 크기 640→512로 줄여 속도 향상
- Epoch 12~15로 조정
- 예상: ETA 15일 → 6
7일, 성능 89.7% → 8889%
옵션 2: 데이터와 이미지 크기 모두 줄이기
- 데이터 50% 감소 (82,499 라인)
- 이미지 크기 512x512
- Epoch 12
- 예상: ETA 15일 → 3
4일, 성능 89.7% → 8687%
옵션 3: 현재 설정 유지 (성능 최우선)
- 모든 설정 유지
- ETA 15일 지속
- 성능 89.7% 유지 또는 향상
5. 체크포인트 재개 시 주의사항
.states파일 확인iter_epoch_2.states파일이 있어야 epoch 정보 로드 가능- 없으면 epoch 0부터 다시 시작 (학습률 초기화)
optimizer 상태
.pdopt파일이 있으면 optimizer 상태(모멘텀 등) 복원- 없으면 optimizer 초기화 (학습 초기 단계처럼 동작)
best_accuracy
- 재개 시
best_accuracy.*는 이전 최고 성능 유지 - 새로운 최고 성능 시 자동 업데이트
- 재개 시
로그 연속성
train.log는 이어서 기록됨- 이전 로그는 보존됨
'3. 자습 & 메모(실전, 실습, 프로젝트) > 3-2 메모(실전, 프로젝트)' 카테고리의 다른 글
| [MEMO] PaddleOCR 코드 문법 인식 모델 학습 (0) | 2026.01.01 |
|---|---|
| [MEMO] 학습 데이터셋 정제 작업 메모 (0) | 2025.12.31 |
| [파인 튜닝] PaddleOCR Detection 모델 학습 가이드 (1) | 2025.12.30 |
| PaddleOCR Detection 파인튜닝 실전 기록 (중간 점검) (0) | 2025.12.28 |
| [Memo] PaddleOCR + AIHub 데이터셋 (0) | 2025.12.26 |