神经网络与深度学习--学习笔记(三)

6. 深度学习视觉应用

6.1数据集与评价指标

TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数

FP: 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数

FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数

TN: 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数

P(精确率): TP/(TP+FP)

R(召回率): TP/(TP+FN)。召回率越高,准确度越低

可以通过改变阈值(也可以看作上下移动蓝色的虚线),来选择让系统识别能出多少个图片,当然阈值的变化会导致Precision与 Recall值发生变化。比如,把蓝色虚线放到第一张图片下面,也就 是说让系统只识别出最上面的那张飞机图片,那么Precision的值就 是100%,而Recall的值则是20%。如果把蓝色虚线放到第二张图片 下面,也就是说让系统只识别出最上面的前两张图片,那么 Precision的值还是100%,而Recall的值则增长到是40%。

 6.2目标检测与YOLO

目标检测基本原理

很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别 ,还想得到它们在图像中的具体位置。在计算机视觉里,我们将这类任务称为目标检测(object detection)或物体检测。 目标检测在多个领域中被广泛使用。例如,在无人驾驶里,我们需要通 过识别拍摄到的视频图像里的车辆、行人、道路和障碍的位置来规划行进线路。机器人也常通过该任务来检测感兴趣的目标。安防领域则需要检测异常目标,如歹徒或者炸弹.

在目标检测里,我们通常使用边界框(bounding box)来描述目标位置。 边界框是一个矩形框,可以由矩形左上角的x和y轴坐标与右下角的x和y 轴坐标确定。我们根据下面的图的坐标信息来定义图中狗和猫的边界框 。图中的坐标原点在图像的左上角,原点往右和往下分别为x轴和y轴的 正方向。

目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边缘从而更准确地预测目标的真实边界框(ground-truth bounding box)。 不同的模型使用的区域采样方法可能不同。

这里我们介绍其中的一种方 法:它以每个像素为中心生成多个大小和宽高比(aspect ratio)不同的边界框。这些边界框被称为锚框(anchor box)。我们将在后面基于锚框实践目标检测。

假设输入图像高为h,宽为w。我们分别以图像的每个像素为中心生成不同 形状的锚框。设大小为s∈(0,1]且宽高比为r>0,那么锚框的宽和高将分别 为𝑤𝑠√𝑟 和ℎ𝑠/ √𝑟。当中心位置给定时,已知宽和高的锚框是确定的。 下面我们分别设定好一组大小s1,…,sn和一组宽高比r1,…,rm。如果以每个 像素为中心时使用所有的大小与宽高比的组合,输入图像将一共得到 w*h*n*m个锚框。虽然这些锚框可能覆盖了所有的真实边界框,但计算复 杂度容易过高。因此,我们通常只对包含s1或r1的大小与宽高比的组合感兴趣,即

实际上,我们可以把边界框内的像素区域看成是像素的集合。如此一来,我们可以用两个边界框的像素集合的Jaccard系数衡量这两个边界框的相似度。 当衡量两个边界框的相似度时,我们通常将Jaccard系数称为交并比,即两个边界框相交面积与相并面积之比,如图所示。交并比的取值范围在0和1之间 :0表示两个边界框无重合像素,1表示两个边界框相等。

在训练集中,我们将每个锚框视为一个训练样本。为了训练目标检测模型 ,我们需要为每个锚框标注两类标签:

一是锚框所含目标的类别,简称类别;

二是真实边界框相对锚框的偏移量,简称偏移量(offset)。 在目标检测时,我们首先生成多个锚框,然后为每个锚框预测类别以及偏 移量。 接着根据预测的偏移量调整锚框位置从而得到预测边界框。 最后筛选需要输出的预测边界框。

目标检测数据集

在目标检测领域并没有类似MNIST或Fashion-MNIST那样的小数据集。 为了快速测试模型,我们合成了一个小的数据集。

首先,用一个开源的皮卡丘3D模型生成了1000张不同角度和大 小的皮卡丘图像。

后我们收集了一系列背景图像,并在每张图的随机位置放置一 张随机的皮卡丘图像。

皮卡丘数据集使用MXNet提供的im2rec工具将图像转换成了二进制的RecordIO 格式,但是我们后续要使用PyTorch,所以我们先用脚本将其转换成了PNG图 片并用json文件存放对应的label信息。最终pikachu文件夹的结构如下:

首先定义一个数据集类PikachuDetDataset,数据集每个样本包含label和 image。

label是一个 m×5m×5 的向量,即m个边界框,每个边界框由[class, x_min, y_min, x_max, y_max]表示,这里的皮卡丘数据集中每个图像只有 一个边界框,因此m=1。 image是一个所有元素都位于[0.0, 1.0]的浮点tensor,代表图片数据。

6.3语义分割

语义分割关注如何将图像分割成属于不同语义类别的区域。

值得一提的是, 这些语义区域的标注和预测都是像素级的。下图展示了语义分割中图像有关狗、猫和背景的标签。可以看到,与目标检测相比,语义分割标注的像素级的边框显然更加精细。

计算机视觉领域还有2个与语义分割相似的重要问题,即图像分割和实例分割。我们在这里将它们与语义分割简单区分一下。

图像分割将图像分割成若干组成区域。这类问题的方法通常利用图像中像素之间的相关性。它在训练时不需要有关图像像素的标签信息,在预测时 也无法保证分割出的区域具有我们希望得到的语义。

实例分割又叫同时检测并分割。它研究如何识别图像中各个目标实例的像 素级区域。与语义分割有所不同。

以上一张ppt中的两只狗为例,图像分割可能将狗分割成两个区域:一个覆盖以黑色为主的嘴巴和眼睛,而另一个覆盖以黄色为主的其余部分身体 。而实例分割不仅需要区分语义,还要区分不同的目标实例。如果图像中 有两只狗,实例分割需要区分像素属于这两只狗中的哪一只。

语义分割关注如何将图像分割成属于不同语义类别的区域。

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

由于语义分割的输入图像和标签在像素上一一对应,所以将图像随机裁剪成固定尺寸而不是缩放。

6.4视觉应用展望

生成对抗网络(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 输出小概率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值