自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 3D人脸模型Flame ----《Learning a model of facial shape and expression from 4D scans》论文讲解及代码注释

前文在阅读论文前,首先我们要有一定的知识储备,包括人脸建模,表情制作,旋转转换等,才能方便我们的论文理解,所以首先我会讲解一些关键的知识点。Flame模型的作用?Flame是一个3D人脸的通用模型,举个例子,你现在有一个特定人的3D人脸扫描序列,那么我便可以通过Flame模型拟合,构建个性化的模型,然后通过改变表情参数,动作参数,从而生成一些新的表情,动作的3D数据,以进行动画制作等。除此之外,因为扫描数据的误差和缺失,我可以通过Flame模型,对数据进行拟合平滑,得到较为完善,完美的3D数据。除

2022-03-29 10:37:22 6136 3

原创 Wav2Lip模型------《A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild》论文解读及代码解析

ABSTRACT:在这篇文档中,我们将研究任意人物的人脸视频与目标音频的口型匹配问题。当前领域能做到对特定训练过的人物进行精准的口型匹配,但在其他未训练的人物上效果不好。我们找到了导致这种问题的主要原因,并学习了一个强大的口型匹配模型。接着,我们提出新的口型评估标准,从而精准评估任意视频的口型匹配的准确度。结果表明,我们的模型wav2lip跟真实视频的准确率相当。1. INTRODUCTION:随着视频内容消费的爆炸增长,从而需要快速的视频创作。同时,让这些视频以不同的语言进行呈现也是一种挑

2022-03-15 16:41:18 8480 13

原创 OCR模型DBNet-------《Real-time Scene Text Detection with Differentiable Binarization》论文,模型,代码解剖

首先,我先对DBNet的论文进行重点翻译解释说明,之后再对整个模型进行解剖,最后再对官方源码的实现方法,关键代码进行分析,所以篇幅也比较长,之间会附带一些例子说明,让你更深刻的了解DBNet。论文解析:Abstract基于语义分割的文本检测模型得到广泛应用,因为其对各种形状的文本,如曲线文本,都有更好的精准度。然而,用于后处理生成区域的二值化对最终的检测效果起到关键影响,在这论文,提出了可微分二值化(Differentiable Binarization (DB)),它可以融入分割网络,结合

2021-11-16 11:16:29 3131

原创 换脸论文----《SimSwap An Efficient Framework For High Fidelity Face Swapping》解析

ABSTRACT:提出了新的换脸模型,Simple Swap(SimSwap),可以融合任意的source face跟target face,并且保存source face的身份及target face的属性特征。模型克服了以往模型的缺陷,通过两个创新点,1,提出了ID Injection Module(IIM)模块,通过这个模块,将针对特定的source face的框架扩展到适用任意的source face。2,提出了Weak Feature Matching Loss损失函数,他能帮助我们模型更好的

2021-10-12 14:52:17 2406

原创 换脸论文----《FaceShifter Towards High Fidelity And Occlusion Aware Face Swapping》解析

Abstract:提出了一个新颖的两阶段模型,称为FaceShifter,在第一阶段,提出了一个新的属性编码器提取多个层次的目标人脸属性,和一个精心设计的新的Adaptive Attentional Denormalization(AAD)层,在合成人脸时可以自适应集成身份和属性。在第二阶段,为了解决面部遮挡问题,设计了一个新的Heuristic Error Acknowledging Refifinement Network(HEAR-Net),经过训练,可以在不需要人工标注的情况下,以自我监督的方式

2021-09-18 19:46:00 669

原创 《A Survey of Quantization Methods for Efficient》论文解读------关于模型量化的报告

这篇文章是关于21年的论文《A Survey of Quantization Methods for Efficient》的解读,因为论文篇幅较大,所以不会全文翻译,只提取关键点进行翻译讲解。摘要:提出了在当下,内存或计算资源受限的情况下,如何将连续数值,分布至最小的比特数表示的离散数上,并且保证原先的准确率的问题。I. INTRODUCTION:在当前,我们通过堆积大量的参数,使我们的模型准确率得到明显的提高,然而,在资源受限,实时性要求的情况下,却存在壁垒,于是为了实现高精度,高...

2021-06-22 18:32:12 1097

原创 模型剪枝详解及pytorch代码实现

