评测 为FPGA插上AI翅膀——sensAI加持下的Lattice嵌入式视觉开发套件

 

曾几何时,FPGA因为小众,门槛高而一直处于让学生、嵌入式工程师群体仰望的存在。...





曾几何时,FPGA因为小众,门槛高而一直处于让学生、嵌入式工程师群体仰望的存在。然而,近年来,FPGA因灵活性广泛应用在各行各业,企业对FPGA的偏爱也让FPGA越来越受到工程师、学生的关注。这就好比一条导火索,人们对FPGA愈加重视,相应的各种FPGA资料,各种FPGA应用,各种FPGA培训课也相继问世,瞬间拉短了人们与FPGA的距离,降低了FPGA的入门门槛。尤其在需要极具细分化领域的人工智能产业爆发后,FPGA因为万金油角色,俨然已经成为人工智能的后花园,是边缘类计算灵活性最高的嵌入式AI硬件平台的第一选择。

目前AI产业在硬件产品中有实质性突破的无非是基于语音类的智能音箱设备以及基于视觉类的摄像头产品系列,而在这两者之中笔者较为看好基于视觉类的AI应用,毕竟针对自然语言处理的AI应用目前来看仍旧太弱智,应用空间有限。所以此次爱板网要给大家分享一套基于Lattice FPGA的嵌入式视觉开发套件,这是货真价实花了199美金从海外淘回来的宝贝,为什么推荐它?除了套件本身,笔者更看中的是其背后的sensAI Stack,原本看起来只是很普通的视觉开发套件,但是有了sensAI Stack,就好像给FPGA开了挂,直接插上了AI翅膀。至于效果到底如何,相信看完本文你就会明白了。

莱迪思嵌入式视觉开发套件

第一眼看到莱迪思嵌入式视觉开发套件,你会被它的包装设计征服,科技感十足又很明显的突出此次开发套件的主题——视觉。



不过,虽然包装盒看起来很大,但内部的配件真没几个,但是应对正常的上手开发是没有什么问题。



配件除了嵌入式视觉开发套件本身外,还包括如下这些:

一个12V/1.5A的电源适配器

一根miniUSB线缆

一份简易指导使用说明

一个针对ECP5UM-85F  FPGA的Licence

对,你没看错,Lattice为嵌入式视觉开发套件的核心器件ECP5UM-85F FPGA提供了免费的Licence,不过暂时只有1年期。

莱迪思嵌入式视觉开发套件为正方形PCB板型,大小为80mm*80mm,总共有3块,通过定位螺丝固定,板子与板子都有相应的连接器接口,咋眼一看貌似非常复杂,但是实际理解后你会觉得这样的设计虽然称不上巧夺天工,但是至少对理解各个板子的功能特点有非常大的好处,而且如果板子真有问题,也容易定位问题跟解决问题,要为板卡的设计师点赞。



从侧面来看,开发套件的结构如下,接口的分布也是按照板卡功能实现的逻辑在对应的板子上,比如电源以及miniUSB接口(串口/调试接口)都在中间的视频处理板子上。



HDMI接口在最底下的视频输出板子上。



整个嵌入式视觉开发套件从上往下来看大致可以区别为带有双摄像头的视频输入板、基于ECP5 FPGA的视频处理板以及带有HDMI收发器的视频输出板。



当然,这样分类比较笼统,官方则有很专业的命名:(VIP全称为 Video Interface Platform)

Crosslink VIP输入桥接板

ECP5 VIP处理板

HDMI VIP输出桥接板

肯定有人会问这几块板子是如何建立通讯的?如何实现从图像采集到输出的呢?其实,从命名就能猜出一二,这里,笔者就拆下板子,分别对每个板子的功能特色做一些说明。

板子的一面(假装是正面)



板子的反面(与上面板子的排列一一对应)



Crosslink VIP输入桥接板

Crosslink VIP输入桥接板也就是先前图中的第一块板子,从命名也能猜想到功能的一二,主要是作为视频输入的桥接,板载的一些资源和接口就不一一介绍了,看下面的图示很清楚。





重点说下如何实现视频数据的桥接这部分功能,如下图的框图所示,Crosslink VIP输入桥接板通过两颗MIPI CS2接口的摄像头采集图像,众所周知,MIPI接口已经大量在手机等消费类电子上采用,无论成本以及供货都有保障,Crosslink VIP输入桥接板采用这种摄像头接口显然也有这方面考虑,而MIPI是串行输入的接口,而且在板子上还是双摄像头输入,所以板子上搭载了一颗很重要的接口转换芯片,同样出自Lattice的Croosslink系列可编程ASSP LIF-MD6000,它将串行数据重新编码并转换为并行的RAW10数据发送到Image Merger,两路摄像头的RAW数据合并后再以并行CMOS接口传输到ECP5 VIP处理板上的ECP5 FPGA上处理。



