Ubuntu 常用软件整理
Ubuntu 默认系统比较简单,很多常用软件都缺乏或者不好用,这里记录下我常用的一些软件以备后续使用。
0 系统环境
Ubuntu 18.04、16.04
镜像源参考:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
1 搜狗输入法简介:
搜狗拼音输入法是2006年6月由搜狐(NASDAQ:SOHU)公司推出的一款汉语拼音输入法。搜狗输入法从一开始偏向于词语输入特性,发展到后来配备云输入功能的以整句输入为优势的输入法,是中国大陆市场主流的汉语拼音输入法。
网址:
https://pinyin.sogou.com/linux/
安装:
https://pinyin.sogou.com/linux/help.php
2 HandBake 视频编解码简介:
HandBake 是一个比较简单和跨平台的视频转换软件。无需特别技巧便可直接将 DVD 电影内转换成 AVI/MPEG4 格式,还有 MP4 及 OGM 输出、AAC 及 Vorbis 编码。HandBrake 能转换被加密的(encrypted)DVD,转换时以多任务方式工作,同时让你选择语言,声音及画面质量,转换后的画面大小等。具备 x264 的多线程 H.264 编码和 H.264...
论文笔记:Learning to Solve Nonlinear Least Squares for Monocular Stereo
本文利用端对端的网络处理直接法单目 SLAM 问题。作者在多个数据集和问题上实验,最后结果在准确性,参数量和速度上都超过LM方法。虽然整篇文章用于解决单目稠密SLAM问题,不过由于是在整个框架中优化后端的非线性最小二乘部分,其思想对于SLAM问题引入Learning具有普适性。与BA-Net 比较类似,是用深度学习改进后端优化的最基础贡献之一。
本文主要创新点如下:
1)提出了基于非线性最小二乘优化的一个端到端训练的框架;
2)先验和正则项学习都直接来自于训练数据;
3)第一个采用机器学习来优化光度误差的算法。
1 背景
本文背景比较类似于基于优化问题的直接法。
1.1 非线性最小二乘求解(Nonlinear Least Squares Solvers)
典型的非线性最小二乘问题如下:
其中 代表第 j 项的误差; 是优化变量; 代表目标函数。
通常求解这样的问题会采用数值优化的方法,例如 Gauss-Newton (GN)、Levenberg-Marquadt (LM) 算法等。
通常的做法是将误差进行一阶展开:
其中:
则最优迭代值为(使得当前误差函数取极小的迭代迭代方向):
在 Gauss-Newton (GN) 法中迭代步长通过下述方程求解:
而与 GN 算法不同,Levenberg-Marquadt (LM) 算法引入 改善收敛性,其迭代步长为:
以上是典型的通过梯度下降迭代优化最小二乘问题的步骤。
1.2...
论文笔记: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...
[Mac] VS Code 中配置使用 Clash 代理
在 VS Code 中有一些插件例如 IntelliCode、Claude Dev 等可能要通过 Proxy 访问。下面是使用 Clash 代理的配置方法,其他类似。
0. 系统环境
macOS Sonoma 14.6.1
Clash for Windows 0.20.39
1. 系统设置
如果没有更改默认配置的话,Clash 默认使用 7890 端口。如果没有更改过的话,我们可以修改系统配置文件 sudo vim ~/.zshrc 添加下面的部分:
YAML
export...
论文笔记:Online Invariance Selection for Local Feature Descriptors
本篇文章是 ECCV 2020 Oral ,来自 ETH 的最新大作。本文主要侧重点在于通过神经网络的方式在线选择不变性的局部特征。通过很少的计算量增加,该方法可以比较通用地扩展到各种检测和描述子中,极大地提升实际场景的匹配效果。
主要创新点如下:使用一个网络通过多任务学习的方式学习出适应多种变化组合的描述子提出了一种基于 meta descriptor 的轻量级在线选择不变性描述子的方式本文提出的多任务学习变化描述子以及在线选择不变性描述子的方式,可以拓展到任何传统或者基于 learning 的描述子上,具有很强的通用性。1 Learning the best invariance for local descriptors
为了说明选择最佳不变性描述子的意义,作者举了个例子:如上图所示,在纯旋转情况下 SIFT 可以有很好的表现,但是在没有旋转时, Upright SIFT (主方向固定为 (0, 1))...
论文笔记: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):
...
论文笔记:From Coarse to Fine: Robust Hierarchical Localization at Large Scale
0 Background
视觉定位是指,在大尺度场景下,已知环境地图,给定任意一张图片,计算出该图片对应的位姿。目前比较流行的方法是,由粗到细两步定位。先通过图像检索的方式找到最接近的关键帧,再与该关键帧匹配局部特征。由于关键帧位姿已知,所以通过PnP等方法可以估计出当前帧位姿。两步定位可以避免从所有关键帧中直接匹配带来的时间复杂度,同时避免了将整个环境地图加载进内存带来的空间复杂度。
本文基于作者更早一些的工作《Leveraging Deep Visual Descriptors for Hierarchical Efficient Localization》,在那篇文章中,作者使用MobileNetVLAD实现图像检索,再使用局部特征(FREAK、SIFT等)实现位姿估计。
在看这篇文章之前可以看下 CVPR 2020 的 Long-term Visual Localization 比赛:其中在手持设备定位方面,排在最前面的就是这篇 HF-Net + SuperGlue 的组合,可以看出其还是很有实战竞争力的。
1 Introduction
在视觉定位领域,基本上有两种主要的方向,一种是所谓的 End-to-end 方法,代表作是 PoseNet,这类方法直接用图片和 pose...
Anaconda 使用方法
0 系统环境
Ubuntu 16.04/18.04
Anaconda 3
1 安装 Anaconda
Anaconda 是一个比较强大的虚拟环境工具,它支持了很多常用的科学计算库,对于配置非常有用。而且最大的优势就是不需要像 pip 一样更改系统环境,随意切换也很安全。下图是 Anaconda 支持的一些常见计算库:首先在网站上下载最新可用的 Anaconda 安装包,我这里下载的是 Python 3.7 版本 Linux 安装包,这个 Python 版本其实后面可以切换。
https://www.anaconda.com/download
如果是 Linux 用户下载其中的 sh 文件。
将 sh...
每次训练自动备份源码的脚本
我们运行深度学习任务时,常常要改改代码就跑个实验,同时跑很多个,时间久了可能会忘记 TensorBoard 上相应的训练任务都改了什么。
这种情况下,记录下每次运行任务时的源码状态就变得非常有必要。这里有很多方法,比如用git保存相应版本之类的。由于通常情况下深度学习的代码文件都非常少(可能也就几十kb),我这里给出一个最简单粗暴的方法:每次将特定扩展名的文件自动备份到另一个目录。
1 脚本源码
直接给出脚本源码,我这里保存其为 train.sh
Shell
#!/bin/bashcurrentdir=${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...