神经网络与深度学习-第五周学习总结4.12

6.4包围框与置信度

YOLO的包围框
  • 包围框
    我们有 s 2 s^2 s2个框,每个框的bb个数为𝐵,分类器可以识别出𝐶种不同的物体,
    那么所有整个ground truth的长度为𝑆 × 𝑆 × (𝐵 × 5 + 𝐶)
    YOLO v1中,这个数量是30
    YOLO v2和以后版本使用了自聚类的anchor box为bb, v2版本为𝐵 = 5, v3中𝐵 =9
  • 处理细节—归一化
    四个关于位置的值,分别是𝑥, 𝑦, ℎ和𝑤,均为整数,实际预测中收敛慢。因此,需要对数据进行归一化,在0-1之间。
YOLO的置信度
  • 处理细节——置信度
    置信度计算公式: C = P r ( o b j ) ∗ 10 U t r u t h p r e d C=Pr(obj)*10U^{pred}_{truth} C=Pr(obj)10Utruthpred
    Pr(𝑜𝑏𝑗)是一个grid有物体的概率
    IOU是预测的bb和真实的物体位置的交并比。
    计算过程如下:
    在这里插入图片描述
训练值与预测值
  • 处理细节——训练值
    Pr(𝑜𝑏𝑗)的ground truth:三个目标中点对应格子为1,其它为0
  • 处理细节——训练数据与网络输出
    在这里插入图片描述

6.5损失函数

  • 损失函数的形式:
    在这里插入图片描述
  • 边界框对应损失项
    在这里插入图片描述
  • 𝝀取值
    接下来的问题是 λ c o o r d \lambda_{coord} λcoord和入 λ n o o b j \lambda_{noobj} λnoobj都应该取怎样的值,为什么这样设计?
    答案是入 λ c o o r d = 5 \lambda_{coord}=5 λcoord=5 λ n o o b j = 0.5 \lambda_{noobj}=0.5 λnoobj=0.5,也就是放大第一项和第二项的损失函数,缩小第四项的损失函数。
    这样做的原因是让梯度更稳定,如果gid中不含有物体,它对1,2,3,5项没有影响,如果调节第四项,会让含有物体的grid的confidence发生改变,这可能使其他项的梯度剧烈变化,从而带来模型上的不稳定。
    因此,我们放大第一项和第二项,缩小第四项。

6.6训练与NMS

非极大值抑制
  • 预训练与训练
    保留了这么多边界框,预测中一个物体可能被多个边界框包围;实际物体只对应一个边界框,可以采用NMS。
    NMS核心思想是:选择得分最高的作为输出,与该输出重叠的去掉,不断重复这一过程直到所有备选处理完。
  • NMS算法要点:
  1. 首先丢弃概率小于预定IOU阈值(例如0.5)的所有边界框;对于剩余的边界框:
  2. 选择具有最高概率的边界框并将其作为输出预测;
  3. 计算 “作为输出预测的边界框”,与其他边界框的相关联IoU值;舍去IoU大于阈值的边界框;其实就是舍弃与“作为输出预测的边界框” 很相近的框框。
  4. 重复步骤2,直到所有边界框都被视为输出预测或被舍弃。
数据集训练
  • YOLO先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCALVOC数据集上进行对象识别和定位的训练和预测。
  • 训练中采用了drop out和数据增强来防止过拟合。
  • YOLO的最后一层采用线性激活函数(因为要回归bb位置),其它层都是采用Leaky ReLU激活函数:
    • 在这里插入图片描述

6.7语义分割

语义分割问题:

语义分割关注如何将图像分割成属于不同语义类别的区域。值得一提的是,这些语义区域的标注和预测都是像素级的。下图展示了语义分割中图像有关狗、猫和背景的标签。可以看到,与目标检测相比,语义分割标注的像素级的边框显然更加精细。
计算机视觉领域还有2个与语义分割相似的重要问题,即图像分割和实例分割。我们在这里将它们与语义分割简单区分一下。
• 图像分割将图像分割成若干组成区域。这类问题的方法通常利用图像中像素之间的相关性。它在训练时不需要有关图像像素的标签信息,在预测时也无法保证分割出的区域具有我们希望得到的语义。
• 实例分割又叫同时检测并分割。它研究如何识别图像中各个目标实例的像素级区域。与语义分割有所不同。
• 以上一张ppt中的两只狗为例,图像分割可能将狗分割成两个区域:一个覆盖以黑色为主的嘴巴和眼睛,而另一个覆盖以黄色为主的其余部分身体。
。而实例分割不仅需要区分语义,还要区分不同的目标实例。如果图像中有两只狗,实例分割需要区分像素属于这两只狗中的哪一只。
定义:找到同一画面中的不同类型目标区域
实例分割:同一类型目标要分出来具体实例(谁是谁)
目标检测:标出来外包围矩

  • 深度学习图像分割算法发展
    在这里插入图片描述
