[飞桨] 目标检测篇 YOLO-V3 学习笔记(一)

学习这一篇课程之前,就听说过YOLO的大名。在疫情期间,有up主就通过yolo训练出了对行人口罩的检测并且大获成功,没成想今天有幸学习到。废话不多说,直接开始学习。

目标检测中的基础概念

在开始学习YOLO之前首先行该学习目标检测的一些基础概念,毕竟YOLO也时目标检测的模型啊。

边界框

边界框(bounding box,bbox)就是图像上恰好可以框住检测物体的矩形框
在这里插入图片描述例如图中绿色的矩形框,都是恰好框住被检测物体。

在图象中边界框位置的表示方法有两种

  1. xyxy型,即提供边界框的左上方坐标(x1,y1)以及右下角坐标(x2,y2),这样可以唯一的确定一个边界框。
  2. xywh型, 即提供边界框中心坐标(x,y)以及边界框的高(h)和宽(w)。这样也可以唯一的确定一个边界框。
    这两种边界框之间的转换方法是:
		(x1,y1) = (x - w / 2 , y - h / 2)
		(x2,y2) = (x + w / 2 , y + h / 2)

切记在编写代码时确定是哪一种表示方式。

锚框(Anchor box)

锚框(Anchor box),是由人们假想出来的一种框。先设定好锚框的大小和形状,再以图像上某一个点为中心画出矩形框。就和他的名字一样,锚,把框固定在图片上某处。这么做有什么意义呢?其实就是为了之后模型方便在我们框出的众多锚框中找到目标,并且学习如何对锚框进行微调使其恰好可以框住目标。
每种模型都有自己的锚框的生成方式,YOLO-v3也不例外。

交并比(IoU)

这是目标检测里很重要的概念。我们模型预测的边界框,该如何去评价它的好坏即它与真实框的重合程度。这就要引入交并比的概念。

这一概念来源于数学中的集合,用来描述两个集合A和B之间的关系,它等于两个集合的交集里面所包含的元素个数,除以它们的并集里面所包含的元素个数,具体计算公式如下:
IoU=A∪B / A∩B​
我们将用这个概念来描述两个框之间的重合度。
在这里插入图片描述

下面让我们通过一段代码来加深理解

# 计算IoU,矩形框的坐标形式为xyxy,这个函数会被保存在box_utils.py文件中
def box_iou_xyxy(box1, box2):
    # 获取box1左上角和右下角的坐标
    x1min, y1min, x1max, y1max = box1[0], box1[1], box1[2], box1[3]
    # 计算box1的面积
    s1 = (y1max - y1min + 1.) * (x1max - x1min + 1.)
    # 获取box2左上角和右下角的坐标
    x2min, y2min, x2max, y2max = box2[0], box2[1], box2[2], 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值