时间:2024-08-01 来源:网络搜集 关于我们 0
加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~
来源:新机器视觉@微信公众号
关键词: FPGA,ML平台,机器学习,嵌入式视觉,推理引擎
随着摄像头和其他设备产生的数据在快速增长,促使人们运用机器学习从汽车、安防和其他应用产生的影像中提取更多有用的信息。专用器件有望在嵌入式视觉应用中实现高性能机器学习 (ML) 推理。但是此类器件大都处于早期开发阶段,因为设计人员正在努力寻找最有效的算法,甚至人工智能 (AI) 研究人员也在迅速推演新方法。
目前,开发人员一般使用针对ML的可用FPGA平台来构建嵌入式视觉系统,以期满足更高的性能要求。与此同时,他们可以保持所需的灵活性,以跟上机器学习发展的步伐。
本文将介绍ML处理的要求,以及为何FPGA能解决许多性能问题。然后,将介绍一个合适的基于FPGA的ML平台及其使用方法。
列表1:此代码片段来自Intel OPENVINO 工具包中的安全屏障摄像机示例应用程序,演示了使用Intel推理引擎C++库API将模型及其参数读入推理引擎的设计模式。(代码来源:Intel)
为了执行推理,该代码加载数据并调用submitRequest方法,该方法启动推理周期并等待结果,然后显示识别的车牌字符(列表2)。
滑动滚轮查看详情↓
if (LPR.enabled()) { // licence plate // expanding a bounding box a bit, better for the license plate recognition result.location.x -= 5; result.location.y -= 5; result.location.width += 10; result.location.height += 10; auto clippedRect = result.location & cv::Rect(0, 0, width, height); cv::Mat Plate = frame(clippedRect); // ----------------------------Run License Plate Recognition LPR.enqueue(Plate); t0 = std::chrono::high_resolution_clock::now(); LPR.submitRequest(); LPR.wait(); t1 = std::chrono::high_resolution_clock::now(); LPRNetworktime += std::chrono::duration_cast<ms>(t1 - t0); LPRInferred++; // ----------------------------Process outputs cv::putText(frame, LPR.GetLicencePlateText(), cv::Point2f(result.location.x, result.location.y + result.location.height + 15), cv::FONT_HERSHEY_COMPLEX_SMALL, 0.8, cv::Scalar(0, 0, 255)); if (FLAGS_r) { std::cout << "License Plate Recognition results:" << LPR.GetLicencePlateText() << std::endl; } } cv::rectangle(frame, result.location, cv::Scalar(0, 0, 255), 2); }列表2:此代码片段来自Intel OPENVINO工具包中的安全屏障摄像机示例应用程序,展示了加载模型、执行推理和生成结果的设计模式。(代码来源:Intel)
Intel的OPENVINO方法强调平台重定向,而Lattice的SensAI平台完全聚焦于FPGA推理。SensAI平台的特性之一是为DNN架构(包括CNN和一个称为二值化神经网络 (BNN) 的紧凑架构)提供FPGA IP。针对嵌入式视觉,SensAI CNN IP为完整的推理引擎提供框架,将控制子系统、存储器、输入和输出的接口与实现不同类型模型层(包括卷积、BatchNorm归一化、ReLu激活、池化和其他)的资源结合在一起(图4)。
图4:Lattice Semiconductor CNN IP实现了一个完整的推理系统框架,将专用引擎和用于控制、存储器、输入、输出的接口结合在一起。(图片来源:Lattice Semiconductor)
为了实现CNN模型,开发人员首先要在针对ECP5 FPGA的Lattice Diamond设计环境中或针对其他Lattice FPGA系列的Radiant设计环境中,利用Lattice Clarity配置工具配置CNN。这里,开发人员可以指定模型类型(CNN或BNN)、卷积引擎数(最多8个)及每层的内部存储大小(最多16Kb)或二进制大对象 (blob)。配置CNN之后,开发人员使用设计环境生成核心,作为FPGA比特流。
开发人员单独将通过Caffe或TensorFlow开发并训练好的模型导入SensAI平台。这里,Lattice神经网络编译器将训练好的Caffe或TensorFlow模型转换为一组包含神经网络模型参数和执行命令序列的文件。SensAI平台将来自设计环境和编译器的单独输出一起并入FPGA,以提供最终的推理模型(图5)。
图5:Lattice Semiconductor SensAI平台将其CNN和BNN IP与其神经网络编译器结合在一起,使开发人员能够转换Caffe或TensorFlow模型,以在Lattice FPGA上作为推理引擎来运行。(图片来源:Lattice Semiconductor)
针对嵌入式视觉应用,Lattice LF-EVDK1-EVN嵌入式视觉开发套件(EVDK) 为运行CNN模型推理提供了理想的目标平台。EVDK提供了一个完整的80x80mm三板堆叠式视频平台,包括Lattice CrossLink视频输入板、带ECP5 FPGA的处理器板和HDMI输出板。开发人员可以将EVDK用作Lattice提供的多个示例CNN应用的目标平台。例如,Lattice速度标志检测参考设计运用EVDK来展示SensAI CNN IP在典型汽车应用中的应用(图6)。
图6:Lattice Semiconductor速度标志检测参考设计利用SensAI平台和Lattice LF_EVDK1-EVN嵌入式视觉开发套件提供一个完整的推理应用,开发人员可以对其立即操作或详细探索。(图片来源:Lattice Semiconductor)
此示例应用程序的项目文件包括全套文件,从Caffe caffemodel和TensorFlow pb格式的模型开始。因此,开发人员可以探索这些模型的细节。例如,使用TensorFlow import_pb_to_tensorboard.py实用程序,开发人员可以导入Lattice提供的pb模型,以查看此示例应用程序中使用的CNN的细节(图7)。本例中,所提供的模型是由四个“Fire”模块组成的序列,每个模块包括:
Conv2D 层,执行 3 x 3卷积以从输入流中提取特征
激活层,执行 BatchNorm 归一化,然后执行修正线性单元(ReLU) 激活
MaxPool 池化层,用于对前一层的输出进行采
图7:Lattice速度标志检测示例应用程序包括TensorFlow pb模型,开发人员可以将其导入TensorBoard进行详细检查。注意:数据向上流过此图中的各层。(图片来源:Digi-Key Electronics)
开发人员可以使用SensAI平台生成模型文件,完成前面描述的模型流程。或者,开发人员可以使用所提供的文件直接跳转到部署阶段。任一情况下,文件都是通过接有适配器的microSD卡加载到EVDK中。
在操作中,EVDK上的摄像机向ECP5 FPGA提供视频流,其中配置的CNN加速器IP执行命令序列以执行推理。同任何推理引擎一样,每个输出通道都会产生一个结果,指出与该输出通道相关联的标签即为输入图像的校正标签的概率。本例中,模型是用每小时25、30、35、40、45、50、55、60和65英里的限速标志的标注图像进行训练的。因此,当模型在其输入字段中的任何位置检测到限速标志时,它会显示检测到的标志对应于每小时25、30、35、40、45、50、55、60或65英里限速的概率(图8)。
图8:Lattice速度标志检测演示运行在Lattice EVDK上,对视频输入流执行推理,生成输出值,指示捕获到的图像对应于与该特定输出相关联的标签的可能性。本例中,它显示限速标志最有可能是25mph。(图片来源:Lattice Semiconductor)
为在嵌入式视觉应用中运用机器学习,开发人员使用可用硬件平台实现所需性能水平的能力受到了限制。然而,高性能FPGA的出现使得开发人员可以构建性能接近GPU的推理引擎。采用专为嵌入式视觉设计的机器学习FPGA平台,开发人员可以专注于特定需求,使用标准机器学习框架训练模型,并依靠FPGA平台实现高性能推理。
-End-
*延伸阅读
嵌入式人工智能大会技术干货汇总(中科创达&清华大学&高通联合主办)
嵌入式视觉交流群
添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可进群。(已经添加小助手的好友直接私信)
△长按添加极市小助手
其他方向如目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割、姿态估计、超分辨率、OCR 等,也可扫码添加极市小助手拉你进群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~
△长按关注极市平台
觉得有用麻烦给个在看啦~