PaddleOCR integrado com projetos do Amazon SageMaker para MLOps para realizar reconhecimento óptico de caracteres em documentos de identidade PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

PaddleOCR integrado com projetos do Amazon SageMaker para MLOps para realizar o reconhecimento óptico de caracteres em documentos de identidade

O reconhecimento óptico de caracteres (OCR) é a tarefa de converter texto impresso ou manuscrito em texto codificado por máquina. O OCR tem sido amplamente utilizado em diversos cenários, como eletronização de documentos e autenticação de identidade. Como o OCR pode reduzir bastante o esforço manual para registrar informações importantes e servir como uma etapa inicial para a compreensão de grandes volumes de documentos, um sistema de OCR preciso desempenha um papel crucial na era da transformação digital.

A comunidade de código aberto e os pesquisadores estão se concentrando em como melhorar a precisão do OCR, facilidade de uso, integração com modelos pré-treinados, extensão e flexibilidade. Entre muitos frameworks propostos, o PaddleOCR ganhou cada vez mais atenção recentemente. O framework proposto concentra-se em obter alta precisão enquanto equilibra a eficiência computacional. Além disso, os modelos pré-treinados para chinês e inglês o tornam popular no mercado baseado no idioma chinês. Veja o Repo do GitHub PaddleOCR para mais detalhes.

Na AWS, também propusemos serviços integrados de IA que estão prontos para uso sem conhecimento de machine learning (ML). Para extrair texto e dados estruturados, como tabelas e formulários de documentos, você pode usar amazontext. Ele usa técnicas de ML para ler e processar qualquer tipo de documento, extraindo com precisão texto, manuscrito, tabelas e outros dados sem esforço manual.

Para os cientistas de dados que desejam a flexibilidade de usar uma estrutura de código aberto para desenvolver seu próprio modelo de OCR, também oferecemos o serviço de ML totalmente gerenciado Amazon Sage Maker. O SageMaker permite que você implemente as melhores práticas de MLOps em todo o ciclo de vida de ML e fornece modelos e conjuntos de ferramentas para reduzir o trabalho pesado indiferenciado para colocar projetos de ML em produção.

Neste post, nos concentramos no desenvolvimento de modelos personalizados dentro da estrutura PaddleOCR no SageMaker. Percorremos o ciclo de vida de desenvolvimento de ML para ilustrar como o SageMaker pode ajudá-lo a criar e treinar um modelo e, eventualmente, implantar o modelo como um serviço da web. Embora ilustremos essa solução com o PaddleOCR, a orientação geral é verdadeira para estruturas arbitrárias a serem usadas no SageMaker. Para acompanhar este post, também fornecemos código de exemplo no Repositório GitHub.

Estrutura PaddleOCR

Como uma estrutura de OCR amplamente adotada, o PaddleOCR contém detecção de rich text, reconhecimento de texto e algoritmos de ponta a ponta. Ele escolhe Binarização Diferenciável (DB) e Rede Neural Recorrente Convolucional (CRNN) como modelos básicos de detecção e reconhecimento, e propõe uma série de modelos, denominados PP-OCR, para aplicações industriais após uma série de estratégias de otimização.

O modelo PP-OCR é voltado para cenários gerais e forma uma biblioteca de modelos de diferentes linguagens. Consiste em três partes: detecção de texto, detecção e retificação de caixa e reconhecimento de texto, ilustrado na figura a seguir no PaddleOCR repositório oficial do GitHub. Você também pode consultar o trabalho de pesquisa PP-OCR: Um sistema de OCR prático e ultraleve para obter mais informações.

Para ser mais específico, o PaddleOCR consiste em três tarefas consecutivas:

  • Detecção de texto – O objetivo da detecção de texto é localizar a área de texto na imagem. Tais tarefas podem ser baseadas em uma rede de segmentação simples.
  • Detecção e retificação de caixa – Cada caixa de texto precisa ser transformada em uma caixa retangular horizontal para posterior reconhecimento de texto. Para isso, PaddleOCR propõe treinar um classificador de direção de texto (tarefa de classificação de imagem) para determinar a direção do texto.
  • Reconhecimento de texto – Após a detecção da caixa de texto, o modelo de reconhecimento de texto realiza inferência em cada caixa de texto e gera os resultados de acordo com a localização da caixa de texto. PaddleOCR adota o método CRNN amplamente utilizado.

