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范数惩罚。
由以上四项构成正则项 ...
各种DDPM衍生模型
前言
本博客收集整理近年来一些常用的DDPM衍生模型,其特点是:
大多不需要重新训练,仅使用DDPM训练的UNet作噪声估计器;
聚焦于某个领域(如算法提速、图像恢复等);
大多不满足DDPM要求的马尔可夫性质;
数学推导过程依然是严格的,(区别于LDM)。
这些衍生模型拓展了扩散模型的应用领域,成为事实上的扩散模型大厦的基础。
Denoising Diffusion Implicit Model
本文主要参考自论文[1]。简单地说,DDIM不限制模型一定是马尔可夫的,去噪过程中下一步的样本直接来自于上一步的样本,因此原理上可以实现对随机过程的去随机化,即扩散过程将成为某个固定取值的确定性过程,保证使用相同输入得到的生成结果是相同的,这一性质有助于提高生成式模型的结果稳健性和效率。
DDIM是DDPM的一个极常用的变体,取消了DDPM所要求的扩散过程马尔可夫性质,直接对路径函数采样,极大地减少了扩散过程的采样步数,从原理上提高了扩散模型的实用性,与LDM相比,DDIM的数学过程更加严格。
优化目标
DDIM与DDPM共享同一个目标函数,即最大化对数似然函数,其形式如下:
arg m ...
扩散模型详解——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。
研究生活
2023/10/8 大作业
国庆节已经过完,最后的长假不情不愿地落下了帷幕。我必须面对看似凶险异常的研究生生活了,曾经许下的承诺每天读一篇文献,其实现在来看也一点没有做到(当然可以给自己找借口说:还没有定方向,但是没有定方向就意味着可以不学习吗?不然也)。在做第一个大作业的时候,我才意识到自己有多么头大,主要遇到了以下的问题:
写报告发现讲事情讲不清楚,抽象能力不够,什么层次该写什么内容?顶层设计需不需要写技术细节?当然是不需要,但是下意识要混一点进去,造成了无处不综述,无处不技术的尴尬局面,以致于写到后面发现没东西可写了。
工程问题和研究问题弄混了,工程问题是理论研究已经很充分了,在理论上证明了问题是可以解决的,才能在工程上去找路径;但是如果理论研究都没有透彻,就要把一个问题转化成工程问题进行研究,可能行得通(像古人那样凭经验和试错),但是大多数情况下是行不通的,切记不要觉得一个问题有趣就把它当作工程问题进行实践,大概率是没有结果的!
2023/10/19 显卡之纠结
从8月底开始陆陆续续一直在关注显卡啊电脑配件这些的价格,看了很久很久,平均每天要在这上面花费一个到两个小时的时间 ...
图像检测模型详解
前言
图像检测领域是一个较大的分支,目前主流的方法是YOLO,但是R-CNN系列也是非常经典的方法,有必要对这两种类型的方法 作深入的了解,才方便 后续的方法 创新。之前一直不理解YOLO模型的Anchor机制的具体含义,直到4月17号才突然明白,原来指的是一种耦合关系。
R-CNN系列
文献
Rich feature hierarchies for accurate object detection and semantic segmentation
Fast R-CNN
解决的问题
检测Detection一词的定义,在文献Regionlets for Generic Object Detection提到过一嘴,本意是从一大堆候选的子区域中,选出来带有物体的区域(也可以是超像素),进一步延伸到了对这个子区域按标签分类,这就是当前深度学习领域检测任务的由来。
这两篇文献,归为同一个类,都是R-CNN检测网络的祖宗之法,是最早提出基于区域的CNN检测方法的文献,其主要解决了CNN不能直接用于检测任务的问题,可谓是开检测领域 深度学习之先河。
主要内容
基于区域的检测方法 ,是这两篇文献 ...
C++学习心得
学习目标
争取熟练掌握C++,达到能够在查看标准库手册、不引入第三方库的情况下独立完成某一个项目的能力,能有python的60%功力就已经足够了,为后续的研究、项目打下基础就好。
学习体会
项目文件夹命名风格:一个文件夹放一个项目,里面有一个include文件夹放头文件,一个src文件夹放源文件,main.cpp文件也需要放在这个文件夹里面。一个项目文件夹内配置一个CMakeLists.txt文件以供Cmake配置。如项目内包括了多个子项目,则另起一个文件夹,将所有子项目放在该文件夹内,并配置一个顶层的CMakeLists.txt文件。
在C语言的变量初始化的基础上,C++增加了更丰富的初始化方法,可以使用默认初始化(按如下语句声明某个类的变量:classname CN),或者使用自定义初始化方法,初始化可以引入参数(类似于python的init函数),初始化方法在类的声明中直接定义,感觉这种语法,更加面向对象,接近于python的风格了。
lambda函数与python一样,没有必要在迭代器的外部单独定义,只需要在使用的时候定义好就行,放在头文件中不合理(因为它是一个对象,头文件中 ...
CUDA为Torch编写自定义算子
前言
坑啊坑!在小小的工位上坑啊坑
必须要把这种巨坑的编程风格公开处刑,这篇论文:Multiple Video Frame Interpolation via Enhanced Deformable Separable Convolution,真把我坑惨了。先是以为cupy不兼容,遂学CUDA+Torch;复以为驱动问题,用上docker,最后以为是硬件问题,搞个压力测试,通通失败!枉费我与师姐交流如此之久也,若不是今天一早忽然想到设备的问题,加上师姐一提点,这破代码不知道还要接着坑多少人呢!
这位代码的祖宗,也是祖宗之法不可变也,经典屎山;论文对它是一点不改,一动不动直接照搬,有设备问题的Bug也不解决,坑了我整整两天的时间!对它的厌恶是无以复加!
分割线以下是正常部分。
Pytorch是当前最为流行的深度学习框架,其与CUDA的深度兼容性也极大地方便了使用者在不需要了解任何GPU底层架构和编程知识的前提下写出高性能的解决方案,可谓是前无古人,后…来者也。因此当下所有的网络模型、甚至是新的网络框架(oneflow、spikingjelly、slayer等)都在积极兼容torch。
...
CUDA编程初体验
前言
真的比较难蚌,谁能想到有朝一日我终于走上了CUDA编程的道路,要不是这个该死的论文非要用什么“弹性可分离卷积”,还真的就不能使用torch直接写出来,必须使用自定义的算子,必须要接触到CUDA编程。
无心插柳柳成荫吧,毕竟,搞深度学习的人不接触一点高性能计算,不懂得一点C++和CUDA编程,说出去给人的感觉也太不专业了,学一点,总归是好的。
CUDA编程基础
了解CUDA,可参考如下博客,必须要对GPU的硬件架构方式有所了解,对于英伟达的GPU,可使用以下示意图说明:
不同于CPU的冯诺依曼架构,GPU中的控制器与缓存器几乎同时要对应极大数量的低精度算术逻辑单元,这一批算术逻辑单元共享同一个缓存单元,全局共享内存位于DRAM上,DRAM通过PCIE接口与CPU的外接PCIE接口,GPU由于其本身极差的单核 处理性能,其不能单独作为一个计算机系统中央处理单元使用,因此只能作为CPU的一个外部设备device,因此CPU与GPU的关系是协同处理关系。早期的图形处理单元作为外设的普通一员,使用与其他外设共用的南桥接口,受CPU节制;随着图像处理单元的工艺升级和深度学习的应用,现代GP ...
SCADA了解笔记
前言
用于学习过程中的笔记。
部分专业名词
SCADA:Supervisory Control And Data Acquisition,监控与数据采集
DCS:Distributed Control System,分布式控制系统
PLC:Programmable Logic Controller,可编程逻辑控制器
RTU:Remote Terminal Unit,远程终端单元
HMI:Human Machine Interface,人机界面
IED:Intelligent Electronic Device,智能电子设备
MMS:Manufacturing Message Specification,制造信息规范
IT:这个IT不是信息技术,但是是什么还不太清楚
OT:Operational Technology,运营技术(或许?)
TCP:Transmission Control Protocol,传输控制协议
IP:Internet Protocol,网络协议
系统组成
SCADA是指一种介于DCS和PLC之间的控制系统,兼具了PLC的灵活性和DCS的顶层设计。包含了上位机、 ...