神经网络与深度学习课程总结(四)

一、目标检测与YOLO

1、YOLO网络结构

1.1 YOLO网络结构

YOLO网络结构概略图

网络结构包含24个卷积层和2个全连接层;其中前20个卷积层用来做预训练,后面4个是随机初始化的卷积层,和2个全连接层。

1.2 YOLO模型处理

处理实例

1.2.1 YOLO输入

YOLO v1在PASCAL VOC数据集上进行的训练,因此输入图片为 448 × 448 × 3。实际中如为其它尺寸,需要resize或切割成要求尺寸。

1.2.2 YOLO模型处理

 将图片分割为 s^2 个grid(𝑆 = 7),每 个grid cell的大小都是相等的

 每个格子都可以检测是否包含目标

 YOLO v1中,每个格子只能检测一种 物体(但可以不同大小)

1.2.3 YOLO网络输出

 输出是一个7 × 7 × 30的张量。对应 7 × 7个cell

 每个cell对应2个包围框(bounding box, bb),预测不同大小和宽高比, 对应检测不同目标。每个bb有5个分量, 分别是物体的中心位置(𝑥, 𝑦)和它的高 (ℎ) 和宽 (𝑤) ,以及这次预测的置信度。

在右图中,每个框代表1个预测的bb,粗细代表不同的置信度,越粗得越高。 

1.2.4 YOLO模型输出

在上面的例子中,图片被分成了49个框,每个框预测2个bb,因此上面的图中有98个bb

2、包围框与置信度

2.1 YOLO包围框

2.1.1 YOLO的包围框

我们有 s^2 个框,每个框的bb个数为𝐵,分类器可以识别出 𝐶 种不同的物体, 那么所有整个 ground truth 的长度为 𝑆 × 𝑆 × (𝐵 × 5 + 𝐶)

YOLO v1中,这个数量是30

YOLO v2和以后版本使用了自聚类的anchor box为bb, v2版本为𝐵 = 5, v3中 𝐵 =9

2.1.2 处理细节——归一化

四个关于位置的值,分别是𝑥, 𝑦, ℎ和𝑤,均为整数,实际预测中收敛慢因此,需要对数据进行归一化,在0-1之间。

 例子是一个448*448的图 片,有3*3的grid,每个 cell是149。 目标中心点是(220,190)

2.2 YOLO置信度

置信度计算公式:C=Pr(obj)*IOU^{pred}_{truth}

  • Pr(𝑜𝑏𝑗)是一个grid有物体的概率
  • IOU是预测的bb和真实的物体位置的交并比

 

2.3 训练值与预测值

2.3.1 处理细节——训练值

2.3.2 处理细节——训练数据与网络输出

3、损失函数

3.1 YOLO损失函数

 3.2 边界框对应损失项

 第2项要开根号让误差更显著,保证回归精度

 3.3 \lambda取值

4、训练与NMS

4.1 预训练与训练

 4.2 NMS算法

 二、语义分割

2.1 语义分割定义

语义分割关注如何将图像分割成属于不同语义类别的区域。值得一提的是, 这些语义区域的标注和预测都是像素级的。下图展示了语义分割中图像有关 狗、猫和背景的标签。

 2.2 语义分割与其他分割的区别

  • 图像分割:图像分割将图像分割成若干组成区域。这类问题的方法通常利用图像中像 素之间的相关性。它在训练时不需要有关图像像素的标签信息,在预测时 也无法保证分割出的区域具有我们希望得到的语义。
  • 实例分割:实例分割又叫同时检测并分割。它研究如何识别图像中各个目标实例的像 素级区域。与语义分割有所不同。
  • 区别:以上图的两只狗为例,图像分割可能将狗分割成两个区域:一个 覆盖以黑色为主的嘴巴和眼睛,而另一个覆盖以黄色为主的其余部分身体 。而实例分割不仅需要区分语义,还要区分不同的目标实例。如果图像中 有两只狗,实例分割需要区分像素属于这两只狗中的哪一只。

2.3 语义分割数据集

语义分割的一个重要数据集叫作Pascal VOC2012

2.3.1 Pascal VOC2012下载与内容

压缩包大小是 2GB 左右,下载需要一定时间。下载后解压得到VOCdevkit/VOC2012文件夹,然后将其放置在data文件夹下。

ImageSets/Segmentation路径包含了指定训练和测试样本的文本文件。

JPEGImages和SegmentationClass路径下分别包含了样本的输入图像和标签。

这里的标签也是图像格式,其尺寸和它所标注的输入图像的尺寸相同。标签 中颜色相同的像素属于同一个语义类别。

