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

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

3天内不再提示

基于飞腾开发板使用单目摄像头完成了完成了全息影像的展示

安芯教育科技 来源:极术社区 作者:安芯教育科技 2022-09-26 09:34 次阅读

1.团队介绍

参赛单位:西安电子科技大学 指导老师:蔡觉平、丁瑞雪 参赛队员:王瑞青、江立峰、陈培林 总决赛奖项:二等奖

a78e8360-3d37-11ed-9e49-dac502259ad0.jpg

2.项目简介

2.1项目背景

由于深度对于理解三维场景非常重要,因此它被广泛应用于机器人技术、三维建模和驾驶自动化系统等领域。如图1所示,单目深度估计从单个RGB图像生成像素方向的深度。单目深度估计有可能取代现有的深度传感器,如激光雷达和红外传感器,成为低成本和功率单目RGB相机。由于单目RGB相机的可靠性和高精度,最近基于CNN的单目深度估计方法受到关注。然而,CNN需要大量的乘法运算,在有限的功耗限制下,很难对嵌入式系统进行实时、准确的估计。在以往的单目深度估计研究中,为了加快gpu上的训练时间或推理速度,这些研究通常使用具有轻量级卷积(如可分离卷积)的编解码网络[2]。然而,gpu需要很高的功耗,并且不适合处理编码器-解码器网络中使用的许多不同卷积的快速内存访问。

a7f5f9fa-3d37-11ed-9e49-dac502259ad0.png

2.2项目功能

单目深度估计是指从单个二维彩色图像中估计像素级深度测量的任务。这个问题的输入是一个2D RGB彩色图像,输出是一个密集的深度图,如图1-1所示。2D RGB图像提供像素级的颜色信息,这有助于识别场景中对象的相对位置;然而,图像本身并不能提供尺度感。因此,可以想象不同的RGB图像如何能够产生相同的深度图,例如,保持对象的相对位置但在垂直于图像平面的深度维度上具有缩放的距离的图像。这对单目深度估计算法提出了挑战,因为它们必须推断适当的比例,以便生成精确的像素级深度测量。

a80bc24e-3d37-11ed-9e49-dac502259ad0.png

2.3项目应用

深度估计对于许多机器人应用来说至关重要,尤其是导航。这通常是即时定位与地图构建(SLAM)算法中的一个关键步骤,一些著作已经将基于学习的深度估计结合到SLAM框架中,例如CNN-SLAM 。深度估计也是3D重建算法的一个关键步骤,应用于增强现实和医学成像。当我们考虑功率受限的小型化机器人时,单目深度估计变得也很重要,这种机器人上的机载传感器技术可能仅限于简单的RGB相机,并且可能不存在附加信息(例如,立体图像对、IMU测量、稀疏深度点云、光流)。对于这样的应用,以计算有效的方式从单个RGB图像估计密集深度的能力成为挑战和目标。

3.系统组成

天乾C216F开发板
我们使用的开发板,完成将RGB图像处理成深度图像的功能

全息相册
展示天乾C216F处理后的全息影像

上位机
发送指令,完成使系统功能在“怀旧模式”、“摄影模式”、“拍照模式”等多种模式之间的切换

单目摄像头
可以捕获图像或者视频,并输出给天乾C216F

HDMI显示器
显示当前模式以及图像处理情况

a8307bfc-3d37-11ed-9e49-dac502259ad0.png

4.网路设计与优化方法

4.1FastDepth简介

我们设计的单目深度估计网络FastDepth主要由卷积构成,主要由编码器-解码器两部分组成。编码器从输入图像中提取高层次低分辨率特征。然后将这些特征输入解码器,在解码器中对它们进行逐步的上采样、细化和合并,以形成最终的高分辨率输出深度图。

a884f43e-3d37-11ed-9e49-dac502259ad0.png

编码器用蓝色表示;解码器用黄色表示。中间特征图的尺寸对应关系为高× 宽×深度。从编码层到解码层的箭头表示加法跳过连接。

