板载 PaddleOCR 与 Amazon SageMaker Projects for MLOps,以对身份证件 PlatoBlockchain 数据智能执行光学字符识别。 垂直搜索。 哎。

板载 PaddleOCR 与 Amazon SageMaker Projects for MLOps 对身份证件执行光学字符识别

光学字符识别 (OCR) 是将印刷或手写文本转换为机器编码文本的任务。 OCR已广泛应用于文档电子化、身份认证等多种场景。 由于 OCR 可以大大减少人工登记关键信息的工作量,并作为理解大量文档的入门步骤,因此准确的 OCR 系统在数字化转型时代发挥着至关重要的作用。

开源社区和研究人员正专注于如何提高 OCR 的准确性、易用性、与预训练模型的集成、扩展和灵活性。 在许多提议的框架中,PaddleOCR 最近获得了越来越多的关注。 所提出的框架专注于在平衡计算效率的同时获得高精度。 此外,中文和英文的预训练模型使其在基于中文的市场上很受欢迎。 见 PaddleOCR GitHub 存储库 以获得更多细节。

在 AWS,我们还提出了无需机器学习 (ML) 专业知识即可使用的集成 AI 服务。 要从文档中提取文本和结构化数据(例如表格和表单),您可以使用 亚马逊Textract. 它使用 ML 技术来读取和处理任何类型的文档,无需人工操作即可准确提取文本、笔迹、表格和其他数据。

对于希望灵活使用开源框架来开发自己的 OCR 模型的数据科学家,我们还提供完全托管的 ML 服务 亚马逊SageMaker. SageMaker 使您能够在整个 ML 生命周期中实施 MLOps 最佳实践,并提供模板和工具集来减少将 ML 项目投入生产的无差别繁重工作。

在这篇文章中,我们专注于在 SageMaker 上的 PaddleOCR 框架内开发定制模型。 我们将通过 ML 开发生命周期来说明 SageMaker 如何帮助您构建和训练模型,并最终将模型部署为 Web 服务。 尽管我们使用 PaddleOCR 来说明此解决方案,但一般指南适用于在 SageMaker 上使用的任意框架。 为了配合这篇文章,我们还在 GitHub存储库.

PaddleOCR 框架

作为一个被广泛采用的 OCR 框架,PaddleOCR 包含富文本检测、文本识别和端到端算法。 它选择可微二值化(DB)和卷积递归神经网络(CRNN)作为基本的检测和识别模型,经过一系列优化策略,提出了一系列用于工业应用的模型,命名为PP-OCR。

PP-OCR模型针对一般场景,形成不同语言的模型库。 它由三个部分组成:文本检测、框检测和整顿、文本识别,如下图所示在PaddleOCR上 官方GitHub存储库. 也可以参考研究论文 PP-OCR:实用的超轻量级 OCR 系统 获取更多信息.

更具体地说,PaddleOCR 由三个连续的任务组成:

  • 文字检测 – 文本检测的目的是定位图像中的文本区域。 这样的任务可以基于一个简单的分割网络。
  • 盒子检测和整改 – 每个文本框都需要转化为水平矩形框,以便后续文本识别。 为此,PaddleOCR 建议训练一个文本方向分类器(图像分类任务)来确定文本方向。
  • 文字识别 – 检测到文本框后,文本识别器模型对每个文本框进行推理,并根据文本框位置输出结果。 PaddleOCR 采用了广泛使用的方法 CRNN。

PaddleOCR 提供可媲美商业效果的高质量预训练模型。 您可以将预训练模型用于检测模型、方向分类器或识别模型,也可以微调和重新训练每个单独的模型以服务于您的用例。 为了提高检测繁体中文和英文的效率和有效性,我们说明了如何微调文本识别模型。 我们选择的预训练模型是 ch_ppocr_mobile_v2.0_rec_train,轻量级模型,支持中文、英文、数字识别。 以下是使用香港身份证的示例推理结果。

板载 PaddleOCR 与 Amazon SageMaker Projects for MLOps,以对身份证件 PlatoBlockchain 数据智能执行光学字符识别。 垂直搜索。 哎。

在以下部分中,我们将介绍如何使用 SageMaker 微调预训练模型。

SageMaker 的 MLOps 最佳实践

SageMaker 是一项完全托管的 ML 服务。 借助 SageMaker,数据科学家和开发人员可以快速轻松地构建和训练 ML 模型,然后直接将它们部署到生产就绪的托管环境中。

