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

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

3天内不再提示

详解百度大脑EdgeBoard出色的视频处理技术

火花 来源:火花 2020-05-09 10:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

背景介绍

视频处理是人工智能应用中的一个重要方向,对于一款端上部署的AI加速产品,其视频接入能力是产品技术实力的重要体现,同时也直接影响用户的产品体验。端上的嵌入式设备,受制于本身的CPU等硬件资源,同时支持多种视频设备及多种视频格式是极大的挑战。

EdgeBoard是百度基于FPGA打造的嵌入式AI解决方案,能够提供强大的算力,并支持定制化模型,适配各种不同的场景,并大幅提高设备的AI推理能力,具有高性能、高通用、易集成等特点。EdgeBoard作为一款面向各个层次的AI开发者的硬件平台,兼顾了多种视频输入,包括MIPI、BT1120、USB摄像头、IPC(IPCamera,网络摄像头)、GigE工业摄像头,这极大地体现出EdgeBoard在视频处理上出色的技术实力,而同时支持如此多的视频接入设备在一般的AI端产品上也是不常见的。

本文将详细介绍EdgeBoard上的视频处理方案,如何兼顾效率和通用性,在二者之间取得平衡,最大程度上满足用户的需求。

LinuxV4L2结构

内核V4L2模块

Linux系统发展至今,以其优越的跨平台特性和扩展移植性在嵌入式操作系统领域占据很大的份额,EdgeBoard采用的是XilinxPetaLinux工具打造的Linux内核,操作系统采用的是RootFS,如果用户需要Ubuntu操作系统,可以直接在Xilinx论坛上获得arm64 Ubuntu操作系统。

Video4Linux2(简称V4L2)是Linux下关于视频采集相关设备的驱动框架,为驱动和应用程序提供了一套统一的接口规范。支持三类设备,分别会在/dev目录下产生不同的设备节点:

1.视频输入输出设备(video capture device,video output device),分别是提供视频捕获功能的摄像头类型设备和提供视频输出功能的设备,对应的设备名为videoX。这是我们最常用的一种设备类型。

2.VBI设备(Vertical Blanking Interval),对VBI数据进行控制、发送或抓取的设备,对应设备名vbiX。

3.radio设备,提供FM/AM发送和接收的设备,对应设备名radioX

V4L2在Linux系统中的结构图如下:

从图中可以看出,驱动的框架层次分明,最上层通过字符设备提供video和media两种控制接口,分别从视频流控制(video)和媒体子设备控制(media)两种不同的角度抽象出操作接口。中间内核驱动层通过三层设备驱动分别从视频抽象,V4L2设备功能定义,子设备功能定义三个层面展开,模块化的设计提供了非常完善的扩展性。最下方是硬件层,除了提供常用摄像头传感器的功能外,对于常用的视频转换也有很好的支持。

在应用层的软件支持也非常丰富,比如广泛使用的FFmpeg、Gstreamer、LiVes、MPlayer等对本地视频设备的支持也都是通过V4L2提供的接口实现的。

XilinxV4L2驱动结构

深入理解V4L2框架对于FPGA视频方案的灵活配置有很大的帮助作用,也方便FPGA开发人员快速验证视频功能。本节以Xilinx视频处理子系统为例,介绍一套完整的V4L2内核功能的实现,如下图。

结合上一节提到的V4L2结构图可以看出V4 L2内核对应了全部视频框架的内容。中间部分,xilinx通过xvip_dma结构实现了整体的video_device功能,给用户层提供必要的控制设备接口(右侧用户层接口);左侧部分,是内核将所有的xilinx视频相关设备组合成xvip_composite_device,即v4l2_device,通过该模块可以扩展具体的子设备功能,即v4l2_subdev,包括TPG、VTC、RGB2YUV、scaler等等;右侧部分,是用户层的接口,用户层调用接口实现对视频设备的操作;顶层部分,为了提高数据搬运的效率使用了DMA设备功能,即xilinx_dma_device。下层部分,对于内部数据的管理,使用了v4l2统一抽象提供的vb2_queue、vb2_buffer等模块实现。

