Category: 深度学习

CVPR 2021 Image Matching 挑战赛双冠算法回顾

借之前我们给公司提供的文章,总结一下前一段时间参赛的一些实验和思考。本文版权所有:旷视科技。原文链接:https://www.zhihu.com/question/32066833/answer/2041516754 Image Matching (图像匹配)是计算机视觉领域最基础的技术之一,它是指通过稀疏或者稠密特征匹配的方式,将两幅图像相同位置的局部信息进行关联。Image Matching 在很多领域均有广泛应用,比如机器人、无人车、AR/VR、图像/商品检索、指纹识别等等。 在今年刚刚结束的 CVPR 2021 Image Matching 比赛中,旷视 3D 组获得两冠一亚的成绩,本文介绍了他们的比赛方案、实验和一些思考。 比赛介绍 图像匹配是指将两幅图像具有相同或者相似属性的内容或结构进行像素上的识别与对齐。一般而言,待匹配的图像通常取自相同或相似的场景或目标,或者具有相同形状或语义信息的其他类型的图像对,从而具有一定的可匹配性。 Image Matching Challenge 本次 Image Matching Challenge(IMC) 比赛还是分为两个赛道 unlimited keypoints 和 restricted keypoints,即每张图片可提取特征点数量分别小于 8k 和...

论文笔记:RAFT: Recurrent All-Pairs Field Transforms for Optical Flow

本文介绍了一种叫做 Recurrent All-Pairs Field Transforms (RAFT) 的光流网络,在数据集中取得了 SOTA 的结果。主要亮点如下: (1)State-of-the-art accuracy:本文在 KITTI 相对现有最好结果取得了 16% 的误差下降,达到 5.10%(F1)。在 Sintel 上取得了 30% 的误差下降(像素误差)。是目前最好的结果。 (2)Strong generalization:仅在仿真数据集训练时,RAFT 相比同样在仿真数据集训练的最好的网络结果有 40% 的误差下降。 (3)High efficiency: RAFT 在 1088×436...

论文笔记:Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

Multi-Task Learning (MTL) 问题一个典型方法就是把所有的 Loss 放在一起优化,但是往往又需要设置不同权重。传统方法中往往根据不同 Loss 的量级等人为分析、实验等设置合理的权重,但是取得理想效果往往需要大量工作。本文提出了一种使用 Uncertainty 自动学习权重的方式。 如下图展示了一个典型的 Multi-Task Learning 的场景,同时学习 Semantic、Instance 和 Depth,这一场景包含了分类、特征学习、回归任务,比较典型,也是本文的示例: 本文主要创新点如下: 1)一种创新的原则,利用同方差不确定性的多任务学习方法 2)一个统一的用于学习 semantic segmentation, instance segmentation 和 depth regression 的框架 3)展示了通过学习方法获得权重的有效性 1 Multi Task...

PyTorch Lighting 常见问题整理

0 系统版本 PyTorch Lighting 1.1.7 1 错误:object has no attribute '_metrics_to_agg' 当使用自定义的 Logger 时,如果出现上面的错误,一个很可能的原因是在自定义的 __init__ 函数中忘记调用 super().__init__(),正确的自定义初始化函数用法如下: Python class MyLogger(LightningLoggerBase): def __init__(self, a): ...

每次训练自动备份源码的脚本

我们运行深度学习任务时,常常要改改代码就跑个实验,同时跑很多个,时间久了可能会忘记 TensorBoard 上相应的训练任务都改了什么。 这种情况下,记录下每次运行任务时的源码状态就变得非常有必要。这里有很多方法,比如用git保存相应版本之类的。由于通常情况下深度学习的代码文件都非常少(可能也就几十kb),我这里给出一个最简单粗暴的方法:每次将特定扩展名的文件自动备份到另一个目录。 1 脚本源码 直接给出脚本源码,我这里保存其为 train.sh Shell #!/bin/bash currentdir=${PWD##*/} echo "["${currentdir}"] command line is : " "$*" echo '********************************' echo 'Begin backup source codes' # backup all necessary files # "%Y-%m-%d-%H-%M-%S" time=$(date "+%Y-%m-%d-%H-%M-%S") # echo ${time} destpath='../'${currentdir}'_backups/'${time}'/' echo...

