一, 分类, 定位和检测
简单来说, 分类, 定位和检测的区别如下:
分类: 是什么?
定位: 在哪里? 是什么?(单个目标)
检测: 在哪里? 分别是什么?(多个目标)
(1) 目标分类 | (2) 目标定位 | (3) 目标检测 |
二, 目标定位:
1)案例 1: 在构建自动驾驶时, 需要定位出照片中的行人, 汽车, 摩托车和背景, 即四个类别.
输出:
1,2,3 为要检测的行人, 汽车, 摩托车, Pc=1
4 为背景, Pc=0
Pc: 首先第一个元素 pc=1 表示有要定位的物体的概率, 即是有 1,2,3 类的概率, 否则 pc=0 表示只有背景第 4 类如上图的第二个图.
bx,by,bh,bw: 这四个输出元素表示定位框的中心坐标 bx,by 和宽高 bh,bw
c1,c2,c3:3 个输出元素 one-hot 表示是三个类别 (1,2,3) 中的哪一类.
当第一个元素 pc=0 时表示是背景, 然后就不需要考虑其他输出了
损失函数:
输出向量中有 8 个元素: 故:
- if y1 =1 ,L = (y'1-y1)2 + (y'2-y2)2 + ......+(y'8-y8)2
- if y1 = 0,L = (y'1-y1)2
实际使用中 pc 使用逻辑回归, c1,c2,c3 是用 softmax 激活然后用对数损失函数, 位置信息是使用平方误差损失函数, 然后将这些损失函数相加起来得到最终的代价函数. 当标签 y=0 时, 只考虑 pc 即可.
三, 特征点检测:
特征点检测就是第一个单元输出 1, 表示有这个对象(如人脸),
然后如果在人脸上定义了 64 个特征点 (如下图所示), 每个特征点用(x,y) 表示, 那么网络将会有 1+2*68=129 个单元输出.
需要注意的一点是在标注样本时, 所有标签在所有图片中务必保持一致, 比如说, 第 5 个特征点表示左眼的外眼角, 那么所有图片的第五个特征点都应该是这个.
四, 目标检测: 滑动窗口, YOLO 算法[更好解决边界]
https://www.cnblogs.com/ys99/p/9326637.html
传统的窗口滑动: 将图片切割成很多小窗口, 然后进行目标检测. 直到某个小窗口检测到目标.
卷积的滑动窗口实现: 在原输入补上边, 在进行卷积操作, 得到结果.
例如:
原输入是 14*14*3, 输出是 1*1*4[4 个分类] . 传统的滑动窗口是将原输入切成 4 个, 每个大小为 12*12*3. 经过重复 4 次卷积操作得到 4 个 1*1*4.
卷积的滑动窗口: 将原输入补成 16*16*3, 输出为 2*2*4. 只需要经过一次卷积操作就可以得到和 4 个 1*1*4 相同的结果 2*2*4=2*2*(1*1*4).
交并比函数是用来判断对象定位是否准确, IoU=(A∩B)/(A∪B), 一般将交并比的值大于 0.5 看成是检测正确的, 当然这个值可以根据实际情况来定.
卷积神经网络(4)---- 目标检测
来源: http://www.bubuko.com/infodetail-2860621.html