吴恩达深度学习L4W4人脸识别

article/2025/5/19 22:35:05

1、One-shot learning

        人脸识别往往每个人只有一张照片,因此不应该用卷积神经网络配合softmax训练。

         应该选择学习 Similarity 函数。详细地说,你想要神经网络学习这样一个用𝑑表示的函数,𝑑(𝑖𝑚𝑔1,𝑖𝑚𝑔2) = 𝑑𝑒𝑔𝑟𝑒𝑒 𝑜𝑓 𝑑𝑖𝑓𝑓𝑒𝑟𝑒𝑛𝑐𝑒 𝑏𝑒𝑡𝑤𝑒𝑒𝑛 𝑖𝑚𝑎𝑔𝑒𝑠,它以两张图片作为输入,然后输出这两张图片的差异值。所以在识别过程中,如果这两张图片的差异值小于某个阈值𝜏(它是一个超参数),那么这时就能预测这两张图片是同一个人,如果差异值大于𝜏,就能预测这是不同的两个人。

2、Siamese网络

Siamese网络:如果你要比较两个图片的话,例如这里的第一张(编 号 1)和第二张图片(编号 2),你要做的就是把第二张图片喂给有同样参数的同样的神经网络,然后得到一个不同的 128 维的向量(编号 3),这个向量代表或者编码第二个图片, 我要把第二张图片的编码叫做𝑓(𝑥 (2) )。这里我用𝑥 (1)和𝑥 (2)仅仅代表两个输入图片,他们没 必要非是第一个和第二个训练样本,可以是任意两个图片。 

 3、Triplet 损失(三元组损失函数)

用三元组损失的术语来说,你要做的通常是看一个 Anchor 图片,你想让 Anchor 图片 和 Positive 图片(Positive 意味着是同一个人)的距离很接近。然而,当 Anchor 图片与 Negative 图片(Negative 意味着是非同一个人)对比时,你会想让他们的距离离得更远一点。

这就是为什么叫做三元组损失,它代表你通常会同时看三张图片,你需要看 Anchor 图 片、Postive 图片,还有 Negative 图片,我要把 Anchor 图片、Positive 图片和 Negative 图片 简写成𝐴、𝑃、𝑁。

为了不让输出一直为0,我们加入一个间隔a

那么损失函数就是: 这个𝑚𝑎𝑥函数的作用就是,只要这个||𝑓(𝐴) − 𝑓(𝑃)|| 2 − ||𝑓(𝐴) − 𝑓(𝑁)|| 2 + 𝑎 ≤ 0,那么 损失函数就是 0。只要你能使画绿色下划线部分小于等于 0,只要你能达到这个目标,那么 这个例子的损失就是 0。

注意,为了定义三元组的数据集你需要成对的𝐴和𝑃,即同一个人的成对的图片,为了 训练你的系统你确实需要一个数据集,里面有同一个人的多个照片。 

        另外,在数据集中你要做的就是尽可能选择难训练的三元组𝐴、𝑃和𝑁。难训练的三元组就是, 你的𝐴、𝑃和𝑁的选择使得𝑑(𝐴, 𝑃)很接近𝑑(𝐴, 𝑁),即𝑑(𝐴, 𝑃) ≈ 𝑑(𝐴, 𝑁),这样 你的学习算法 会竭尽全力使右边这个式子变大(𝑑(𝐴, 𝑁)),或者使左边这个式子(𝑑(𝐴, 𝑃))变小,这样左 右两边至少有一个𝑎的间隔。并且选择这样的三元组还可以增加你的学习算法的计算效率, 如果随机的选择这些三元组,其中有太多会很简单,梯度算法不会有什么效果,因为网络总 是很轻松就能得到正确的结果,只有选择难的三元组梯度下降法才能发挥作用,使得这两边 离得尽可能远。

 4、人脸验证与二分类

        除了用Triplet loss训练参数,还可以用二分类方法。

        

还可以像下图所示用绿色所示的公式代替绿色大括号里的内容

 

        当然,与之前类似,你正在训练一个 Siamese 网络,意味着上面这个神经网络拥有的参数和下面神经网络的相同(编号 3 和 4 所 示的网络),两组参数是绑定的,这样的系统效果很好。 

        当出现新员工来的时候,不需要每次都计算别人的图片的这些特征(编号 6),你可以提前计算好,那么 当一个新员工走近时,你可以使用上方的卷积网络来计算新员工的这些编码(编号 5),然后使用它, 和预先计算好的编码(编号 6)进行比较,然后输出预测值𝑦^。

