
算法
文章平均质量分 97
sooner高
DeepFaceLab作者, Tensorflow & PyTorch contributor,深度学习小学生
展开
-
[经典的图像warping方法] Thin Plate Spline: TPS理论和代码详解
本文的目标是详细分析一个经典的基于landmark(文章后面有时也称之为控制点control point)的图像warping(扭曲/变形)算法: Thin Plate Spine (TPS).TPS被广泛的应用于各类的任务中, 尤其是生物形态中应用的更多: 人脸, 动物脸等等, TPS是cubic spline的2D泛化形态.原创 2023-01-21 10:43:20 · 11614 阅读 · 8 评论 -
[NeRF]代码+逻辑详细分析
0. 前言鉴于最近两年(2020,2021),隐式渲染(implicit rendering)技术非常火爆(以NeRF和GRAFFE为代表),而由于这种隐式渲染需要一点点渲染的基础,而且相较于正常的CV任务不是很好理解。为了方便大家学习和理解,我这里将以ECCV2020的NeRF(神经辐射场 NeRF: Neural Radiance Field)[1]为例,对其进行代码级(基于pytorch3d[3]的实现)的详细剖析,希望对需要的朋友有所帮助。1. 什么是NeRF根据官方的项目[1], NeRF实原创 2021-07-21 11:21:27 · 44527 阅读 · 15 评论 -
[生成模型新方向]: score-based generative models
0.前言最近(2021.6)发现了生成模型的一种新的trending范式: score-based generative model, 用一句话来介绍这种结构,就是:通过在噪声扰动后的大规模数据集(noise-perturbed data distributions)上学习一种score functions (gradients of log probability density functions)(得分函数, 一种对梯度的对数似然估计),用朗之万进行采样得到符合训练集的样本. 这种新的生成模型,翻译 2021-06-19 18:48:22 · 26963 阅读 · 9 评论 -
基于参数化模型(MANO)的手势姿态估计---全面剖析
目前, 主流的手部姿态估计的技术方案是使用马普所于2017年提出的MANO参数化模型, 在此基础上回归3D坐标, 这是因为MANO有很合理的结构以及定义好的前向动力学树。本文的目的在于为大家介绍,基于MANO的手部姿态估计的流程:包括并不限于: 数据处理,MANO的推理流程(与论文对齐),手的解剖学和生物学特点。1. 什么是手部姿态估计?我理解的 手部姿态估计(hand pose estimation) 是:同人体姿态估计一样, 是给定一张手部特写图片,估计其姿态(2D/3D keypoint)的.原创 2021-04-09 14:48:07 · 26228 阅读 · 33 评论 -
[OPENAI2021力作][CLIP: Connecting Text and Images]
本文翻译自OpenAI官方博客[1], 于2021年1月5日发布.0. 前言本博客是openAI的大佬们的全新作品,其提出了可以用于从自然语言监督信号中有效提取视觉信息的,名为CLIP的神经网络. CLIP可以被用于任何视觉分类的benchmark(仅需提供其对应的视觉类别即可), 同GPT-2/3类似,有着强大的"zero-shot"能力。我认为,CLIP和DALLE这2篇论文,核心是将万能的预训练模型扩展到多模态领域(visual-natural language)。这真心非常强…1. 开篇.翻译 2021-01-30 16:44:36 · 6445 阅读 · 1 评论 -
StyleGAN2 解释
本文是[1]的译文, 按照作者Connor Shorten的说法, 此博客讨论的是StyleGAN2的诸如weight demodulation, path length regularization和去掉progressive growing等信息。虽然我去年底自己复现过StyleGAN2的pytorch版, 但对这些内容也有些忘记了,借此机会复习下。对于StyleGAN不了解的小伙伴,建议先看下别人写的关于StyleGAN的基本介绍,然后再来看本文,相信会收获更多~0. 前言来自Nvidia.原创 2020-10-21 15:10:39 · 22736 阅读 · 1 评论 -
Yolov5 系列2--- 如何使用Yolov5训练你自己的数据集
上一篇《Yolov5 系列1— Yolo发展史以及Yolov5模型详解》讲了Yolo的发展历史,这一篇的目的是讲述如何使用Yolo v5训练自定的数据集,并会分析一些常见的选项以及背后的故事。相比第一部分《Yolov5 系列1— Yolo发展史以及Yolov5模型详解》的内容,本篇文章主要聚焦于使用代码进行训练,并对一些需要关注的点进行了说明。目的是让读者能够非常快的上手代码,训练其自己的目标检测任务。3. 配置Yolo v5的环境+准备数据集+训练[1]这部分主要参照Yolo v5作者Glenn.原创 2020-09-29 20:23:20 · 16846 阅读 · 11 评论 -
Yolov5 系列1--- Yolo发展史以及Yolov5模型详解
最近在做检测相关的工作,几年前分析过faster-rcnn的代码和论文。现在,把yolov5这个最新且快的模型进行梳理。本文会从Yolo的发展历程开始,到损失函数,mAP的概念,最后到如何在代码层面训练你的定制化数据集。好了,让我们开始吧~1. YOLO (You Only Look Once) 的发展历史这部分内容主要借鉴自 科技猛兽@知乎 在知乎的发文,我这里会做一下简化,具体细节请去看这位大佬的文章 [1-3]。1.1 YOLO v0YOLO v0的思路起源于将基本的CNN思路从分类任.原创 2020-09-28 20:45:27 · 55034 阅读 · 15 评论 -
(中文详解篇)smallpt: 99行代码完成全局光照Path Tracing
目录0. 什么是SmallPTFeatures1. 光线追踪需要了解知识1.1 什么是全局光照?1.2 渲染方程2. SmallPT代码分析2.1 代码块12.2 代码块22.2.1 主函数第1步: 设置呈像平面2.2.2 主函数第2步: 设置相机位置2.2.3 主函数第3步: 创建图像2.2.4 如何计算radiance?2.3 shading 着色2.3.1 diffuse reflection 漫反射2.3.2 Ideal Specular (Mirror) Reflection 高光反射2.3.3原创 2020-08-24 00:49:46 · 8519 阅读 · 0 评论 -
<CVPR2020 Oral>AI妆容迁移: Pose-Robust Spatial-Aware GAN for Customizable Makeup Transfer
写在前面: 跟朋友讨论的时候,发现妆容迁移也有挺大的市场,看到一篇关于这个的介绍文,学习一下~论文地址: https://arxiv.org/pdf/1909.06956.pdf这篇论文是CVPR2020 oral. 没有开源训练代码~古老的美容行业(The age-old beauty industry)正在经历一场变革, 成千上万的博主在互联网上分享美容、化妆技巧、技术和化妆偏好。 但是,当问题来到: "我应该涂哪种唇膏或者为啥我画出来的妆跟demo video里的差这么大?"的时候,人工.原创 2020-07-29 23:51:01 · 1507 阅读 · 0 评论 -
[CVPR2020最佳论文详细解读] Unsupervised Learning of Probably Symmetric Deformable 3D Object
本文是基于CVPR2020最佳论文,来自牛津VGG组的吴尚哲学Unsup3D原创 2020-06-26 22:54:26 · 8712 阅读 · 15 评论 -
2017 LARS:LARGE BATCH TRAINING OF CONVOLUTIONAL NETWORKS (训练大Batch的卷积神经网络)
0. 写在前面前一段时间调研AI芯片在尽量保证准确率的情况下,如何快速训练大规模数据集并分析其可行性。UC Berkeley的大佬尤洋[1]的这篇<LARS:LARGE BATCH TRAINING OF CONVOLUTIONAL NETWORKS> 提供了一个很好的保证在大Batch Size的分布式训练情况下,精度损失很小的策略。下面, 让我们开始~1. 摘要 (Abstra...原创 2020-01-26 14:24:06 · 2655 阅读 · 0 评论 -
如何构建一个大脑---为工程师们介绍神经生理学.
日期: 2019.11.25 星期一 晚作者: Julius Kunze (这个小伙是UCL博士, 我是看他写了基于Jax的神经网络框架而关注他的, 他的这个项目是属于刚刚起步阶段, 只有他自己1个人提交代码.)译者: Samuel Ko(即本人)1. 为什么想要翻译这篇文章?因为我看到这篇文章的中段, 里面以生物学的角度阐述了membrane potential的变化情况, 这在之前...转载 2019-12-02 18:20:09 · 1163 阅读 · 1 评论 -
BFS——广度优先算法(Breadth First Search)
1、前言 这几天刷leetcode经常碰到DFS BFS的问题,之前一直也是模棱两可,凭着感觉做,是需要总结一下了。广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0V_0开始,辐射状地优先遍历其周围较广的区域,因此得名。 一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算原创 2017-07-27 10:56:16 · 131229 阅读 · 6 评论 -
激活函数ReLU、Leaky ReLU、PReLU和RReLU
转自:http://i.ifeng.com/lady/vnzq/news?m=1&aid=124686188&mid=2EjJF3&all=1&p=2. 关注这个问题是因为在原生的Tensorflow中,是没有PRelu的,只在Tensorflow的高级API上有,比如Keras, TFLearn等.“激活函数”能分成两类——“饱和激活函数”和“非饱和激活函数...转载 2018-11-06 11:33:57 · 5143 阅读 · 0 评论 -
Tensorflow③ Keras的LSTM和TF的LSTM实现的源码剖析
最近在做可以转成pb模型的RNN/LSTM层的实现细节分析。经过一些分析,发现了在Keras里面常见的keras.layers.LSTM和Tensorflow的tf.contrib.rnn.LSTMCell有一些实现上面的区别。本文将立足于Keras和Tensorflow源码,分别搭建两个简单的一层LSTM的神经网络,验证权重的解析顺序及计算逻辑的正确性。Let’s roll~0. 常见的L...原创 2018-12-19 13:00:18 · 8954 阅读 · 25 评论 -
2018 Iterative Visual Reasoning Beyond Convolutions 论文梳理
18年是GNN开始初出茅庐也是大放异彩的一年, 这篇论文是李飞飞团队的关于GNN在CV领域中的一个开拓性的应用.甚至作者陈鑫磊称, 通过结合CNN和GNN, 本文发明了&amp;quot;下一代的视觉识别系统&amp;quot;. 这个观点是不是很让人瑟瑟发抖? 好了, 下面开始分析论文结构和代码组成.0. 论文简述近年来, 由于卷积神经网络的大放异彩, 我们在如图像分类, 图像分割等经典的CV任务中取得了很大的进展. 但是...原创 2019-01-12 11:52:37 · 2561 阅读 · 2 评论 -
2017 Deformable ConvNets V1介绍及分析(包括代码)
最近Deformable Conv V2比较火, Deformable Conv的概念是MSRA的戴季峰等人提出来的, 挺不错的一个东西, 对于有形变的物体的识别效果很好, 今天先把其前身Deformable ConvNets V1做个总结, 以便打好学习Deformable ConvNets V2的基础. 发现了一个特别好的博客 imperfect00——deformable convolut...原创 2019-01-23 15:25:33 · 3462 阅读 · 3 评论 -
Nevergrad: 一个Facebook发布的derivative-free的开源优化工具包
本文翻译自Olivier Teytaud等人于2018年底发布在code.fb.com上的一篇文章Nevergrad: An open source tool for derivative-free optimization . Nevergrad是一个新颖的东西, 按开发者的意思, 未来要将其纳入到对PyTorch等AI框架的支持中, 这引起了我的一点点兴趣, 下面开始贴正文.0. 前言...翻译 2019-02-28 13:45:53 · 1671 阅读 · 2 评论 -
2018 Additive Attention分析及代码
最近需要评估一些self-attention模块的效果, 除了简单好用的Squeeze-Excitation外, Additive Attention (AA) 是最近开始受到人们注意的一个新型self-attention的注意力机制, 来自犹他大学和亚马逊的作者们, 原意是将其用在BiLSTM的序列模型中的, 但是因为我是做CV方向的, 所以借由他的实现, 参考论文, 实现了精简版的(即可以...原创 2019-03-29 18:03:26 · 5076 阅读 · 5 评论 -
2017 如何训练一个GAN网络
GAN, 作为一种非常厉害的生成模型, 在近年来得到了广泛的应用. Soumith, PyTorch之父, 毕业于纽约大学的Facebook的VP, 在2015年发明了DCGAN: Deep Convolutional GAN. 它显式的使用卷积和转置卷积在判别器和生成器中使用. 他对GAN的理解相对深入, 特地总结了关于训练GAN的一些技巧和方式, 因为不同于一般任务, 像设置优化器, 计算l...翻译 2019-04-08 22:26:56 · 4936 阅读 · 0 评论 -
ON-LSTM:用有序神经元表达层次结构
本文转载自 苏剑林[1]在科学空间上关于ON-LSTM非常好的解析, 中间加入一些细节的说明, 以期读者在理解原理之余, 对其实现也有概念. 下面开始…前言今天介绍一个有意思的LSTM变种:ON-LSTM,其中“ON”的全称是“Ordered Neurons”,即有序神经元,换句话说这种LSTM内部的神经元是经过特定排序的,从而能够表达更丰富的信息。ON-LSTM来自文章《Ordered ...转载 2019-08-20 11:18:58 · 2265 阅读 · 2 评论 -
机器翻译评价指标BLEU介绍
最近需要设计一个机器翻译相关的试验, 其中好多东西都不同, 先从基础的评价指标来吧. 本文翻译自Jason Brownlee的博客[1]. 可能会简化一部分内容, 如有需要请读者直接读原文.0. 前言BLEU (其全称为Bilingual Evaluation Understudy), 其意思是双语评估替补。所谓Understudy (替补),意思是代替人进行翻译结果的评估。尽管这项指标...翻译 2019-08-28 11:15:37 · 64351 阅读 · 9 评论 -
反卷积的棋盘格效应
本文译自来自谷歌大脑的AUGUSTUS ODENA等人的文章: Deconvolution and Checkerboard Artifacts[1], 虽然是16年的博客了, 但是其对解释反卷积的棋盘效应已经如何规避都给出了非常好和到位的意见. 下面让我们开始~前言当我们分析由神经网络生成的图片的时候, 常常会发觉有一种奇怪的人造物 (artifacts) 的棋盘格效应 (checker...翻译 2019-09-30 19:12:01 · 10910 阅读 · 2 评论 -
PyTorch学习笔记(12)——PyTorch中的Autograd机制介绍
在《PyTorch学习笔记(11)——论nn.Conv2d中的反向传播实现过程》[1]中,谈到了Autograd在nn.Conv2d的权值更新中起到的用处。今天将以官方的说明为基础,补充说明一下关于计算图、Autograd机制、Symbol2Symbol等内容。0. 提出问题不知道大家在使用PyTorch的时候是否有过“为什么在每次迭代(iteration)的时候,optimizer都要清...原创 2018-10-13 09:35:00 · 8738 阅读 · 0 评论 -
PyTorch学习笔记(11)——论nn.Conv2d中的反向传播实现过程
0. 前言众所周知,反向传播(back propagation)算法 (Rumelhart et al., 1986c),经常简称为backprop,它允许来自代价函数的信息通过网络向后流动,以便计算梯度。它是神经网络之所以可以进行学习的最根本因素。在如PyTorch、Tensorflow等深度学习框架中,都广泛的使用了自动微分(Autograd)的机制,主要也就是从哈佛的智能概率系统组(Har...原创 2018-10-12 12:36:57 · 8161 阅读 · 8 评论 -
PyTorch学习笔记(10)——上采样和PixelShuffle
去年曾经使用过FCN(全卷积神经网络)及其派生Unet,再加上在爱奇艺的时候做过一些超分辨率重建的内容,其中用到了毕业于帝国理工的华人博士Shi Wenzhe(在Twitter任职)发表的PixelShuffle《Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional...原创 2018-09-27 10:28:20 · 119898 阅读 · 23 评论 -
OpenCV之轮廓检测(检测银行卡上的黑色磁条)
最近有需要做银行卡上黑色磁条的提取的工作。因为这是比较典型的轮廓检测问题。用DL的方法需要大量的标注数据集,所以想到用openCV来做。下面梳理一下流程:前言这篇博文的目的是应用计算机视觉和图像处理技术,展示一个银行卡上黑色磁条的基本实现。 需要注意的是,这个算法并不是对所有银行卡都有效,但会给你基本的关于应用什么类型的技术的直觉,这种感觉的积累对于解决工程问题来说,是有益的。假设我们要检测下图原创 2017-09-26 14:15:52 · 5272 阅读 · 0 评论 -
FCN全卷积网络
最近在做图像分割的任务,看到了伯克利的Jonathan Long、Evan Shelhamer等在CVPR2015上发表的《Fully Convolutional Networks for Fully Convolutional Networks》,这是CVPR的Best Paper。顿时感觉CNN+图像搜索的方法有些笨拙了。特此总结一下,并归纳其与CNN的关系。背景自2012年AlexNet提出原创 2017-09-21 16:42:23 · 6397 阅读 · 0 评论 -
医疗图像切割FCN的Keras实现
最近看了几篇关于视网膜层切割的处理论文,现在比较流行的方法是用FCN(全卷积神经网络来做)。在医疗领域中,通常使用一种称之为U-net的FCN来做图像切割,效果不错。 本文基于U-net来做实现,详细介绍了如何搭建一个U-net神经网络。全卷积神经网络关于FCN的介绍详见我的FCN全卷积网络的博客,这里不再赘述啦。医学图像分割框架现在的医学图像分割(尤其是眼科OCT图像(光学相关层析图像原创 2017-09-23 07:35:35 · 13691 阅读 · 26 评论 -
数据(机器学习/深度学习)竞赛平台——Kaggle
这篇文章适合那些刚接触Kaggle、想尽快熟悉Kaggle并且了解项目情况的朋友。本文分为两部分介绍Kaggle,Part One简单介绍Kaggle,Part Two将简单介绍正规的竞赛的项目,大家可以针对性的解决感兴趣的题目。1、Kaggle简介Kaggle是一个数据分析的竞赛平台,网址:https://www.kaggle.com/企业或者研究者可以将数据、问题描述、期望的指标发布到Kagg原创 2017-08-14 19:03:13 · 33341 阅读 · 1 评论 -
FM算法(Factorization Machine)
因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解的机器学习算法。目前,被广泛的应用于广告预估模型中,相比LR而言,效果强了不少。一、FM背景FM(Factorization Machine)主要目标是:解决数据稀疏的情况下,特征怎样组合的问题。以一个广告分类的问题为例,根据用户画像、广告位以及一些其他的特征,来预测用户是否会点击原创 2017-08-20 17:31:23 · 34479 阅读 · 4 评论 -
DFS——深度优先算法(Depth First Search)
1、前言 这几天刷leetcode经常碰到DFS BFS的问题,之前一直也是模棱两可,凭着感觉做,是需要总结一下了。深度优先搜索(缩写DFS)是一种在开发爬虫早期使用较多的方法。属于图算法的一种,也是对一个连通图进行遍历的算法。其思想是:从一个顶点vv开始,沿着一条路线一直走到底,如果发现不能到达目标,那就返回到走不通节点的上一个节点,然后尝试从另一条路开始走到底,每个节点只可以访问一次。这原创 2017-07-21 15:36:55 · 19395 阅读 · 2 评论 -
关于深度学习优化器 optimizer 的选择,你需要了解这些
在很多机器学习和深度学习的应用中,我们发现用的最多的优化器是 Adam,为什么呢?下面是 TensorFlow 中的优化器, https://www.tensorflow.org/api_guides/python/train 在 keras 中也有 SGD,RMSprop,Adagrad,Adadelta,Adam 等: https://keras.io/optimizers/我们可以转载 2017-08-03 18:17:22 · 26562 阅读 · 4 评论 -
受限玻尔兹曼机(Restricted Boltzmann Machine)分析
受限玻尔兹曼机,简称RBM(下文中统一用RBM表示)。写这篇博客的原因是,下午看到吴恩达在Coursera上的Deep Learning课程中,跟Hinton的40分钟的采访,问Hinton他在AI中最令人惊喜的发现是什么,Hinton说就是他和Terry Sejnowski一起提出的玻尔兹曼机(Boltzmann Machine)。以此为契机,来分析一下BM和RBM。1、什么是BM?BM是由Hi原创 2017-08-17 21:08:24 · 14422 阅读 · 3 评论 -
ReduceByKey算子理解
前言 最近经常使用到reduceByKey这个算子,想着结合*ByKey算子和stage划分一起总结一下,所以沉下心来仔细过了一遍相关的博客和帖子,在此整体过一遍这个算子,那么我们开始:国外的大牛一上来给出这么一句话,个人感觉高度概括了reduceByKey的功能:Spark RDD reduceByKey function merges the values for each key usi原创 2017-07-25 20:12:01 · 5902 阅读 · 0 评论 -
RNN中BPTT的推导和可能的问题
最近开始啃LSTM,发现BPTT这块还是不是很清晰,结合RNN,把这块整理整理RNN前馈神经网络(feedforward neural networks)如下图所示(这块内容可见我的博客神经网络BP算法): 假设我们的训练集只有一个实例(x(1),y(1)x(1),y(1)),我们的神经网络是一个三层的神经网络,即隐藏层只有1层。 以中间层神经元SjS_j,(j=1,2)为例,它只模仿了原创 2017-07-30 22:17:57 · 3043 阅读 · 0 评论 -
机器学习基础——BP算法
BP后向传播算法前言昨天看到了一篇关于BP后向传播的论文,想着把这方面的知识彻底理解一下,本文将基于该论文和基本的BP算法。解释其基本概念和权值调整的运算过程。一、BP神经网络的基本原理 BP(Back Propagation)网络是1986年由Rinehart和McClelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习原创 2017-04-29 06:56:32 · 13332 阅读 · 2 评论 -
Faster-RCNN代码+理论——1
昨天刚参加完一个ibm的医疗影像大赛——我负责的模型是做多目标识别并输出位置的模型。由于之前没有什么经验,采用了在RGB图像上表现不错的Faster-RCNN,但是比赛过程表明:效果不是很好。所以这里把我对Faster-RCNN的原理及代码(https://github.com/yhenon/keras-frcnn)结合起来,分析一下,以厘清Faster-RCNN究竟是什么,它是怎么进行操作的。①原创 2017-12-17 12:23:52 · 32778 阅读 · 23 评论 -
CNN概念之上采样,反卷积,Unpooling概念解释
前言 本文译自quora上对《What is the difference between Deconvolution, Upsampling, Unpooling, and Convolutional Sparse Coding?》的回答。个人觉得这位老哥的回答很简洁干练。所以转到这里。Upsampling(上采样)在FCN、U-net等网络结构中,我们见识到了上采样这个东西。...翻译 2018-09-03 16:54:29 · 23175 阅读 · 11 评论