V4L2结构应用实例解析

这里以在EdgeBoard上使用的MIPI摄像头(MIPI开发介绍见https://www.csdn.net/article/a/2019-08-21/15979781)为例介绍V4L2的具体应用。

MIPI摄像头视频通路

对MIPI摄像头的支持采用了xilinxvideo框架,符合标准的驱动以及和硬件结合的流程。具体的实现为:硬件上采用FPGA的IP实现视频通路上的各种视频预处理,内核驱动模块使用vipp对应的功能,应用层通过/dev/media节点将这些子设备之间的连接关系进行关联,通过/dev/video控制视频的传输及视频抓取。

V4L2子设备驱动(摄像头驱动)的编写方法

从上文可以看出,虽然利用已有的IP和驱动资源,可以快速搭建MIPI摄像头的数据接入功能,但还缺少对于摄像头本身的参数控制功能等,这部分功能的实现是在驱动模块完成。本节将介绍一下此类驱动的结构和开发流程。

相对于实现一个完整的V4L2驱动功能比较庞大,针对摄像头驱动的实现相对简单了许多,只需要实现V4L2的子设备驱动即可,因为大部分功能已经在video_device里实现了。详细的子设备驱动结构图如下

结合前文的整体结构图,这里的核心是实现一个v4l2_subdev结构,即填充其内部各操作接口结构体,其中核心是v4l2_subdev_ops,通过该接口实现从用户层对其配置各种参数,以对视频流的控制。media_entity目地是实现各个v4l2_subdev之间的连接通路。用户层对mediaX设备的操作都需要这个结构的支持。

基于V4L2的软件开发

应用层的软件开发,推荐使用gstreamer或者opencvvideocapture,opencv的底层实现可能依赖gstreamer,如果这些不能满足读者的要求,需要更详细的参数控制,或者软件环境不具备这两种支持,可以考虑直接操作v4l2设备。如下将介绍V4L2 软件层面的具体方法。

V4L2通常支持三种不同IO访问方式(其他内核里支持的方式暂不讨论),包括

1.read/write基本IO访问方式,read方式读取一帧数据,数据需要从内核空间传输到用户空间,增加了内存访问的开销,对于图像类的应用效率不高

2.内存映射方式,这是在内核空间开辟的缓冲区,这些缓冲区可能支持DMA功能,这样极大的提高了数据从设备搬运到内存的效率。用户只需要使用mmap()系统调用将其映射到用户空间后,可以直接使用。这种方式支持的设备很多。

3.用户空间缓冲区方式,这是在用户空间开辟的缓冲区,再把缓冲区的指针告诉内核,这种方式虽然也能减少内存拷贝,但是内核驱动或者硬件设备在处理这些用户空间的地址会麻烦很多,不是所有的设备都会支持

这里以第二种方式详细说明具体使用过程,参考如下流程图

包括这几个步骤:

1、使用open()打开设备

2、使用ioctl()进行初始化参数设置,一般包括查询设备能力(VIDIOC_QUERYCAP),设置视频捕获相关参数,如帧率控制(VIDIOC_S_PARM)、图像的窗口尺寸(VIDIOC_S_CROP)、像素点的格式和宽高(VIDIOC_S_FMT)等,详细支持的参数可以使用上面介绍的工具进行查询

3、使用ioctl()申请帧缓冲(VIDIOC_REQBUFS),并查询申请到的缓冲区的信息(VIDIOC_QUERYBUF)

4、使用mmap()对申请到的缓冲区进行内存映射,保存映射得到的地址

5、使用ioctl()把帧缓冲进行入队操作(VIDIOC_QBUF)

6、使用ioctl()开始视频流进行捕获(VIDIOC_STREAMON)

7、使用selet()等待接收到数据

8、使用ioctl()取出帧缓冲即出队操作(VIDIOC_DQBUF)

9、进行数据处理,

10、重复帧缓冲入队操作,如此循环

11、退出时,停止采集工作(VIDIOC_STREAMOFF),使用unmap()和close()释放资源

用户层工具介绍(技术小福利)

上文介绍完EdgeBoard中视频处理的完整方案,现介绍V4L2开发中常用的调试工具,有助于提升开发效率。

得益于Linux丰富的开源资源,操作v4l2设备的应用层工具也非常多。默认的EdgeBoardPetaLinux系统已经配置好常用的几个工具,特此介绍给大家。v4l-utils是专门控制v4l设备的一系列命令工具集,包含以下实用程序:

1. v4l2-ctl:用来全方位的配置v4l2设备,对于内核模块暴露出来的接口,几乎都有支持。特别是软件开发时候使用的ioctl控制命令,也可以使用该工具来直接设置,帮助我们调试驱动或软件。

2. v4l2-compliance:兼容性工具,用于测试v4l设备驱动程序的v4l2 API兼容性,会打印出来各个ioctal命令接口是否有支持。多用在v4l应用软件开发过程中。

3.v4l2-dbg:直接获取和设置v4l2设备寄存器的工具,这依赖于设备驱动的支持。可以使用v4l2-compliance查看VIDIOC_DBG_G/S_REGISTER命令接口是否可用,在可用的情况下,可以使用该工具来测试。

4.v4l2-sysfs-path:检查平台已经加载的v4l2设备以及相应的设备节点。

5. media-ctl:媒体设备的控制工具,帮助我们在v4l2各个子设备间建立连接。

gstreamer是Linux平台广泛应用的视频流工具,特别是嵌入式平台,良好的软件架构及衍生出其丰富的扩展插件对不同硬件平台都具有良好的支持。

这里给出一个命令行示例,就可以了解它的独特之处了,如下:

gst-launch-1.0v4l2src device=/dev/video4 ! video/x-raw,width=1280,height=720 ! videorate ! image/jpeg,framerate=1/4 ! multifilesink location="frame%d.jpg" index=100

这条命令的意思是打开v4l2视频源即/dev/video4这个USB视频设备,抓取其1280x720宽度的原始jpeg图片流按照4秒1帧的速度保存到本地文件,命名格式为frame100.jpg开始

总结

本文以MIPI摄像头为例介绍了在EdgeBoard中采用V4L2结构的视频处理方案,得益于V4L2结构的灵活性和可扩展性,像BT1120、USB摄像头等也采用类似的方案,实现了对多视频接入方案的支持。对于需要视频接入方案的用户,可以直接购买EgdeBoard产品,实现视频接入的即插即用lw

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

    关注

    9

    文章

    2401

    浏览量

    95398
  • 视频处理
    +关注

    关注

    2

    文章

    142

    浏览量

    19475
  • EdgeBoard
    +关注

    关注

    0

    文章

    10

    浏览量

    3263
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    百度Create 2026发布“百度胜算”

    近期,百度Create 2026开发者大会如期召开,百度创始人李彦宏抛出一个足以撼动行业的新概念: **DAA(日活智能体数,Daily Active Agents)** ,并宣布将以这把"
    的头像 发表于 05-17 09:47 1612次阅读

    起大早,赶晚集?2026年百度智驾有啥新技术

    Apollo,积累了超过1.5亿公里的L4级自动驾驶测试里程,打造了全球规模最大的Robotaxi车队之一。 然而在主流媒体中,百度的名字更多出现在AI大模型和搜索业务上,它在自动驾驶底层技术上的积累反而没有太多的声音。一个在全球范围内同时拥有高精
    的头像 发表于 05-17 09:18 1031次阅读
    起大早,赶晚集?2026年<b class='flag-5'>百度</b>智驾有啥新<b class='flag-5'>技术</b>?

    百度智能云正式发布Hogee

    5月13日,在Create2026百度AI开发者大会上,百度智能云正式发布了一款全新的企业一站式AI营销应用——Hogee。这款产品的亮相,标志着百度智能云在AI营销领域迈出了重要一步,也为企业营销效率的提升提供了一个全新的解决
    的头像 发表于 05-15 09:18 877次阅读

    百度发布文心5.1:预训练成本降至行业6%

    5月9日,百度正式发布新一代基础大模型文心5.1。该模型基于百度自研的"多维弹性预训练"技术,在大幅压缩参数规模的同时,实现了基础能力的显著提升。目前,文心5.1已在百度千帆模型广场及
    的头像 发表于 05-09 11:05 672次阅读

    百度地图与NIMO眼镜达成深度合作

    近日,百度地图与NIMO眼镜达成深度合作,将百度地图全栈导航能力以轻量化、低功耗、极简交互的方式落地智能眼镜场景,为骑行、步行、日常通勤用户提供抬头即见、安全随行的新一代导航体验。
    的头像 发表于 04-09 10:00 449次阅读

    百度文心大模型5.0正式版上线

    今天,在百度文心Moment大会现场,文心大模型5.0正式版上线。
    的头像 发表于 01-23 16:48 1618次阅读

    百度地图开放平台与400万开发者共赴智能时空新未来

    二十年星辰大海,十五载开放引航。2025年,百度地图迎来服务用户的二十周年,其开放平台亦走过了与开发者并肩同行的十五个春秋。在近期举行的“2025百度地图开发者盛典”上,百度地图开放平台回顾了从提供基础地图API,演进为以AI为
    的头像 发表于 01-23 09:03 1091次阅读
    <b class='flag-5'>百度</b>地图开放平台与400万开发者共赴智能时空新未来

    百度健康升级发布文心健康管家

    面临医疗资源分布不均、就诊流程繁琐、就医信息不均等难题,“想让每个家庭都拥有专属医生”成为百度健康的愿景。
    的头像 发表于 12-23 15:01 1011次阅读

    百度世界大会亮点 五年五芯 百度宣布打造最硬AI云

    自2006年以来,百度世界大会已连续举办近20届,百度世界大会是百度每年面向行业、媒体、合作伙伴和广大用户的最高级别盛事,作为百度年度最重要的的战略、
    的头像 发表于 11-13 15:47 2075次阅读

    百度世界2025进行中 百度昆仑芯超节点亮相 性能巨幅提升

    百度世界大会是百度每年面向行业、媒体、合作伙伴和广大用户的最高级别盛事,作为百度年度最重要的的战略、技术、产品发布会,自2006年以来已连续举办19年,持续为行业搭建起交流前沿
    的头像 发表于 11-13 11:51 1585次阅读

    昆仑芯科技亮相2025百度云智大会

    近日,2025百度云智大会在北京国家会议中心二期隆重启幕。本届大会以“智能,生成无限可能”为主题,聚焦人工智能从技术到产业的全链条落地,深入探讨AI赋能千行业的实践路径与未来机遇。
    的头像 发表于 09-01 11:00 1586次阅读

    视频产业的创意活力,被百度蒸汽机这颗“动力心脏”激活了

    百度蒸汽机2.0,开启AI视频低成本量产的“工业革命”
    的头像 发表于 08-25 18:13 3603次阅读
    <b class='flag-5'>视频</b>产业的创意活力,被<b class='flag-5'>百度</b>蒸汽机这颗“动力心脏”激活了

    百度智能云亮相第二十二届ChinaJoy

    百度智能云亮相第二十二届ChinaJoy 8月1日,第二十二届中国国际数码互动娱乐展览会(ChinaJoy)在上海开幕。大会期间,百度全景展示了百度智能云千帆大模型平台等行业领先的技术
    的头像 发表于 08-05 09:47 1004次阅读

    百度重磅发布!全球首创中文音视频模型

    电子发烧友网综合报道 2025年7月2日,百度在北京正式发布全球首个中文音视频一体化生成模型——MuseSteamer,标志着其正式进军图生视频领域。这款模型凭借多模态指令理解、动态内容生成及音画
    的头像 发表于 07-11 09:18 4732次阅读

    欧洲央行行长一行到访百度Apollo Park

    近日,拉加德一行到访位于北京亦庄(经济技术开发区)的百度Apollo Park,与百度Jackson等人交流自动驾驶、AI发展等话题,并在亦庄东环南路、宏达南路等公开道路上,试乘了萝卜快跑第六代无人驾驶汽车。
    的头像 发表于 06-18 15:44 1030次阅读