Writed by changfei_love life~
目录:
1.目标定位&目标检测
2.人脸识别&神经风格转移
第一部分 目标定位&目标检测
1.目标定位
含义:构建算法不仅需要判断图片中的对象,还需要在图片中标记处它的位置。
本章中规定,目标定位问题中,图片只有一个对象;目标检测问题中,图片含有多个对象。
以汽车自动驾驶系统为例:判断图片是否有行人、汽车和摩托车,同时定位对象位置
需要重新定义标签:
Pc表示是否含有对象
bx,by表示边界框的中心点
bh,bw表示边界框的高和宽
c1,c2,c3表示对象属于1-3类中的哪一类
因此,训练集不仅包含预测的对象分类标签,还要包含表示边界框的4个参数。
2.特征点检测
以人脸识别为例:需要标注出眼角位置,此时需要输出眼角坐标(lx,ly),一个特征点对应一对坐标。
假设有64个特征点,则需要生成包含这些特征点的标签训练集,然后利用神经网络输出脸部特征。
3.目标检测
采用基于滑动窗口的目标检测算法
以汽车检测算法为例,步骤:
(1)首先创建标签训练集,x代表适当剪切的图片,y代表是否为汽车
(2)训练卷积网络
(3)实现滑动窗口检测:选定一个特定大小的窗口,处理第一个图像,滑动窗口,处理第二个图像,依次重复操作。
缺点:
计算成本,卷积需要一个个处理窗口图像
步幅选择影响性能
4.卷积的滑动窗口实现
需要把卷积网络中的全连接层转化成卷积层:
应用400个5-5-16过滤器,输出维度1-1-400,不再把它看成一个含有400个节点的集合,而是一个1-1-400的输出层。
最后两个使用1by1卷积。
通过卷积实现滑动窗口对象检测算法:
原始的滑动窗口算法需要将卷积重复应用到输入图像中,而卷积滑动窗口算法直接将16-16-3输入到卷积网络中,得到2-2-4,分别对应输入的4张图片结果。
存在一个缺点:
虽然卷积滑动效率高,但边界框的位置不够精确。
5.Bounding Box预测——YOLO算法
基本思路:使用图像定位算法,应用到多个格子里。
重新定义训练标签y:类似于图像定位的标签,可以得到对象的精准边界框。此时输入为图像x,输出为3-3-8(这里使用3-3格子)的目标标签,当用反向传播训练神经网络时,可将任意输入x映射到这类输出向量y。
对象分配格子原则:
使用一次卷积实现:
关于参数bx,by,bh,bw的取值:
其中,(bx,by)为中点坐标,bh,bw取相对值
6.交并比
交并比用来评价对象检测算法
计算两个边界框交集和并集之比
7.非极大值抑制
含义:
目的:
具体做法:
高亮最大值,抑制较小值
8.Anchor Boxes
对象检测存在的一个问题是,每个格子只能检测出一个对象,如果想要一个格子检测出多个对象,可以使用Anchor Boxes。
做法:
每个标签下不仅只有一个边界框,可以有多个边界框,它们特征不同。
对应的标签为:
说明:
9.YOLO算法
构造训练集:
训练卷积网络:
预测:
非极大值抑制:
第二部分 人脸识别&神经风格转移
1.人脸识别
人脸验证与人脸识别的区别:
人脸验证是输入图片,系统验证是否是这个人,1对1问题。
人脸识别是输入图片,系统识别是否含这个这个人,1对k问题。
one-shot学习:
含义:需要通过单单一张图片去识别一个人
方法:
(1)CNN实现
(2)学习Similarity函数
Siamese网络:
将卷积网络中最后的回归单元去掉,得到的值可以看出图像的编码。
网络训练:
Triplet损失:
定义三元组损失函数来训练网络
A,P,N:
d(A,p)+a-d(A,N)<=0
损失函数:
三元组选择:
面部识别与二分类:
将面部识别转换成二分类问题:
回归单元:
2.神经风格转移
C(内容图像)+S(风格图像)—>G(生成的图像)
深度卷积网络的可视化(理解不同层隐藏单元的计算结果):
代价函数:
代价函数=内容代价函数+风格代价函数
算法过程:
内容代价函数:
隐藏层l的选择:不会太浅也不会太深,通常选择中间层
选择一个训练好的卷积模型,这里选用VGG网络
损失函数衡量内容图片和生成图片的相似度:
卷积层的展开,便于计算
风格代价函数:
通道间激活项的相关系数矩阵:
通道k和k’之间的相关系数:
(风格图片)
(生成图片):
相关系数构成矩阵:
矩阵计算方法:
风格代价函数: