Amiya · 2021年11月29日

FPGA芯片同时识别22张人脸,总共需要几步?

1:FPGA与生产力

FPGA被称为万能芯片,通过逻辑编程,可以实现基本上所有功能,其具体原理可见《大话FPGA-“万能的芯片?”》。

那么问题来了,所以如果用FPGA加速人工智能,实现深度学习算法,难度大不大?

难度很大!

如果从AI算法开始,然后从verilog开始编写,调试,优化,再下载到FPGA中运行,中间需要众多的人力,物力,没有个一年半载,很难有收获。

但是如果有一个FPGA的APP库,里面有各种人工智能APP,可以下载相应的程序到FPGA中,例如下图所示:

图片.png

有人脸识别的智能相机,缺陷检测,ReID(行人检测/行人跟踪技术),语音识别,多目标人脸识别,智能驾驶辅助等等。

这些应用直接编译下载相应应用到FPGA中,用基于现成的应用进行开发,相对流程就简化很多,达到“即下即用”的效果。 可以很快形成的生产力。即使有定制的需求,也可以迅速评估路线的可行性,在此基础上二次开发。这个就比直接从verilog编码开始要更快一些,也效率更高。

那这个怎么操作?

2:怎么做

用FPGA搭建了一个人脸识别系统需要几步?

如果用搭载zynq ultrascale+  FPGA的  KV260。总共用了三步:

第一步:组装配件:

KV260是一个基于zynq ultrascale+的FPGA系统,内部包括CPU,FPGA,GPU等等资源。

红色的散热片下面就是Zynq UltraScale+的芯片。上面有一个四核A53处理器,还有256K LC的逻辑资源的FPGA,属于“双剑合璧”的架构。

配件包括,

  • 1:电源: 系统供电。
  • 2:SD卡:烧写操作系统。
  • 3:摄像头:视频输入。
  • 4:USB转串口线:系统串口输出。
  • 5:网线:用于连接互联网,下载智能应用。
  • 6:HDMI线:用于视频输出。

图片.png

然后将这些部件组装起来。

图片.png

第二步:下载应用
  • 1:下载linux系统下载到TF卡里,插入TF卡,上电后linux启动。
  • 2:连接网线,检查链接性,可以直接ping一下网关,看看是不是连接成功
  • 3:可以上网后,直接选择安装相应的应用,就是智能摄像头,可以人脸识别。

下图是下载安装应用,点击下载命令后 ,注意,一定要在root模式下下载,sudo dnf install packagegroup-kv260-smartcam。

安装时间有点长,装上后,让子弹飞一会。

图片.png

第三步:启动测试

启动应用开始测试,在linux系统中挂载应用,然后启动启动人工
sudo smartcam -mipi -W 1920 -H 1080 -r 30 --target dp

图片.png

这个和大象关在冰箱里分为几步有异曲同工之妙!然后,效果怎么样。

3:效果怎么样?

这玩意是这个样子的。
图片.png

我利用这个FPGA系统装在了一个直播杆,然后配上了一个显示器,看起了有点像一个基于工业用相机的直播室。有了这个“直播室”,看了一下,没有美颜效果。直播就算了。看看这玩意AI效果如何?

于是给KV260看了一个欧洲杯足球比赛颁奖视频。为什是欧洲杯颁奖,主要是这个视频里同时出现的人多,并且画面一直在动,主要想测试一下,这个系统的处理能力,

  • 1:人脸识别的数量。
  • 2:处理时延。

那种两三个人的视频,测试不出这个人工智能芯片的能力。并且画面一直不动,对于时延也没有太高的要求。像是小区门禁的那个人脸识别就会感觉明显延迟。

那可以看看KV260能不能识别视频中多少人脸?

图片.png

这个比赛是欧洲杯颁奖的比赛,可以看到,kv260立即就识别到了所有夺冠队员的面部。

这个效率很高,我数了一下,最多时,有22张人脸可以可以同时被识别捕捉到。主力和替补全部都捕捉到了。

图片.png

