教程: 使用 PaddleOCR 实现集装箱箱号检测识别
完整的教程在 https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu 可以直接「克隆」使用。
项目介绍
集装箱号是指装运出口货物集装箱的箱号,填写托运单时必填此项。标准箱号构成基本概念:采用 ISO6346(1995)标准
标准集装箱箱号由 11 位编码组成,如:CBHU 123456 7,包括三个部分:
- 第一部分由 4 位英文字母组成。前三位代码主要说明箱主、经营人,第四位代码说明集装箱的类型。列如 CBHU 开头的标准集装箱是表明箱主和经营人为中远集运
- 第二部分由 6 位数字组成。是箱体注册码,用于一个集装箱箱体持有的唯一标识
- 第三部分为校验码由前 4 位字母和 6 位数字经过校验规则运算得到,用于识别在校验时是否发生错误。即第 11 位编号
本教程基于PaddleOCR进行集装箱箱号检测识别任务,使用少量数据分别训练检测、识别模型,最后将他们串联在一起实现集装箱箱号检测识别的任务
环境准备
1、在 openbayes 启动一个「模型训练」的容器,环境选择 paddlepaddle-2.3,资源选择 vGPU 或其他 GPU 容器
2、在 Jupyter 中打开一个 Terminal 窗口,然后执行如下命令:
cd PaddleOCR-release-2.5 #进入 PaddleOCR-release-2.5 文件夹
pip install -r requirements.txt #安装 PaddleOCR 所需依赖
python setup.py install #安装 PaddleOCR
数据集介绍
本教程所使用的集装箱箱号数据集,该数据包含 3003 张分辨率为 1920×1080
的集装箱图像
1、PaddleOCR 检测模型训练标注规则如下,中间用"\t"分隔:
" 图像文件名 json.dumps 编码的图像标注信息"
ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]
其中 json.dumps 编码前的图像标注信息是包含多个字典的 list,字典中的 points 表示文本框的四个点的坐标 (x, y),从左上角的点开始顺时针排列。 transcription 表示当前文本框的文字,当其内容为“###”时,表示该文本框无效,在训练时会跳过。
2、PaddleOCR 识别模型训练标注规则如下,中间用"\t"分隔:
" 图像文件名 图像标注信息 "
train_data/rec/train/word_001.jpg 简单可依赖
train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单