0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vitis AI Library体验之OCR识别

发烧电子爱好者 来源:发烧电子爱好者 作者:发烧电子爱好者 2023-10-17 08:23 次阅读

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。

一、Vitis AI Library

Vitis AI Library是一组高层次库和 API,专为利用 DPU 高效执行 AI 推断而构建。它是基于 Vitis AI运行时利用 Vitis运行时统一 API 来构建的,能够为 XRT 提供完整支持。

Vitis AI Library 通过封装诸多高效且高质量的神经网络,提供易用且统一的接口。由此可简化深度学习神经网络的使用,对于不具备深度学习或 FPGA 知识的用户也是如此。Vitis AI Library 使开发者能够专注于开发自己的应用,而不是底层硬件

VALq.png

二、实现

相较于Vitis AI Runtime,Vitis AI Library 有很多已经封装好的神经网络接口,直接拿来用即可。

OCR识别基于Vitis AI Library 的ocr_pt模型,OCR识别的代码如下:

#include < glog/logging.h >

#include < iostream >
#include < memory >
#include < opencv2/core.hpp >
#include < opencv2/highgui.hpp >
#include < opencv2/imgproc.hpp >
#include < vitis/ai/ocr.hpp >
#include < vitis/ai/demo.hpp >

#include "./process_result.hpp"

int main(int argc, char* argv[]) {
  std::string model = argv[1];
  return vitis::ai::main_for_jpeg_demo(
      argc, argv,
      [model] {
        return vitis::ai::OCR::create(model);
      },
      process_result, 2);
}

主要使用Vitis AI Library 的OCR功能(lvitis_ai_library-ocr),具体文字实现的代码:

#include < sys/stat.h >

#include < iostream >
#include < opencv2/core.hpp >
#include < opencv2/highgui.hpp >
#include < opencv2/imgproc.hpp >
#include < vector >

#include "vitis/ai/ocr.hpp"

using namespace cv;
using namespace std;

Scalar colors[] = { Scalar(255, 0, 0), Scalar(0, 255, 0), Scalar(255, 255, 0), Scalar(0, 0, 255) };

static cv::Mat process_result( cv::Mat &img,
           const vitis::ai::OCRResult &result, bool is_jpeg) {

   for(unsigned int i=0; i< result.words.size(); i++) {
      std::string str;
      for(auto& it: result.box[i]) {
         str+= std::to_string(it.x)+","+std::to_string(it.y)+",";
      }
      str+=result.words[i];
      std::cout < < str < <"\n";

      cv::polylines(img, result.box[i], true, cv::Scalar(0, 0, 255), 2 );
      cv::putText(img,
                  result.words[i],
                  cv::Point(result.box[i][0].x+1, result.box[i][0].y+1 ),
                  cv::FONT_HERSHEY_SIMPLEX, 0.5,
                  cv::Scalar(0,0,0), 1);
      cv::putText(img,
                  result.words[i],
                  cv::Point(result.box[i][0].x, result.box[i][0].y),
                  cv::FONT_HERSHEY_SIMPLEX, 0.5,
                  cv::Scalar(0,255,255), 1);
   }
   return img;
}

代码中可以看出,直接使用了openCV的功能。

三、编译&运行

build.sh文件内容如下:

result=0 && pkg-config --list-all | grep opencv4 && result=1
if [ $result -eq 1 ]; then
        OPENCV_FLAGS=$(pkg-config --cflags --libs-only-L opencv4)
else
        OPENCV_FLAGS=$(pkg-config --cflags --libs-only-L opencv)
fi

CXX=${CXX:-g++}
for file in $(ls *.cpp); do
        filename=${file%.*}
        $CXX -std=c++17 -O2 -I. -o ${filename} ${file} -lvitis_ai_library-ocr -lvitis_ai_library-dpu_task -lvitis_ai_library-xnnpp -lvitis_ai_library-model_config -lvitis_ai_library-math -lvart-util -lxir -pthread -ljson-c -lglog ${OPENCV_FLAGS} -lopencv_core -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui
done

执行sh build.sh生成可执行文件。待测试的图片如下:

执行OCR识别后的结果如下:

OCR.png

总体情况识别速度很快,内容识别无误,不知道啥情况中间的“OF”不见了。
可以看出,Vitis AI Library 使开发者能够专注于开发自己的应用,而不是底层硬件,快速部署AI相关应用。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4575

    浏览量

    98797
  • AI
    AI
    +关注

    关注

    87

    文章

    26478

    浏览量

    264108
  • OCR
    OCR
    +关注

    关注

    0

    文章

    137

    浏览量

    16131
  • Vitis
    +关注

    关注

    0

    文章

    144

    浏览量

    7162