ECP5 VIP处理板

ECP5 VIP处理板也就是套件中的中间那个板子,主要功能是作为视频图像的处理,板载的资源分布同样看下面两张图即可。





这里要重点说的是板子上的核心器件,同样也是整个嵌入式视觉开发套件的核心器件,Lattice LFE5UM-85F-BG756 FPGA。



直观来看,板子上的这颗Lattice LFE5UM-85F封装非常大,整个FPGA的大小为27mm*27mm,在整个ECP5系列FPGA中也属于规格配置最高的一款产品,具体资源可以参考喜下表。



在这个嵌入式视觉开发套件中,ECP5 FPGA主要功能是处理来自Crosslink VIP输入桥接板的合并后的传感器,并将处理后的并行图像数据发送到HDMI VIP输出桥接板上。ECP5图像处理的系统功能框图如下,主要包含了:

Auto Brightness:可以调整图像数据的亮度

Debayer:每个时钟周期都将RAW10数据转换成单独的红绿蓝像素

Color Space Converter:默认情况下,直接来自图像传感器的颜色与现实世界不匹配,Color Space Converter就是用来纠正这个问题

Gamma Correction:这是一种对视频帧进行的预失真校正,以抵消显示系统的非线性行为



HDMI VIP输出桥接板

最后来看下HDMI VIP输出桥接板,这也是最底层的一块板子,这块板子的电路也相对简单,主要是一个HDMI发射器的电路。



HDMI VIP输出桥接板接收来自ECP5处理后的数据(RGB数据)并转换为可以在HDMI显示器上显示的HDMI格式数据,系统功能框图如下所示。



了解了每个板子的属性后再回到整个嵌入式视觉套件上就非常容易理解了,整个开发套件构建了从图像采集到图像输出的硬件架构,中间涉及到了双摄像头采集数据的合并,数据的转换,数据的处理,数据的控制以及输出,大致的工作流程如下图所示。



当然,如果仅仅是这样的话还谈不上AI,如何让这个嵌入式视觉套件插上AI的翅膀呢?别急,这部分内容会在上电使用中体现。

上电使用

Lattice嵌入式视觉开发套件出厂内置了一个双摄像头采集图像以及在同屏实现两个画面输出的demo,上电即可工作。我们只需要准备标准的HDMI线缆以及一台HDMI的显示器即可,实际演示画面如下。



这个Demo也只能体现Lattice的Crosslink桥接可编程芯片以及ECP5 FPGA的硬实力,但是跟AI似乎没有任何关系?别急,Lattice sensAI在向你招手。

Lattice sensAI

Lattice sensAI是什么?真有这么神奇吗?

众所周知,计算是FPGA与生俱来的优势,但更多时候,计算是客户的核心技术,甚至有部分客户还没有这项技术,那么如何能够快速地利用 FPGA实现计算?sensAI就是为此而生,这是Lattice基于iCE40 UltraPlus和ECP5 FPGA系列开发平台推出的新型全套开发生态系统,旨在实现机器学习推理在大众物联网应用中实现快速部署。

先来看下sensAI的结构:



如上图所示,Lattice sensAI应该包括几个重要的方面:

底层硬件的开发平台,比如iCE40 UltraPlus,ECP5 FPGA嵌入式视觉开发套件

神经网络加速IP核,这也是Lattice的核心武器

从Caffe/TensorFlow 到 FPGA 的神经网络编译器工具,让神经网络通过转换支持上述Lattice的神经网络加速IP核

相关的应用、Demo

看到这,相信大多数人都能明白,sensAI就是Lattice提供的一个从硬件底层到上层应用生态完整的开发包,它提供给客户完整且极易上手的产品应用开发体验,比如在大众物联网应用的传感器桥接和数据融合中,增加更多智能以实现低延时、低功耗的计算,即客户手中有数据和样本,就可以在 FPGA 中做快速计算。

Demo烧录

针对笔者手上的嵌入式视觉开发套件,Lattice官方也提供了几个现成的demo使用,如下所示,值得注意的是,官方还标注了对应Demo在对应平台上运行的功耗,功耗很低,都不超过1W。Demo中Face Detection以及Key Phrase Delection是针对iCE40 FPGA,而Face Tracking、Object Counting以及Speed Sign Detection是针对此次的ECP5平台使用。



