热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【PPCompletion】FCFRNet深度补全网络复现

Abstract深度补全旨在以相应的彩色图像作为输入,从稀疏的深度图中补全成稠密的深度图。FCFRNet是AAAI2021中的一篇文章,本项目是基于P
Abstract

深度补全旨在以相应的彩色图像作为输入,从稀疏的深度图中补全成稠密的深度图。FCFRNet是AAAI2021中的一篇文章,本项目是基于PaddlePaddle对该模型进行的复现。FCFRNet是一个二阶段的网络,相较于之前的大部分深度补全模型来说,端到端的设计一定程度上限制了深度补全模型的性能。最近的方法主要将深度完成制定为一个阶段的端到端学习任务,直接输出密集的深度图。但是,一阶段框架中的特征提取和监督不足,从而限制了这些方法的性能。为了解决这个问题,我们提出了一种新颖的端到端残差学习框架,该框架将深度完成制定为两阶段学习任务,即稀疏到粗阶段和粗到精阶段。首先,通过简单的CNN框架获得粗略的密集深度图。然后,以粗深度图和彩色图像作为输入,在粗到精阶段使用残差学习策略进一步获得细化深度图。特别是,在粗到精阶段,利用通道混洗提取操作从彩色图像和粗深度图中提取更具代表性的特征,并利用基于能量的融合操作有效地融合通道混洗操作获得的这些特征,从而导致更准确和更精细的深度图。我们在KITTI基准上实现了RMSE的SoTA表现。未来在其他数据集上进行的大量实验证明了我们的方法相对于当前最先进的深度完成方法的优越性。

本项目已对其验证精度,对于训练等相关代码和精度对其可以关注github,后续陆续更新。

下面是通过torch2paddle权重转换文件后的测试效果:(torch2paddle.py)

MethodRMSEMAEPhotoiRMSEiMAERMSE1RMSE2
FCFRNet784.224222.6390.0002.3701.014784.224784.224

在这里插入图片描述

大家也可以上我的github上看更加完整的代码:(求star☆)

https://github.com/DianaNerualNetwork/Paddle-Completion

模型结构

在这里插入图片描述

在最开始我们必须明确这是一个二阶段的网络。输入的信息是已经经过一个end2end的深度补全网络得到的稠密深度图。为了方便本项目采用将生产结果保存作为输入图。

我们将深度完成制定为两个阶段的任务,包括从稀疏到粗糙的阶段和从粗糙到精细的阶段。首先在稀疏到粗糙阶段利用一个简单框架来获得粗糙密集深度图。其次利用一个包含channel shuffle操作,基于能量融合操作,和剩余学习策略的的从粗糙到细阶段。通道混洗操作能够更高效的从颜色和深度信息中提取更具代表性的特征。基于能量的融合,充分融合了通过通道混洗提取操作获得的特性,从而可以更好的深度补全。残差学习策略可以进一步提高深度补全的质量。

1.稀疏到粗糙阶段:

稀疏到粗糙可以在稀疏到粗糙阶段以手工制作的方式插值密集深度图,例如最近邻插值或其他简单的稀疏到密集方法。对于稀疏到粗糙阶段,可以利用常用的稀疏密集结构,例如 (马,Cavalheiro和Kara马n 2019)(Cheng,Wang和Yang 2018)(Cheng等人2020)(Park等人2020),为了减少计算限制,我们在方法中使用STD (马,Cavalheiro和Kara马n 2019)。
稀疏到粗糙阶段可以被描述为:

2.粗糙到精细阶段:

粗到精阶段使用彩色图像和相应的粗密集深度图作为输入,其中深度图是在稀疏到粗阶段进行插值后得到的。因此,可以向卷积提供连续的信息。同时,为了有效且充分地从颜色和深度信息中提取和融合特征,利用了通道混洗操作 (CS) 和基于能量的融合操作 (EF)。此外,在粗到细阶段利用了残差学习框架,以进一步提高深度完成的性能。在本节中,我们提供有关这些操作的更多详细信息。

3.Channel Shuffle

这些策略通常直接将颜色和深度进行叠加。(stack)并使用单个特征提取器进行提取特征。该特征提取器对来自不同来源的信息执行相同的特征提取。尽管再次过程中存在信息交换,但在一定程度上无法提取一些与源无关的信息。然而,在特征提取过程中没有利用颜色和深度信息的一致性。因此无法获得更具有代表性的特征。为了很好的利用color和深度的一致性,我们提出在粗到精阶段采用通道混洗提取策略,即先从彩色图像和粗密集深度图中提取特征。然后再多尺度通道级别上完全集成了两个不同的功能。
具体来说,用常用的主干RestNet34,从彩色图像和粗糙深度图中获得大小不同的特征。定义输入粗深度图d和彩色图像RGB,通过ResNet34分别对二者提取的特征fd,fc。首先利用卷积操作得到fd0,fc0。对应代码就是Conv1,Conv1_2。我们定义了颜色和深度特征提取中使用的主干定义为Rc={Rc1…RcN} Rd={Rd1…RdN},Rc1=RestNet34.layer1(fc0)让两者的channel互相掺和,间隔着填充。

