吴恩达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.…

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;本文我们再次通过简短内容谈谈…

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

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

[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;小伙伴们说…

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

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

后端学习 - 基础 《Java编程的逻辑》读书笔记

文章目录一 基础概念1 有关Java2 JVM / JDK / JRE3 与C的联系和区别4 各类型数据占用空间大小5 和 equals() 的区别、hashCode() 方法6 包装类型7 final 关键字8 参数传递机制&#xff1a;值传递9 String 的内存情况10 访问修饰符11 引用拷贝、浅拷贝与深拷贝三 面向对象1 面向…

cheatengine找不到数值_彩票中奖500万,领了还不到一半?这些问题不解决,钱都拿不走...

长期以来&#xff0c;“一夜暴富”是很多人梦寐以求的梦想&#xff0c;而作为最能让人“一夜暴富”的方式要数我国的福利彩票了&#xff0c;这也是很多人最容易活动暴富的机会&#xff0c;不少彩民长久以来一直买彩票的梦想就是“一夜暴富”。而突然暴富是很多人的梦想&#xf…

一站式Web开发套件BeetleX.WebFamily

BeetleX.WebFamily是一款前后端分离的Web开发套件&#xff0c;但它并不依赖于nodejs/npm/webpack等相关工具&#xff1b;而使用自身实现的方式来完成前后端分离的Web应用开发&#xff1b;套件以组件的方式发布&#xff0c;只需要在项目引用相关组件即可实现前后端分离开发&…

.NET架构小技巧(2)——访问修饰符正确姿势

在C#中&#xff0c;访问修饰符是使用频率很高的一组关键字&#xff0c;一共四个单词六个组合&#xff1a;public,internal,protected internal,protected,private protected,private&#xff0c;如果你对这些关键字非常清楚&#xff0c;请跳过&#xff0c;节省时间&#xff1b;…

能源36号文解读_IDC报告预测:今年中国新能源汽车销量将达116万辆,未来五年复合增长率36%_详细解读_最新资讯_热点事件...

编者按&#xff1a;本文来自36氪「 未来汽车日报」&#xff0c;(微信公众号ID&#xff1a;auto-time)&#xff0c;作者&#xff1a;秦章勇。 来源&#xff1a;IDC作者 | 秦章勇编辑 | 周游12月3日&#xff0c;在2020世界智能汽车大会上&#xff0c;IDG亚洲(国际数据(亚洲)集团)…

后端学习 - 容器

文章目录一 简介二 底层数据结构总结1 List2 Set3 Queue4 Map三 Collection 的子接口 List1 ArrayList 与 Vector2 ArrayList 与 LinkedList3 ArrayList 的 JDK 7/8 差异4 ArrayList 的构造方法与扩容机制*四 Collection 的子接口 Set1 HashSet、LinkedHashSet 和 TreeSet2 Has…

简单聊聊AspNetCore的启动流程

首先&#xff0c;得和大家达成一个共识&#xff0c;即AspNetCore项目其实就是一个控制台项目。可以简单的理解&#xff0c;AspNetCore就是将一个Web服务器宿主在一个进程(即控制台)中&#xff0c;然后它在这个进程中进行http请求的监听处理。AspNetCore中默认使用kestrel作为we…