Modelo de reconhecimento OCR baseado em PaddleServing implantado em série

Pontos principais:

  • Use o serviço de serviço de remo


1 Primeiro, você precisa instalar o ambiente relacionado à implantação do PaddleServing

PaddleServing é uma estrutura de serviço de aprendizado de máquina de alto desempenho, facilmente escalável e altamente disponível lançada pela PaddlePaddle. O principal objetivo do uso do PaddleServing no PaddleOCR é implantar o modelo de OCR treinado no ambiente online e fornecer serviços de API para conveniência do usuário. O PaddleServing também fornece alguns recursos avançados, como fusão de vários modelos, balanceamento de carga etc., que podem ajudar os usuários a criar um sistema de serviço de aprendizado de máquina mais completo.

!python -m pip install paddle-serving-server-gpu
!python -m pip install paddle_serving_client
!python -m pip install paddle-serving-app
  • A primeira linha de código instala paddle-serving-server-gpuo pacote , que é usado para iniciar o servidor PaddleServing e oferece suporte à aceleração de GPU.
  • A segunda linha de código instala paddle_serving_cliento pacote , que é usado para chamar o serviço de previsão fornecido pelo servidor PaddleServing por meio da API .
  • A terceira linha de código instala paddle-serving-appo pacote , que fornece algumas ferramentas e aplicativos relacionados ao PaddleServing , como conversão e compactação de modelo .

Converta o modelo de detecção para o formato de veiculação

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python -m paddle_serving_client.convert --dirname ../../inference/det_ppocrv3/Student/  \
                                         --model_filename inference.pdmodel          \
                                         --params_filename inference.pdiparams       \
                                         --serving_server ./ppocr_det_v3_serving/ \
                                         --serving_client ./ppocr_det_v3_client/

Este código é para converter o arquivo de parâmetro e o arquivo de modelo do modelo de detecção PaddleOCR no formato usado por PaddleServing e salvá-lo no diretório especificado e, em seguida, usar o arquivo de configuração especificado para implantar o serviço de inferência.

  • %cd /home/aistudio/PaddleOCR/deploy/pdserving/: Altere para o diretório na seção PaddleServing PaddleOCRda base de código .
  • --dirname ../../inference/det_ppocrv3/Student/: O diretório onde os arquivos de parâmetro e os arquivos de modelo estão localizados.
  • --model_filename inference.pdmodel: Nome do arquivo de modelo convertido .
  • --params_filename inference.pdiparams: O nome do arquivo de parâmetro convertido .
  • --serving_server ./ppocr_det_v3_serving/: O parâmetro serve_server especifica o local do diretório da configuração PaddleServing usada para executar a exibição do modelo de detecção. Nesse caso, o local especificado é ./ppocr_det_v3_serving/
  • --serving_client ./ppocr_det_v3_client/: O parâmetro serve_client especifica o local do diretório do cliente PaddleServing , que é usado para invocar o modelo de detecção durante a exibição. Nesse caso, o local especificado é ./ppocr_det_v3_client/.

Converta o modelo de reconhecimento para o formato de veiculação

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python -m paddle_serving_client.convert --dirname ../../inference/rec_ppocrv3/Student \
                                         --model_filename inference.pdmodel          \
                                         --params_filename inference.pdiparams       \
                                         --serving_server ./ppocr_rec_v3_serving/ \
                                         --serving_client ./ppocr_rec_v3_client/

4 Inicie o servidor 

Para modificar o código de pós-processamento , você pode primeiro adicionar o código de pós-processamento a web_service.py e modificar as linhas 154-155 especificamente :

# 代码154-155行修改为下面代码
def _postprocess(rec_res):
    keys = ["型号", "厂家", "版本号", "检定校准分类", "计量器具编号", "烟尘流量",
            "累积体积", "烟气温度", "动压", "静压", "时间", "试验台编号", "预测流速",
            "全压", "烟温", "流速", "工况流量", "标杆流量", "烟尘直读嘴", "烟尘采样嘴",
            "大气压", "计前温度", "计前压力", "干球温度", "湿球温度", "流量", "含湿量"]
    key_value = []
    if len(rec_res) > 1:
        for i in range(len(rec_res) - 1):
            rec_str, _ = rec_res[i]
            for key in keys:
                if rec_str in key:
                    key_value.append([rec_str, rec_res[i + 1][0]])
                    break
    return key_value
key_value = _postprocess(rec_list)
res = {"result": str(key_value)}
# res = {"result": str(result_list)}

 

4.1  Iniciar o serviço

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python web_service.py 2>&1 >log.txt

4.2 Cliente envia solicitação

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python pipeline_http_client.py --image_dir ../../train_data/icdar2015/text_localization/test/142.jpg
  • Execute o comando pipeline_http_client.py para passar o caminho da imagem para identificação .

Nesse processo, a API HTTP do PaddleServing é usada para transmissão e reconhecimento de imagens.O arquivo pipeline_http_client.py é um script Python usado para enviar solicitações HTTP ao PaddleServing e obter os resultados do reconhecimento. O script lê e codifica a imagem de entrada no formato base64 e, em seguida, envia a string codificada para PaddleServing como um parâmetro de solicitação HTTP. O PaddleServing decodifica a imagem recebida e a envia para o modelo de detecção e reconhecimento no PaddleOCR para reconhecimento OCR e, finalmente, retorna o resultado do reconhecimento .

Acho que você gosta

Origin blog.csdn.net/March_A/article/details/130445695
Recomendado
Clasificación