5、神经风格迁移(neural style transfer)

神经风格迁移不是有监督的学习,因为它没有标签

为了描述如何实现神经网络迁移,我将使用𝐶来表示内容图像,𝑆表示风格图像,𝐺表示 生成的图像

为了实现神经风格迁移,你要做的是定义一个关于𝐺的代价函数𝐽用来评判某个生成 图像的好坏,我们将使用梯度下降法去最小化𝐽(𝐺),以便于生成这个图像。

第一部分被称作内容代价,这是一个关于内容图片和生成图片的函数,它是用来度量生成图片𝐺的内容与内容图片𝐶的内容有多相似 

第二部分是风格代价函数,也就是关于𝑆和𝐺的函数,用来度量生成图片𝐺的风格和图片𝑆的风格的相似度。 

 α和β是超参数代表权重。

具体怎么计算J呢?

内容代价函数:

 即俩图片的每一层的每个单元的激活值对应求差值的平方和(上图少了个求和)

风格代价函数:

将图片的风格定义为𝑙层中各个通道之间激活项的相关系数。

 之后用梯度下降法,或者更复杂的优化算法来找到一个合适的图像𝐺,并计算𝐽(𝐺)的最 小值,这样的话,你将能够得到非常好看的结果,即每次优化后生成图像在更新。


http://chatgpt.dhexx.cn/article/B14Q02CV.shtml

相关文章

吴恩达深度学习Deep Learning课程笔记

1.1 前言 课程安排: 1.神经网络和深度学习 内容:神经网络的基础,如何建立神经网络、深度神经网络、以及如何在数据时训练它们 2.提升深度神经网络 内容:深度学习方面的实践,严密地构建神经网络以及提升其表现&…

吴恩达深度学习第一章第二周编程作业

文章目录 前言一、题目描述。二、相关库三、编程步骤1.数据预处理2.模型的封装3.模型的调用4.结果展示 总结 前言 本人处于初学阶段,编程能力有限,代码的编写参考了网上的大神。 一、题目描述。 我们需要训练得到一个逻辑回归分类器来对图片进行二分类&…

吴恩达深度学习之风格迁移