FastDepth的大部分卷积层使用深度可分离卷积。只有MobileNet编码器的第一层(标准卷积层)和解码器的最后一层(简单的逐点卷积,然后是插值)没有使用深度可分离卷积。FastDepth中的每个卷积层后面是一个标准化层和一个ReLU函数。在训练之后,将标准化层和卷积层合并,从而形成一个仅由卷积层、ReLU函数和加法跳过连接操作组成的神经网络拓扑。

我们在PyTorch中建立了FastDepth网络,并使用官方的train/test数据分割在NYU Depth v2数据集上进行训练。编码层使用了已经在ImageNet上预训练的模型的权重进行初始化。然后将网络作为一个整体进行20个epochs的训练,batch size为16,初始学习率为0.01。学习率每5个epochs降低2倍。

4.2网络优化

4.2.1网络剪枝

为了进一步减少网络延迟,我们使用NetAdapt执行训练后网络修剪。NetAdapt从一个经过训练的网络开始,自动地从特征映射中识别和删除冗余通道,以降低计算复杂度。在每次迭代中,NetAdapt都会生成一组从参考网络简化而来的网络建议。然后选择具有最佳精度和复杂度权衡的网络方案作为下一次迭代的参考网络。该过程一直持续到达到目标精度或复杂度。网络复杂性可以通过间接指标(如mac)或直接指标(如目标硬件平台上的延迟)来衡量。

a90020d2-3d37-11ed-9e49-dac502259ad0.png

4.2.2将5×5卷积和最近邻插值分解为3×3卷积

参考了Yazdanbakhsh等人在他们关于FlexiGAN的工作中探索的这种分解的一种变体,他们在FlexiGAN中使用了滤波器和行重新排序,以使零插入后的卷积更加紧凑和密集,从而更好地利用硬件资源。我们采用了一种类似的方法如图所示。

aa474da8-3d37-11ed-9e49-dac502259ad0.png

把5×5核分解成4个更小的3×3核。当5×5卷积之前是最近邻插值。此处的红色框表示插值输入特征图中具有相同值的像素窗口。随着5×5核的滑动,2×2的窗口中的内核值将与相同的特性映射值相乘。与执行4次乘法和4次加法不同,内核值可以先预加,然后再与共享像素值相乘一次。(b)经过滤波器分解,每四个较小的3×3滤波器可与非插值输入特征映射卷积。这将产生四个可以交错的输出。得到的输出特征映射与最近邻插值后执行的原始5×5卷积的特征映射相匹配。

5.部署方式

本文实现了两种部署方式:通过TVM编译器和pytorch深度学习框架部署。通过TVM端到端深度学习编译器部署fastdepth模型,显示效果一般,但由于对模型经过剪枝、量化等优化操作,帧率高达34.7fps;通过pytorch深度学习框架部署midas,模型精度高,显示效果好,但帧率下降至0.82fps左右。

TVM是由华盛顿大学在读博士陈天奇等人提出的深度学习自动代码生成方法,该技术能自动为大多数计算硬件生成可部署优化代码,其性能可与当前最优的供应商提供的优化计算库相比,且可以适应新型专用加速器后端。

TVM可以优化CPU和其他专用硬件为后端的常见深度学习计算负载。

TVM通过利用多线程、数据布局转化和一些新的计算原语,可以针对GPU做很多高效优化。

同时,TVM已为x86、ARM等平台提供了同意的优化框架,利用其部署大大提高了板子资源利用率,帧率高达34.7fps。

下图是TVM端到端深度学习编译器的说明图:

ab418eda-3d37-11ed-9e49-dac502259ad0.png

6.作品效果展示

通过全息相册上位机选择生成后的深度图即可在全息相册上展示。

ab782b8e-3d37-11ed-9e49-dac502259ad0.png

审核编辑 :李倩

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

    关注

    2526

    文章

    48092

    浏览量

    740018
  • 自动化系统
    +关注

    关注

    3

    文章

    223

    浏览量

    29457
  • cnn
    cnn
    +关注

    关注

    3

    文章

    327

    浏览量

    21297