O PaddleOCR fornece modelos pré-treinados de alta qualidade que são comparáveis ​​aos efeitos comerciais. Você pode usar o modelo pré-treinado para um modelo de detecção, classificador de direção ou modelo de reconhecimento ou pode ajustar e treinar novamente cada modelo individual para atender ao seu caso de uso. Para aumentar a eficiência e a eficácia da detecção de chinês tradicional e inglês, ilustramos como ajustar o modelo de reconhecimento de texto. O modelo pré-treinado que escolhemos é ch_ppocr_mobile_v2.0_rec_train, que é um modelo leve, compatível com chinês, inglês e reconhecimento de números. Veja a seguir um exemplo de resultado de inferência usando uma carteira de identidade de Hong Kong.

PaddleOCR integrado com projetos do Amazon SageMaker para MLOps para realizar reconhecimento óptico de caracteres em documentos de identidade PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Nas seções a seguir, explicamos como ajustar o modelo pré-treinado usando o SageMaker.

Práticas recomendadas de MLOps com o SageMaker

O SageMaker é um serviço de ML totalmente gerenciado. Com o SageMaker, cientistas de dados e desenvolvedores podem criar e treinar modelos de ML de maneira rápida e fácil e, em seguida, implantá-los diretamente em um ambiente gerenciado pronto para produção.

Muitos cientistas de dados usam o SageMaker para acelerar o ciclo de vida do ML. Nesta seção, ilustramos como o SageMaker pode ajudá-lo desde a experimentação até a produção de ML. Seguindo as etapas padrão de um projeto de ML, desde a frase experimental (desenvolvimento de código e experimentos) até a frase operacional (automatização do fluxo de trabalho de construção do modelo e pipelines de implantação), o SageMaker pode trazer eficiência nas seguintes etapas:

  1. Explore os dados e crie o código de ML com Estúdio Amazon SageMaker cadernos.
  2. Treine e ajuste o modelo com um trabalho de treinamento do SageMaker.
  3. Implante o modelo com um endpoint do SageMaker para veiculação do modelo.
  4. Orquestre o fluxo de trabalho com Pipelines Amazon SageMaker.

O diagrama a seguir ilustra essa arquitetura e fluxo de trabalho.

PaddleOCR integrado com projetos do Amazon SageMaker para MLOps para realizar reconhecimento óptico de caracteres em documentos de identidade PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

É importante observar que você pode usar o SageMaker de maneira modular. Por exemplo, você pode criar seu código com um ambiente de desenvolvimento integrado local (IDE) e treinar e implantar seu modelo no SageMaker, ou pode desenvolver e treinar seu modelo em suas próprias fontes de computação de cluster e usar um pipeline do SageMaker para orquestração de fluxo de trabalho e implantar em um endpoint do SageMaker. Isso significa que o SageMaker fornece uma plataforma aberta para se adaptar às suas próprias necessidades.

Veja o código em nosso Repositório GitHub e README para entender a estrutura do código.

Provisionar um projeto SageMaker

Você pode usar Projetos do Amazon SageMaker para iniciar sua jornada. Com um projeto do SageMaker, você pode gerenciar as versões de seus repositórios Git para poder colaborar entre as equipes com mais eficiência, garantir a consistência do código e permitir a integração e entrega contínuas (CI/CD). Embora os notebooks sejam úteis para a criação e experimentação de modelos, quando você tem uma equipe de cientistas de dados e engenheiros de ML trabalhando em um problema de ML, você precisa de uma maneira mais escalável de manter a consistência do código e ter um controle de versão mais rigoroso.

Os projetos do SageMaker criam um modelo de MLOps pré-configurado, que inclui os componentes essenciais para simplificar a integração do PaddleOCR:

  • Um repositório de código para criar imagens de contêiner personalizadas para processamento, treinamento e inferência, integrado a ferramentas de CI/CD. Isso nos permite configurar nossa imagem personalizada do Docker e enviar para Registro do Amazon Elastic Container (Amazon ECR) para estar pronto para uso.
  • Um pipeline do SageMaker que define etapas para preparação de dados, treinamento, avaliação de modelo e registro de modelo. Isso nos prepara para estarmos prontos para MLOps quando o projeto de ML for para produção.
  • Outros recursos úteis, como um repositório Git para controle de versão de código, grupo de modelo que contém versões de modelo, gatilho de alteração de código para o pipeline de compilação do modelo e gatilho baseado em evento para o pipeline de implantação do modelo.