在当前的领域,随着需求的复杂程度以及难度,精度的要求越来越高,像实例分割等需求,对比分类模型,我们的模型结构变得越来越大,但同时,我们对实时性要求也越来越高,往往在33ms(大概在33ms处理完一帧才能达到不延迟的实时要求)以内要串联运行好几个模型,这就产生了相互矛盾,因此我们开始寻求高精度,低延迟的模型结构。于是,便出现了很多轻量级模型,比如mobileNet,shuffleNet,ghostNet等等,但往往这些还不足以支撑我们庞大的实时性需求,因此,我们往往还会对模型进行人工修改,比如修改backbo

2021-05-08 19:37:30 2327

原创 OpenPose论文解析

本文是对19年论文,对OpenPose改进版的论文进行解析。因为改进版官方代码未找到,所以本文单纯从论文层面对模型进行解析。本文只对算法流程,模型构建,Loss构成,公式整理,关键要点等进行整合解析,其他部分可以自己祥阅原论文,如贪婪算法的改进,新的脚部数据集等,但不妨碍对OpenPose的整体架构,模型,思想的理解。17年版本论文地址:https://arxiv.org/abs/1611.0805019年版本论文地址:https://arxiv.org/abs/1812.08008OpenPo

2021-01-04 12:02:00 3465

原创 自创实时高精度人脸检测模型原理及相关代码实现,及目标检测的各种相关知识,试验及细节。

本文是总结了我自创的一个高精度的,实时的人脸检测模型的相关文档及代码。在项目的过程中,使用了多种技巧的实现及试验结果。包括多种损失函数,多种NMS。模型的多种构建方式等等。最终模型在GPU上测试,使用keras框架,未剪枝的情况下,单张图片耗时10ms,即为100fps,模型的参数量为18w,模型大小为800KB。因计算mAP较为耗时,所以我只计算了在判断为人脸的conf阈值为0.4的识别标准,识别正确的IOU阈值为0.5的判断标准下,的准确率及召回率我将COCO数据集分为两部分,其一:

2020-11-23 17:12:21 319 1

原创 DSFD-Dual Shot Face Detector人脸检测模型原理代码超全面解剖

DSFD为19年腾讯提出的,用于人脸检测的轻量级实时模型,全称为Dual Shot Face Detector。接下来会给出模型的大结构,然后针对模型的创新点结合代码进行重点分析。首先论文的效果图如下:模型结构如下:模型的输入像素为640,模型结构采用single stage doul shot,backbone网络采用vgg16,类似于PyramidBox或S3FD网络,选择conv3_3,conv4_3,conv5_3,conv_fc7, conv6_2和conv7_2作为First

2020-11-21 18:14:32 1127 1

原创 踩坑记----Batch Normalization引发的INF或NAN

Batch Normalization是众所周知的好用,但Batch Normalization在某些情况下,却会适得其反。在使用别人的模型训练时,往往因为显存的不足,会导致我们的BatchSize无法设置的较高,当我使用BatchSize=4的情况下,开始Loss会稳定下降,但当一定step之后,会在某个Batch时出现Loss突然变大的情况,在这个Batch之后,Loss会变得越来越大。最终出现INF或者NAN的情况。当Loss出现异常值,往往会优先考虑是否Loss的计算方法存在Bu..

2020-11-15 21:20:17 3643

原创 FaceBoxes原理代码超全面解剖

FaceBoxes是一个人脸检测的轻量级模型,类似于YoloV3模型,采用了archor进行方框预测,FaceBoxes采用高像素1024*1024的图片输入,但在高分辨率输入的情况下,依然能达到实时效果。下面为论文给出的TABLE及效果图模型结构如下:模型使用了常规的卷积conv,池化maxPool,以及InceptionV3中提出的Inception模块,除此之外,模型还使用到CRelu激活函数,快速扩张channel数目。模型的输出:模型借鉴了YoloV3的多尺

2020-11-09 21:34:27 568

原创 DBFace原理代码超全面解剖

轻量级检测网络DBFace,因为我只使用到人脸检测,没用到特征点检测,所以特征点检测部分我不作分析。简介DBFace是用于人脸检测的轻量级网络,可部署于移动端实时运行。骨干网络为CenterNet,对比yolo,faster_rcnn等目标检测网络,CenterNet具有结构简单优雅,构建简单,数据处理简单,直接检测目标的中心及方框位置的特点。可以说,它放弃了之前一直被使用的AnchorBox,直接输出预测框的坐标,而不需通过Anchorbox进行转换。它也将输出分为多个grid cell.