语义分割基本思想
  • 语义分割目标
    对图中每一个像素进行分类,得到对应标签
    基本思想:滑动窗口
    在这里插入图片描述
反卷积与反池化
  • 基本概念
    在这里插入图片描述
FCN具体实现

FCN网络结构:卷积部分
在这里插入图片描述
FCN中第6、7、8层都是通过1 × 1卷积得到的,第6层的输出是4096 × 7 × 7,第7层的输出是4096 × 7 × 7 ,第8层的输出是1000 × 7 × 7,即1000个大小是7 × 7的特征图(称为heatmap)

反卷积部分

跳级结构:
在这里插入图片描述

FCN训练结果

在这里插入图片描述

FCN评价指标与标注工具
  • 评价指标:
    在这里插入图片描述
  • 常见标注工具:
    Labelme、EISeg

6.8风格迁移

简介

如果你是一位摄影爱好者,也许接触过滤镜。它能改变照片的颜色样式,从而使风景照更加锐利或者令人像更加美白。但一个滤镜通常只能改变照片的某个方面。如果要照片达到理想中的样式,经常需要尝试大量不同的组合,其复杂程度不亚于模型调参。
使用卷积神经网络自动将某图像中的样式应用在另一图像之上,即风格迁移。
这里我们需要两张输入图像,一张是内容图像,另一张是样式图像,我们将使用神经网络修改内容图像使其在样式上接近样式图像。
在这里插入图片描述

方法

首先,我们初始化合成图像,例如将其初始化成内容图像。该合成图像是样式迁移过程中唯一需要更新的变量,即样式迁移所需迭代的模型参数。
然后,我们选择一个预训练的卷积神经网络来抽取图像的特征,其中的模型参数在训练中无须更新。深度卷积神经网络凭借多个层逐级抽取图像的特征。我们可以选择其中某些层的输出作为内容特征或样式特征。
以之前放的图像为例,这里选取的预训练的神经网络含有3个卷积层,其中第二层输出图像的内容特征,而第一层和第三层的输出被作为图像的样式特征。
接下来,我们通过正向传播(实线箭头方向)计算样式迁移的损失函数,并通过反向传播(虚线箭头方向)迭代模型参数,即不断更新合成图像。
在这里插入图片描述
样式迁移常用的损失函数由3部分组成:

  • 内容损失(content loss)使合成图像与内容图像在内容特征上接近
  • 样式损失(style loss)令合成图像与样式图像在样式特征上接近
  • 总变差损失(total variation loss)则有助于减少合成图像中的噪点。
    最后,当模型训练结束时,我们输出样式迁移的模型参数,即得到最终的合成图像。

代价函数如下:
在这里插入图片描述

  • 预处理和后处理图像
    预处理函数preprocess对先对更改输入图像的尺寸,然后再将PIL图片转成卷积神经网络接受的输入格式再在RGB三个通道分别做标准化。由于预训练模型是在均值为[0.485, 0.456, 0.406]的图片数据上预训练的,所以我们要将图片标准化保持相同的均值和标准差。
    后处理函数postprocess则将输出图像中的像素值还原回标准化之前的值。由于图像每个像素的浮点数值在0到1之间,我们使用clamp函数对小于0和大于1的值分别取0和1。

  • 抽取特征
    为了抽取图像的内容特征和样式特征,我们可以选择VGG网络中某些层的输出。
    一般来说,越靠近输入层的输出越容易抽取图像的细节信息,反之则越容易抽取图像的全局信息。
    为了避免合成图像过多保留内容图像的细节,我们选择VGG较靠近输出的层,也称内容层,来输出图像的内容特征。
    我们还从VGG中选择不同层的输出来匹配局部和全局的样式,这些层也叫样式层。

6.9人脸识别

人脸验证与人脸识别
  • 区别
    人脸验证:一对一
    人脸识别:一对多

  • 人脸验证
    构建神经网络:
    在这里插入图片描述
    训练神经网络:
    训练目的
    通过训练神经网络,我们希望同一人的两张照片间的相似度函数值尽可能小,不同人的两张片间的相似度函数值尽可能大,下以此为目标制作训练集、定义Loss函数。

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

6.10视觉应用展望

生成对抗网络

