Skip to main content

PaddleOCR과 W&B로 여러분의 OCR 모델을 트레이닝 시키고 디버그하세요

Paddle OCR의 W&B 통합을 사용하여 모델 체크포인트와 함께 트레이닝 및 평가 메트릭을 추적하는 방법에 대한 간단한 튜토리얼
Created on June 3|Last edited on June 3
이는 여기에서 볼 수 있는 영어 기사를 번역한 것이다.




목차




Run set
11


PaddleOCR의 소개

PaddleOCR은 사용자들이 더 나은 모델을 트레이닝하고 PaddlePaddle을 사용해 실질적으로 적용하는 것을 돕는 다국어, 선도적 그리고 실용적인 OCR 도구를 만드는 것을 목표로 합���다. 라이브러리의 W&B 통합을 통해 여러분이 적절한 메타데이터가 있는 체크포인트와 함께 트레이닝 도중 트레이닝 및 검증 세트의 메트릭을 추적할 수 있습니다.
또한PaddleOCR을 사용하여 작업 코드가 포함된 OCR 파이프라인의 텍스트 감지 모듈을 사용하는 놀라운 콜라브도 있습니다!

이 튜토리얼에서는ICDAR2015 데이터 세트에MobileNetV3 기초를 트레이닝 시킬 예정이며, 데이터 세트는 1,000개의 이미지가 포함된 트레이닝 세트와 웨어러블 카메라로 획득한 500개의 이미지가 포함된 테스트 세트를 내포하고 있습니다.

Run set
11


설정

W&B SDK의 설치

먼저 W&B 계정을 설치하고 로그인하겠습니다.
pip install wandb
wandb login

PaddleOCR 설치하기

다음으로PaddlePaddle을 설치하겠습니다.
pip install paddlepaddle-gpu pyclipper attrdict -qqq
이 작업은 패키지 설치를 위한 PaddleOCR GitHub저장소 복제 다음으로 사전 구현된 모델을 트레이닝하기 위한 트레이닝 스크립트를 불러오는 작업 다음으로 실행됩니다.
git clone https://github.com/PaddlePaddle/PaddleOCR
cd PaddleOCR
pip install -e .
좋아요! 이제 W&B와PaddleOCR을 모두 사용할 수 있으니 데이터 세트를 설정하고 텍스트 탐지 모델을 트레이닝 시키는 단계로 넘어갈 수 있습니다.

ICDAR2015 데이터 세트를 다운로드하는 방법은 무엇입니까?

여기에서 제공되는 ICDAR2015 데이터 세트를 사용할 것입니다. 데이터는 사용하기 쉽도록 W&B 아티팩트로 기록되었습니다.
import wandb
api = wandb.Api()
artifact = api.artifact("manan-goel/icdar2015/icdar2015-dataset:latest")
artifact.download(root="./train_data/icdar2015")

미리 트레이닝 된MobileNetV3 모델 다운로드

이 튜토리얼의 경우 사전에 트레이닝이 된 MobileNetV3 모델을 텍스트 탐지 모델의 기반으로 사용할 것입니다. 이미지 모델의PaddlePaddle 라이브러리에서 모델 가중치를 가져올 것입니다.
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV3_large_x0_5_pretrained.pdparams

모델 트레이닝

트레이닝 파이프라인에 대한 W&B를 사용하여 실험 추적을 자동으로 시작하기 위해선 후에 트레이닝 스크립트의 입력으로 사용할 수 있는 스니펫이 구성 yaml 파일에 추가될 수 있습니다.
wandb:
project: CoolOCR
entity: my_team
name: MyOCRModel
wandb.init에 대한 입력으로 사용되는 모든 인수는 yaml 파일의wandb 헤더 하에 추가될 수 있습니다. 이 튜토리얼의 실험에 사용되는 구성 파일은 여기에서 찾아보실 수 있습니다. 파일 하단에 위의 라인을 추가하면 W&B logger가 활성화됩니다.
이 yaml 파일을 사용하여 모델을 트레이닝 시키려면PaddleOCR 저장소에서 다음 명령을 사용하세요.
python tools/train.py -c configs/det/det_mv3_db.yml \
-o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained

트레이닝 및 검증 메트릭의 시각화

마지막으로, 10개의 훈련 단계마다 평가 단계를 거쳐 5 에폭 동안 모델을 트레이닝 시킵니다.

트레이닝 메트릭




시스템 메트릭

또한 W&B는 모든 실행마자 GPU와 CPU 활용 시간을 자동으로 추적합니다!



유효성 검사 메트릭




트레이닝 받은 모델의 다운로드와 사용

체크포인트는 모든 에폭 말기와 모든 모델 저장 단계에서 해당 메타데이터 및 태그와 함께 W&B 아티팩트로 기록됩니다. 다음 스니펫을 사용하여 추가적인 트레이닝 및 평가 목적으로 다운로드할 수 있습니다.
import wandb
artifact = wandb.Api().artifact('manan-goel/text_detection/model-2138qk4h:best', type='model')
artifact_dir = artifact.download()
훈련된 모델을 텍스트 탐지에 사용하려면 Paddle OCR 보고서의 추론 스크립트를 사용할 수 있습니다.
!python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/" Global.pretrained_model="./artifacts/model-2138qk4h:v9/model_ckpt"
그러면 ./doc/imgs_en/ 폴더의 모든 이미지에 주석이 달리고 출력 폴더에 저장될 것입니다.

추가사항: 주석이 달린 이미지를 W&B 대시보드에 기록하기

트레이닝이 끝날 때 모델 성능을 시각화 하는 멋진 방법은 입력 및 출력 이미지를 기록하고 이를 W&B 대시보드에 기록하는 것입니다. 먼저, 새로운 W&B 실행을 초기화하고 이미지 경로를 불러오는 것 부터 시작해볼까요:
import wandb
import glob

wandb.init(project="text_detection")
wandb.use_artifact('manan-goel/text_detection/model-2138qk4h:best')
table = wandb.Table(columns=["Input Image", "Annotated Image"])

inp_imgs = sorted(glob.glob("./doc/imgs_en/*.jpg"), key=lambda x: x.split("/")[-1])
out_imgs = sorted(glob.glob("./output/det_db/det_results/*.jpg"), key=lambda x: x.split("/")[-1])
그 후, 이미지를 wandb 테이블에 추가하고 W&B에 기록합니다.
for inp in inp_imgs:
for out in out_imgs:
if out.split("/")[-1] != inp.split("/")[-1]:
continue
table.add_data(
wandb.Image(inp),
wandb.Image(out)
)
wandb.log({
"Predictions": table
})
wandb.finish()




결론

이번 튜토리얼에서는PaddleOCR과 함께 W&B를 사용하여 OCR 모델 개발의 모든 니즈를 지원하는 방법에 대해 간략하게 설명해봤습니다. 실행 코드가 있는 이 보고서의 버전에 대한colab을 한 번 확인해주세요.

관련된 작업


Iterate on AI agents and models faster. Try Weights & Biases today.