女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將PP-OCRv3英文識別模型部署在Corstone-300虛擬硬件平臺上

安芯教育科技 ? 來源:極術社區 ? 作者:極術社區 ? 2022-08-12 15:03 ? 次閱讀

項目概述

經典的深度學習工程是從確認任務目標開始的,我們首先來簡單地介紹一下 OCR 中的文本識別任務以及本期部署實戰課程中我們所使用的工具和平臺。

1.1 文本識別任務

文本識別是 OCR 的一個子任務,其任務為識別一個固定區域的文本內容。在 OCR 的兩階段方法里,它接在文本檢測后面,將圖像信息轉換為文字信息。在卡證票據信息抽取與審核、制造業產品溯源、政務醫療文檔電子化等行業場景中應用廣泛。

515271ee-19ee-11ed-ba43-dac502259ad0.jpg

1.2 PP-OCRv3

如下圖所示,PP-OCRv3 的整體框架示意圖與 PP-OCRv2 類似,但較 PP-OCRv2 而言,針對檢測模型和識別模型進行了進一步地優化。例如:文本識別模型在 PP-OCRv2 的基礎上引入 SVTR,并使用 GTC 指導訓練和模型蒸餾。

51665218-19ee-11ed-ba43-dac502259ad0.jpg

更多關于 PP-OCRv3 的特征及優化策略,可查看 PP-OCRv3 arXiv 技術報告[5]。

1.3 Arm 虛擬硬件 (Arm Virtual Hardware, AVH)

作為 Arm 物聯網全面解決方案的核心技術之一,AVH 很好地解決了實體硬件所面臨的難擴展、難運維等痛點。AVH 提供了簡單便捷并且可擴展的途徑,讓 IoT 應用的開發擺脫了對實體硬件的依賴并使得云原生開發技術在嵌入式物聯網、邊緣側機器學習領域得到了應用。尤其是在芯片緊張的當今時代,使用 AVH 開發者甚至可以在芯片 RTL 之前便可接觸到最新的處理器 IP。

目前 AVH 提供兩種形式供開發者使用。一種是托管在 AWS 以及 AWS China 上以亞馬遜機器鏡像 AMI 形式存在的 Arm Corstone 和 Cortex CPU 的虛擬硬件,另外一種則是由 Arm 以 SaaS 平臺的形式提供的 AVH 第三方硬件。本期課程我們將使用第一種托管在 AWS 以及 AWS China 上以亞馬遜機器鏡像 AMI 形式存在的 Corstone 和 Cortex CPU 的虛擬硬件。

由于目前 AWS China 賬號主要面向企業級開發者開放,個人開發者可訪問 AWS Marketplace 訂閱 AVH 相關服務。參考下圖步驟創建 AVH AMI 實例。

51779136-19ee-11ed-ba43-dac502259ad0.jpg

端到端部署流程

接下來小編將重點向大家展示從模型訓練到部署的全流程,本期課程所涉及的相關代碼已在 GitHub 倉庫開源,歡迎大家下載體驗!


(位于 PaddleOCR 的 dygraph 分支下 deploy 目錄的 avh 文件目錄中)

https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/deploy/avh

5186c7c8-19ee-11ed-ba43-dac502259ad0.jpg

2.1 模型訓練

PaddleOCR 模型使用配置文件 (.yml) 管理網絡訓練、評估的參數。在配置文件中,可以設置組建模型、優化器、損失函數、模型前后處理的參數,PaddleOCR 從配置文件中讀取到這些參數,進而組建出完整的訓練流程,完成模型訓練。在需要對模型進行優化時,可以通過修改配置文件中的參數完成配置 (完整的配置文件說明可以參考文檔:配置文件內容與生成[7]),使用簡單且便于修改。

為實現與 Cortex-M 的適配,在模型訓練時我們需要修改所使用的配置文件[8]。去掉不支持的算子,同時為優化模型,在模型調優部分使用了 BDA (Base Data Augmentation),其包含隨機裁剪,隨機模糊,隨機噪聲,圖像反色等多個基礎數據增強方法。相關配置文件可參考如下代碼。

# Example: PP-OCRv3/en_PP-OCRv3_rec.yml

