各种DDPM衍生模型
前言
扩散模型DDPM的一个比较常用的变体,取消了DDPM所要求的扩散过程马尔可夫性质,转而引入更加一般意义上的扩散模型,因此是DDPM的更一般形式。其极大地减少了扩散过程的采样步数,从原理上提高了扩散模型的实用性,与LDM相比,DDIM的数学过程更加严格。
Denoising Diffusion Implicit Model
本文主要参考自论文[1]。简单地说,DDIM不限制模型一定是马尔可夫的,去噪过程中下一步的样本直接来自于上一步的样本,因此原理上可以实现对随机过程的去随机化,即扩散过程将成为某个固定取值的确定性过程,保证使用相同输入得到的生成结果是相同的,这一性质有助于提高生成式模型的结果稳健性和效率。
优化目标
DDIM与DDPM共享同一个目标函数,即最大化对数似然函数,其形式如下:
arg minθEq[−logpθ(x0)]≥arg minθEx0:T∼qσ(x0:T)[−logpθ(x0:T)+logqσ(x1:T∣x0)]\argmin_{\boldsymbol{\theta}}\mathbb{E}_q[-\log p_{\boldsymbol{\theta ...
24年5月进展
第一篇文献
Boundary-Aware Divide and Conquer: A Diffusion-based Solution for Unsupervised Shadow Removal
解决的问题
本文提出了一种融合扩散模型的图像去阴影方法,该方法能够在无监督的条件下使用扩散模型强大的生成能力完成对阴影部分图像片段的插补。
主要内容
本文内容主要分为两个部分,其一是阴影图层分解模块D\mathcal{D}D,如下图所示:
该模块自带数据增强功能,能够从当前已有阴影的图像上自动再生成合成阴影,然后通过训练两路编码-解码器模块完成对阴影图层的提取,包括提取阴影区域、提取阴影边界,使用四个子损失函数完成训练,分别是:
图像重建损失,即去阴影得到的预测图像与真实无阴影图像的L1L_1L1范数误差;
图像一致性损失,即合成的不同阴影图像经过去阴影后产生的预测图像之间的L1L_1L1范数误差;
明暗交界损失,即阴影区域和非阴影区域的交界线像素灰度的L1L_1L1范数误差;
平滑性损失,即不是阴影但是被分进阴影区域的像素灰度的L1L_1L1范数惩罚。
由以上四项构成正则项 ...
月球陨石坑项目进展
TODO
需要什么样的数据集?是否需要作某些标注,事件流的质量如何控制?当然是图像和事件流的数据集,标注按照常用的方式,即只在图像上按时间标注,事件流可以压缩为事件图像完成标注,也可不标注。
如何生成数据集?现有两条路径:从图像中仿真获取,或者从虚拟的环境中获取?虚拟环境的搭建是一个具有极大工作量的工程,真的不好弄,而且还需要对运行的环境有要求,我当前的笔记本电脑就跑不了。目前确定通过三维仿真的方式获取数据。
到底需要怎么样的精度,是否需要精确到200m范围内,还是说直接从卫星上观察的数据就够了。NASA于2018年发布的最新数字月球模型可达59m/pixel,问过江老师后,该精度已经满足当前使用需要。
降落相机获取得到的确实是时间相隔较近的图像序列,但是它图像中的环形山数量也太少了,基本上达不到要求的结果。因此决定采用三维仿真,编写自动化脚本完成无人机飞行控制和传感器数据采集。
PDS格式的数据实在是太难处理了,我从未见过有如此厚颜无耻之格式,每个航天局、每个任务都还不一样!这个到底应该怎么处理?早晚得把这个问题研究透彻。NASA的格式目前已经研究透析了,而国内的 ...
对比学习入门
前言
一直被这个翻译的名词带偏,误以为对比学习就是使数据集按其差异性不断放大直到分成许彼此高度相似的类(鉴定为高级版聚类),实质上
这种说法是错误的!
更准确一点的说法是,对比学习是预训练的一种手段,与VAE、Resnet等网络一致,都是从某个数据集中不断学习其分布特性,并以某种压缩后的描述方式反映该数据集的整体分布。二者的区别在于学习的过程:
对比学习是从数据集本身的差异性出发,不断放大不同类别的差异性,并缩小同类别的差异性,直到描述所反映的分布在差异性的度量下达到最优;(称为差异性描述)
VAE等则是更直白地学习数据本身的压缩特性,以获取能够在最小信息损失的情况下恢复原始数据的压缩编码,该编码在隐空间中的分布与真实数据的分布类似。(称为生成性描述)
鉴于这两种描述学习方式的差异,对比学习常用于某些类别分布较为明显的数据集,例如著名的分类数据集ImageNet(当然该数据集VAE也可以用),对比学习得到描述向量也多用于基于特征的视觉任务,而不是如VAE那种基于逐像素恢复的任务,因此在图像重建领域(如图像去噪、图像超分等)直接使用对比学习预处理数据集并不合理。但是可以借鉴对比学习的 ...
扩散模型详解——DDPM
前言
扩散模型是一种新型生成式模型,专攻于图像生成任务。其特点是把图像视为张量空间中离散分布的点,每个点之间由大量高斯随机噪声淹没,图像与图像之间存在相当的距离,因此,能够设计一种噪声去除的方法,将不同张量点之间的噪声去除,即可得到离散的张量点值,即需要生成的图像。
Denoising Diffusion Probabilistic Model
去噪扩散概率模型(以下简称扩散模型),英文缩写为DDPM,是20年以降兴起的一种基于马尔可夫链生成式概率空间模型,它的特点是将噪声去除的过程建模为离散马尔可夫链,使用条件概率逐项传播迭代,且计算过程完全位于图像空间中,计算量极大,理解上比较直观。
真是蚌埠住了,VAE和DDPM的贝叶斯理论符号假设正好相反,可千万别搞混了。
前提与假设
扩散模型的数学底层工具是马尔可夫链,首先假设图像空间为x∈Ω(x)\mathbf{x}\in\Omega(\mathbf{x})x∈Ω(x),把一幅完整美观的图像视作为一个低熵体,记为x0\mathbf{x}_0x0,将其放于封闭空间中自行扩散Diffusion,文章假设:扩散过程是不断增加高斯白噪声的过程, ...
祖传代码
前言
本博客只是记录一下从师兄等处继承得到的一些代码及其使用说明。
国产事件相机
SDK及其使用说明:https://github.com/CelePixel。
pytorch-lightning使用心得
前言
这是啥?从未见过,甚至一来还屡出Bug,我差点就想把这个模块完全给删了。
真是不用不知道,一用吓一跳,好吧,原来这个东西竟然是基于torch构建的一个顶层/分布式/工作流/工具集的究极糅合框架,极大方便了用户的使用,可以说是赛博炼丹师的必学框架。
你最好是真的方便了使用
本框架的核心工作流是从yaml文件不经过显式的模型构建,直接将配置文件实例化得到待训练网络,分离网络构建和数据预处理,然后使用Trainer.fit(model, data)完成隐式的网络训练主流程,对新手不是很友好,因为直接通过Type checker往往不能定位到函数的地址。
使用体验
初次上手这个玩意,我感觉极难用。
再一次接触它时,我似乎多了一些感觉,它确实有存在的意义。
一些说明
本框架作为对Pytorch的上层封装,确实在一定程度上方便了用户的使用,在2021年以前主流的版本是pytorch-lightning 1.4版本,包括latent-diffusion在内的大模型框架都使用的是1.4版本,而在2021年8月后,pytorch-lightning迎来了一波大的更新,直接将版本号从1.4更新 ...
研究生活
2023/10/8 大作业
国庆节已经过完,最后的长假不情不愿地落下了帷幕。我必须面对看似凶险异常的研究生生活了,曾经许下的承诺每天读一篇文献,其实现在来看也一点没有做到(当然可以给自己找借口说:还没有定方向,但是没有定方向就意味着可以不学习吗?不然也)。在做第一个大作业的时候,我才意识到自己有多么头大,主要遇到了以下的问题:
写报告发现讲事情讲不清楚,抽象能力不够,什么层次该写什么内容?顶层设计需不需要写技术细节?当然是不需要,但是下意识要混一点进去,造成了无处不综述,无处不技术的尴尬局面,以致于写到后面发现没东西可写了。
工程问题和研究问题弄混了,工程问题是理论研究已经很充分了,在理论上证明了问题是可以解决的,才能在工程上去找路径;但是如果理论研究都没有透彻,就要把一个问题转化成工程问题进行研究,可能行得通(像古人那样凭经验和试错),但是大多数情况下是行不通的,切记不要觉得一个问题有趣就把它当作工程问题进行实践,大概率是没有结果的!
2023/10/19 显卡之纠结
从8月底开始陆陆续续一直在关注显卡啊电脑配件这些的价格,看了很久很久,平均每天要在这上面花费一个到两个小时的时间 ...
自动化数据采集插件
前言
仿真数据集的产生需要有大量的重复工作,包括两类:一类是控制无人机不同的飞行轨迹和姿态,另一类是采集传感器在不同情况下的信号输出,两个工作都是相当烦琐的且不可能手工重复操作的,因此有必要开发自动化的数据采集插件。
自动化数据采集插件
本部分介绍使用C++调用gazebo接口完成对传感器信号的自动化采集。
自动化飞行轨迹控制插件
本部分尚未完成。
ros安装与使用心得
前言
希望通过本博客,记录本人搭建的完全过程,减少后来者的搭建成本,以此避免反复造轮子,在本文中,沿用了博客的一贯配置,即使用Docker搭建Ubuntu20.04,并完成后续系列操作,本博客算是系列章节的第一章。
安装ROS
此处走过很多的弯路,不过到头来发现,官方给出的安装流程,才是最正确最有效的,首先在这里给出ROS安装帮助说明和PX4的官方链接,我们照着路径一步步来,能够完成一个从入门到入土精通的安装配置。
生成Docker容器
本节可以参考自博客,在此不再赘述,安装完成后使用nvidia-smi验证安装结果。
安装ROS
在容器内,使用以下命令逐个完成ROS的安装,首先是获取适合当前版本的源,这一步可以使用对应的镜像,例如在使用清华源的情况下,可以使用如下命令:
1sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sourc ...