许多数据科学家使用 SageMaker 来加速 ML 生命周期。 在本节中,我们将说明 SageMaker 如何帮助您从实验到生产化 ML。 按照 ML 项目的标准步骤,从实验阶段(代码开发和实验)到操作阶段(模型构建工作流和部署管道的自动化),SageMaker 可以在以下步骤中提高效率:

  1. 探索数据并构建 ML 代码 亚马逊SageMaker Studio 笔记本电脑。
  2. 使用 SageMaker 训练作业训练和调整模型。
  3. 使用 SageMaker 端点部署模型以进行模型服务。
  4. 编排工作流程 Amazon SageMaker管道.

下图说明了此架构和工作流程。

板载 PaddleOCR 与 Amazon SageMaker Projects for MLOps,以对身份证件 PlatoBlockchain 数据智能执行光学字符识别。 垂直搜索。 哎。

请务必注意,您可以以模块化方式使用 SageMaker。 例如,您可以使用本地集成开发环境 (IDE) 构建代码并在 SageMaker 上训练和部署模型,或者您可以在自己的集群计算源中开发和训练模型,并使用 SageMaker 管道进行工作流编排和部署在 SageMaker 端点上。 这意味着 SageMaker 提供了一个开放平台来适应您自己的需求。

请参阅我们的代码 GitHub存储库 和 README 以了解代码结构。

预配 SageMaker 项目

您可以使用 亚马逊 SageMaker 项目 开始你的旅程。 借助 SageMaker 项目,您可以管理 Git 存储库的版本,以便更高效地跨团队协作、确保代码一致性并实现持续集成和持续交付 (CI/CD)。 尽管 notebook 有助于模型构建和实验,但当您有一个由数据科学家和 ML 工程师组成的团队处理 ML 问题时,您需要一种更具可扩展性的方式来保持代码一致性并拥有更严格的版本控制。

SageMaker 项目创建一个预配置的 MLOps 模板,其中包括用于简化 PaddleOCR 集成的基本组件:

  • 用于构建用于处理、训练和推理的自定义容器映像的代码存储库,与 CI/CD 工具集成。 这允许我们配置我们的自定义 Docker 镜像并推送到 Amazon Elastic Container注册 (Amazon ECR) 即可使用。
  • 一个 SageMaker 管道,它定义了数据准备、训练、模型评估和模型注册的步骤。 这让我们在 ML 项目投入生产时为 MLOps 做好准备。
  • 其他有用的资源,例如用于代码版本控制的 Git 存储库、包含模型版本的模型组、模型构建管道的代码更改触发器以及模型部署管道的基于事件的触发器。

您可以使用 SageMaker 种子代码创建标准 SageMaker 项目,或您的组织为团队成员创建的特定模板。 在这篇文章中,我们使用标准 用于图像构建、模型构建和模型部署的 MLOps 模板. 有关在 Studio 中创建项目的更多信息,请参阅 使用 Amazon SageMaker Studio 创建 MLOps 项目.

使用 SageMaker Studio Notebooks 探索数据并构建 ML 代码

SageMaker Studio 笔记本是协作笔记本,您可以快速启动,因为您无需事先设置计算实例和文件存储。 许多数据科学家更喜欢使用这个基于 Web 的 IDE 来开发 ML 代码、快速调试库 API,以及使用少量数据样本运行以验证训练脚本。

在 Studio 笔记本中,您可以为常见框架(例如 TensorFlow、PyTorch、Pandas 和 Scikit-Learn)使用预构建的环境。 您可以将依赖项安装到预构建的内核中,或者构建您自己的持久内核映像。 有关详细信息,请参阅 在 Amazon SageMaker Studio 中安装外部库和内核. Studio 笔记本还提供 Python 环境来触发 SageMaker 训练作业、部署或其他 AWS 服务。 在以下部分中,我们将说明如何将 Studio 笔记本用作触发训练和部署作业的环境。

SageMaker 提供强大的 IDE; 它是一个开放的 ML 平台,数据科学家可以在其中灵活地使用他们喜欢的开发环境。 对于喜欢 PyCharm 或 Visual Studio Code 等本地 IDE 的数据科学家,您可以使用本地 Python 环境来开发您的 ML 代码,并使用 SageMaker 在托管的可扩展环境中进行培训。 有关详细信息,请参阅 使用 PyCharm IDE 在 Amazon SageMaker 上运行您的 TensorFlow 作业. 拥有实体模型后,您可以通过 SageMaker 采用 MLOps 最佳实践。

