吴恩达DeepLearningCourse4-卷积神经网络

部分内容参考之前的笔记 PyTorch深度学习实践

文章目录

      • 第一周:卷积神经网络
          • 边缘检测
          • Padding、Stride
          • 三维卷积
          • 卷积神经网络中的一层
          • 池化层
      • 第二周:深度卷积网络实例探究
          • 残差网络
          • 1x1卷积
          • Inception模块和网络
          • 卷积神经网络的迁移学习
      • 第三周:目标检测
          • 目标定位
          • 基于滑动窗口的目标检测
          • 滑动窗口的卷积实现
          • Bounding Box 预测 /YOLO算法基础
          • 交并比 loU
          • 非极大值抑制
          • Anchor Boxes
      • 第四周:特殊应用——人脸识别和神经风格转换
          • One-Shot学习
          • Siamese 网络
          • Triplet Loss(三元组损失)
          • 人脸验证与二分类(替换Triplet Loss)
          • 神经风格迁移

第一周:卷积神经网络

边缘检测

有关卷积运算在此不记录。见PyTorch深度学习实践。
(n, n) * (f, f) = (n-f+1, n-f+1)
在这里插入图片描述

Padding、Stride

Padding要解决的问题:①每次做卷积操作图像都会缩小 ②在角落或者边缘区域的像素点在输出中采用较少,丢掉了图像边缘位置的许多信息
根据填充像素的不同,卷积操作分为Valid卷积(不填充)和Same卷积(填充后,卷积前后图像大小不变)
在这里插入图片描述

三维卷积

在这里插入图片描述

卷积神经网络中的一层

在这里插入图片描述

池化层

池化操作具有参数:大小f,步长s,PaddingSize(少见)
池化操作的分类:最大池化、平均池化
池化层有一组超参数,但并没有参数需要学习。一旦确定了f和s,它就是一个固定运算,梯度下降无需改变任何值。所以反向传播并不改变池化层的参数。
常用的参数是f=2, s=2,将输入的高度和宽度缩减为一半。

第二周:深度卷积网络实例探究

残差网络

在这里插入图片描述

残差网络起作用的主要原因就是这些残差块学习恒等函数非常容易,能确定网络性能不会受到影响,很多时候甚至可以提高效率,或者说至少不会降低网络的效率。

1x1卷积

1x1卷积可以减少(压缩通道数)/保持(仅添加非线性函数)/增加输入的通道数,且不改变H和W。
在这里插入图片描述

1×1 卷积可以从根本上理解为,在输入的切片中,对这 32 个不同的位置都应用一个全连接层,全连接层的作用是输入32个数字。并在这 36 个单元上重复此过程,输出结果是 6×6×#filters。

Inception模块和网络

对同一输入进行不同卷积,合并最终结果,取最优解。
不同路径只能改变频道数,不能改变宽度和高度(因为最终需要合并)。
最终将不同的卷积结果沿着通道方向合并。
在这里插入图片描述

对Inception模块进行多层调用以构建深层的Inception网络。
在这里插入图片描述

卷积神经网络的迁移学习

相比于从头训练权重,或者说从随机初始化权重开始,下载别人已经训练好网络结构的权重,通常能够进展的相当快,用这个作为预训练,然后转换到目标任务上。
如果目标任务的数据量较小,可以在下载好的神经网络和参数的基础上,仅训练最后一层的激活函数,使其输出想要的结果。在此情况下,之前的神经网络可以看作是冻结的(不需要对其进行训练),可以先计算前层网络的计算结果存在硬盘里,只需训练最后一层网络。
如果目标任务数据量较大,可以训练网络最后的若干层,甚至整个网络。

第三周:目标检测

目标定位

Localization和Detection问题
在这里插入图片描述

当前问题属于第二类,即给出一张图片,可能是行人、汽车、摩托车和背景中的一种,要求输出类型并给出位置(背景除外)。
在这里插入图片描述

基于滑动窗口的目标检测