Você pode usar o código de semente do SageMaker para criar projetos padrão do SageMaker ou um modelo específico que sua organização criou para membros da equipe. Neste post, usamos o padrão Modelo de MLOps para construção de imagem, construção de modelo e implantação de modelo. Para obter mais informações sobre como criar um projeto no Studio, consulte Criar um projeto MLOps usando o Amazon SageMaker Studio.

Explore dados e crie código de ML com SageMaker Studio Notebooks

Os notebooks SageMaker Studio são notebooks colaborativos que você pode iniciar rapidamente porque não precisa configurar instâncias de computação e armazenamento de arquivos antecipadamente. Muitos cientistas de dados preferem usar esse IDE baseado na Web para desenvolver o código de ML, depurar rapidamente a API da biblioteca e fazer as coisas funcionarem com uma pequena amostra de dados para validar o script de treinamento.

Nos notebooks do Studio, você pode usar um ambiente pré-criado para estruturas comuns, como TensorFlow, PyTorch, Pandas e Scikit-Learn. Você pode instalar as dependências no kernel pré-compilado ou construir sua própria imagem de kernel persistente. Para obter mais informações, consulte Instalar bibliotecas e kernels externos no Amazon SageMaker Studio. Os notebooks Studio também fornecem um ambiente Python para acionar trabalhos de treinamento do SageMaker, implantação ou outros serviços da AWS. Nas seções a seguir, ilustramos como usar os notebooks Studio como um ambiente para acionar trabalhos de treinamento e implantação.

O SageMaker fornece um IDE poderoso; é uma plataforma aberta de ML onde os cientistas de dados têm a flexibilidade de usar seu ambiente de desenvolvimento preferido. Para cientistas de dados que preferem um IDE local, como PyCharm ou Visual Studio Code, você pode usar o ambiente Python local para desenvolver seu código de ML e usar o SageMaker para treinamento em um ambiente escalável gerenciado. Para mais informações, veja Execute seu trabalho TensorFlow no Amazon SageMaker com um IDE PyCharm. Depois de ter um modelo sólido, você pode adotar as práticas recomendadas de MLOps com o SageMaker.

Atualmente, o SageMaker também fornece Instâncias de notebook SageMaker como nossa solução legada para o ambiente Jupyter Notebook. Você tem a flexibilidade de executar o comando de compilação do Docker e use o modo local do SageMaker para treinar em sua instância de notebook. Também fornecemos código de amostra para PaddleOCR em nosso repositório de código: ./train_and_deploy/notebook.ipynb.

Crie uma imagem personalizada com um modelo de projeto do SageMaker

O SageMaker faz uso extensivo de contêineres do Docker para tarefas de compilação e tempo de execução. Você pode executar seu próprio contêiner com o SageMaker facilmente. Veja mais detalhes técnicos em Use seus próprios algoritmos de treinamento.

No entanto, como cientista de dados, construir um contêiner pode não ser simples. Os projetos do SageMaker fornecem uma maneira simples de gerenciar dependências personalizadas por meio de um pipeline de CI/CD de criação de imagens. Ao usar um projeto do SageMaker, você pode fazer atualizações na imagem de treinamento com seu Dockerfile de contêiner personalizado. Para obter instruções passo a passo, consulte Crie projetos do Amazon SageMaker com pipelines de CI / CD de construção de imagens. Com a estrutura fornecida no modelo, você pode modificar o código fornecido neste repositório para criar um contêiner de treinamento PaddleOCR.

Para esta postagem, mostramos a simplicidade de criar uma imagem personalizada para processamento, treinamento e inferência. O repositório do GitHub contém três pastas:

Esses projetos seguem uma estrutura semelhante. Pegue a imagem do contêiner de treinamento como exemplo; a image-build-train/ repositório contém os seguintes arquivos:

  • O arquivo codebuild-buildspec.yml, que é usado para configurar AWS CodeBuild para que a imagem possa ser criada e enviada ao Amazon ECR.
  • O Dockerfile usado para a compilação do Docker, que contém todas as dependências e o código de treinamento.
  • O ponto de entrada train.py para o script de treinamento, com todos os hiperparâmetros (como taxa de aprendizado e tamanho do lote) que podem ser configurados como um argumento. Esses argumentos são especificados quando você inicia o trabalho de treinamento.
  • As dependências.

