一.目标检测的基本概念

目标检测就是将目标从图像中提取出来,其不仅要识别出目标的类别,还要判断出目标在图像中的位置。

1.传统目标检测

传统目标检测一般使用滑动窗口框架,主要为以下三个步骤:
(1)利用不同尺寸的滑动窗口框住图像中的某一部分作为候选区。(区域选择)
(2)提取候选区相关的视觉特征,例如人脸检测常用的Harr特征;行人检测和普通目标检测常用的HOG特征。(特征提取)
(3)利用分类器进行识别。(分类器分类)

2.用深度学习进行目标检测

比较常用的有R-CNN,Fast R-CNN,Yolo系列算法。

3.物体检测的精度评估

(1)IOU

物体检测是通过IOU(交集并集比)来进行精度评价。IOU的值越大,评估越准确。
在这里插入图片描述
IOU的Python代码实现:

"""计算IOU
BOX参数:(x1,y1,x2,y2)
左上角右下角点坐标"""
import numpy as np
import cv2
def CountIOU(predict_box,ground_Truth):
    left_x=max(predict_box[0],ground_Truth[0])
    left_y=max(predict_box[1],ground_Truth[1])
    right_x=min(predict_box[2],ground_Truth[2])
    right_y=min(predict_box[3],ground_Truth[3])
    intersection=max(0,right_x-left_x)*max(0,right_y-left_y)
    predict_box_area=(predict_box[2]-predict_box[0])*(predict_box[3]-predict_box[1])
    ground_Truth_area=(ground_Truth[2]-ground_Truth[1])*(ground_Truth[3]-ground_Truth[1])
    union=predict_box_area+ground_Truth_area-intersection
    IOU=float(intersection)/union
    img=np.ones((600,600,3),dtype=np.uint8)*255
    """绘制图形"""
    cv2.rectangle(img,(ground_Truth[0],ground_Truth[1]),(ground_Truth[2],ground_Truth[3]),color=(0,0,255),thickness=3)
    cv2.rectangle(img,(predict_box[0],predict_box[1]),(predict_box[2],predict_box[3]),color=(0,255,0),thickness=3)
    cv2.putText(img,"IOU:{}".format(IOU),(ground_Truth[0],ground_Truth[1]),fontFace=cv2.FONT_HERSHEY_COMPLEX,fontScale=1,color=(255,0,0))
    cv2.imshow("img",img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
predict=np.array([200,200,400,400])
label=np.array([250,250,500,500])
CountIOU(predict,label)

运行结果:
在这里插入图片描述

(2)mAP

mAP是目标检测中识别精度的指标
在这里插入图片描述

(3)ROI

ROI(感兴趣区域)是目标检测的一个概念,表示系统感兴趣的区域。ROI区域的提取能够在消除一些噪声的同时减少后续图像处理的数据量。

更多推荐