目前,SageMaker 还提供 SageMaker笔记本实例 作为我们用于 Jupyter Notebook 环境的传统解决方案。 您可以灵活地运行 Docker 构建命令和 使用 SageMaker 本地模式在您的笔记本实例上进行训练. 我们还在代码库中提供了 PaddleOCR 的示例代码: ./train_and_deploy/notebook.ipynb.

使用 SageMaker 项目模板构建自定义映像

SageMaker 广泛使用 Docker 容器来执行构建和运行时任务。 您可以使用 SageMaker 轻松运行自己的容器。 查看更多技术细节 使用你自己的训练算法.

然而,作为一名数据科学家,构建容器可能并不简单。 SageMaker 项目为您提供了一种通过映像构建 CI/CD 管道管理自定义依赖项的简单方法。 当您使用 SageMaker 项目时,您可以使用自定义容器 Dockerfile 更新训练图像。 有关分步说明,请参阅 使用映像构建 CI/CD 管道创建 Amazon SageMaker 项目. 使用模板中提供的结构,您可以修改此存储库中提供的代码以构建 PaddleOCR 训练容器。

在这篇文章中,我们展示了构建用于处理、训练和推理的自定义图像的简单性。 GitHub 存储库包含三个文件夹:

这些项目遵循类似的结构。 以训练容器镜像为例; 这 image-build-train/ 存储库包含以下文件:

  • codebuild-buildspec.yml 文件,用于配置 AWS 代码构建 以便可以构建映像并将其推送到 Amazon ECR。
  • 用于 Docker 构建的 Dockerfile,其中包含所有依赖项和训练代码。
  • 训练脚本的 train.py 入口点,具有可配置为参数的所有超参数(例如学习率和批量大小)。 这些参数是在您开始训练作业时指定的。
  • 依赖关系。

当您将代码推送到相应的存储库时,它会触发 AWS 代码管道 为您构建一个培训容器。 自定义容器映像存储在 Amazon ECR 存储库中,如上图所示。 采用类似的过程来生成推理图像。

使用 SageMaker 训练 SDK 训练模型

在您的算法代码经过验证并打包到容器中后,您可以使用 SageMaker 训练作业来预置托管环境来训练模型。 此环境是短暂的,这意味着您可以拥有单独的、安全的计算资源(例如 GPU)或多 GPU 分布式环境来运行您的代码。 训练完成后,SageMaker 将生成的模型工件保存到 亚马逊简单存储服务 (Amazon S3) 您指定的位置。 所有日志数据和元数据都保留在 AWS管理控制台、工作室和 亚马逊CloudWatch.

训练作业包括几个重要的信息:

  • 您存储训练数据的 S3 存储桶的 URL
  • 您要存储作业输出的 S3 存储桶的 URL
  • 您希望 SageMaker 用于模型训练的托管计算资源
  • 存储训练容器的 Amazon ECR 路径

有关培训作业的更多信息,请参阅 火车模型. 训练作业的示例代码可在 实验火车notebook.ipynb.

SageMaker 将超参数制作成 CreateTrainingJob 请求在 Docker 容器中可用 /opt/ml/input/config/hyperparameters.json 文件中。

我们使用自定义训练容器作为入口点,并为基础设施指定一个 GPU 环境。 所有相关的超参数都被详细描述为参数,这使我们能够跟踪每个单独的作业配置,并将它们与实验跟踪进行比较。

由于数据科学过程非常以研究为导向,因此多个实验并行运行是很常见的。 这需要一种方法来跟踪所有不同的实验、不同的算法以及可能尝试的不同数据集和超参数。 Amazon SageMaker Experiments 可让您组织、跟踪、比较和评估您的 ML 实验。 我们也证明了这一点 实验火车notebook.ipynb. 有关详细信息,请参阅 使用 Amazon SageMaker 实验管理机器学习.

部署模型以进行模型服务

至于部署,尤其是实时模型服务,许多数据科学家可能会发现没有运维团队的帮助很难做到。 SageMaker 使用 SageMaker Python 开发工具包. 您可以将模型部署到 SageMaker 托管服务并获取用于实时推理的端点。

在许多组织中,数据科学家可能不负责维护端点基础设施。 但是,将您的模型作为端点进行测试并保证正确的预测行为确实是数据科学家的责任。 因此,SageMaker 通过为此添加一组工具和 SDK 来简化部署任务。