2020-11-06 14:15:59 1736

原创 目标检测之AnchorBox详解

Anchor在计算机视觉中称为描点或者描框,在目标检测中,作为描框anchor box应用于各个目标检测的网络模型中,也成为先验框。来历,及应用场景:Anchor最新在Faster rcnn被提出及应用,后被YOLOV2借鉴,及应用与YOLO之后的各个版本。之后的各个目标检测框架都基本采用Anchor Box进行目标检测。那么就要说到,为什么要提出AnchorBox。那就要追根到之前的目标框的选择方式。在Fast rcnn中,要提取2000个候选框,通过Selective Sear.

2020-11-04 11:36:00 12523 6

原创 Normalization vs. Standardization vs. Batch Normalization

Normalization标准化和Standardization归一化,作为ML常用的tricks,大家再熟悉不过,但大家往往只知道基本的计算公式,且没深入了解过,甚至不知道标准化与归一化的区别,也不知道其具体作用,原理等,其次,存在为为什么使用Batch Normalization替代Normallization等问题。于是,我做了一定功课,及归纳如下。一:Normalization归一化和Standardization标准化的定义以上为众所周知的数学公式定义,我们看国外对Normaliz

2020-06-11 16:36:23 409

原创 图像随机旋转及坐标进行旋转原理及Python实现

在做人脸或物体检测的任务中,往往需要对训练集进行随机旋转,做数据增强,增加模型的鲁棒性。在进行图像随机旋转的同时,相应的Label值坐标,如人脸关键点检测中人脸对应的关键点坐标,物体检测任务中的物体所在box坐标。(1).原理-------坐标旋转变换公式原理参照博客:https://blog.csdn.net/u012686154/article/details/88854...

2020-05-08 16:28:53 4692 1

原创 踩坑记----keras,训练准确率远高于验证准确率,keras底层代码解剖

前几天,帮朋友处理一个深度学习网络问题,具体场景是这样的,总共有12张,分为3个类别,同时作为训练集跟验证集,训练集跟验证集的预处理一样,使用的模型为ResNet50,最后的激活函数为softmax。使用keras框架,总共10个epoch,每个epoch都是只有1个batch(因为数据集就12张图片,所以一个batch也就12张图片)。在训练前几个epoch时,训练准确率便达到100%,因为...

2020-01-22 15:14:50 6789 21

原创 强化学习---DQN相关知识及代码实现

DQN全名为Deep Q-Network,是结合了Q-learning和深度学习网络的一个网络结构模型。接下来分析DQN的实现流程及细节处理:一:为什么提出DQN:Q-learning作为传统的强化学习算法,功能强大且好实现,但存在一个致命的弱点,便是,Q-learning需要一个状态转移表,来保存状态及决定下一步的action,但当状态很多时,且可采取的行动较多时,这个表格便会...

2020-01-15 15:31:40 3346 1

原创 踩坑记----numpy.array,shape为(m,1)和(m,)的区别

在我们使用numpy跟tensorflow时,时常会遇到这个坑,而这个坑又不容易发现,比如当我们使用y-y'时,时常就会踩进这个坑。直接上例子:import numpy as nparr1 = np.array([1,2,3])arr2 = np.array([[1],[2],[3]])print (arr1.shape,arr2.shape)#### 输出为:((3,), (3...

2020-01-14 11:55:54 3226

原创 tensorflow2.0 Post-training quantization

因为tensorflow2.0版本对比tensorflow1.0版本变化较大,所支持的量化方式方法都有所改变,所以重新写一篇文档记录。先附上官方文档:https://www.tensorflow.org/lite/performance/post_training_quantization?hl=en因为tf2.0已经不更新aware-quantization,所以这篇文章重点简...

2019-12-25 15:14:11 2964 7

原创 踩坑记----large batch_size cause low var_acc

有时候,我们在训练模型前期,会出现很高的train_acc(训练准确率),但var_acc(验证准确率)却很低。这往往是因为我们模型在训练过程中已经进入局部最优,或者出现过拟合的现象。造成这种情况有多种原因,我只提出以下几点,有补充的可以在下面留言,我补充。(1).训练数据分布不均匀,可能你的训练数据某一类别占据了大多数,比如95%的数据为苹果,5%的数据为其他类别,那么模型为了拟合训练数据,...

