Zotero参考文献自定义
多亏了科学写作与报告这门课,让我意识到了参考文献格式的重要性,毕业论文的主要问题就出现在这里。忽而想起能否通过自动化的方法完成格式编排而不是一条一条的手工编写,自然而然地就想到了Zotero,这时候就需要发挥自己的主观能动性了。一番折腾居然还真给办成了,虽然编写的代码奇丑无比,*Who cares?*只要能跑就是好代码。
自定义Zotero参考文献表格式
众所周知参考文献格式的调整是一件头疼的事,我就不信有人还在手工调整,相比Endnote,Zotero完备开源的用户社区是我选择它的主要原因,海量的插件也能够实现花里胡哨的功能(反正就是不提高生产力)。修改参考文献格式,Zotero提供了专门的.csl文件,一并给出了该文件编辑的CSL1.0.2规范文档,可供具体配置。
在自定义格式模板前,首先需要确认自己需要模板有无前人做过了,可以查阅网上的各大论坛或者在Zotero内查找,确定没有后才自行配置。
第一步,获取样式模板
进入Zotero的首选项中引用一样,点击样式编辑器,如下图:
随机挑选一位幸运模板,点击保存,然后得到了一个样式模板。
第二步,修改模板Header
模板的前几行一 ...
g2o使用笔记
前言
现有的位姿求解算法,有直接线性变换法、非线性优化法,其中最广为人知的是基于捆绑调整的非线性优化方法(Bundle Adjustment,BA)。g2o是一个基于图优化的非线性优化库,目前已经是包含COLMAP在内的大型SLAM算法的根基。g2o可以用于求解大规模的非线性优化问题,自然也适用捆绑调整。
g2o完全没有用户文档
并且,新版本的g2o与当前社区中流传的CSDN、博客园甚至著名的《视觉SLAM14讲》等文章介绍内容几乎都存在较大的差异(基本上都不能直接使用),毫无疑问增加了新手使用的探索成本。本文,将记录当前时间最新版本的g2o安装、使用的一些心得与避雷提示,希望读者能够通过本博客跑通示例程序,并大致知道如何根据自己需求修改例程。
安装g2o
首先请前往g2o官方仓库,下载最新版本的g2o至本地,进入该目录,首先需要注意的是,g2o安装前应当至少安装Eigen3库。当前网上教程大多直接推荐使用apt源安装,即有:
1sudo apt-get install libeigen3-dev
这种方法方便快捷,但是也存在潜在的版本匹配问题。
另一个麻烦之处是如果使用Vscode等 ...
光束法平差入门
前言
光束法平差Bundle Adjustment,据说是三维重建领域的标配算法,然而我懂不了一点,因此专门开一个博客予以记录。本文主要参考了[1],看到快一半才发现这篇论文其实是偏向数学建模的,并不是我想要的工程应用软件之类的,然后就开始查找其他博客作引用,可参见CSDN博客。
光束法平差
光束法平差是一种优化框架,其主要思路是如何围绕重投影误差,使用梯度下降法、牛顿迭代法、LM等方法完成优化。自从2000年论文[1]将该方法从摄影测量引入至三维重建后,被大量后人引用,目前已经成为三维重建领域的基本方法之一(相当于最小二乘一样的地位)。摄影测量领域经常与重投影误差Reprojection Error打交道,以该误差函数作为待优化的目标函数,将是一个典型的非线性优化问题。
三维点匹配
借用博客提供的图:
对于同一个物体,现有多个不同视角的摄像机对其作摄像机变换,得到不同的摄影图像。根据关键点匹配算法,又得到了这些关键点的对应关系。在每个摄像机的内参矩阵都已知的前提下,需要解决的问题是,如何重建出全部关键点的空间坐标,并解算出每个摄像机的位姿?
优化目标函数
该问题可以建模为优化投影过 ...
月球陨石坑项目进展
TODO
下载南极地区的陨石坑图像,最好能够下载到DEM。
现有开源资源
两个重要的陨石坑数据来源,一个是LROC项目,一个是PDS存档。
开源的月球坑数据集
美国亚利桑那州立大学和NASA的合作项目LROC数据集:https://pds.lroc.asu.edu/data/
NASA发布的地外天体探测数据库:https://astrogeology.usgs.gov/search?target=&system=&p=1&accscope=&searchBar=
NASA的LOLA计划的月球遥感原始图像集:https://imbrium.mit.edu/DATA/
国家航天局的月球表面照片https://moon.bao.ac.cn/ce5web/searchOrder_dataSearchData.search
LOLA发布的各个分辨率的DEM,大多分辨率较高:https://imbrium.mit.edu/DATA/LOLA_GDR/
真是巨坑,这个数据库可以批量下载,但是批量下载的链接已经失效了,修改方式在后面指出
必备软件
ArcGIS ...
空间导航数学基础
.small-img {
width: 400px;
}
前言
空间导航方式分为相对导航Relative Navigation和迷失空间导航Lost in Space,相对导航需要依靠其他传感器取得的估计位置信息和姿态信息,依据当前传感器获取的信号完成精调的位姿解算。而迷失空间导航不需要任何初始信息,传感器能够从当前取得的传感信号中独立地解算载体的姿态和位置,具有自主性、无累计误差,是深空探测的必要方式(无论哪种方式,深空探测器都必须要有一种迷失空间导航的传感器,以避免在失去遥测信号后也能够独立地判断当前位置,并与地面站建立联系)。
迷失空间导航
迷失空间导航除了需要当前获取的传感器信号以外,还需要预先存储先验信息,这些先验信息如同人的记忆一样,提供了与导航位置相关的检索目录,传感器通过搜索当前信号与检索目录中信息的匹配程度,获取最可能的目录索引,由此可解算出当前载体最可能的位姿信号,从而完成导航定位。这其中,当前最稳健的导航方式是地形匹配导航,而不变量导航是地形匹配导航中的一种。
陨石坑不变量导航
地外天体最常用、最显著的特征就是其遍布全球的陨石坑,与星表一样,陨 ...
24年8月进展
8月以来经历了暑假放假,中间迷惘一周,大致于8月16号之后才正式进入状态。
第一篇文献
Event-Based Motion Magnification
解决的问题
本文将事件相机用于高速摄影,本质上仍然是一种新型的事件流插帧方式,解决了在高频振动测量领域的高速摄影问题。
主要内容
非最新的事件流插帧算法往往不能处理高频振动这种具有典型周期性的特征,其重建结果难以准确描述高频振动的音叉边缘外形,作者利用事件相机的高速摄影性能,将音叉的高频振动用事件流的放大。使用事件流重建图像时,使用了事件的对数微分性质,因此重建图像时将其积分后求指数,即有:
I(u)=I0(u)exp(c∫t0τp(u,t))I(\mathbf{u})=I_0(\mathbf{u})\exp\left(c\int_{t_0}^\tau p(\mathbf{u},t)\right)
I(u)=I0(u)exp(c∫t0τp(u,t))
其中u\mathbf{u}u是图像III的某个位置,τ\tauτ是插帧时刻。利用上式,可以在一阶近似的意义下解出高频振动场的像素亚像素精度运动,该部分原理构成了下图网络中的SRP ...
部分经典算法推导
前言
经常在论文中看到一些熟悉又陌生的算法名,例如EM,例如GMM,HMM等等,这些算法好像都是知道个大概,但是要我自己去实现,感觉总是这里缺先验那里缺先验,不能完整地复述出来,就是不是自己的东西,有必要像矩阵求导那样,推导一个完整的式子来。
期望最大化算法
英文原名:Expectation-Maximization,缩写名:EM
问题描述
给定某个概率分布X\mathcal{X}X的系列观测值X(θ)X(\theta)X(θ),其中θ\thetaθ是某个未知的,需要被优化的参数,现假设待观测值Z XZ~\mathcal{X}Z X,参数估计要求算法使得似然函数L(θ;X)L(\theta;X)L(θ;X)取得最大值。即使得在出现观测值XXX的概率最大:
L(θ;X)=p(X∣θ)=∑z∈Zp(X,Z∣θ)zL(\theta;X)=p(X|\theta)=\sum\limits_{z\in\mathcal{Z}}p(X,Z|\theta)z
L(θ;X)=p(X∣θ)=z∈Z∑p(X,Z∣θ)z
算法核心
由于不能直接得到隐变量θ\thetaθ的值,且随机变量ZZZ的分布情况也未知, ...
数学概念表达
前言
这里记录一下学习过程中遇到的一些数学记号及其对应性质,在下次遇到后可以直接使用不至于陌生。对于成体系的数学记号,则单独归纳为一篇博客。
KL散度
参考自:KL散度
英文名:Kullback-Leibler divergence,是一种用于衡量两个概率分布之间差异的指标,其定义为:
DKL[P(x)∣∣Q(x)]=∑x∈XP(x)ln[P(x)Q(x)]D_\mathrm{KL}[P(x)||Q(x)]=\sum\limits_{x\in\mathcal{X}}P(x)\ln\Big[\frac{P(x)}{Q(x)}\Big]
DKL[P(x)∣∣Q(x)]=x∈X∑P(x)ln[Q(x)P(x)]
KL散度描述的是使用概率分布Q(x)Q(x)Q(x)来描述分布P(x)P(x)P(x)的编码损失,其性质是非负的、仿射不变的且非对称的。
期望记法
在文献Auto-Encoding Variational Bayes和Denoising Diffusion Probabilistic Models等中经常见到的一种表达式,例如:Eq[∙]\mathbb{E}_q[\bulle ...
SNN初见
前言
事不宜迟,看完的文献总是浅尝辄止,没有总结吸收,还不是自己的东西。积土成山,风雨兴焉!
脉冲
神经元之间通过神经冲动传递信号,脉冲是神经冲动的数学模型。在时域上一连串脉冲组成的冲激函数串称为脉冲序列或者脉冲串spike train[1]。
脉冲序列
通常以冲激函数串表示脉冲序列,则在不同时间处的脉冲组成的脉冲串记为A=∑i=0∞δ(t−ti)A=\sum\limits_{i=0}^{\infty}\delta(t-t_i)A=i=0∑∞δ(t−ti)。
脉冲序列的描述
表征脉冲序列的物理量是活动频率firing rate,缩写为FR,其原始定义为单位时间内的脉冲数目,即:
FR(t)=limΔt→0N(t,t+Δt)Δt\mathrm{FR}(t)=\lim\limits_{\Delta t\rightarrow 0}\frac{N(t,t+\Delta t)}{\Delta t}
FR(t)=Δt→0limΔtN(t,t+Δt)
这一定义式仅具有理论意义,不具有工程实践的价值,因此常用单位时间内的脉冲频率表示FR,在大量样本数据情况下,脉冲频率近似等于脉冲概率,即:
...
从零开始实现扩散模型
前言
关于扩散模型的数学基础性的知识,可以参照原始论文[1]和[2];亦可以参考本文相关的DDPM的博客、DDIM的博客以及条件扩散模型。本文主要讲述如何使用Python作为脚本语言,从零开始实现扩散模型的工程问题,参考论文LDM[4]提供的源代码,使用pytorch-lightning框架完成扩散模型的训练和推理。
代码
本文的全部代码在gitee仓库中开源,见于此处。目前正在整理,后续将整理结果发布于github上。
TODO
[x] 一个便于复用的DDPM框架。
[ ] 一个便于复用的DDIM框架。
[ ] 一个便于复用的LDM框架。
扩散模型——从入门到入土
本博客计划使用pytorch-lightning搭建整个扩散模型的训练框架和数据加载器,并使用此模型完成推理。
DDPM基本框架
实现DDPM也将分为训练和推理两个部分的内容单独处理。首先需要将全部使用的参数,如αt,βt,αˉt\alpha_t,\beta_t,\bar{\alpha}_tαt,βt,αˉt等等都提前保存下来,在某个模型中,它们全部是定值,不能学习。设self.denoiser是本模型所使用的去 ...