Global:

  debug: false

  use_gpu: true

  epoch_num: 500

  log_smooth_window: 20

  print_batch_step: 10

  save_model_dir: ./output/rec

  save_epoch_step: 3

  eval_batch_step: [0, 2000]

  cal_metric_during_train: true

  pretrained_model:

  checkpoints:

  save_inference_dir:

  use_visualdl: false

  infer_img: doc/imgs_words/ch/word_1.jpg

  character_dict_path: ppocr/utils/en_dict.txt

  max_text_length: &max_text_length 25

  infer_mode: false

  use_space_char: true

  distributed: true

  save_res_path: ./output/rec/predicts_ppocrv3_en.txt



Optimizer:

  name: Adam

  beta1: 0.9

  beta2: 0.999

  lr:

    name: Cosine

    learning_rate: 0.001

    warmup_epoch: 5

  regularizer:

    name: L2

    factor: 3.0e-05



Architecture:

  model_type: rec

  algorithm: SVTR

  Transform:

  Backbone:

    name: MobileNetV1Enhance

    scale: 0.5

    last_conv_stride: [1, 2]

    last_pool_type: avg

  Neck:

    name: SequenceEncoder

    encoder_type: reshape

  Head:

    name: CTCHead

    mid_channels: 96

    fc_decay: 0.00002



Loss:

  name: CTCLoss



PostProcess:

  name: CTCLabelDecode



Metric:

  name: RecMetric

  main_indicator: acc



Train:

  dataset:

    name: LMDBDataset

    data_dir: MJ_ST

    ext_op_transform_idx: 1

    transforms:

    - DecodeImage:

        img_mode: BGR

        channel_first: false

    - RecAug:

    - CTCLabelEncode:

    - RecResizeImg:

        image_shape: [3, 32, 320]

    - KeepKeys:

        keep_keys:

        - image

        - label

        - length

  loader:

    shuffle: true

    batch_size_per_card: 128

    drop_last: true

    num_workers: 4

Eval:

  dataset:

    name: LMDBDataset

    data_dir: EN_eval

    transforms:

    - DecodeImage:

        img_mode: BGR

        channel_first: false

    - CTCLabelEncode:

    - RecResizeImg:

        image_shape: [3, 32, 320]

    - KeepKeys:

        keep_keys:

        - image

        - label

        - length

  loader:

    shuffle: false

    drop_last: false

    batch_size_per_card: 128

    num_workers: 4

我們使用網上開源英文數據集 MJ+ST 作為訓練測試數據集,并通過以下命令進行模型訓練。模型訓練周期與訓練環境以及數據集大小等均密切相關,大家可根據自身需求進行配置。

# Example training command

python3 tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o 

            Global. save_model_dir=output/rec/ 

            Train.dataset.name=LMDBDataSet 

            Train.dataset.data_dir=MJ_ST 

            Eval.dataset.name=LMDBDataSet 

            Eval.dataset.data_dir=EN_eval 

2.2 模型導出

模型訓練完成后,還需要將訓練好的文本識別模型轉換為 Paddle Inference 模型,才能使用深度學習編譯器 TVM 對其進行編譯從而獲得適配在 Cortex-M 處理器上運行的代碼。可以參考以下命令導出 Paddle Inference 模型。

# Example exporting model command

python3 tools/export_model.py 

            -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o 

            Global.pretrained_model=output/rec/best_accuracy.pdparams 

            Global.save_inference_dir=output/rec/infer

Inference 模型導出后,可以通過以下命令使用 PaddleOCR 進行推理驗證。為便于各位開發者可直接體驗和部署,大家可以通過https://paddleocr.bj.bcebos.com/tvm/ocr_en.tar鏈接直接下載我們訓練完成并導出的英文文本識別 Inference 模型。

# Example infer command

python3 tools/infer/predict_rec.py --image_dir="path_to_image/word_116.png" 

--rec_model_dir="path_to_infer_model/ocr_en" 

--rec_char_dict_path="ppocr/utils/en_dict.txt" 

--rec_image_shape="3,32,320"

我們使用與后續部署中相同的圖進行驗證,如下圖所示。預測結果為如下,與圖片一致且具有較高的置信度評分,說明我們的推理模型已經基本準備完畢了。

Predicts of /Users/lilwu01/Desktop/word_116.png:('QBHOUSE', 0.9867456555366516)

519b4e82-19ee-11ed-ba43-dac502259ad0.jpg

2.3 模型編譯

為實現在 Cortex-M 上直接完成 PaddlePaddle 模型的部署,我們需要借助深度學習編譯器 TVM 來進行相應模型的轉換和適配。TVM 是一款開源的深度學習編譯器, 主要用于解決將各種深度學習框架部署到各種硬件設備上的適配性問題。