针对上例,最初可以使用适当剪切的图片,使得整张图片x几乎都被汽车占据,使用该标签训练集训练卷积网络。
首先选定一个特定大小的窗口,将这个红色小方块输入卷积神经网络,卷积网络开始进行预测,即判断红色方框内有没有汽车。然后将方框按照一定步长向右滑动,直到这个窗口滑过整个图像。
缺点是,如果步幅很大,显然会减少输入卷积网络的窗口个数,但是粗糙间隔尺寸可能会影响性能。反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。

滑动窗口的卷积实现

①将全连接层转换成卷积层
即:将第一层FC转换成,5x5x16(输入规模)的400(=5x5x16,即Flatten后的元素个数)个过滤器。对第二层FC进行相同操作。
在这里插入图片描述

②滑动窗口的卷积实现
在这里插入图片描述

Bounding Box 预测 /YOLO算法基础

在输入图像上添加网格,并将对象分配给 包含对象中点 的网格。即使对象可以横跨多个格子,也只会被分配到 9 个格子其中之一。
对于上述例子,应用3x3的网格,输出应该是3x3x8
算法优点是,它显式地输出边界框坐标,所以这能让神经网络输出边界框,可以具有任意宽高比,并且能输出更精确的坐标,不会受到滑动窗口分类器的步长大小限制。其次,这是一个卷积实现,有很多共享计算步骤,算法效率很高。

交并比 loU

在这里插入图片描述

非极大值抑制

使用YOLO算法时,同一个对象可能被多个方格检测,为了排除部分不准确的方格所采用的方法。
具体步骤(针对只检测车辆,而不检测行人、摩托车的问题;此时的输出为[pc, bx, by, bh, bw]T):
①排除pc<=0.6的方格
②当剩下还有方格时:输出pc值最大的方格,并排除与其loU>=0.5的方格(即针对同一个物体但是不够准确的方格)

Anchor Boxes

目的是在YOLO算法中,处理不同的对象被分配到同一方格的情况。考察不同Anchor Box和对象的交并比,并取最大值。
此时的输出为3x3x2x8(3x3x16)
在这里插入图片描述

第四周:特殊应用——人脸识别和神经风格转换

人脸验证(Face Verification):有一张输入图片,以及某人的 ID 或者是名字,这个系统要做的是,验证输入图片是否是这个人。有时候也被称作 1 对 1 问题,只需要弄明白这个人是否和他声称的身份相符。
人脸识别(Face Recognition):1对K问题,有K个人的数据库,输入一张图片,输出该人是否属于K个人之一。

One-Shot学习

在一次学习问题中,只能通过一个样本进行学习。当深度学习只有一个训练样例时,它的表现并不好。
为了能有更好的效果,你现在要做的应该是学习Similarity函数。𝑑(𝑖𝑚𝑔1,𝑖𝑚𝑔2) =𝑑𝑒𝑔𝑟𝑒𝑒 𝑜𝑓 𝑑𝑖𝑓𝑓𝑒𝑟𝑒𝑛𝑐𝑒 𝑏𝑒𝑡𝑤𝑒𝑒𝑛 𝑖𝑚𝑎𝑔𝑒𝑠,它以两张图片作为输入,然后输出这两张图片的差异值。如果你放进同一个人的两张照片,它输出一个很小的值,如果放进两个长相差别很大的人的照片,它就输出一个很大的值。在识别过程中,如果这两张图片的差异值小于某个阈值𝜏,那么这时就能预测这两张图片是同一个人。

Siamese 网络

实现函数d的一种方式是通过Siamese网络。
在这里插入图片描述

Triplet Loss(三元组损失)

在这里插入图片描述

人脸验证与二分类(替换Triplet Loss)

选取 Siamese 网络,使其同时计算这些嵌入,然后将其输入到逻辑回归单元,然后进行预测,如果是相同的人,那么输出是 1,若是不同的人,输出是 0。这就把人脸识别问题转换为一个二分类问题,训练这种系统时可以替换 Triplet loss 的方法。
最后的逻辑回归单元进行如下操作。
在这里插入图片描述

可以对数据库中的图片提前计算并存储,以加快验证速度。

