튜토리얼 세부 정보 | PaddleOCR을 사용하여 컨테이너 번호 감지 및 식별

한눈에 보는 콘텐츠: PaddleOCR 기반 컨테이너 번호 감지 기능으로 컨테이너 번호 기록 시간이 단축되고 항구 적재 및 하역 효율성이 향상됩니다.
키워드: PaddleOCR 텍스트 인식 온라인 튜토리얼
국제 해운 컨설팅 및 분석 기관인 알파라이너(Alphaliner)가 올해 3월 발표한 자료에 따르면 2021년 컨테이너 처리량 상위 30개 목록 중상하이항은 4,702만5천 TEU의 성적표를 기록하며 1위를 차지했습니다.
세계 100대 컨테이너 항구는 2021년에 총 6억 7,600만 TEU의 컨테이너 처리량을 달성했습니다.컨테이너 수가 너무 많아 컨테이너 번호를 식별해야 하는 부담이 커졌습니다. 컨테이너 번호를 수동으로 식별하고 기록하는 기존 방법은 비용이 많이 들고 비효율적이며 운영 조건이 뒤떨어져 있습니다.
경제와 사회의 발전에 따라 항만 운영에 인공지능을 도입하는 것이 시장 경쟁에서 기존 항만의 변혁과 업그레이드를 위한 핵심이 되었습니다.
이 문서에서는 모델 훈련을 위한 환경 준비에 대해 다룹니다.PaddleOCR을 사용하여 컨테이너 번호를 감지하고 식별하는 방법을 보여줍니다.
코드 튜토리얼을 직접 확인하세요:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu
소량의 데이터를 사용하여 상자 번호 감지 및 인식 작업 수행
컨테이너 번호는 수출 상품을 운송하는 컨테이너의 번호를 말합니다.이 항목은 운송장을 작성할 때 필요합니다. 표준 컨테이너 번호의 구조는 ISO6346(1995) 표준을 채택하였으며 11자리로 구성됩니다. 컨테이너 번호 CBHU 123456 7을 예로 들면, 이는 3개 부분으로 구성됩니다.
첫 번째 부분은 4개의 영어 글자로 구성되어 있습니다. 처음 세 글자는 컨테이너의 소유자 또는 운영자를 나타내고, 네 번째 글자는 컨테이너의 유형을 나타냅니다. CBHU는 COSCO Container가 소유 및 운영하는 표준 컨테이너를 의미합니다.
두 번째 부분은 6자리 숫자로 구성됩니다. 컨테이너를 고유하게 식별하는 컨테이너 등록 코드를 나타냅니다.
세 번째 부분은 체크코드입니다이는 이전 4글자와 6자리 숫자를 기반으로 검증 규칙을 계산하여 얻어지며, 검증 과정에서 오류가 발생했는지 여부를 파악하는 데 사용됩니다.
이 튜토리얼은 컨테이너 번호 감지 및 인식 작업을 위한 PaddleOCR을 기반으로 합니다. 소량의 데이터를 사용하여 감지 및 인식 모델을 별도로 학습시킨 후, 최종적으로 두 모델을 연결하여 컨테이너 번호 감지 및 인식 작업을 완료합니다.
환경 준비
- OpenBayes 콘솔에서 "모델 학습" 컨테이너를 시작합니다. 환경의 경우 PaddlePaddle 2.3을 선택하고 리소스의 경우 RTX 3090 또는 다른 GPU 유형을 선택하세요.
플랫폼 계정이 없으신 경우, 먼저 다음 주소를 방문하여 등록하세요. https://openbayes.com/console/signup
- Jupyter에서 터미널 창을 엽니다. 그런 다음 다음 명령을 실행하세요.
cd PaddleOCR-release-2.5 #进入 PaddleOCR-release-2.5 文件夹
pip install -r requirements.txt #安装 PaddleOCR 所需依赖
python setup.py install #安装 PaddleOCR
데이터 세트 소개
이 튜토리얼에서는 1920×1080 해상도의 컨테이너 이미지 3003개가 포함된 컨테이너 번호-OCR 데이터 세트를 사용합니다.
데이터세트 세부 정보를 보려면 다음을 방문하세요.
https://openbayes.com/console/open-tutorials/datasets/BzuGVEOJv2T/3
- PaddleOCR 감지 모델 훈련 주석 규칙은 다음과 같으며 "\t"로 구분됩니다.
" 图像文件名 json.dumps 编码的图像标注信息"
ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]
json.dumps 인코딩 전 이미지 주석 정보는 여러 개의 사전을 포함하는 목록입니다. 사전의 점은 텍스트 상자의 네 점의 좌표(x, y)를 나타내며, 왼쪽 상단 모서리의 점에서 시계 방향으로 정렬되어 있습니다.
transcription은 현재 텍스트 상자에 있는 텍스트를 나타냅니다. 내용이 "###"인 경우, 텍스트 상자가 유효하지 않으므로 학습 중에 건너뛰어집니다.
- PaddleOCR 인식 모델 훈련 주석 규칙은 다음과 같으며 "\t"로 구분됩니다.
" 图像文件名 图像标注信息 "
train_data/rec/train/word_001.jpg 简单可依赖
train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单
## 데이터 수집
3.1 탐지 모델에 필요한 데이터 준비
데이터 세트의 3,000개 이미지를 2:1의 비율로 훈련 세트와 검증 세트로 나누고 다음 코드를 실행합니다.
from tqdm import tqdm
finename = "all_label.txt"
f = open(finename)
lines = f.readlines()
t = open('det_train_label.txt','w')
v = open('det_eval_label.txt','w')
count = 0
for line in tqdm(lines):
if count < 2000:
t.writelines(line)
count += 1
else:
v.writelines(line)
f.close()
t.close()
v.close()
3.2 식별 모델에 필요한 데이터 준비
감지 부분의 주석에 따라, 그림의 텍스트 부분만 인식 데이터로 포함하도록 데이터 세트를 자르고 다음 코드를 실행합니다.
전체 코드는 다음을 참조하세요. https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu
## 실험
데이터가 비교적 작기 때문에 더 빠르고 더 나은 모델 수렴을 달성하기 위해 PaddleOCR의 PP-OCRv3 모델을 사용하여 감지 및 인식을 수행합니다.
PP-OCRv2를 기반으로, 중국 장면에 대한 PP-OCRv3의 종단간 H평균 지수는 PP-OCRv2에 비해 5%만큼 향상되었고, 영어 디지털 모델의 종단간 효과는 11%만큼 향상되었습니다.
자세한 최적화 내용은 PP-OCRv3 기술 보고서를 참조하세요.
4.1 탐지 모델
4.1.1 탐지 모델 구성
PaddleOCR은 다양한 감지 모델을 제공합니다. 길 위에서 PaddleOCR-release-2.5/configs/det
모델과 해당 구성 파일은 모델 c를 선택하면 찾을 수 있습니다.h_PP-OCRv3_det_student.yml
구성 파일 경로는 다음과 같습니다.PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml
사용하기 전에 훈련 매개변수, 데이터 세트 경로 등 필요한 설정을 해야 합니다. 몇 가지 주요 구성은 아래와 같습니다.
#关键训练参数
use_gpu: true #是否使用显卡
epoch_num: 1200 #训练 epoch 个数
save_model_dir: ./output/ch_PP-OCR_V3_det/ #模型保存路径
save_epoch_step: 200 #每训练 200epoch,保存一次模型
eval_batch_step: [0, 100] #训练每迭代 100 次,进行一次验证
pretrained_model: ./PaddleOCR-release
2.5/pretrain_models/ch_PP-OCR_V3_det/best_accuracy.pdparams #预训练模型路径
#训练集路径设置
Train:
dataset:
name: SimpleDataSet
data_dir: /input0/images #图片文件夹路径
label_file_list:
- ./det_train_label.txt #标签路径
4.1.2 모델 미세 조정
모델을 미세 조정하려면 노트북에서 다음 명령을 실행합니다. 여기서 -c는 구성된 모델 파일 경로를 전달합니다.
leOCR-release-2.5/tools/train.py \
-c PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml
기본 하이퍼파라미터를 사용하여 모델 ch_PP-OCRv3_det_student
훈련 세트에서 385개의 에포크를 학습한 후, 검증 세트에서 모델의 hmean은 96.96%에 도달했으며 그 이후로는 유의미한 증가가 없었습니다.
[2022/10/11 06:36:09] ppocr INFO: best metric, hmean: 0.969551282051282, precision: 0.9577836411609498,
recall: 0.981611681990265, fps: 20.347745459258228, best_epoch: 385
4.2 식별 모델
4.2.1 식별 모델 구성
PaddleOCR은 다양한 인식 모델을 제공합니다. 길 위에서 PaddleOCR-release-2.5/configs/rec
모델과 해당 구성 파일은 다음에서 찾을 수 있습니다.
우리가 모델을 선택하면 ch_PP-OCRv3_rec_distillation
, 구성 파일 경로는 다음과 같습니다.PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml
사용하기 전에 훈련 매개변수, 데이터 세트 경로 등 필요한 설정을 해야 합니다. 일부 주요 구성은 아래와 같습니다.
#关键训练参数
use_gpu: true #是否使用显卡
epoch_num: 1200 #训练 epoch 个数
save_model_dir: ./output/rec_ppocr_v3_distillation #模型保存路径
save_epoch_step: 200 #每训练 200epoch,保存一次模型
eval_batch_step: [0, 100] #训练每迭代 100 次,进行一次验证
pretrained_model: ./PaddleOCR-release-2.5/pretrain_models/PPOCRv3/best_accuracy.pdparams #预训练模型路径
#训练集路径设置
Train:
dataset:
name: SimpleDataSet
data_dir: ./RecTrainData/ #图片文件夹路径
label_file_list:
- ./rec_train_label.txt #标签路径
4.2.2 모델 미세 조정
모델을 미세 조정하려면 노트북에서 다음 명령을 실행합니다. 여기서 -c는 구성된 모델 파일 경로를 전달합니다.
%run PaddleOCR-release-2.5/tools/train.py \
-c PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml
기본 하이퍼파라미터를 사용하여 모델 ch_PP-OCRv3_rec_distillation
훈련 세트에서 136개의 에포크를 학습한 후, 검증 세트에서 모델의 정확도는 96.11%에 도달했으며 그 이후로는 유의미한 증가가 없었습니다.
[2022/10/11 20:04:28] ppocr INFO: best metric, acc: 0.9610600272522444, norm_edit_dis: 0.9927426548965615,
Teacher_acc: 0.9540291998159589, Teacher_norm_edit_dis: 0.9905629345025616, fps: 246.029195787707, best_epoch: 136
결과
5.1 탐지 모델 추론
테스트 이미지에서 텍스트를 감지하기 위해 미세 조정된 모델을 사용하려면 노트북에서 다음 명령을 실행하세요.
- Global.infer_img는 이미지 경로 또는 이미지 폴더 경로입니다.
- Global.pretrained_model은 미세 조정된 모델입니다.
- Global.save_res_path는 추론 결과를 저장하는 경로입니다.
%run PaddleOCR-release-2.5/tools/infer_det.py \
-c PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml \
-o Global.infer_img="/input0/images" Global.pretrained_model="./output/ch_PP-OCR_V3_det/best_accuracy" Global.save_res_path="./output/det_infer_res/predicts.txt"
5.2 인식 모델 추론
테스트 이미지에서 텍스트를 감지하기 위해 미세 조정된 모델을 사용하려면 노트북에서 다음 명령을 실행하세요.
Global.infer_img
이미지 경로 또는 이미지 폴더 경로Global.pretrained_model
미세 조정된 모델에 대해Global.save_res_path
추론 결과에 대한 경로를 저장합니다.
%run PaddleOCR-release-2.5/tools/infer_rec.py \
-c PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml \
-o Global.infer_img="./RecEvalData/" Global.pretrained_model="./output/rec_ppocr_v3_distillation/best_accuracy" Global.save_res_path="./output/rec_infer_res/predicts.txt"
5.3 감지 및 인식 모델 직렬 추론
5.3.1 모델 변환
직렬 추론을 수행하기 전에 먼저 다음 감지 명령을 각각 실행하여 학습되고 저장된 모델을 추론 모델로 변환해야 합니다. 안에:
-c
변환할 모델의 구성 파일 경로를 전달하세요.-o Global.pretrained_model
변환할 모델 파일Global.save_inference_dir
변환을 위해 얻은 추론 모델의 저장 경로
5.3.2 모델 캐스케이딩 추론
변환이 완료되면 PaddleOCR은 감지 및 인식 모델 연결 도구를 제공하며, 이를 통해 훈련된 감지 모델과 인식된 모델을 연결하여 2단계 텍스트 인식 시스템을 구축할 수 있습니다.
입력 이미지는 텍스트 감지, 감지 프레임 수정, 텍스트 인식, 점수 필터링의 4가지 주요 단계를 거쳐 텍스트 위치와 인식 결과를 출력합니다.
실행 코드는 다음과 같습니다.
image_dir
단일 이미지 또는 이미지 모음으로 가는 경로det_model_dir
추론 모델을 감지하는 경로rec_model_dir
추론 모델의 경로를 식별하려면
시각적 인식 결과는 기본적으로 ./inference_results 폴더에 저장됩니다.
%run PaddleOCR-release-2.5/tools/infer/predict_system.py \
--image_dir="OCRTest" \
--det_model_dir="./output/det_inference/" \
--rec_model_dir="./output/rec_inference/Student/"
전체 튜토리얼을 보려면 여기를 방문하세요:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu
PaddleOCR 및 OpenBayes 소개
PaddleOCR은 Baidu PaddlePaddle을 기반으로 한 OCR 도구 라이브러리로, 전체 모델이 860만 개에 불과한 초경량 중국어 OCR을 포함합니다. 또한 다중 텍스트 감지 및 텍스트 인식을 위한 학습 알고리즘, 서비스 배포, 엔드-사이드 배포를 지원합니다.
자세한 내용은 다음 웹사이트를 방문하세요.
https://github.com/PaddlePaddle/PaddleOCR
OpenBayes 이해하기
OpenBayes는 중국을 대표하는 머신 인텔리전스 연구 기관입니다.컴퓨팅 파워 컨테이너, 자동 모델링, 자동 매개변수 조정 등 AI 개발과 관련된 다양한 기본 서비스를 제공합니다.
동시에 OpenBayes는 데이터 세트, 튜토리얼, 모델 등 많은 대중적인 공공 리소스도 출시했습니다. 개발자가 빠르게 학습하고 이상적인 머신 러닝 모델을 만들 수 있도록 해줍니다.
openbayes.com을 방문하여 지금 등록하면 주당 600분의 RTX 3090과 주당 300분의 무료 CPU 컴퓨팅 시간을 즐길 수 있습니다.
참고: 주간 선물 리소스는 매주 월요일 오후에 귀하의 계정에 도착합니다.
전체 튜토리얼을 보고 실행하려면 다음 링크를 방문하세요.
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu
-- 위에--