如下圖所示,他可以接收由 PaddlePaddle 等經典的深度學習訓練框架編寫的模型并將其轉換成可在目標設備上運行推理任務的代碼。

51a955ae-19ee-11ed-ba43-dac502259ad0.jpg

我們使用 TVM 的 Python 應用程序 tvmc 來完成模型的編譯。大家可參考如下命令對 Paddle Inference 模型進行編譯。通過指定 --target=cmsis-nn,c 使得模型中 CMSIS NN[9] 庫支持的算子會調用 CMSIS NN 庫執行,而不支持的算子則會回調到 C 代碼庫。

# Example of Model compiling using tvmc

python3 -m tvm.driver.tvmc compile 

         path_to_infer_model/ocr_en/inference.pdmodel 

    --target=cmsis-nn,c 

    --target-cmsis-nn-mcpu=cortex-m55 

    --target-c-mcpu=cortex-m55 

    --runtime=crt 

    --executor=aot 

    --executor-aot-interface-api=c 

    --executor-aot-unpacked-api=1 

    --pass-config tir.usmp.enable=1 

    --pass-config tir.usmp.algorithm=hill_climb 

    --pass-config tir.disable_storage_rewrite=1 

         --pass-config tir.disable_vectorize=1 

    --output-format=mlf 

    --model-format=paddle 

    --module-name=rec 

    --input-shapes x:[1,3,32,320] 

    --output=rec.tar

更多關于參數配置的具體說明,大家可以直接輸入 tvmc compile --help 來查看。編譯后的模型可以在 –output 參數指定的路徑下查看 (此處為當前目錄下的 rec.tar 壓縮包內)。

2.4 模型部署

參考圖 3 所示的 AVH AMI 實例 (instance) 創建的流程并通過 ssh 命令遠程登錄到實例中去,當看到如下所示的提示畫面說明已經成功登入。

51be0b16-19ee-11ed-ba43-dac502259ad0.jpg

51cbdc3c-19ee-11ed-ba43-dac502259ad0.jpg

2.1-2.3 中所述的模型訓練、導出、編譯等步驟均可以選擇在本地機器上完成或者在 AVH AMI 中完成,大家可根據個人需求確定。為便于開發者朋友更直觀地體驗如何在 AVH 上完成 PaddlePaddle 模型部署,我們為大家提供了部署的示例代碼來幫助大家自動化的完成環境配置,機器學習應用構建以及在含有 Cortex-M55 的 Corstone-300 虛擬硬件上執行并獲取結果。

登入 AVH AMI 實例后,可以輸入以下命令來完成模型部署和查看應用執行結果。run_demo.sh[11] 腳本將會執行以下 6 個步驟來自動化的完成應用構建和執行,執行結果如圖 10 所示。

$ git clone https://github.com/PaddlePaddle/PaddleOCR.git

$ cd PaddleOCR

$ git pull origin dygraph

$ cd deploy/avh

$ ./run_demo.sh

51f887b4-19ee-11ed-ba43-dac502259ad0.jpg

不難看出,該飛槳英文識別模型在含有 Cortex-M55 處理器的 Corstone-300 虛擬硬件上的推理結果與 2.2 章節中在服務器主機上直接進行推理的推理結果高度一致,說明將 PaddlePaddle 模型直接部署在 Cortex-M55 虛擬硬件上運行良好。

520b5e20-19ee-11ed-ba43-dac502259ad0.jpg

總結

本期課程,小編帶領大家學習了如何將 PP-OCRv3 中發布的英文識別模型 (完成算子適配后) 部署在 Corstone-300 的虛擬硬件平臺上。在下期推送中,我們將以計算機視覺領域的目標檢測任務 (Detection) 為目標,一步步地帶領大家動手完成從模型訓練優化到深度學習應用部署的整個端到端的開發流程。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源
    +關注

    關注

    3

    文章

    3582

    瀏覽量

    43452
  • 硬件平臺
    +關注

    關注

    0

    文章

    21

    瀏覽量

    12062
  • 識別模型
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6804