原文标题:比赛作品分享 | 2022集创赛飞腾杯二等奖作品:基于单目深度估计网络的全息显示终端

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32H7B3I-DK开发板的八位摄像头接口该如何使用?

    STM32H7B3I-DK开发板的八位摄像头接口该如何使用
    发表于 03-15 08:01

    使用Arduino IDE 2.0开发ESP32摄像头模块

    可以看到esp32选项。 编译并上传摄像头样例 1. 将开发板连接到电脑USB接口。若开发板未集成USB串口,则需要通过一个USB串口适配器连接。 2. 点击顶部工具栏的开发板
    发表于 02-07 17:06

    飞腾开发板评测获奖名单公布!!!

    恭喜以上小伙伴!经过飞腾专家评选,前三名小伙伴可保留飞腾开发板,其余小伙伴需退回开发板,有问题请微信联系工作人员(微信号:elecfans123)
    发表于 01-30 17:02

    飞腾派4G版免费试用】飞腾开发板运行Ubuntu系统

    飞腾派4G版开发板是一款做工精细,布线合理的开发板,今天给大家介绍一下如何运行Ubuntu系统,下面是网上的资料,帮助大家快速认识飞腾派4G版开发板
    发表于 01-08 22:40

    飞腾派4G版免费试用】大家来了解飞腾派4G版开发板

    今天把收到的飞腾派4G版开发板做各视频,让大家直观的了解一下做工精细,布线合理,做工扎实的飞腾派4G版开发板。 关于飞腾
    发表于 01-02 22:43

    飞腾派4G版免费试用】初步认识飞腾派4G版开发板

    这几天收到飞腾派 4G 基础套件,给大家做个介绍,让大家可以了解一下这块开发板飞腾派 4G 基础套件单板+电源+风扇 开源开发板 支持Ubuntu SylixOS OpenKyli
    发表于 01-02 22:23

    【ELF 1开发板试用】板载资源测试3:OV5640 摄像头测试

    飞凌嵌入式ELF1开发板(以下简称为“开发板”)底板设计了一个摄像头接口,正好手里边有一个OV5640摄像头,但由于没有扩展板,手里边也没有合适的LCD显示屏,因此,本期只做
    发表于 12-15 22:49

    【ELF 1开发板试用】+ 3.2 USB摄像头连接测试 + Ubutu SSH连接

    摄像头,后面会基于这个控制部件,来进行一个简单的开发控制; 未插上时USB总线状态: 插上设备后USB总线状态: 查看USB摄像头支持的分辨率和帧率: 这个功能非常有用,有时候做一些比如ESP32的
    发表于 12-06 15:37

    【悟空派H3开发板免费体验】4 实现摄像头监控

    : sudo killall -TERM motion 还可以设置成开机自动运行: sudovim/etc/rc.local 在exit 0前添加 motion,保存,就会开机自动运行了 然后reboot悟空派开发板。之后打开http://ip:8080就可以看到摄像头
    发表于 10-10 20:24

    【悟空派H3开发板免费体验】 测试USB接口:挂载U盘和usb摄像头

    开发板上插入USB HUB,然后将U盘和USB摄像头插入HUB. 通过ssh连接开发板: 操作如上图。 将U盘挂载在media/udisk目录下。首先要创建media/udisk目录。 cd
    发表于 10-08 21:23

    PaddlePi-K210开发板除了支持ov2640 ov5640摄像头外,还支持哪些摄像头作为外设?

    想问一下PaddlePi-K210开发板除了支持ov2640 ov5640摄像头外,还支持哪些摄像头作为外设?能否支持红外摄像头?谢谢!
    发表于 09-14 07:13

    如何利用A7开发板上的PMOD接口JB JC来实现摄像头的图像采集?

    我想利用A7开发板上的PMOD接口JB JC来实现摄像头的图像采集,想问一下大家具体的实现方法,比如摄像头接口的编写,怎么挂到AXI总线协议上以及如何使用
    发表于 08-16 07:13

    求助,STM32H7B3I-DK开发板的八位摄像头接口该如何使用?

    STM32H7B3I-DK开发板的八位摄像头接口该如何使用
    发表于 08-09 08:10

    【视频教程】紫光同创盘古50K开发板&双目摄像头操作演示@小眼睛FPGA盘古系列开发板

    【视频教程】紫光同创盘古50K开发板&双目摄像头操作演示@小眼睛FPGA盘古系列开发板~
    发表于 06-12 11:23