以Speed Sign Detection Demo为例,如下图所示,主要包含了3个需要烧录的文件,怎么用?



Dual_Camera_to Parallel_Crosslink.bit是烧录到Crosslink VIP输入桥接板上的SPI Flash中;

VIP-SpeedSignDetect.bit是烧录到ECP5 VIP处理板上的SPI Flash中;

而VIP-SpeedSignDetect bin文件(也就是转换后的神经网络)是通过Win32disk烧录到额外的MicroSD卡中。

可能大家都注意到了,嵌入式视觉开发套件上是没有MicroSD卡槽的,怎么办?只能自己搭建一个了。笔者拿的是以前在Ateml板子上遗留下来的一款MicroSD扩展板,将MicroSD卡对应的信号线连上即可。



由于FPGA的配置文件是烧录到SPI Flash中,在这里笔者走过了好大的一段坑:

第一,Lattice这个嵌入式视觉开发套件其实包含了两种版本,Rev B和Rev C,笔者淘到的是Rev B版本,B版本和C版本的不同之处在于板载的SPI Flash,由于FPGA的配置文件是烧录到SPI Flash中的,所以要知道Flash的具体型号。

第二,在开发套件的ECP5 VIP处理板以及Crosslink VIP输入桥接板上分别有一颗SPI Flash,对应配置相应板子上的FPGA,但是,问题就在这里,笔者拿到的Rev B版本上,ECP5 VIP处理板上的Flash为Micron N25Q128A;Crosslink VIP输入桥接板上的Flash为ST 25PX16VG,但是在Lattice官方提供的编程器软件中没有找到ST的这颗器件选项,不过经过测试,发现可以选用Micron M25PX16这颗器件兼容使用。

板子上SPI Flash的烧录工具采用Lattice Diamond Programmer,这里特意列出来,主要是不同的文件需要对应不同的SPI Flash烧录。

ECP5 VIP处理板上的烧录Flash选择Micron N25Q128A。



Crosslink VIP输入桥接板上烧录Flash选择Micron M25PX16(板卡实际上的器件是ST 25PX16VG,很坑)。




通过Lattice工具转换好的训练好的神经网络模型bin文件通过 win32disk烧录到MicroSD卡中。




三步都完成后上电即可看到实际demo的演示效果,这是一个道路速度标志检测的demo,其工作原理如下框图所示,主要有3个点:从MicroSD卡中加载神经网络;摄像头采集、转换、传输图像数据,这里不同的是,摄像头采集到的图像数据要传输到ECP5 FPGA的MLE中去 去加速计算;ECP5 FPGA中会配置一个MLE(机器学习引擎,也就是CNN网络加速器),加速计算摄像头采集到的图像数据与神经网络的匹配,最后将计算结果输出到显示器上。



所以在实际演示中可以看到检测到道路标志限速多少,会直接发送在输出显示器对应的速度柱状图上,而且这个计算速度非常快,这类型的应用可以应用到无人驾驶相关的产品中去。



对应40miles的结果最为匹配,但实际结果笔者并不是太满意,因为45miles,60miles的匹配结果居然也这么高,精确度还是不够。



但有一点值得赞叹,通过Lattice这个嵌入式视觉套件实际检测的速度还是让人满意的,反应非常快,有兴趣的可以看下下面这个视频。



另外还有一个脸部跟踪的Demo也试了下,但结果不太满意,这里也就不演示了。FPGA在AI领域虽然因为灵活性可以“来去自由”,但目前而言的问题是你真正要用好它,需要有训练得很OK的神经网络(自己的算法,自己的数据)。毕竟从Lattice嵌入式视觉套件体验下来,CNN网络的加速是没有问题的,话句话说,这个视觉套件做到了目前它可以实现的最好的方式,然而你想将它彻底利用好,你需要有优质的大数据训练好的神经网络模型,这步显然要阻挡不少个人开发者。当然,你也可以期盼Lattice官方会给你提供这种全方位的服务,那我只能对你说“God Bless you”!

所以综合来看,笔者的观点依旧没有改变,虽然有sensAI加持,但是Lattice这个嵌入式视觉开发套件还是适用于有实力的企业用户选择。值得一提的是,目前这个套件属于199美金的优惠价格阶段,从官方可以了解到这个价格只维持到今年年底,过后可能会涨价了,有兴趣,对自己公司实力有信心的企业用户千万别错过了。


    关注 爱板网


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册