课程来源:吴恩达 深度学习课程 《卷积神经网络》
笔记整理:王小草
时间:2018年6月8日
1.目标定位Object localization
1.1 什么是目标定位
明确下目标定位与检测的定义。
识别一张图片的类型(比如猫狗分类)叫做图像分类image classification,比如下面这张图篇是分类到汽车:
不仅识别出图片的类型,还将目标物体的位置标出来叫做分类定位classification with localization
检测出图片中所有目标物体中的位置叫做目标检测detection
比如给出一张交通图片,检测并标记出里面的车辆,行人,自行车,交通灯等等。(注意,detection与classification with localization的不同在于单张图片中有不同分类的对象)
本节要讲述的是以上第二种情况,即给图片分类,并定位和标记出出目标物体的位置
1.2 定位方法的介绍
标准的图像分类问题,假如如下输入一张图片,通过卷积神经网络卷啊卷,最后经过softmax层,分成4类:行人,汽车,摩托车,啥都没有
如果你还想定位图片中汽车的位置,该咋办呢?你可以让上面这个神经网络再多加几个输出,输出汽车的边框。
汽车的边框信息只需要4个数字来表示:b_x,b_y,b_h,b_w,分别表示边框的中心点的横坐、,纵坐标,边框的高,边框的宽。
因此在标注训练数据时,除了给出类别的标签,还要给出表示边框的4个数字。然后通过有监督的训练模型,输出一个分类标签和四个边框参数值。
1.3 符号约定
(1)定义标签y
y是8*1的向量(注意这里我们只限定讲解图像中只有一个目标物体的情况)。
Pc表示概率:是否有目标物体,若有车辆,摩托车,行人目标物体,则Pc=1,若这三个都没有则Pc=0;
bx,by,bh,bw分别表示目标物体边框的中心点横纵坐标与高宽
c1,c2,c3分别表示当Pc=1时,图片属于车辆,摩托车,行人的类别的概率。
因此上面这个例子的标签y可以写成图左,而什么都没检测到可以写成图右。
(2)定义损失函数
分别将y向量中的8个元素写成y1,y2,…,y8,其中Pc=y1,以此类推。
对于单个样本的损失:
当y1=1时,就是这把个元素对应的平方差损失之和;
当y1=0时,就只是y1的平方差,后面7个元素都不用考虑
在实际中,也可以不这样定义,可以将y1的输出用逻辑回归的损失函数定义,bx,by,bh,bw的输出用平方差和来定义,而c1,c2,c3用softmax的Log损失来定义.
2.特征点检测Landmark detection
神经网络可以通过对特征点(x,y)的输出来识别目标特征。来举2个例子。
例子1:
假设要识别人脸左眼角的特征点,则只需要让神经网络的最后一层输出(Pc,lx,ly)3个值即可,Pc表示是否是人脸,lx,ly是人脸上眼角的坐标点。
假设想定位两只眼睛的4个眼角的位置,那就将输出改为4组坐标对应的数字(l1_x,l1_y),…,(l4_x,l4_y)
假设想定位两只眼睛的一圈,则可能需要10几个特征点,同样