神经风格迁移

使用𝐶来表示内容图像,𝑆表示风格图像,𝐺表示生成的图像
本质上是定义代价函数J(G),并使其最小化
J(G) = α Jcontent(C, G) + β Jstyle(S, G)
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

那些鼓吹国内首个.NET 5框架的,该醒醒了!

前两天看过园子里有篇【国内首个 .NET 5 框架 XX 斩获 XXX stars&#xff0c;XXX 发布】&#xff0c;一顿羡慕嫉妒恨啊。我这.net core 3.1才上手没几天,还没用热乎呢&#xff0c;你这.NET 5的框架都出来了。我好难啊&#xff01;不过难归难咱也得跟上啊。于是一个天高云淡的的…

吴恩达DeepLearningCourse5-序列模型

终于在八月末学完了这门课程&#xff0c;这个月虽然为此不停地忙碌&#xff0c;但每天都在进步也是一种乐趣。 吴恩达教授的课程循序渐进&#xff0c;适合初学者&#xff0c;非常感谢他的辛苦付出。 文章目录第一周&#xff1a;循环序列模型循环神经网络&#xff08;RNN&#…

IdentityServer4系列 | 客户端凭证模式

一、前言从上一篇关于 快速搭建简易项目中&#xff0c;通过手动或者官方模板的方式简易的实现了我们的IdentityServer授权服务器搭建&#xff0c;并做了相应的配置和UI配置&#xff0c;实现了获取Token方式。而其中我们也注意到了三点就是&#xff0c;有哪些用户(users)可以通过…

数据结构 - 链表

准备重启尘封一年的博客作为学习笔记&#xff0c;看看自己能坚持多久。 最近会记录做过的算法题&#xff0c;语言描述只用于会意&#xff0c;仅供参考。 文章目录0.从尾到头获取链表的值&#xff08;不是反转链表&#xff09;1.寻找/删除单链表倒数第k个节点3.寻找单链表的中点…

[读书笔记] 《修炼之道:.NET 开发要点精讲》

《修炼之道:.NET 开发要点精讲》目录《修炼之道:.NET 开发要点精讲》第 1 章 另辟蹊径&#xff1a;解读.NET1.7 本章思考 > 位置 465第 2 章 高屋建瓴&#xff1a;梳理编程约定2.2 方法与线程的关系 > 位置 5192.7 线程安全 > 位置 5952.8 调用与回调 > 位置 6612.…

数据结构 - 概述

存储方式 数据结构的存储方式只有顺序存储&#xff08;对应数组&#xff09;、链式存储&#xff08;对应链表&#xff09;两种。所有上层的数据结构&#xff0c;如树、堆、栈等&#xff0c;存储方式均属于以上两种。顺序存储的优势是支持随机访问&#xff0c;缺点是需要连续的…

ASP.NET Core 使用 gRPC 初探

&#xff08;RPC通讯示意图&#xff09;为什么突然说到gRPC呢&#xff0c;其实以前就想说一说这个东西&#xff0c;也想尝试使用一下&#xff0c;一直没有机会&#xff0c;一直看我公众号的小伙伴肯定都知道&#xff0c;这几天一直在录制一个《eShopOnContainer微服务架构》系列…

源码都没调试过,怎么能说熟悉 redis 呢?

一&#xff1a;背景 1. 讲故事记得在很久之前给初学的朋友们录制 redis 视频课程&#xff0c;当时结合了不少源码进行解读&#xff0c;自以为讲的还算可以&#xff0c;但还是有一个非常核心的点没被分享到&#xff0c;那就是源码级调试&#xff0c; 对&#xff0c;读源码还远远…

算法 - DFS/BFS

写DFS函数的时候首先确定当前位置是否已经加入路径 DFS函数大概率会传递“位置信息”&#xff0c;根据位置信息获取下一步的选择&#xff0c;&#xff08;大部分是在循环中&#xff09;选择、执行、回退 在哪做选择&#xff0c;就在哪退出选择&#xff0c;参考题9 def DFS()…