能够同时捕捉到22张人脸,这个也体现了这个芯片的人脸的识别能力。并且画面一直在动态切换,具体时延控制不错,只不过就没有办法定量来分析一下。

4:系统及原理

看完FPGA实现这个系统的效果了,下面我们来点干货。

人工智能芯片系统,需要有哪些部分组成?

  • CPU系统:负责OS运行,系统初始化,数据流控制,信号传输,外设管理等等。
  • DPU系统:(Deep Learning Processor Unit,深度学习处理器)负责深度学习算法的加速,是一个智能加速引擎引擎。

简单来说:两个部分,控制和计算。

这个就是经典的CPU+FPGA的方案,很多嵌入式工业领域都用此方案,一般是ARM+FPGA;

ARM负责控制管理,各种外设的管理,FPGA负责AI加速

而Zynq UltraScale+就是把这两个做到了一个芯片上,下图就是这个芯片的架构。

图片.png图片.png

其主要资源包括:四核CPU A53,一个Mali GPU,还有支持实时CPU,双核R5F。

DPU这个词,让人联想到xilinx收购深鉴科技,这场收购当时在业界引起了很大影响力。

当时深鉴科技的核心技术,就是基于FPGA的DPU(Deep Learning Processing Unit)技术,当时,深鉴科技号称神经网络压缩编译技术,它不仅可以将神经网络压缩数十倍而不影响准确度,还可以使用“片上存储”来存储深度学习算法模型,减少内存读取,大幅度减少功耗。

现在来看,不知道在Zynq UltraScale+这款芯片上,是不是一脉相承的技术实现,从性能上还是很强的。

其主要的工作流程和性能指标如下图所示:

图片.png

支持11路mipi的摄像头,11个摄像头,应该足够一个车需要用到的摄像头。

反正能够支持到这么多摄像头的芯片,我印象中还是最多的。

除此之外,最重要的是,这颗芯片FPGA可编程资源非常丰富:256K logic Cell; (logic cell 内部就是LUT和REG )。  其在333Mhz  其配置在可编程逻辑的 深度学习处理器DPU能力达到1.3Tops。

图片.png

除了智摄像头,还有一些其他的应用可以供不同应用选择。例如智能驾驶,语音识别,安防检测等等。

这里重点提一下ADAS(高级驾驶辅助系统)利用安装于车上的各式各样的传感器, 在第一时间收集车内外的环境数据, 进行静、动态物体的辨识、侦测与追踪等技术上的处理, 从而能够让驾驶者在最快的时间察觉可能发生的危险, 以引起注意和提高安全性的主动安全技术。包括驾驶员疲劳预警和身份识别,人脸识别在乘用车的个性化驾驶舱,以及未来的商业模式都是非常必要的。也有一些原型在做。

总结一下:

  • 1:处理能力:KV260用了zynq ultrascale+  mpsoc 这颗芯片,内部有四核应用处理器,GPU,实时处理器,以及256K LC的FPGA,硬件资源足够来处理人工智能方面的应用。
  • 2:外设接口:KV260支持11路摄像头,能够支持类似汽车辅助设备ADAS ,先进驾驶辅助系统这类应用。
  • 3:软件配套:除了硬件之外,还有很多的软件套件,例如人脸识别,入侵检测,自动驾驶等等一些应用,方便二次开发。

FPGA通过深度学习可以达到毫秒级别的应用,吞吐量大,时延低,这个可能一个优势。

前面的人脸测试中,同时识别22张人脸,也侧面说明了人脸识别的数量很多,延时较低。

为什么是22张,是因为找的视频中也就是22张人脸。当然,这个测试只是提供一个肉眼可以感受的角度。实际的应用可以根据需求进行测试,从测试结果进行评估,从而加速design in的过程。

点击“原文链接”可以看到完整视频。

作者:申墨-歪睿老哥
原文链接:https://mp.weixin.qq.com/s/SAFS01kdk_CJ42vwtdukoA
微信公众号:
歪睿老哥公众号二维码.jpg

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
19301
内容数
1296
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息