PyTorch 常见问题整理

最近刚刚开始从 Keras 换成 PyTorch,在使用过程中可能会遇到一些常见的问题,做一些整理。 1 Loss 为 NaN 可以在 python 文件头部使用如下函数打开 nan 检查: Python torch.autograd.set_detect_anomaly(True) 1 torch.autograd.set_detect_anomaly(True) 如果遇到了 nan 的 Tensor,它会抛出异常。幸运的话它会告诉你 nan 产生的位置。比如说我遇到过: PowerShell RuntimeError: Function 'SmoothL1LossBackward' returned nan values in its 0th output. 1 RuntimeError:...

几何深度学习(Geometry Deep Learning)相关工作汇总

深度学习喜欢 End-to-End 解决问题,中间过程有比较多的黑盒,在很多很难完整描述出数学模型的识别类任务中表现尤为出色。但是在传统的几何里面,很多工作是有比较好的数学基础的(比如摄影几何、李群与李代数、BA等等),如果抛弃这些理论全盘黑盒方式解决,有时未必有很好的效果。 因此对于 Geometry Deep Learning (几何深度学习)方向来说,如果深度学习的方式能够改进传统的几何方法的某些环节,或者利用深度学习强大的特征学习能力再与几何方式结合,或许会是一个可行的方向。 最近几年这类的工作非常之多,各大顶会也都有类似的专题,这篇博客旨在收集一些相关的内容作为备忘(个人没有太多精力收集,欢迎大家留言推荐相关文章)。 1 相关论文 1.1 传统几何算法的改进 传统几何算法使用深度学习改进其中一个方向就是所谓 ”可微分“ (Differentiable),例如 ICP、RANSAC、Bundle Adjustment 等等算法有很多所谓 ”硬决策“ 部分(Hard Decision)。这方面很多大牛做了不少工作例如 Eric Brachmann 的 DSAC 系列等等。 下面是一些收集的相关论文: 2 相关代码 2.1 3D Deep...

Differentiable Optimization 工作整理

在深度学习中,可微(Differentiable)是一个很重要的环节,可微意味着能够进行训练。在 SLAM 和很多 3D 系统中,后端往往伴随着大量的在线优化(Optimization)算法,这些算法对于整个 pipeline 很重要,如果要进行 End-to-end 学习的话,如果随意用回归之类的方法代替优化,往往不能取得满意的效果。一个比较简单直接的思想也就是把优化部分进行可微化,这样就可以比较容易地进行替换。 目前基于将优化算法可微化的论文和开源工作感觉还比较有限,这里就看到的一些进行整理,大家如果有相关工作欢迎留言补充。...

论文笔记:Deep ChArUco: Dark ChArUco Marker Pose Estimation

ChArUco 在相机标定中比较常用,同时在一些 AR 应用中也有涉及。这篇文章是针对 ChArUcho 这个矩阵二维码使用 Deep Learning 方法进行姿态估计,取得了比传统方法更佳鲁棒的结果(似乎可以为标志检测之类)。 文章主要贡献在于: 1、两个网络 ChArUcoNet 和 RefineNet:前者用于定位 ChArUco 的角点坐标,后者用于对角点坐标进行亚像素修正 2、使用仿真数据进行自动标注与训练的方式 1 传统方法 ChArUcho 示意图如下: ChArUco 就是棋盘格和 ArUco 码的结合,整体是一个 5x5 的期盼形状,总共有 16 个 ArUco 码代替了棋盘格中的白色方格,其中的...

论文笔记:Deep Closest Point: Learning Representations for Point Cloud Registration

DCP 是一篇基于 Deep Learning 来解决 ICP 问题的,其中 Deep Learning 部分主要用于做匹配,后端仍然沿用 SVD 的方法。比很多 MLP 直接出 Pose 的合理,也取得了更好的效果。在与传统方法例如 Go-ICP 以及深度学习方法 PointNetLK 的对比中,都取得了一定的优势。 1 经典 ICP 问题 这一部分在之前的论文笔记中已经有了比较详细的阐述,参见:使用 SVD 方法求解...