2.3.2 自定义语义分割数据集类

  • 首先继承PyTorch提供的Dataset类自定义一个语义分割数据集类 VOCSegDataset。
  • 通过实现__getitem__函数,任意访问数据集中索引为idx的输入图像及其每个像素的类别索引。
  • 由于数据集中有些图像的尺寸可能小于随机裁剪所指定的输出尺寸,获得的样本需要通过自定义的filter函数所移除。
  • 最后对输入图像的RGB三个通道的值分别做标准化。

三、风格迁移

3.1 风格迁移简介

风格迁移问题:两张输入图像,一张是内容图像,另一张是样式图像,我们将使用神经网络修改内容图像使其在样式上接近样式图像。

 方法:

  • 首先,我们初始化合成图像,例如将其初始化成内容图像。该合成图像是样式迁移过程中唯一需要更新的变量,即样式迁移所需迭代的模型参数。
  • 然后,我们选择一个预训练的卷积神经网络来抽取图像的特征,其中 的模型参数在训练中无须更新。深度卷积神经网络凭借多个层逐级抽取图像的特征。我们可以选择其中某些层的输出作为内容特征或样式特征。

3.2 代价函数

3.2.1 内容代价函数

 

 3.2.2 风格代价函数

风格定义

神经网络各隐藏层输出激活项的含义,此时相关性即为风格

 风格差异量化

  • 风格矩阵

  • 符号规定 

  • 计算 

  •  风格代价函数

 3.2.3 总体代价函数

 3.3 损失函数

样式迁移常用的损失函数由3部分组成:

内容损失使合成图像与内容图 像在内容特征上接近,

样式损失令合成图像与样式图像在样式特征 接近,

总变差损失则有助于减少合成图像中的噪点。

3.4 训练

可以通过预训练的卷积神经网络来抽取图像的特征,并通过最小化损失函数来不断更新合成图像。

四、人脸识别

4.1 人脸验证与人脸识别区别

人脸验证:

人脸识别:

 4.2 人脸验证到人脸识别

4.2.1 构建神经网络

旧思路:转换为分类问题。局限性:One -shot learning

新思路:使用相似度函数,采用Siamese网络

 

4.2.2 训练神经网络

面部验证与二分类,输出softmax神经元

可以预先知道下面的网络输出(预存人脸),节省识别的计算量

训练目的

通过训练神经网络,我们希望同一人的两张照片间的相似度函数值尽可能小,不同人的两张片间的相似度函数值尽可能大,下以 此为目标制作训练集、定义Loss函数。

制作训练集

 定义代价函数

定义Loss函数如下:

 将所有样本的loss函数累加得到cost函数如下

4.2.3 运行神经网络

利用人脸验证实现人脸识别

对于训练完毕的神经网络,输入照片,通过简单的for循环语句 遍历数据库中存储的所有照片,依次通过相似度函数进行计算, 记录遍历过程中相似程度最大的值,在遍历结束后与预先设定的 阈值进行比较,得出预测结果,完成人脸识别

五、循环神经网络与NLP

5.1 数据处理基础

5.1.1 特征编码

  • 数值特征:例如年龄
  • 类别特征:例如国家

数值特征不适合类别,因此一般使用独热编码。

 独热编码:例如可以用多为向量表达y一个国家的特征:

 5.2 文本处理

第一步:文本切分

第二步:统计词频

  • 创建字典进行词频统计
  • 初始字典为空 
  • 遍历文本,如果单词不在字典中加入该单词,否则将其词频加一
  • 直到完成整个遍历
  • 按词频降序排序
  • 词频索引化,若词汇太多,则只保留排序在前的k个单词

第三步:独热编码 

  • 将每一个词映射到索引号上
  • 需要时,将索引转换为独热编码
  • 词典上没有的词(低频词或 拼写错误,直接忽略,或编码为0)

5.3 文本预处理与词嵌入

5.3.1 文本预处理

第一步:读取数据集

第二步:词汇切分

第三步:构建词索引表

  • 将文本作为字符串加载到内存中
  • 将字符串切分为词元(如单词和字符)
  • 建立一个字典,将拆分的词元映射到数字索引
  • 将文本转换为数字索引序列,方便模型操作

文本预处理实例:IMDB 

5.3.2 文本嵌入

词嵌入:将独热向量映射成低维向量

5.4 RNN模型 

5.4.1 概要

序列数据:输入维度不定(可能一直有单词输入); 输出维度不定或者是1(直接最终理解结果)

RNN建模序列数据 

 5.4.2 RNN模型

 循环神经网络

 随着输入的增加,会产生“遗忘”问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值