你想象中的Task后续,很简单?

【导读】前不久&#xff0c;写过一篇关于Task的简短文章&#xff0c;通过评论和转载得到好评&#xff0c;刚好我昨晚又写了一篇实现简单的消息队列也提到了Task&#xff0c;难道不应该是看具体执行什么操作&#xff0c;再考虑最佳方案&#xff1f;本文我们再次通过简短内容谈谈…

算法 - 动态规划

动态规划是一种自底向上的算法&#xff0c;通常用于解决最大、最小等最值问题。 能使用动态规划解决的问题&#xff0c;一定具备&#xff1a; 重叠子问题&#xff1a;和暴力搜索不同&#xff0c;需要记录子问题的解&#xff0c;避免重复求解&#xff08;剪枝&#xff09;最优…

5G在工业互联网应用的机遇与挑战

移动通讯经过十年一代的发展&#xff0c;已经从1G发展到了5G&#xff0c;峰值速率实现十年千倍的增长&#xff0c;1G到4G是面向个人的&#xff0c;而5G是面向产业互联网和智慧城市服务。5G是一个颠覆性的技术&#xff0c;低时延&#xff08;每秒钟下载一部高清电影&#xff09;…

算法 - 前缀和

记录在做hot100时遇到的前缀和的题目。 目前见过的题目&#xff0c;都是前缀和结合其它的方法一起使用&#xff1a;用于求取一段连续路径的和&#xff08;最大值/最小值/目标出现次数&#xff09;。 需要注意的是&#xff0c;前缀和的判定方法是node2.val-node1.val target&am…

[C#.NET 拾遗补漏]10:理解 volatile 关键字

要理解 C# 中的 volatile 关键字&#xff0c;就要先知道编译器背后的一个基本优化原理。比如对于下面这段代码&#xff1a;public class Example {public int x;public void DoWork(){x 5;var y x 10;Debug.WriteLine("x " x ", y " y);} }在 Releas…

跟我一起学.NetCore之MediatR好像有点火

前言随着微服务的流行&#xff0c;而DDD(领域驱动设计)也光速般兴起&#xff0c;CRQS(Command Query Responsibility Seperation--命令查询职责分离)、领域事件名词是不是经常在耳边环绕&#xff0c;而MediatR组件经常用来对其技术的落地&#xff0c;凭这&#xff0c;小伙伴们说…

数据结构 - 单调栈、单调队列

单调栈&#xff1a;每日温度 请根据每日 气温 列表 temperatures &#xff0c;请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替单调栈基本只处理NGE问题&#xff08;Next GreaterElement&#xff09;。对序列中每个元…

不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!

mongodb一直都在不断的更新&#xff0c;不断的发展&#xff0c;那些非常好玩也非常实用的功能都逐步加入到了mongodb中&#xff0c;这不就有了本篇对ttlindex的介绍&#xff0c;刚好我们的生产业务场景中就有一个案例。。。一&#xff1a;案例分析 生产的推荐系统要给用户发送短…

数据结构 - 最小堆最大堆

可以在O(nlogn)的时间复杂度内完成排序典型的用法是&#xff0c;寻找 第k个/前k个 最大/最小元素&#xff0c;k个有序序列合并 1.合并K个升序链表&#xff08;最小堆实现&#xff09; 或许可以改进成每次堆只存放K个元素&#xff1f; # Definition for singly-linked list. …

python程序启动其他python程序,如何使用Python启动应用程序的实例?

I am creating a Python script where it does a bunch of tasks and one of those tasks is to launch and open an instance of Excel. What is the ideal way of accomplishing that in my script?解决方案While the Popen answers are reasonable for the general case, I…

工作这几年所获、所感、所悟

【导读】截止到目前&#xff0c;给甲方所做项目已接近尾声&#xff0c;在此写下一点个人关于技术方面的感受。若后续时间上允许或充裕的话&#xff0c;打算私下花一点时间分享封装可通用的组件今年也是我首次带小伙伴&#xff0c;有刚毕业没什么技术经验&#xff0c;也有毕业不…