目标检测与YOLO算法(用Python实现目标检测)

       最近在听Andrew Ng讲解目标检测的视频,包括目标定位,特征点检测,卷积的滑动窗口的实现,Bounding Box预测,交并比,非极大值抑制,AnchorBoxes,YOLO算法以及候选区域,并通过查阅相关的资料,对以上内容有了初步的理解,趁热打铁,总结如下。

一、目标定位(Object Localization)

图片分类:图片分类问题已经不陌生了,例如,输入一张图片到多层卷积神经网络,它会输出一个特征向量,并反馈给softmax单元来预测图片的类型。

定位分类问题:不仅要用算法判断出图中是否有一辆汽车,而且还要标注汽车的位置,一般用边框(Bounding Box)来标注。通常只有一个较大的对象位于图片的中间位置,我们要对它进识别和定位。

对象检测问题:图片可以含有多个对象 ,甚至单张图片会有多个不同的分类对象。因此图像分类的思路可以帮助我们学习对象定位,而对象定位的思路又可以帮助我们学习对象检测。 

目标分类(Object Classification)
目标定位(Object Localization)
目标检测(Object Detection)

 

 举个栗子(example):

       如果你正在构建汽车自动驾驶系统,那么对象可以包括以下几类:行人、汽车、摩托车和背景,背景就是图片中没有行人、汽车、摩托车三类对象,输出结果便会是背景对象,这四个对象就是softmax函数可能输出的结果,这就是目标分类的过程。但是如果你还想定位图片中的位置,该怎么做呢?我们可以让神经网络多输出几个单元,输出一个边界框。具体说就是让神经网络再多输出 4 个数字,标记b_{x}b_{y}b_{h}b_{w}这四个数字是被检测对象的边界框的参数化表示。

        

        图片的左上角是(0,0),右下角是(1,1),要确定边界框的具体位置,需要指定红色方框的中心点,这个点表示为 (b_{x} ,b_{y}),边界框的高度为b_{h},宽度为b_{w}。因此训练集不仅包含神经网络要预测的对象分类标签,还要包含表示边界框的这四个数字,接着采用监督学习算法,输出一个分类标签,还有四个参数值,从而给出检测对象的边框位置。此例中, b_{x}的理想值是 0.5,b_{y}大约是 0.7,b_{h}约为 0.3,b_{w}约为 0.4。

目标标签y的定义如下:

       它是一个向量,第一个组件p_{c}表示是否含有对象,如果对象属于前三类(行人,汽车,摩托车),则 p_{c} = 1,如果是背景,则图片中没有要检测的对象,则p_{c} = 0,我们可以这样理解p_{c},它表示被检测对象属于某一分类的概率,背景分类除外。c_{1}c_{2}c_{3}表示对象属于1-3类的哪一类,是行人,汽车,还是摩托车。神经网络中的损失函数,其参数为类别y和网络输出

  • 71
    点赞
  • 637
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值