Data Prepare

!mkdir kitti
%cd kitti
!unzip /home/aistudio/data/data175535/depth_selection.zip
%cd ~

!pip install -r /home/aistudio/FCFRNet/requirements.txt

Evaluate

# test the trained model on the val_selection_cropped data
%cd FCFRNet
!python main.py --evaluate /home/aistudio/data/data176607/bestmodel.pdparams --val select --input rgbd
%cd ~

总结 In conclusion

1.深度补全是以稀疏的深度信息及其对应的彩色信息作为输入,输出密集深度信息图的任务。

2.现阶段的深度补全方法基本都是单阶段任务,而本论文为两阶段任务,由于单阶段会限制特征的提取与融合(因为输入是rgb和深度稀疏图融合)不充分。

3.本方法以CNN为backbone作为骨干网络进行特征提取,首先进行粗略的深度图补全,再使用通道融合和能量融合的策略提取做特征信息处理,即:提出了一种二阶段的深度补全框架

4.本方法在KITTI深度图数据集上达到了Sate-Of-Art,证明了方法的先进性

本项目是我第一个关于深度补全的项目,在此感谢百度自动驾驶与机器人实验室的沈哲伦同学和论文原作者LinaLiu的帮助。

关于作者

*姓名:熊兵

*中科院深圳先进技术研究院医工所实习生

*研究方向: 图像生成,多模态检测

*Github主页:DianaNerualNetwork

*欢迎大家有问题一起交流讨论,共同进步~ email:xb1personal0mailbox@gmail.com

此文章为搬运
原项目链接


推荐阅读
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • 成功实现Asp.Net MVC3网站与MongoDB数据库的高效集成
    我们成功地构建了一个基于Asp.NET MVC3框架的网站,并实现了与MongoDB数据库的高效集成。此次更新不仅完善了基本的创建和显示功能,还全面实现了数据的增删改查操作。在创建功能方面,我们修复了之前代码中的错误,确保每个属性都能正确生成。此外,我们还对数据模型进行了优化,以提高系统的性能和稳定性。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 在Windows命令行中,通过Conda工具可以高效地管理和操作虚拟环境。具体步骤包括:1. 列出现有虚拟环境:`conda env list`;2. 创建新虚拟环境:`conda create --name 环境名`;3. 删除虚拟环境:`conda env remove --name 环境名`。这些命令不仅简化了环境管理流程,还提高了开发效率。此外,Conda还支持环境文件导出和导入,方便在不同机器间迁移配置。 ... [详细]
  • Python正则表达式详解:掌握数量词用法轻松上手
    Python正则表达式详解:掌握数量词用法轻松上手 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • 如何在 Java LinkedHashMap 中高效地提取首个或末尾的键值对? ... [详细]
  • 在将 MySQL 查询转换为 LINQ 时遇到了挑战,特别是在使用 Any 方法时。尽管已成功建立了连接并执行了查询,但返回的结果集中 lambda 表达式部分为空,导致无法正确映射数据。本文探讨了这一问题的根源,并提供了几种可能的解决方案,包括调整查询逻辑和优化 LINQ 表达式的建议。 ... [详细]
  • 本文深入探讨了 HTML 中的 `margin` 属性,详细解析了其基本特性和应用场景。文章不仅介绍了 `margin` 的基本概念,还重点讨论了垂直外边距合并现象,并分析了 `margin` 在块级元素与内联元素中的不同表现。通过实例和代码示例,帮助读者全面理解 `margin` 的使用技巧和常见问题。 ... [详细]
  • 在 Oracle 数据库中,`NULLS FIRST` 和 `NULLS LAST` 是 `ORDER BY` 子句中用于控制空值排序位置的关键字。当使用 `NULLS FIRST` 时,无论排序顺序是升序 (`ASC`) 还是降序 (`DESC`),包含空值的记录都会被排列在结果集的最前面。相反,`NULLS LAST` 则确保空值记录被放置在结果集的最后。这些关键字提供了灵活的排序选项,特别是在处理包含大量空值的数据集时,能够更好地满足不同的业务需求。 ... [详细]
  • 利用ViewComponents在Asp.Net Core中构建高效分页组件
    通过运用 ViewComponents 技术,在 Asp.Net Core 中实现了高效的分页组件开发。本文详细介绍了如何通过创建 `PaginationViewComponent` 类并利用 `HelloWorld.DataContext` 上下文,实现对分页参数的定义与管理,从而提升 Web 应用程序的性能和用户体验。 ... [详细]
  • SQL字符串操作:深入解析 instr、substr 和 like 函数的应用与区别
    在进行SQL字符串操作时,经常会用到 `instr`、`substr` 和 `like` 函数。本文详细解析了这些函数的应用场景和区别。特别是 `like` 函数在处理文件路径匹配时可能会遇到的问题,如通配符 `_` 和 `%` 的使用。其中,`%` 可以匹配零个或多个任意字符,而 `_` 则匹配任意单个字符。通过实例和文档解析,帮助读者更好地理解和应用这些函数。 ... [详细]
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
author-avatar
叨B叨B叨叨叨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有