对于帖子中的用例,我们希望具有实时、交互、低延迟的能力。 实时推断 非常适合这种推理工作负载。 但是,有许多选项可以适应每个特定要求。 有关详细信息,请参阅 部署模型进行推理.

要部署自定义映像,数据科学家可以使用 SageMaker SDK,如图所示

实验-部署-notebook.ipynb.

create_model 请求,容器定义包括 ModelDataUrl 参数,用于标识存储模型工件的 Amazon S3 位置。 SageMaker 使用此信息来确定从何处复制模型工件。 它将工件复制到 /opt/ml/model 供推理代码使用的目录。 这 servepredictor.py 是服务的入口点,带有在您开始部署时加载的模型工件。 有关详细信息,请参阅 将您自己的推理代码与托管服务一起使用.

使用 SageMaker Pipelines 编排您的工作流程

最后一步是将您的代码包装为端到端 ML 工作流,并应用 MLOps 最佳实践。 在 SageMaker 中,模型构建工作负载是有向无环图 (DAG),由 SageMaker Pipelines 管理。 Pipelines 是一种完全托管的服务,支持编排和数据沿袭跟踪。 此外,由于 Pipelines 与 SageMaker Python SDK 集成,您可以使用我们之前在训练步骤中使用的高级 Python 接口以编程方式创建您的管道。

我们提供了一个流水线代码示例来说明实现 pipe.py.

该管道包括用于数据集生成的预处理步骤、训练步骤、条件步骤和模型注册步骤。 在每个管道运行结束时,数据科学家可能希望注册他们的模型以进行版本控制并部署性能最佳的模型。 SageMaker 模型注册表提供了一个中心位置来管理模型版本、目录模型和触发具有特定模型批准状态的自动模型部署。 有关详细信息,请参阅 使用模型注册表注册和部署模型。

在 ML 系统中,自动化的工作流程编排有助于防止模型性能下降,即模型漂移。 早期主动检测数据偏差使您能够采取纠正措施,例如重新训练模型。 在检测到偏差后,您可以触发 SageMaker 管道重新训练模型的新版本。 管道的触发也可以通过以下方式确定 Amazon SageMaker模型监控器,它持续监控生产中模型的质量。 凭借记录信息的数据捕获功能,Model Monitor 支持数据和模型质量监控、偏差和特征归因漂移监控。 有关更多详细信息,请参阅 监控模型的数据和模型质量、偏差和可解释性.

结论

在这篇文章中,我们说明了如何在 SageMaker 上运行框架 PaddleOCR 以执行 OCR 任务。 为了帮助数据科学家轻松使用 SageMaker,我们完成了 ML 开发生命周期,从构建算法到训练,再到将模型托管为实时推理的 Web 服务。 您可以使用我们提供的模板代码将任意框架迁移到 SageMaker 平台。 为您的 ML 项目试一试,让我们知道您的成功故事。


作者简介

板载 PaddleOCR 与 Amazon SageMaker Projects for MLOps,以对身份证件 PlatoBlockchain 数据智能执行光学字符识别。 垂直搜索。 哎。刘俊义(Jackie) 是 AWS 的高级应用科学家。 她在机器学习领域拥有多年的工作经验。 她在供应链预测算法、广告推荐系统、OCR和NLP领域的机器学习模型构建解决方案的开发和实施方面拥有丰富的实践经验。

板载 PaddleOCR 与 Amazon SageMaker Projects for MLOps,以对身份证件 PlatoBlockchain 数据智能执行光学字符识别。 垂直搜索。 哎。崔艳伟, 博士,是 AWS 的机器学习专家解决方案架构师。 他在 IRISA(计算机科学与随机系统研究所)开始了机器学习研究,并在计算机视觉、自然语言处理和在线用户行为预测方面拥有数年构建人工智能驱动的工业应用的经验。 在 AWS,他分享领域专业知识并帮助客户释放业务潜力,并通过大规模机器学习推动可操作的成果。 工作之余,他喜欢阅读和旅行。

板载 PaddleOCR 与 Amazon SageMaker Projects for MLOps,以对身份证件 PlatoBlockchain 数据智能执行光学字符识别。 垂直搜索。 哎。陈一安 是 Amazon Lab 126 的一名软件开发人员。她在开发跨不同学科的机器学习驱动产品方面拥有 10 多年的经验,包括个性化、自然语言处理和计算机视觉。 工作之余,她喜欢长跑和骑自行车。

时间戳记:

更多来自 AWS机器学习