计算机视觉和图像处理
目标检测
一、目标检测
目标检测的任务是找出图像中所有感兴趣的目标,并确定它们的类别和位置。
目标检测的位置信息⼀般由两种格式(以图片左上角为原点(0,0)):
- 极坐标表示:(xmin, ymin, xmax, ymax)
- xmin,ymin:x,y坐标的最小值
- xmin,ymin:x,y坐标的最大值
- 中心点坐标:(x_center,y_center,w, h)
- x_center,y_center:目标检测框的中心点坐标
- w,h:目标检测框的宽、高
目标检测算法主要分为两类:
- Two-stage方法:如R-CNN系列算法,主要思路就是通过Selective Search或者CNN网络产生一系列的稀疏矩阵的候选区域,然后对这些候选区域进行分类和回归,two-stage的方法优势在于准确率度高;
- One-stage方法:如YOLO系列方法,主要思路就是均匀地在图片上不同位置进行密集采样,采样时使用不同尺度和长宽比box,然后利用CNN提取特征后直接进行分类和回归,整个过程只需要一步,所以优势在于速度快。
二、常用的评价指标
2.1 IOU
I O U = 两个矩形框相交的面积 两个矩形框相并的面积 IOU={两个矩形框相交的面积 \over 两个矩形框相并的面积} IOU=两个矩形框相并的面积两个矩形框相交的面积
一般可以设置当IOU的值大于0.5的时候,则可认为检测到目标物体。
实现方法:
import numpy as np
def IOU(box1,box2,wh=False):
if wh==False:
# 使用极坐标表示,直接获取两个bbox的坐标
xmin1,ymin1,xmax1,ymax1=box1
xmin2,ymin2,xmax2,ymax2=box2
else:
# 获取两个bbox的极坐标表示形式
xmin1,ymin1 = int(box1[0] - box1[2]/2.0,box1[1] - box1[3]/2.0)
xmax1,ymax1 = int(box1[0] + box1[2]/2.0,box1[1] + box1[