2019-12-16 15:21:19 951

原创 TensorFlow剪枝API开发教程

Tensorflow在今年推出剪枝API,可用于对模型剪枝,使模型的大小可以得到压缩,速度得到提升。具体的参考文档为以下两篇:第一篇,tensorflow推出的weixin推文:https://mp.weixin.qq.com/s?__biz=MzU1OTMyNDcxMQ==&mid=2247485959&idx=1&sn=8d27c110d1ff857df9868...

2019-12-12 16:46:48 2291 20

原创 实时目标检测模型-ThunderNet原理详解

ThunderNet是旷视提出来的一个用于目标检测的模型,它是基于Light-Head R-CNN 进行改动,使的模型更轻量级,更快速。上图为ThunderNet的模型结构图ThunderNet输入图片像素为320*320,模型结构主要分为两部分,主干部分backbone part及检测部分detection part,主干部分用于图像特征的提取。检测部分用于候选框的提取及物体的...

2019-11-28 22:40:23 1011 1

原创 TensorflowLite量化原理

一 : 原理原理公式:Here:ris the real value (usuallyfloat32) qis its quantized representation as aB-bit integer (uint8,uint32, etc.) S(float32) andz(uint) are the factors by which we scale an...

2019-03-12 17:29:37 3469 4

原创 yield生成器之keras模型训练代码实现

1 . 何为yield?包含yield的函数,会生成一个生成器generator ,听过next函数可以不断生成一批数据.示例:>>> def test():... testData = ['a' , 'b' , 'c' , 'd' , 'e' ,'f']... for x in testData:... yield x......

2019-02-18 11:15:54 2476 2

原创 安装bazel , 编译freeze_graph、toco

1.安装bazel:(1) . bazel官网:https://docs.bazel.build/versions/master/install-ubuntu.html#install-with-installer-ubuntu(2) . 推荐使用二进制源码安装Use the binary installer (recommended)(3) . 按照指导安装,源码包在: https:...

2019-01-17 15:16:50 2517 9

原创 shuffleNet之原理及tensorflow实现

为了解决常规模型过大且计算量过大,除了出现mobilenet属于轻量级网络,shuffleNet同样也为新型的轻量级网络,shuffleNet主要由group convolution跟channel shuffle两部分组成.Group convolution:对于常规卷积,假如输入Dk*Dk*m的tensor,使用n个大小为Dw*Dw的卷积核进行卷积,输出Dk*Dk*n的tensor....

2018-12-29 17:00:21 4558 3

原创 Tensorflow之TensorBoard

TensorBoard 简介TensorBoard 是用于可视化 TensorFlow 模型的训练过程的工具(the flow of tensors)TensorBoard 如何工作简单来说,TensorBoard 是通过一些操作将数据记录到文件中,然后再读取文件来完成作图的。想要在浏览器上看到 TensorBoard 页面,大概需要这几步:summary。在定义计算图的时候,在适...

2018-11-26 20:52:45 245

原创 MobileNet-v1和MobileNet-v2

MobileNet-v1:MobileNet主要用于移动端计算模型,是将传统的卷积操作改为两层的卷积操作,在保证准确率的条件下,计算时间减少为原来的1/9,计算参数减少为原来的1/7.MobileNet模型的核心就是将原本标准的卷积操作因式分解成一个depthwise convolution和一个1*1的pointwise convolution操作。简单讲就是将原来一个卷积层分成两个卷积...

2018-07-25 17:33:35 6739 2

原创 激活函数 为什么使用非线性激活函数

Sigmoid函数:g(z) = a = 1 / (1 + e ^(-z))g'(z) = g(z) * (1 - g(z)) = a * (1-a)while z = 10 g(z) ≈ 1 g'(z) = 1 * (1 - 1) ≈ 0 z = -10 g(z) ≈ 0 g'(z) = 0 * (1 - 0) ≈ 0 ...

2018-06-20 16:28:44 6607

原创 色差计算(颜色之间的相似度计算)

色彩有多种颜色空间表示方式,如RGB,HSV,HSL,LAB等等,RGB颜色空间:RGB颜色空间相对简单,也最为普遍,就分为三个颜色通道,分别为红色,绿色,蓝色这三种基本色调的值,然后将这三个颜色融合在一起,也就成为一种颜色.但用RGB比较颜色之间的相似度时,存在很大的问题,不建议直接使用,因为往往一个通道的一点改变,会导致最后融合在一起的颜色发生巨大变化,而如果三个通道的同时改...