Quando você envia o código para o repositório correspondente, ele aciona AWS Code Pipeline para construir um contêiner de treinamento para você. A imagem de contêiner personalizada é armazenada em um repositório do Amazon ECR, conforme ilustrado na figura anterior. Um procedimento semelhante é adotado para gerar a imagem de inferência.

Treine o modelo com o SDK de treinamento do SageMaker

Depois que o código do algoritmo for validado e empacotado em um contêiner, você poderá usar um trabalho de treinamento do SageMaker para provisionar um ambiente gerenciado para treinar o modelo. Esse ambiente é efêmero, o que significa que você pode ter recursos de computação separados e seguros (como GPU) ou um ambiente distribuído Multi-GPU para executar seu código. Quando o treinamento é concluído, o SageMaker salva os artefatos de modelo resultantes em um Serviço de armazenamento simples da Amazon (Amazon S3) que você especificar. Todos os dados de log e metadados persistem no Console de gerenciamento da AWS, Estúdio e Amazon CloudWatch.

O trabalho de treinamento inclui várias informações importantes:

  • O URL do bucket do S3 em que você armazenou os dados de treinamento
  • A URL do bucket do S3 em que você deseja armazenar a saída do trabalho
  • Os recursos de computação gerenciados que você deseja que o SageMaker use para treinamento de modelo
  • O caminho do Amazon ECR em que o contêiner de treinamento está armazenado

Para obter mais informações sobre trabalhos de treinamento, consulte Modelos de trem. O código de exemplo para o job de treinamento está disponível em experimentos-train-notebook.ipynb.

O SageMaker faz os hiperparâmetros em um CreateTrainingJob solicitação disponível no contêiner do Docker no /opt/ml/input/config/hyperparameters.json arquivo.

Usamos o contêiner de treinamento personalizado como ponto de entrada e especificamos um ambiente de GPU para a infraestrutura. Todos os hiperparâmetros relevantes são detalhados como parâmetros, o que nos permite rastrear cada configuração de trabalho individual e compará-los com o rastreamento do experimento.

Como o processo de ciência de dados é muito orientado à pesquisa, é comum que vários experimentos sejam executados em paralelo. Isso requer uma abordagem que acompanhe todos os diferentes experimentos, diferentes algoritmos e potencialmente diferentes conjuntos de dados e hiperparâmetros tentados. O Amazon SageMaker Experiments permite organizar, rastrear, comparar e avaliar seus experimentos de ML. Demonstramos isso também em experimentos-train-notebook.ipynb. Para mais detalhes, consulte Gerenciar machine learning com experiências do Amazon SageMaker.

Implantar o modelo para veiculação de modelo

Quanto à implantação, especialmente para o serviço de modelo em tempo real, muitos cientistas de dados podem achar difícil ficar sem a ajuda das equipes de operação. O SageMaker simplifica a implantação de seu modelo treinado em produção com o SDK Python do SageMaker. Você pode implantar seu modelo nos serviços de hospedagem do SageMaker e obter um endpoint para usar para inferência em tempo real.

Em muitas organizações, os cientistas de dados podem não ser responsáveis ​​pela manutenção da infraestrutura de endpoint. No entanto, testar seu modelo como um endpoint e garantir os comportamentos de previsão corretos é, de fato, responsabilidade dos cientistas de dados. Portanto, o SageMaker simplificou as tarefas de implantação adicionando um conjunto de ferramentas e SDK para isso.

Para o caso de uso do post, queremos ter recursos interativos em tempo real e de baixa latência. Inferência em tempo real é ideal para essa carga de trabalho de inferência. No entanto, existem muitas opções que se adaptam a cada requisito específico. Para obter mais informações, consulte Implantar modelos para inferência.

Para implantar a imagem personalizada, os cientistas de dados podem usar o SageMaker SDK, ilustrado em

experimentos-implantar-notebook.ipynb.

No create_model solicitação, a definição do contêiner inclui o ModelDataUrl parâmetro, que identifica o local do Amazon S3 onde os artefatos do modelo são armazenados. O SageMaker usa essas informações para determinar de onde copiar os artefatos do modelo. Ele copia os artefatos para o /opt/ml/model diretório para uso pelo seu código de inferência. o serve e predictor.py é o ponto de entrada para servir, com o artefato de modelo que é carregado quando você inicia a implementação. Para mais informações, veja Use seu próprio código de inferência com serviços de hospedagem.

Orquestre seu fluxo de trabalho com o SageMaker Pipelines

