PPOCR是由百度开发的一款开源深度学习OCR(光学字符识别)模型,专注于文本检测、识别与理解任务,具备多场景、多语言的字符识别能力。该模型基于大规模多样化的文本图像数据训练而成,能够有效应对复杂背景、模糊字迹、倾斜变形及特殊字体等挑战,在图像转文本任务中展现出优异的准确性和鲁棒性。其支持多种图像格式输入和轻量化部署特性,使其广泛应用于文档数字化、票据识别、车牌识别、工业质检、智能办公等多个领域。
PPOCR的开源生态为OCR技术的研究与应用提供了重要支撑,尤其在与移动端、嵌入式设备结合时,通过模型压缩与优化可实现高效的端侧文本识别,进一步拓展了其在智能终端、物联网设备、自动化系统等场景中的实用价值。随着端侧计算能力的持续提升,PPOCR有望在更多实时文本交互场景中发挥关键作用,推动OCR技术的普惠化与商业化落地。
Anaconda是一个流行的开源软件包管理和环境管理系统,用于科学计算、数据分析和大数据处理,特别是在Python环境中。它包含了许多常用的科学计算和数据分析的软件包,并提供了一个方便的方式来管理这些软件包的安装、更新和环境配置。以下是Anaconda的一些主要特点和用途:
软件包管理
Anaconda提供了一个名为conda的包管理工具,可以轻松安装、更新和删除软件包。它支持数千个科学计算和数据分析相关的软件包,如NumPy、Pandas、Matplotlib等。
环境管理
Anaconda允许用户创建和管理多个独立的Python环境。每个环境可以有不同版本的Python和不同的软件包集合,这样可以避免版本冲突和环境污染。
跨平台
Anaconda可以在Windows、macOS和Linux上运行,使其成为开发人员和研究人员之间共享和复制数据分析项目的理想工具。
集成开发环境(IDE)
Anaconda还包含了Jupyter Notebook等强大的交互式开发工具,使用户能够在浏览器中创建和分享文档,结合代码、公式、可视化和解释性文本。
大数据支持
Anaconda不仅适用于单机环境,还支持分布式计算平台,如Apache Spark,从而能够处理大规模数据和复杂的计算任务。
总之,Anaconda提供了一个全面的解决方案,使得科学计算和数据分析的开发和部署变得更加简单和高效。
我们提供的虚拟机系统内已预装了Python 3.10及RKNN-Toolkit 2.1.0,专为模型转换与量化打造。若使用其他版本Python或相关工具的需求,推荐在虚拟机中另行安装Anaconda,以此避免环境冲突实现环境的完全隔离。
虚拟机系统使用的是“ELF 2开发板资料包”中提供的开发环境(路径:ELF 2开发板资料包\08-开发环境)您可以选择从网络上下载Linux 版本的Miniconda,推荐访问清华大学的镜像库进行下载。
具体网址为:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
另外,您也可以在“ELF 2开发板资料包”的“06-常用工具\06-2 环境搭建工具\AI 安装脚本”路径下找到名为“Miniconda3-4.7.12.1-Linux-x86_64.sh”的执行脚本。只需将该脚本上传至虚拟机中,并执行它即可完成Miniconda的安装。
首先对执行脚本赋予执行权限并执行脚本:
elf@ubuntu:~$ chmod x Miniconda3-4.7.12.1-Linux-x86_64.sh elf@ubuntu:~$ ./Miniconda3-4.7.12.1-Linux-x86_64.sh
按enter按键,之后输入yes,然后再设置安装路径,进行安装。
安装完之后如下图所示:
重新打开终端。命令行之前出现(base)代表安装成功。
以下是关于conda操作指令的跨平台说明及在虚拟机上的示范:conda的操作指令是跨平台的,这意味着它们既可以在Linux系统上运行,也可以在Windows系统上执行。接下来将在虚拟机环境中进行示范。
查看虚拟环境列表:
condaenvlist
创建新的虚拟环境:
conda create --name python=
例如:conda create --name myenv python=3.10
说明:此命令会创建一个名为 的新虚拟环境,并安装指定版本的Python。如果不指定Python版本,则会安装Anaconda发行版中附带的Python版本。
激活虚拟环境:
conda activate
例如:conda activate myenv
说明:激活虚拟环境后,在该环境下安装的包将仅在该环境中可用,从而避免了不同项目之间的依赖冲突。
退出虚拟环境:
condadeactivate
说明:此命令用于退出当前激活的虚拟环境,返回到基础环境(base环境)。如再次执行命令,则会退出base环境。
给虚拟环境安装库:
pip install conda install
例如:conda install numpy 或 pip install numpy
说明:通常推荐使用conda安装库,因为它会自动处理依赖关系。但在某些情况下,如果conda中没有可用的包版本,也可以使用pip进行安装。
删除虚拟环境:
condaenvremove --name
例如:conda env remove --name myenv
说明:此命令会删除指定的虚拟环境及其下安装的所有包。
创建新的虚拟环境:
elf@ubuntu:~$ conda create --name RKLLM-Toolkit-pyth3.10python=3.10
conda create --name python=
说明:此命令会创建一个名为 的新虚拟环境,并安装指定版本的Python。如果不指定Python版本,则会安装Anaconda发行版中附带的Python版本。
激活虚拟环境:
elf@ubuntu:~$conda activateRKLLM-Toolkit-pyth3.10
conda activate
说明:激活虚拟环境后,在该环境下安装的包将仅在该环境中可用,从而避免了不同项目之间的依赖冲突。
RKNN-Toolkit2是由瑞芯微电子开发的一套深度学习模型优化和推理工具。它支持多种深度学习框架(如Caffe、TensorFlow、PyTorch 等)的模型转换为RKNN格式,并提供了模型转换、量化、推理等功能。RKNN-Toolkit2主要面向在瑞芯微SoC上进行AI应用开发,但也可以用于PC平台进行模型的转换、量化、推理等操作。
将以下两个文件拷贝到虚拟机中进行安装。
文件一:rknn_toolkit2-2.1.0 708089d1-cp310-cp310-linux_x86_64.whl ��rknn_toolkit2-2.1.0 708089d1-cp310-cp310-linux_x86_64.zip
文件二:requirements_cp310-2.1.0.txt ��requirements_cp310-2.1.0.txt
也可以在 ELF 2 开发板资料包\03-例程源码\03-4 AI例程源码\rknn-toolkit2-2.1.0\rknn-toolkit2\packages路径下找到rknn_toolkit2-2.1.0 708089d1-cp310-cp310-linux_x86_64.whl 和requirements_cp310-2.1.0.txt
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/qwen2_vl$pip install -r requirements_cp310-2.1.0.txt -ihttps://mirrors.tuna.tsinghua.edu.cn/pypi/web/simplesome-package
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/qwen2_vl$pip install rknn_toolkit2-2.1.0 708089d1-cp310-cp310-linux_x86_64.whl -ihttps://mirrors.tuna.tsinghua.edu.cn/pypi/web/simplesome-package
注意:在安装中如果出现库版本冲突问题,再次执行安装命令会解决库版本冲突的报错问题。
RKNN-Toolkit-Lite2 是Rockchip为其轻量级神经网络处理单元提供的一款工具包。它专注于简化和加速深度学习模型在Rockchip硬件平台上的部署和推理过程。与RKNN-Toolkit2相比,RKNN-Toolkit-Lite2主要针对轻量级应用和较小的计算需求进行优化。
将以下文件拷贝到板卡中进行安装。
文件:rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl
也可以在ELF 2开发板资料包\03-例程源码\03-4 AI例程源码\rknn-toolkit2-2.1.0\rknn-toolkit-lite2\packages路径下找到rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl 。
elf@elf2-desktop:~$ sudo apt-get update elf@elf2-desktop:~$ sudo apt-get install python3-pip elf@elf2-desktop:~$ pip install rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
为了确认rknnlite库是否已成功安装,请启动Python交互式环境,并尝试导入该库。
elf@elf2-desktop:~$ python3 Python 3.10.12 (main, Nov 6 2024, 20:22:13) [GCC 11.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from rknnlite.api import RKNNLite >>>
未出现报错代表安装成功。
推荐使用交叉编译工具gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu;交叉编译工具往往向下兼容而无法向上兼容,因此不要使用10.2 以下的版本。
链接:Downloads | 10.2-2020.11 – Arm Developer
您也可以在ELF 2开发板资料包\03-例程源码\03-4 AI例程源码\路径下找到gcc-arm-10.2-2020.11- x86_64-aarch64-none-linux-gnu.tar.xz。
在交叉编译PPOCR时,编译器因内存不足被强制终止。可通过增加8GB交换空间解决。
创建新的交换文件:
# 创建8GB的交换文件(根据需求调整大小) elf@ubuntu:~$ sudo dd if=/dev/zero of=/swapfile2 bs=1M count=8192 # 设置正确的权限 elf@ubuntu:~$ sudo chmod 600 /swapfile2 # 格式化为交换文件 elf@ubuntu:~$ sudo mkswap /swapfile2 # 启用新的交换文件 elf@ubuntu:~$ sudo swapon /swapfile2
验证是否生效:
elf@ubuntu:~$ free-h total used free shared buff/cache available Mem: 15Gi 719Mi 6.5Gi 7.0Mi 8.4Gi 14Gi Swap: 9Gi 469Mi 9.5Gi
请将rknn_model_zoo-2.1.0.zip压缩包首先上传至虚拟机中,随后使用以下指令进行解压操作,并为解压后的rknn_model_zoo-2.1.0文件夹设置适当的权限。
RKNN Model Zoo下载地址:airockchip/rknn_model_zoo at v2.1.0
您也可以在 ELF 2 开发板资料包\03-例程源码\03-4 AI例程源码\路径下找到rknn_model_zoo-2.1.0.zip。
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ unzip rknn_model_zoo-2.1.0.zip (RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ chmod -R 755 rknn_model_zoo-2.1.0
进入rknn_model_zoo-2.1.0/examples/PPOCR/PPOCR-Det/model路径下载PPOCR-Det模型。
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0/examples/PPOCR/PPOCR-Det/model$./download_model.sh
进入rknn_model_zoo-2.1.0/examples/PPOCR/PPOCR-Rec/model路径下载PPOCR-Det模型。
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0/examples/PPOCR/PPOCR-Rec/model$./download_model.sh
进入rknn_model_zoo-2.1.0/examples/PPOCR/PPOCR-Det/python路径下,执行以下命令进行OCR检测模型转换。
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0/examples/PPOCR/PPOCR-Det/python$python3 convert.py ../model/ppocrv4_det.onnx rk3588
进入rknn_model_zoo-2.1.0/examples/PPOCR/PPOCR-Rec/python路径下,执行以下命令进行OCR识别模型转换。
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0/examples/PPOCR/PPOCR-Rec/python$python3 convert.py ../model/ppocrv4_rec.onnx rk3588
确定模型正常转换完成后,需要先将CPP目录的例程编译出来,然后将编译出来的文件夹推送到开发板中进行板端部署推理。进入rknn_model_zoo-2.1.0路径下,先执行环境变量,然后编译例程。
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ export GCC_COMPILER=/home/elf/work/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu (RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0$ ./build-linux.sh -t rk3588 -a aarch64 -d PPOCR-System
编译完成会在modelzoo目录下的install/rk3588_linux_aarch64/rknn_PPOCR-System_demo生成可执行文件、库文件、模型文件等。将模型和可执行文件等都拷贝到开发板上。
注意:库文件拷贝到板卡的/usr/lib/目录,可执行文件、模型以及测试文件可以拷贝到板卡任意路径。
elf@elf2-desktop:~$ ./rknn_ppocr_system_demo model/ppocrv4_det.rknn model/ppocrv4_rec.rknn model/test.jpg model input num: 1, output num: 1 input tensors: index=0, name=x, n_dims=4, dims=[1, 480, 480, 3], n_elems=691200, size=691200, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-14, scale=0.018658 output tensors: index=0, name=sigmoid_0.tmp_0, n_dims=4, dims=[1, 1, 480, 480], n_elems=230400, size=230400, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922 model is NHWC input fmt model input height=480, width=480, channel=3 model input num: 1, output num: 1 input tensors: index=0, name=x, n_dims=4, dims=[1, 48, 320, 3], n_elems=46080, size=92160, fmt=NHWC, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000 output tensors: index=0, name=softmax_11.tmp_0, n_dims=3, dims=[1, 40, 6625, 0], n_elems=265000, size=530000, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000 model is NHWC input fmt model input height=48, width=320, channel=3 origin size=500x500 crop size=496x496 input image: 500 x 500, subsampling: 4:4:4, colorspace: YCbCr, orientation: 1 src width=500 height=500 fmt=0x1 virAddr=0x0x39c28320 fd=0 dst width=480 height=480 fmt=0x1 virAddr=0x0x39cdf4e0 fd=0 color=0x0 rga_api version 1.10.1_[0] Error on improcess STATUS=-1 RGA error message: Unsupported function: src unsupport width stride 500, rgb888 width stride should be 16 aligned! try convert image use cpu finish DRAWING OBJECT [0] @ [(28, 37), (302, 39), (301, 71), (27, 69)] regconize result: 纯臻营养护发素, score=0.998116 [1] @ [(26, 82), (172, 82), (172, 104), (26, 104)] regconize result: 产品信息/参数, score=0.994699 [2] @ [(27, 112), (332, 112), (332, 134), (27, 134)] regconize result: (45元/每公斤,100公斤起订), score=0.961024 [3] @ [(28, 142), (282, 144), (281, 163), (27, 162)] regconize result: 每瓶22元,1000瓶起订), score=0.989327 [4] @ [(25, 179), (298, 177), (300, 194), (26, 195)] regconize result: 【品牌】:代加工方式/OEMODM, score=0.986156 [5] @ [(26, 209), (234, 209), (234, 228), (26, 228)] regconize result: 【品名】:纯臻营养护发素, score=0.996216 [6] @ [(26, 240), (241, 240), (241, 259), (26, 259)] regconize result: 【产品编号】:YM-X-3011, score=0.983581 [7] @ [(413, 233), (429, 233), (429, 305), (413, 305)] regconize result: ODMOEM, score=0.992676 [8] @ [(25, 270), (179, 270), (179, 289), (25, 289)] regconize result: 【净含量】:220ml, score=0.990945 [9] @ [(26, 303), (252, 303), (252, 321), (26, 321)] regconize result: 【适用人群】:适合所有肤质, score=0.995380 [10] @ [(26, 333), (341, 333), (341, 351), (26, 351)] regconize result: 【主要成分】:鲸蜡硬脂醇、燕麦β-葡聚, score=0.958008 [11] @ [(27, 363), (283, 365), (282, 384), (26, 382)] regconize result: 糖、椰油酰胺丙基甜菜碱、泛酸, score=0.963414 [12] @ [(368, 368), (476, 368), (476, 388), (368, 388)] regconize result: (成品包材), score=0.989339 [13] @ [(27, 394), (362, 396), (361, 414), (26, 413)] regconize result: 【主要功能】:可紧致头发磷层,从而达到, score=0.973067 [14] @ [(27, 428), (371, 428), (371, 446), (27, 446)] regconize result: 即时持久改善头发光泽的效果,给干燥的头, score=0.997995 [15] @ [(27, 459), (136, 459), (136, 478), (27, 478)] regconize result: 发足够的滋养, score=0.998616 SAVE TO ./out.jpg write_image path: ./out.jpg width=500 height=500 channel=3 data=0x39c28320
至此,就已完成PPOC在ELF 2开发板上的本地部署。希望本次实践能对屏幕前的各位小伙伴有所帮助,如有任何问题,欢迎随时交流。
关注
6072文章
45295浏览量
662079关注
5182文章
20094浏览量
327361免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com