原文標題:AVH 動手實踐 (二) | 在 Arm 虛擬硬件上部署 PP-OCR 模型

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    PP-OCRv3優化策略詳細解讀

    PP-OCR是PaddleOCR團隊自研的超輕量OCR系統,面向OCR產業應用,權衡精度與速度。近期,PaddleOCR團隊針對PP-OCRv2的檢測模塊和識別模塊,進行共計9個方面的升級,打造出一款全新的、效果更優的超輕量OC
    的頭像 發表于 05-12 09:21 ?4050次閱讀

    如何將PP-PicoDet 目標檢測模型部署Corstone-300虛擬硬件平臺上

    百度飛槳與 Arm 深度合作,增加了 Cortex-M 硬件上支持的深度學習模型的數量,同時也填補了飛槳模型 Arm Cortex-M 硬件
    的頭像 發表于 09-22 09:50 ?2417次閱讀

    如何在Arm虛擬硬件虛擬樹莓派4上完成圖像識別應用的部署

    本期課程,小編將以計算機視覺領域的圖像識別任務為目標,帶領大家動手實現在樹莓派的虛擬設備上部署基于 Paddle Lite 的圖像識別模型
    的頭像 發表于 09-30 10:00 ?2768次閱讀

    基于C#和OpenVINO?英特爾獨立顯卡上部署PP-TinyPose模型

    和 OpenVINO, PP-TinyPose 模型部署英特爾獨立顯卡上。 1.1 PP-
    的頭像 發表于 11-18 18:27 ?2912次閱讀

    使用OpenVINO C# API輕松部署飛槳PP-OCRv4模型

    ?本文從零開始詳細介紹整個過程。 一,什么是PP-OCRv4模型? ? PP-OCRv4是 PaddleOCR工具庫 的PP-OCR系列模型
    的頭像 發表于 02-12 10:42 ?1277次閱讀
    使用OpenVINO C# API輕松<b class='flag-5'>部署</b>飛槳<b class='flag-5'>PP-OCRv</b>4<b class='flag-5'>模型</b>

    如何在C#中部署飛槳PP-OCRv4模型

    《超4萬6千星的開源OCR黑馬登場,PaddleOCR憑什么脫穎而出?》收到了讀者熱烈反響c,很多讀者提出:如何在C#中部署飛槳PP-OCRv4模型?本文從零開始詳細介紹整個過程。
    的頭像 發表于 02-17 10:58 ?1584次閱讀
    如何在C#中<b class='flag-5'>部署</b>飛槳<b class='flag-5'>PP-OCRv</b>4<b class='flag-5'>模型</b>

    使用OpenVINO優化并部署飛槳PP-OCRv4模型

    算法,在此基礎上打造產業級特色模型系列:PP-OCR、PP-Structure和PP-ChatOCR,打通了模型訓練、壓縮、
    的頭像 發表于 04-03 18:07 ?977次閱讀
    使用OpenVINO優化并<b class='flag-5'>部署</b>飛槳<b class='flag-5'>PP-OCRv</b>4<b class='flag-5'>模型</b>

    如何將FreeModbus移植到STM32平臺上

    modbus是什么?如何將FreeModbus移植到STM32平臺上
    發表于 11-17 07:44

    如何將AI模型部署到嵌入式系統中

    本期我們分享主題是如何將 AI 模型部署到嵌入式系統中,下一期介紹如何在 RT-Thread 操作系統上運行 Mnist Demo(手寫數字識別
    發表于 12-14 07:55

    介紹一種Arm ML嵌入式評估套件

    限度地提高物聯網和嵌入式設備的性能。 Corstone-300 可以輕松集成 Ethos-U55,該平臺可用作生態系統 FPGA (MPS3)和固定虛擬
    發表于 08-12 15:35

    如何用Arm虛擬硬件Arm Cortex-M上部署PaddlePaddle

    了如何在 AVH Corstone-300 平臺上部署 PP-OCRv3 中發布的英文文本識別模型
    發表于 09-02 14:48

    Arm虛擬硬件部署PP-PicoDet模型

    1、Arm虛擬硬件部署PP-PicoDet模型  經典的深度學習工程是從確認任務目標開始的,
    發表于 09-16 14:42

    Arm虛擬硬件部署PP-PicoDet模型的設計方案

    1、Arm虛擬硬件部署PP-PicoDet模型  經典的深度學習工程是從確認任務目標開始的,
    發表于 09-23 15:02

    如何使用TensorFlow神經網絡模型部署到移動或嵌入式設備上

    有很多方法可以經過訓練的神經網絡模型部署到移動或嵌入式設備上。不同的框架在各種平臺上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如And
    發表于 08-02 06:43

    如何將pytorch的模型部署到c++平臺上模型流程

    最近因為工作需要,要把pytorch的模型部署到c++平臺上,基本過程主要參照官網的教學示例,期間發現了不少坑,特此記錄。
    的頭像 發表于 10-26 14:36 ?3514次閱讀