A última etapa é envolver seu código como fluxos de trabalho de ML de ponta a ponta e aplicar as práticas recomendadas de MLOps. No SageMaker, a carga de trabalho de construção de modelo, um gráfico acíclico direcionado (DAG), é gerenciada pelo SageMaker Pipelines. Pipelines é um serviço totalmente gerenciado que suporta orquestração e rastreamento de linhagem de dados. Além disso, como o Pipelines é integrado ao SageMaker Python SDK, você pode criar seus pipelines programaticamente usando uma interface Python de alto nível que usamos anteriormente durante a etapa de treinamento.

Fornecemos um exemplo de código de pipeline para ilustrar a implementação em pipeline.py.

O pipeline inclui uma etapa de pré-processamento para geração do conjunto de dados, etapa de treinamento, etapa de condição e etapa de registro do modelo. No final de cada execução de pipeline, os cientistas de dados podem querer registrar seu modelo para controles de versão e implantar o de melhor desempenho. O registro de modelos do SageMaker fornece um local central para gerenciar versões de modelos, modelos de catálogo e acionar a implantação automatizada de modelos com status de aprovação de um modelo específico. Para mais detalhes, consulte Registre e implante modelos com o registro de modelos.

Em um sistema de ML, a orquestração automatizada do fluxo de trabalho ajuda a evitar a degradação do desempenho do modelo, em outras palavras, o desvio do modelo. A detecção antecipada e proativa de desvios de dados permite que você execute ações corretivas, como retreinamento de modelos. Você pode acionar o pipeline do SageMaker para treinar novamente uma nova versão do modelo após a detecção de desvios. O gatilho de um pipeline também pode ser determinado por Monitor de modelo do Amazon SageMaker, que monitora continuamente a qualidade dos modelos em produção. Com o recurso de captura de dados para registrar informações, o Model Monitor suporta monitoramento de dados e qualidade de modelo, viés e monitoramento de desvio de atribuição de recursos. Para mais detalhes, consulte Monitore os modelos para dados e qualidade do modelo, viés e explicabilidade.

Conclusão

Neste post, ilustramos como executar o framework PaddleOCR no SageMaker para tarefas de OCR. Para ajudar os cientistas de dados a integrarem o SageMaker com facilidade, percorremos o ciclo de vida de desenvolvimento de ML, desde a criação de algoritmos, treinamento e hospedagem do modelo como um serviço da Web para inferência em tempo real. Você pode usar o código do modelo que fornecemos para migrar uma estrutura arbitrária para a plataforma SageMaker. Experimente para seu projeto de ML e conte-nos suas histórias de sucesso.


Sobre os autores

PaddleOCR integrado com projetos do Amazon SageMaker para MLOps para realizar reconhecimento óptico de caracteres em documentos de identidade PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Junyi (Jackie) LIU é Cientista Aplicado Sênior na AWS. Ela tem muitos anos de experiência de trabalho na área de aprendizado de máquina. Possui rica experiência prática no desenvolvimento e implementação de soluções na construção de modelos de aprendizado de máquina em algoritmos de previsão de cadeia de suprimentos, sistemas de recomendação de publicidade, área de OCR e PNL.

PaddleOCR integrado com projetos do Amazon SageMaker para MLOps para realizar reconhecimento óptico de caracteres em documentos de identidade PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Yanwei Cui, PhD, é arquiteto de soluções especialista em aprendizado de máquina na AWS. Ele começou a pesquisa de aprendizado de máquina no IRISA (Instituto de Pesquisa de Ciência da Computação e Sistemas Aleatórios) e tem vários anos de experiência na criação de aplicativos industriais movidos por inteligência artificial em visão computacional, processamento de linguagem natural e previsão do comportamento do usuário online. Na AWS, ele compartilha a experiência de domínio e ajuda os clientes a desbloquear potenciais de negócios e a gerar resultados acionáveis ​​com aprendizado de máquina em escala. Fora do trabalho, ele gosta de ler e viajar.

PaddleOCR integrado com projetos do Amazon SageMaker para MLOps para realizar reconhecimento óptico de caracteres em documentos de identidade PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Yi-An CHEN é desenvolvedora de software no Amazon Lab 126. Ela tem mais de 10 anos de experiência no desenvolvimento de produtos orientados para aprendizado de máquina em diversas disciplinas, incluindo personalização, processamento de linguagem natural e visão computacional. Fora do trabalho, ela gosta de fazer corridas longas e andar de bicicleta.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS