从另一种简单的形式理解扩散模型原理和代码实践 本文从一个简化的问题入手,用两个不同分布的点集这种简单的数据类型作为样例,讲解了DDPM问题的建模过程,整个建模过程的核心是设计前向公式,并围绕着前向公式变换为推理过程,进而引导读者思考模型在推理过程中起到的作用。并用python代码做了训练和测试的实验,最终的结果也符合我们的预期。从理论和实践上较为完整的介绍了DDPM的核心思想和使用方法。本文为作者原创,转载请注明出处。
Instant Neural Graphics Primitives with a Multiresolution Hash Encoding以及源码浅析 现存的一些新视图合成的训练过程和渲染速度都比较慢,其原因是因为query point需要使用MLP编码,而且在一个采样空间中,存在很多无效的query point也要计算其density和color,从而出现很多冗余计算。作者针对这个问题,提出了基于哈希的特征提取方式,通过反向求导更新哈希表中的特征向量。作者陈述了非哈希式的优化方法的弊端,即便像八叉树等方法可以将训练缩短至几分钟,但仍有多余计算,可以进一步精简。作者提出了多分辨率哈希索引,每个分辨率有独立的哈希表,将索引出来的特征全部concat之后送入
拉普拉斯变形的原理解析和python代码 拉普拉斯变形是图形学处理mesh的常用方法,它假定mesh的顶点,在变化前后,顶点的拉普拉斯距离应该是一致的。L=D−A=D(I−D−1A)D是每个顶点的度,A是邻接矩阵。假设有变形前的顶点为V,有L*V,将其拆解,可以发现就是求每个顶点i的顶点位置减去相邻的顶点位置*(1/di)。LV1=Vi−j∈Ni∑di1Vjj是顶点i的邻接顶点索引。因此,拉谱拉斯矩阵中保存了顶点的局部信息。
网格细分 mesh subdivision相关资料以及python代码 其中threshold控制是否细分,如果mesh的最长的边小于threshold,就不分割。首先根据github中pymeshlab的readme安装好pymeshlab。以上代码和用meshlab GUI的loop算法一样。推荐使用pymeshlab。
sklearn中的SparseCoder是什么?又该如何使用 SparseCoder的应用场景不多,因为本身无法考虑更多的约束,比如加入不等式,就不好求解了。SparseCoder其实是一个最优化求解方法。它所处理的对象是线性方程。因为3dmm的公式中。就有求表情基系数的地方,而那里是线性方程。在3dmm人脸重建中,可以应用SparseCoder。则可以使用SparseCoder。...
从RepVgg到MobileOne,含mobileone的代码 重参数化的思想本质上就是利用线性模型的可加性。在工业界就在conv和bn层融合上有所应用。最近几年一直有re-parameter的工作。RepVGG是一个比较好的应用。VGG是直筒式模型,因为没有skip connnection,导致训练更深层的vgg会出现模型的退化。但如resnet等,skip connnect为端上设备增加了运行耗时,在数据的存取上有不小的消耗。因此RepVGG,将重参数的思想融合进来,在训练时,为vgg引入了skip connection,在测试时将skip connection和
EditGAN阅读纪要 official code背景目前的GAN图像编辑往往遵循两条路线:输入一些condition作为额外输出,让模型在输入图像的全局信息下,修改图像使得符合该条件。条件一般有class label或者是semantic mask。第二种是在隐空间去解耦各种属性,得到控制该属性的方向向量。让隐变量朝向这个方向进行shift,就能实现编辑的目的。第二种也有用label训练分类器实现编辑效果,也有用无监督的方式获得方向向量的方式。同时也有修改隐变量,也有修改模型参数这两种实现编辑的方式。然而,上面两种方式各有
Pastiche Master: Exemplar-Based High-Resolution Portrait Style Transfer cvpr2022 code and paper背景现有的stylegan finetuning的人物风格化方法,基本上是将source domain变换到target domain,这要求target domain至少上百张质量较高的样本,并且只能实现一种风格化。DualStyleGAN在stylegan-ffhq的基础上,同样是finetuning,但是增加了condition,引入dual style path以及有效的监督,使得可以利用风格模板,生成符合模板风格的人脸图像。MethodDua
SimSwap: An Efficient Framework For High Fidelity Face Swapping offifical infernece code背景Deepfake式的换脸decoder的目的是将B的脸换到A的头上。但输入特征是由从B处得到,因此要求decoder学习到了A的表示。这注定了Deepfake只能对两个人之间换脸,无法实现任意人之间的换脸。MethodSimSwap其实也很简单,模型分成5个部分。一个Encoder,对target image提取特征。IIM: 由多个ID block组成的残差网络。Decoder,输出具备source image 的人脸的图像,但属性来自t
Relation-aware Video Reading Comprehension for Temporal Language Grounding 论文阅读笔记 来自云从,即将开源?paper是做文本查询对应视频片段的工作,即给一个文本作为query,需要知道一段视频中,满足这个query描述的起止时间和终止时间。输出的时间戳满足属于连续时间段。如上图所示,红色框中起止和终止时间就是模型的预测输出。背景众多的temporal language grounding(TLG)方法,注重整个句子和视频的关系,而忽略了每个token和moment的关系,后者是一种更加细粒度的语言信息。而且还忽略了多个候选框之间的联系,暴力的采用ranking方法,单独处理每个候选
Labels4Free: Unsupervised Segmentation using StyleGAN论文解读 入选ICCV2021,官方page website,暂未开源paper还是很有创意的,只是pipeline搭建起来很繁琐,还有很大的改进空间。背景styleGAN等生成对抗网络可以生成逼真的图像,生成器的中间特征已经有了前景和背景的特征学习能力,但目前没有方法研究让GAN生成图像的同时,还生成前景目标的mask。本篇paper正是为了解决该问题。作者基于两种假设前景和背景是独立的,因此独立生成然后组合,也能生成逼真的图像。生成器的中间特征学习到了前背景特征分布,是可以利用起来,用于生成前景目标
transformer中的相对位置偏置的介绍(relative position bias) 前言在很多近期的transformer工作中,经常提到一个词: relative position bias。用在self attention的计算当中。笔者在第一次看到这个概念时,不解其意,本文用来笔者自己关于relative position bias的理解。笔者第一次看到该词是在swin transformer。后来在focal transformer和LG-transformer中都看到它。relative position bias(相对位置偏置)基本形式如下:Attention(Q,K
Python多进程池的使用详解,以及结合tqdm进度条的使用 进程池是为了简化多进程任务而生。当我们有大量的任务,其处理函数都是相同的,或者只是函数参数不同。这种情况,直接生成和任务数量相同的进程是极其消耗资源的(比如用Process和for依次生成进程)。这个时候就非常适合使用进程池Poolimport multiprocessing as mpn_proc = 5pool = mp.Pool(n_proc)以上代码生成了5个进程的池子。最多可以同时运行5个相同的函数。pool类有以下4种非常常用的类型。apply:阻塞,任务其实是一个一个执行完的。
Designing an Encoder for StyleGAN Image Manipulation论文解读 官方源码和论文地址又是基于StyleGAN用于图像编辑的又一力作!基于StyleGAN做图像编辑,首先要找到隐向量(GAN inversion),这个过程的主流方式有两种:优化隐向量,找寻能重构出指定图像的隐向量。代表有image2style,in-domian GAN。设计一个Encoder,用于将图像映射到StyleGAN的隐空间上。代表有style-encoder。其实还有一种比较小众,利用分类器的思想,步骤也繁琐。代表有interpretGAN。IDEA目前基于styleGAN的图
MAST: A Memory-Augmented Self-Supervised Tracker论文解读和代码剖析 官方代码作者开源的官方代码有一处错误,在代码剖析部分将指出。有人已经在github上提出了issue,作者一直没回应。我也是在阅读代码的时候发现了这个错误。背景VOS任务很少有使用自监督的,即在训练中不借助mask,只用frame image来训练。作者巧妙的在STM的基础上,将value换成frame自身,使用过去帧重构当前帧作为代理任务(proxy),实现自监督的vos。效果还不错,在davis val上是64的J&F。核心思想仍然是采用STM的memory bank的思想。mem
U-GAT-IT: 人脸转动漫网络(非配对图像翻译)精华总结 ugatit也是基于cyclegan,需要使用gan loss, cycle loss和idt loss。除此之外,论文还提出了在G和D中使用一个分类器,训练分类器也需要一个loss,叫做cam loss,受类激活映射启发。论文的两个创新点:adaptive Layer Instance normalization(adaLIN)类似于SENet的通道注意力。只不过exciting权重是来自CAM分类器。方法G_A代表从A域往B域转换,D_A代表判别真实的B域和假的B域样本G_A(X)。另外的
Visual Tracking by TridentAlign and Context Embedding论文解读和代码剖析 用于在GPU上实时的目标跟踪新方法,入选ECCV2020官方代码我认为论文有如下特点:相对于simaMask这种孪生网络,作者进行full-frame matching。不在上一帧预测位置expand一个box作为search image。直接用原图作为search的对象。因为没了时间smooth假设,没法在目标邻域截取search image。为了解决在原图存在很多相似目标的情况,作者提出tridentAlign方法,考虑到多尺度,更好的表达时序上的目标尺度变化。使用full-frame se
PyTorch多进程分布式训练最简单最好用的实施办法 PyTorch的distributed训练已经逐渐代替nn.Dataparallel的方式,因为官方对其有更好的支持,并且训练速度更快。大家可能知道一种启动方法,就是用torch.launch启动。但有没有被冗长的代码段惹的不开心呢。今天阿杰为大家带来一种更简单的启动方式,那就是torch.multiprocessingNote: torch.multiprocessing的启动和用torch.launch本质是一样的,就是单纯的代码量少。使用方法使用头文件import torch.multipro