个人的学习笔记,一直更新中,如有错误,评论区见,冲冲冲! 笔记来源:吴恩达深度学习 4.6 什么是神经风格转换?_哔哩哔哩_bilibili 1 输入输出 风格迁移输入:内容(Conten…

吴恩达深度学习作业之deepleraning_L1W2_h1

#吴恩达《深度学习》L1W2作业1 知识点:numpy入门,函数向量化实现做完这个作业,你能学会:用ipython notebook 用numpy,包括函数调用及向量矩阵运算 理解“广播”的概念 向量化代码#我们很少在深度学习中使用“math”库。…

吴恩达深度学习编程作业报错解决方法汇总

概述及资源分享 大二结束后的暑假,学习吴恩达深度学习([双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩_bilibili)的课程,在做编程作业的时候总是遇到一些报错,尤其是导入所需要的库的时候会报一些No model。。。的…

旧版吴恩达深度学习环境搭建(anaconda+tensorflow+jupyter notebook)(呕心沥血诚意之作)

本人在参考多位博主的文章后,多次尝试才成功配置了tensorflow1.2.1的环境(课程建议Python3.6tensorflow1.2.1Keras2.0.7)。在此之前,曾经尝试用tensorflow2.x降级的方法(import tensorflow.compat.v1 as tf&#xff09…

《吴恩达深度学习》编程作业-第二周

目录 1.题目:基于神经网络思维模式的逻辑回归 2.声明 3.知识回顾 4.Python编程分析 4.1.导入需要用的库 4.2.数据处理 4.2.1.读取数据(包括训练集和测试集) 4.2.2.取出数据(包括训练集和测试集,还有标签的值&a…

吴恩达 深度学习 2021版 作业

练习 神经网络与深度学习神经网络基础Numpy基础1-使用numpy构建基本函数 神经网络与深度学习 神经网络基础 Numpy基础 学习目标: 使用numpy,包括函数调用及向量矩阵运算广播向量化代码 1-使用numpy构建基本函数 1.1- sigmoid function和np.exp&…

吴恩达深度学习

最近在学习吴恩达老师的深度学习,边学边随手记一些东西,留个简单的笔记,以便日后复习。 第一周 结构化数据:每个特征都有清晰的定义 非结构化数据:音频、图像、文本等 大规模的神经网络大规模的带标签数据 第一周习题…

吴恩达《深度学习专项》笔记(十二):目标检测与语义分割简介 (YOLO, U-Net)

这节课中,我们要学习计算机视觉中最重要的任务之一——目标检测任务。我们会先认识目标定位和关键点检测这两个比较简单的任务,慢慢过度到目标检测任务。之后,我们会详细学习目标检测的经典算法YOLO。最后,我们会稍微认识一下语义…

吴恩达:28张图全解深度学习知识

吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这套信息图优美地记录了深度学习课程的知识与亮点。因此它不仅仅适合初学者了解深度学习,还适合机器学习从业者和研究者复习基本概念。喜欢记得关注、收藏、点赞。 这不仅仅是一…

吴恩达深度学习深度学习概述以及优化

深度学习概述及优化 1、深度学习概述2、神经网络基础之逻辑回归3、深层神经网络4、深度学习实用层面4.1 训练集、验证集、测试集4.2 偏差、方差4.3 L1、L2正则化4.4 归一化处理4.5 Dropout4.6 其他正则化方法4.7 梯度消失和爆炸 1、深度学习概述 在之前的吴恩达机器学习课程中…

深度学习-吴恩达:一、神经网络和深度学习

文章目录 1、what is a Neural Network?(什么是神经网络)2、Supervised Learning with Neural Networks (监督学习)3、为什么深度学习会兴起?第一周测验测验题答案 1、what is a Neural Network?(什么是神…

IOS开发视频教程《保卫萝卜》-任亮-专题视频课程

IOS开发视频教程《保卫萝卜》—3411人已学习 课程介绍 《保卫萝卜CarrotFantasy》是一款由开发商“凯罗天下”开发的超萌塔防小。14种防御塔保卫萝卜战怪兽。保卫萝卜是一款制作精美的超萌塔防游戏,游戏含有丰富的关卡和主题包,拥有各自风格特色…

ios游戏开发 Sprite Kit教程:初学者 1

注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点Sprite Kit vs Cocos2D-iPhone vs Cocos2D-X vs UnityHello, Sprite Kit!横屏显示移动怪兽发射炮弹碰撞检测: 概述碰撞检测: 实现收尾何去何从? 在iOS 7中内置了一个新的Sprite Kit框架…

HTML5游戏开发高级教程 | Lynda教程 中文字幕

HTML5游戏开发高级教程 | Lynda教程 中文字幕 Advanced HTML5 Game Development 课程ID: 597988 时长: 2.3小时 所属类别:Html 全部游戏开发课程 了解如何使用HTML5创建交互式,动态和丰富多彩的游戏 在本课程中,学习如何充分利用所有HTML5功能来创建…

ios游戏开发 Sprite Kit教程:初学者 2

注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点Sprite Kit vs Cocos2D-iPhone vs Cocos2D-X vs UnityHello, Sprite Kit!横屏显示移动怪兽发射炮弹碰撞检测: 概述碰撞检测: 实现收尾何去何从? 横屏显示 首先,在Project Na…

【游戏开发教程】Unity iOS平台接入微信SDK,实现微信登录等功能(教程 | 流程讲解)

文章目录 一、前言二、流程1、申请开发者账号2、创建应用3、下载SDK4、导入到Unity中5、编写Objective-C代码5.1、CustomAppController.mm5.2、WXApiManager.h5.3、WXApiManager.mm5.4、注册回调对象5.5、封装初始化接口5.6、封装登录接口5.7、其他接口封装 6、XCodeAPI7、关于…

iOS开发知识概览

1、学习ios开发的知识概览,经常会认为ios开发会学那些知识,如何把断断续续的知识连接起来, 这就让你有了全局的了解,如何去计划和安排自己的学习计划,有了全局的知识体系。 原文来自:https://github.com/sh…

IOS 开发之逆向分析

在逆向过程中很多时候需要分析 APP 和 Web 端数据交互的内容那么最简单的方式即是抓包网络分析,而使用 Charles、Tcpdump 也是逆袭分析最基本的手段。本文以 Charles 为例来介绍网络相关的内容。 Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开…