2018-06-14 21:25:36 95001 41

原创 tensorflow 图片批处理--- tf.train.batch

当我们使用tensorflow进行深度学习时,进行训练模型时,我们往往要读取大量的图片进行批处理输入模型进行训练.如果我们一次性读取全部图片或者过多张图片,内存将有可能溢出.如果我们一次读取小批量图片,再将图片转换成tensor,然后再输入模型,则随着模型的迭代次数增大,内存占用将越来越大,最终内存溢出.如下代码:sess=tf.Session()ImgFiles= ***** (包括所有训练集...

2018-04-20 18:04:50 3365

原创 tensorflow .pb文件模型量化

(1).下载解压tensorflow源码(2).下载安装bazel工具,要求jdk不低于1.8(3).编译量化脚本sudo bazel build tensorflow/contrib/quantization/tools:quantize_graph运行后报错:ERROR: no such package 'tensorflow/contrib/quantization/tools': BUIL

2018-01-18 14:42:04 4297 4

原创 Tensorflow Lite之编译生成tflite文件

这是tensorflow生成的各种模型文件:GraphDef (.pb) - a protobuf that represents the TensorFlow training and or computation graph. This contains operators, tensors, and variables definitions. CheckPoint (.ckpt) -...

2018-01-07 19:08:47 22219 102

原创 LDA主题模型代码实现流程

LDA主题模型的原理,推导过程比较复杂,可以参考此链接,讲的比较详细:http://www.52nlp.cn/lda-math-mcmc-%E5%92%8C-gibbs-sampling1 本文主要是通过阅读别人实现的LAD主题模型代码,总结的一个实现流程,供别人想实现LAD时可作参考,如若有何错误,麻烦请指出:LDA代码流程:(1) 先对文档切词,然后对每个词语赋ID编号0~(n-...

2017-09-04 17:20:20 13538 3

原创 SVM支持向量机代码实现流程

本文不讲述SVM算法和SMO的推导过程,因为网上已经有很多相关资料,并且我对推导过程还未理解透彻,所以避免误导他人.本文主要是我通过参考他人的博客和他人实现的代码,总结并实现了SVM算法.其中用到SMO算法来拟合参数.如若有差错误的,期望麻烦给我留言指正.

2017-08-08 14:32:11 2993 1

原创 minhash算法

minhash算法是一个降维算法,对于我们如果要找出许多集合样例中相似的集合,类似于聚合.但是因为每个集合里面的元素过多,如果一个集合一一去跟其他集合匹配,因为集合里面的元素过多,造成比较的维度过大,那么将计算量会很大,那么minhash算法便是降低每个集合的维度,减少计算量而诞生的.例如:有很多本书,我们要找出内容主题相似的书籍.当我们找出来后,这就意味着我们可以将相似的书籍推荐给读者.现在...

2017-03-16 21:11:57 1028

转载 id函数

id(object)返回的是对象的“身份证号”,唯一且不变,但在不重合的生命周期里,可能会出现相同的id值。>>> a= 256>>> b= 256>>>id(a)9987148>>>id(b)9987148>>> a= 257>>> b= 257>>>id(a)11662816>>>id(b)11662828

2017-03-16 20:54:37 642

转载 字符串

字符串是指以''或""括起来的任意文本,比如"abc"等等。(1)以r或R开头的python中的字符串表示(非转义的)原始字符串有普通字符相比,其他相对特殊的字符,其中可能包含转义字符,即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n"表示换行,"\t"表示Tab等。而如果是以r开头,那么说明后面的字符,都是普通的字符了,即如果是“\n”那么表示一个反斜杠字符,一个字母

2017-03-16 20:49:40 264

转载 __name__ == '__main__'

__name__ 是模块里面的一个内置属性,它的值取决与你如果去应用这个模块.(1)当我们导入这个模块时,即import  *.py时: __name__的值等于模块名.例如:我们现在有个模块 test_zsh.py,里面只有一行代码如下,就是打印__name__这个属性:print __name__将这个模块放在默认模块的路径下,可通过>>>import sys>>>

2017-03-16 15:30:21 246

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除