• 卷积神经网络(4)----目标检测


    一、分类、定位和检测

    简单来说,分类、定位和检测的区别如下:

    1. 分类:是什么?

    2. 定位:在哪里?是什么?(单个目标)

    3. 检测:在哪里?分别是什么?(多个目标)

         

    (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看成是检测正确的,当然这个值可以根据实际情况来定。

    转载于:https://www.cnblogs.com/Lee-yl/p/10015979.html

  • 相关阅读:
    [转]C# 动态调用 WebService
    [转]走进 LINQ 的世界
    [转]mybatis-generator 代码自动生成工具(maven方式)
    [转]Netty入门(最简单的Netty客户端/服务器程序)
    FastJson 常见问题
    初识 ElasticSearch
    Maven Gradle 区别
    IDEA 自动生成serialVersionUID
    restful 架构详解
    初识shell expect
  • 原文地址:https://www.cnblogs.com/twodog/p/12135563.html
Copyright © 2020-2023  润新知