Abstract
深度补全旨在以相应的彩色图像作为输入,从稀疏的深度图中补全成稠密的深度图。FCFRNet是AAAI2021中的一篇文章,本项目是基于PaddlePaddle对该模型进行的复现。FCFRNet是一个二阶段的网络,相较于之前的大部分深度补全模型来说,端到端的设计一定程度上限制了深度补全模型的性能。最近的方法主要将深度完成制定为一个阶段的端到端学习任务,直接输出密集的深度图。但是,一阶段框架中的特征提取和监督不足,从而限制了这些方法的性能。为了解决这个问题,我们提出了一种新颖的端到端残差学习框架,该框架将深度完成制定为两阶段学习任务,即稀疏到粗阶段和粗到精阶段。首先,通过简单的CNN框架获得粗略的密集深度图。然后,以粗深度图和彩色图像作为输入,在粗到精阶段使用残差学习策略进一步获得细化深度图。特别是,在粗到精阶段,利用通道混洗提取操作从彩色图像和粗深度图中提取更具代表性的特征,并利用基于能量的融合操作有效地融合通道混洗操作获得的这些特征,从而导致更准确和更精细的深度图。我们在KITTI基准上实现了RMSE的SoTA表现。未来在其他数据集上进行的大量实验证明了我们的方法相对于当前最先进的深度完成方法的优越性。
本项目已对其验证精度,对于训练等相关代码和精度对其可以关注github,后续陆续更新。
下面是通过torch2paddle权重转换文件后的测试效果:(torch2paddle.py)
Method | RMSE | MAE | Photo | iRMSE | iMAE | RMSE1 | RMSE2 |
---|
FCFRNet | 784.224 | 222.639 | 0.000 | 2.370 | 1.014 | 784.224 | 784.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
%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
此文章为搬运
原项目链接