生成对抗网络(GANs, generative adversarial networks)是由Ian Goodfellow等人在2014年的Generative Adversarial Networks一文中提出。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。
原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出不理想。

在这里插入图片描述
生成对抗网络(GAN)的初始原理十分容易理解,即构造两个神经网络,一个生成器,一个鉴别器,二者互相竞争训练,最后达到一种平衡(纳什平衡)。
GAN 启发自博弈论中的二人零和博弈(two-player game),GAN 模型中的两位博弈方分别由生成式模型(generativemodel,G)和判别式模型(discriminative model,D)充当。

  • 生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越像真实样本越好。
  • 判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率,否则,D 输出小概率。

7循环神经网络与NLP

7.1数据处理基础

特征编码

在循环神经网络中,特征编码是指将输入序列转换为一系列向量的过程。这些向量可以捕捉输入序列的关键特征,使得网络可以更好地理解输入序列并进行下一步的处理。
常见的循环神经网络特征编码方法包括以下几种:
One-Hot编码:将每个词映射为一个唯一的向量,向量中只有一个元素为1,其余元素为0。这种编码方式简单直观,但向量维度较高,难以处理大规模词汇。
词嵌入(Word Embedding):将每个词映射为一个低维向量,使得相似的词在向量空间中距离较近。这种编码方式可以更好地处理大规模词汇,同时可以保留词与词之间的语义关系。
双向循环神经网络(Bidirectional RNN)编码:利用前向和后向循环神经网络分别编码输入序列,将它们的输出拼接起来作为最终的特征表示。这种编码方式可以更好地捕捉输入序列中的长期依赖关系,提高模型的准确性。
注意力机制(Attention Mechanism)编码:利用注意力机制对输入序列的每个位置进行加权,以更好地捕捉序列中的关键信息。这种编码方式可以提高模型的灵活性和准确性,特别是在处理长序列数据时表现优异。
这些编码方式可以根据具体的任务和数据特征进行选择和组合,以获得更好的性能和效果。

文本处理

第一步:文本切分 (tokenization)
将文本切分为单词序列如下形式:
在这里插入图片描述
第二步:统计词频
* 创建一个字典 (实际中经常使用Hash表) 进行词频统计,初始字典为空
* 遍历文本,并按如下更新字典:如果单词不再字典中,加入该单词 (𝑤, 1),否则将其词频加1直到完成整个遍历
* 按照词频降序进行排序
* 将词频索引化,如果词汇太多,则只保留排序在前的k个单词 (如取𝑘 = 10000)
第三步:独热编码
* 将每一个词映射到索引号上
* 需要时,将索引转换为独热编码
* 词典上没有的词(低频词或拼写错误,直接忽略,或编码为0)

7.2文本预处理与词嵌入

文本预处理

一篇文章可以被简单地看作一串单词序列,甚至是一串字符序列。 我们将解析文本的常见预处理步骤。 这些步骤通常包括:
1.将文本作为字符串加载到内存中。
2.将字符串切分为词元(如单词和字符)。
3.建立一个字典,将拆分的词元映射到数字索引。
4.将文本转换为数字索引序列,方便模型操作。

步骤如下:
第一步:读取数据集
以H.G.Well的时光机器为例,从中加载文本。
这是一个相当小的语料库,只有30000多个单词,而现实中的文档集合可能会包含数十亿个单词。如Chatgpt包含65T数据。
第二步:词汇切分
将原始文本以文本行为单位进行切分
第三步:构建词索引表
打印前几个高频词及索引
将每一条文本行转换成一个数字索引列表

文本嵌入

问题:如何将词映射成向量?
直接想法:使用之前所述的独热向量,但存在维数过高的问题
采用词嵌入
将独热向量映射为低维向量
在这里插入图片描述
原始向量:𝑣维;映射后:𝑑维,𝑑 ≪ 𝑣;
映射矩阵:𝑑 × 𝑣,根据训练数据学习得到
词嵌入训练效果:
在这里插入图片描述

7.3RNN模型

RNN概要

建模序列数据:
图像分类中使用:1对1模型
输入和输出维度:固定

文本处理中:
输入维度不定(可能一直有单词输入);输出维度不定或者是1(直接最终理解结果)

用RNN建模序列数据:
在这里插入图片描述
使用RNN进行IMDB评论:
在这里插入图片描述
问题:随着输入的增加,会产生“遗忘”问题

7.4LSTM模型

LSTM网络模型

结构如下:
在这里插入图片描述
LSTM类似于“传送带”

总结

通过本周的学习,我对上面的很多知识包括风格迁移以及循环神经网络等都有了更深的理解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值