收藏 人收藏

    评论

    相关推荐

    Vitis AI Model Zone软件平台具备哪些功能?

    Vitis AI Model Zone软件平台具备哪些功能?Vitis AI Model Zone软件平台的应用范围包括哪些?
    发表于 07-09 06:44

    【KV260视觉入门套件试用体验】部署vitis-ai环境以及测试demo

    /ug1354-xilinx-ai-sdk/%E4%B8%8B%E8%BD%BD-Vitis-AI-Library 在安装->设置目标->步骤1:安装开发板镜像 开始下载镜像 进入到
    发表于 08-27 23:35

    【KV260视觉入门套件试用体验】Vitis AI 初次体验

    连接到处理器系统 (PS)。DPU 可由用户配置且包含多个参数,用户可通过指定这些参数来对 PL 资源进行最优化,或者也可以自定义启用的功能。 Vitis AI Library 是一组高层次库和 API
    发表于 09-10 13:15

    【KV260视觉入门套件试用体验】部署DPU镜像并运行Vitis AI图像分类示例程序

    / 运行输出如下: 再次运行resnet50示例程序: 成功识别了。 命令行第二个参数 /usr/share/vitis_ai_library/models/resnet50
    发表于 09-10 23:01

    【KV260视觉入门套件试用体验】五、VITis AI (人脸检测和人体检测)

    一、DPU 镜像环境配置 官方镜像已经安装好了可以在安装相关配置,示例来源Vitis AI Library用户指南3.0版本,首先需要安装DPU镜像。 1.1、克隆Vitis
    发表于 09-26 16:22

    【KV260视觉入门套件试用体验】六、VITis AI车牌检测&amp;车牌识别

    。下图显示了车牌检测的结果。 将图片中的车牌进行了框选,同事标准位置。 4.2、车牌识别 cd ~/Vitis-AI/examples/vai_library/samples/platenum
    发表于 09-26 16:28

    【KV260视觉入门套件试用体验】七、VITis AI字符和文本检测(OCR&amp;Textmountain)

    4.1、字符检测 使用命令运行代码程序。 cd ~/Vitis-AI/examples/vai_library/samples/ocr ./test_jpeg_ocr
    发表于 09-26 16:31

    【KV260视觉入门套件试用体验】八、VITis AI自动驾驶多任务执行MultiTask V3

    /Vitis-AI/examples/vai_library/samples/multitask/ ./test_video_multitask MT-resnet18_mixed_pt
    发表于 09-26 16:43

    【KV260视觉入门套件试用体验】基于Vitis AI的ADAS目标识别

    /vitis_ai_library/models -r 四、ADAS目标识别体验 (一)目标识别 接上HDMI显示器、键盘&鼠标,在KV260上执行(如果在SSH或串口上执行会提示cv
    发表于 09-27 23:21

    【KV260视觉入门套件试用体验】Vitis-AI加速的YOLOX视频目标检测示例体验和原理解析

    会对关键源码进行解析。 一、Vitis AI Library简介 上一篇帖子中,我们了解了Vitis统一软件平台和Vitis
    发表于 10-06 23:32

    【KV260视觉入门套件试用体验】Vitis AI 构建开发环境,并使用inspector检查模型

    FFT运算(Vivado) 四、硬件加速—使用PL加速矩阵乘法运算(Vitis HLS) 五、Vitis AI 构建开发环境,并使用inspector检查模型 六、
    发表于 10-14 15:34

    【KV260视觉入门套件试用体验】Vitis AI Library体验OCR识别

    Vitis AI Runtime,Vitis AI Library 有很多已经封装好的神经网络接口,直接拿来用即可。
    发表于 10-16 23:25

    使用数字识别AI实现OCR的资料合集

    本文档的主要内容详细介绍的是使用数字识别AI实现OCR的资料合集。
    发表于 07-17 08:00 20次下载
    使用数字<b class='flag-5'>识别</b>和<b class='flag-5'>AI</b>实现<b class='flag-5'>OCR</b>的资料合集

    如何使用Vitis AI Library来安装、使用和开发应用

    Vitis AI Library 是一组高层次库和 API,专为利用深度学习处理单元 (DPU) 来高效执行 AI 推断而构建。
    的头像 发表于 10-10 10:26 1448次阅读

    使用Vitis-AI进行车牌识别

    电子发烧友网站提供《使用Vitis-AI进行车牌识别.zip》资料免费下载
    发表于 06-27 09:49 2次下载
    使用<b class='flag-5'>Vitis-AI</b>进行车牌<b class='flag-5'>识别</b>