港中文汤晓鸥团队在DeepID_v1基础上提出的新版本架构,发表于NIPS2014
一、Architecture
网络架构基本上与DeepId_v1一致。
二、Pipeline
图片被分成20regions,每个region有5scales,2RGB&Gray共10种模式,共生成200个pathes,进行水平翻转,分别送入200个网络中。
以1个55 * 47的RGB 模式patch为例,过程和DeepID_v1相似,最后生成1个160维的向量。
用前后向贪心算法,从400个DeepID中,筛选出25个有效且互补的DeepID2向量,缩减计算规模,得到160*25 = 4000的特征值。
再利用PCA对此向量进行降维,得到1* 180的向量,以此向量为依据,做cls和verif,cls用交叉熵,verif用join Bayesian。
三、相比于DeepID_V1的改动
网络结构没有多大改动,重点是在loss计算上。众所周知,表征人脸的特征最好能使不同的人脸之间的差异尽可能大,使相同人脸的不同照片人脸之间差异尽可能小。我们希望得到一个网路,这个网络计算出来的特征vector尽可能满足上述条件。设计loss函数如下:
(一)分类loss
F是特征向量,θid是softmax层参数,t是label的分类结果。
(二)Verification loss
1.类内loss
当 ,input image和标签数据是同一个分类,此时训练网络,使之与label中的特征,尽可能的相近。
2.类间loss
当 ,input image和标签数据属于不同分类。
m为超参数,事先指定好。由上图知,当输入的图片的特征vector,和label的vector差异很大,其L2距离超过m时,loss值为0,网络倾向于学习,使类间距离尽可能的大的vector。
总Verification loss为类间loss和类内loss的加权和,权重各为0.5。
之前业界普遍采用的方法是L1/L2范式和余弦相似度,文中采用一种基于L2 Norm的损失函数。paper中作者测试了其他几种距离算法对准确率的影响,L2距离的性能最好。
(三)cls和verif的组合
选取合适的λ,调整verif loss在总loss中的系数,当λ=0时,不计算verfi的loss,文中选取λ=0.5
四、网络成绩
LFW共有5749个人的数据,共13233张脸。数据集太小,paper中引入外部数据集CelebFace+,有10177个人的数据,共202599张脸。
为充分利用从大量图像块中提取到的特征,作者重复使用7次前项后向贪婪算法选取特征,每次的选择是从之前的选择中未被留下的部分中进行选取。然后在每次选择的特征上,训练联合贝叶斯模型。再将这七个联合贝叶斯模型使用SVM进行融合,得到最佳的效果在LFW上为99.15%。
五、小结
DeeoID_V2印象最深的就是loss函数的创新,之前听师兄说发paper的3点分别是数据集,网络架构和loss函数,这次又验证了这一个观点。

DeepID_V2解读的更多相关文章

  1. SDWebImage源码解读之SDWebImageDownloaderOperation

    第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...

  2. SDWebImage源码解读 之 NSData+ImageContentType

    第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说 ...

  3. SDWebImage源码解读 之 UIImage+GIF

    第二篇 前言 本篇是和GIF相关的一个UIImage的分类.主要提供了三个方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name ----- 根据名 ...

  4. SDWebImage源码解读 之 SDWebImageCompat

    第三篇 前言 本篇主要解读SDWebImage的配置文件.正如compat的定义,该配置文件主要是兼容Apple的其他设备.也许我们真实的开发平台只有一个,但考虑各个平台的兼容性,对于框架有着很重要的 ...

  5. SDWebImage源码解读_之SDWebImageDecoder

    第四篇 前言 首先,我们要弄明白一个问题? 为什么要对UIImage进行解码呢?难道不能直接使用吗? 其实不解码也是可以使用的,假如说我们通过imageNamed:来加载image,系统默认会在主线程 ...

  6. SDWebImage源码解读之SDWebImageCache(上)

    第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计.在架构上来说,缓存算是存储设计的一部分.我们把各种不同的存储内容按照功能进行切割后,图片缓 ...

  7. SDWebImage源码解读之SDWebImageCache(下)

    第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极 ...

  8. AFNetworking 3.0 源码解读 总结(干货)(下)

    承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...

  9. AFNetworking 3.0 源码解读 总结(干货)(上)

    养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...

随机推荐

  1. 《浅谈F5健康检查常用的几种方式》—那些你应该知道的知识(二)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sinat_17736151/articl ...

  2. javascript取模运算是怎么算的?其实是取余数

    问到是否整除,这里记录下取模 比如120分钟是不是整点?120%60 === 0 为整点 javascript取模运算是一个表达式的值除以另一个表达式的值,并返回余数. 取模在js里就是取余数的意思. ...

  3. C/C++中回调函数【重要】

    参考学习:https://www.cnblogs.com/xuelisheng/p/9339924.html 1. 回调函数定义 回调函数就是一个通过函数指针调用的函数. 如果你把 函数的指针(地址) ...

  4. C#语法中的select

    第一次学着用Linq的盆友们,可以看看哈.... 代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://w ...

  5. webpack 4 教程

    webpack 4 教程:https://blog.zfanw.com/webpack-tutorial/

  6. Python3之内建模块datetime

    datetime datetime是python处理日期和时间的标准库 获取当前日期和时间 >>> from datetime import datetime #获取当前的datet ...

  7. transform-transition-animation(1)

    网布就是我们的屏幕,x轴沿屏幕平行的水平方向,y轴沿屏幕平行的垂直方向,z轴沿与屏幕垂直方向. rotateX(angle), rotateY(angle), rotateZ(angle), rota ...

  8. 029 Android 轮播图广告Banner开源框架使用

    1.Banner介绍 现在的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能. 2.使用环境配置(具体可见github开源项目) (1)添加依赖 在build.gradl ...

  9. Python 实现微信小程序的用户登录

    小程序可以通过官方提供的登录能力来获取用户身份的标示,具体文档可以参考 这里,通过流程时序可以看到,对于需要和前端配合的服务端开发,主要实现的就是通过小程序提供的 code 换取用户的 openid ...

  10. memset 导致的一个段错误

    原型: void *memset(void *s, int c, size_t n); 解释: memset :是 逐字节 拷贝,即n是指整个变量所占字节,在用于数组时一定要注意n不一定是 数组元素. ...