中科亿海微杯赛题分析


赛题任务

在中科亿海微的FPGA板卡上建立视频流,并完成至少一项基于识别的图像处理应用

http://univ.ciciec.com/nd.jsp?id=889#_jcp=1 (赛题链接)

题目解读

关键词: 目标检测 图像处理 FPGA 视频流 AI模型

1、什么是视频流?如何在FPGA上建立视频流?

视频流就是指一个连续的视频图像从输入到输出的整个过程,可以抽象成A端口输入视频数据,B端口输出视频数据这么一个模型。 在FPGA上举个视频流例子,比如我们可以通过一个OV5460摄像头采集图像,然后通过DVP接口传入FPGA,接着通过FPGA之后从HDMI接口输出到屏幕。此时摄像头+DVP接口组成了A端口,而HDMI+屏幕组成了B端口,这就完成了一个完整的视频流。而FPGA在其中承担的作用就是将DVP接口和HDMI接口衔接起来,使得视频数据能够完成闭环。

2、什么是图像处理?如何在FPGA上进行图像处理?

什么是图像处理? 广义上来说任何改动了原始输入的图像数据的操作,都属于图像处理。图像处理通常基于两个目的——要么是为了优化图像质量,要么是为了提取图像信息。比如我们常说的白平衡锐化色差矫正就是为了优化图像质量,边沿检测梯度检测等就是为了提取图像信息。 如何在FPGA上进行图像处理? 聪明的你大概已经猜到了,刚刚在第一个问题里,我们提出了A端-B端的概念,第二个问题的第一问我们提出了改动原始图像数据这个概念,那么很容易猜到,在A端口到B端口的中间增加一些图像处理算法不就可以完成简单的图像处理了吗? 而A->B这一中间段在刚刚的例子里,不就是FPGA吗?整个过程其实就是将传统算法写成HDL代码,综合出电路在FPGA上,视频图像数据从A端输入进入到FPGA经过写好的算法处理输出到B端。至此你已经知道FPGA图像处理是怎么个事了。

3、如何在FPGA上实现目标识别?

刚刚的两个问题其实已经足以解答第三个问题,采集数据-A口进,加入识别算法,B口出-显示识别结果。 但是问题是,识别算法该怎么做?识别算法主要分为两种,一种是传统的模板匹配算法,另一种是AI识别算法(赛题鼓励AI识别)。这两种算法网络上都有大量的开源代码和教程,甚至有训练好的开源模型,同学们根据关键词检索,可以自行学习。

设计指标(基础)

  • 在EQ6HL130板卡上建立视频流;

    Link-Sea-H6A图像处理套件是中科亿海微基于自研芯片EQ6HL130开发的适用于图像处理应用开发的套件,基于该套件的硬件基础进行开发。建立视频流应该很简单,大概只需要做简单的移植工作,官网资料显示该板卡支持OV5640摄像头,通过DVP接口与FPGA实现图像的传输。意味着应该会有相应的demo。片上有VGA,HDMI,LCD接口输出支持,那么图像显示部分应该也会有相应的demo。蹲群资料,或者直接去找客服要应该是能要到的。

  • 完成识别功能,识别数量尽可能多,精度尽可能高;

    在建立视频流的基础上继续做图像处理,这里的硬性要求是做识别,而且对种类和精度提出了要求。可以去移植正点原子的识别demo,模板匹配的和CNN神经网络的应该都有。

设计指标(进阶)

  • 设计应尽量可能使用到开发板上的外设接口

    对片上接口应用提出了要求,建立视频流已经用了两个接口了,假设使用ov5460摄像头输入hdmi输出,那么就是用了DVP和HDMI连G个接口。可以继续尝试使用其他接口,例如使用网口连接以太网实现视频导出、使用uart外接按键动态修改参数、使用多摄像头输入等方案

  • 对数据通路架构和时序进行优化设计,尽可能提高视频流帧频;

    影响视频帧率的最大因素是时钟频率,要对时序设计进行优化,首先要避免时序错误,然后在此基础上尽可能地提高时钟频率。可以考虑流水线工作设计、数据缓存等方案提高架构的频率许可,以达到更高的帧率需求。

  • 鼓励参赛队如使用AI模型进行识别

    鼓励队伍采用AI神经网络进行识别,而不是使用传统算法。

    评分机制

    具体材料见官网要求,在此只做分析总结

    初赛

    完成上述指标,提交工程和设计报告。其中图像处理模块设计占总分的50%,意味着非AI处理方案几乎不可能进入国赛。

    分区决赛

    现场演示+答辩

    全国总决赛

    未给出


    学习路线

    该赛题比较简单,四步冲击国奖 🚀

    • 1是阅读板卡manual并学习软件开发平台
    • 2是找demo搭建视频流
    • 3是选取图像处理算法进行识别
    • 4是优化时序提高帧率,国奖到手。