目标检测是计算机视觉中的一项基本任务,涉及识别和定位图像中的目标。深度学习彻底改变了对象检测,允许更准确和有效地检测图像和视频中的对象。典型的方法包括:使用滑动窗口配合特征提取(如HOG特征)、SVM(支持向量机)AdaBoost等分类器、特征选择和组合(如Haar特征、LBP特征)等。
目标检测概念:能够识别图片中有哪些物体并且找到物体存在的位置。
目标检测数据集
VOC数据集:该数据集来源于PASCAL VOC计算机视觉挑战赛。数据集共分为四大类,20小类。
COCO数据集:该数据集来源于微软2014年出资标注的MS COCO数据库。数据集包含20万个图像,80个类别,平均每个图像的目标数是7.2。
目标检测的Ground Truth
1.类别+真实边界框坐标(x,y,w,h),假设图像尺寸为1000*800px,则如图2所示
Class | x | y | width | height |
Dog | 100 | 600 | 150 | 100 |
Horse | 700 | 300 | 200 | 250 |
Person | 400 | 400 | 100 | 500 |
2.YOLO(TXT)格式:(x,y,w,h)分别代表中心点坐标和宽、高。
VOC(XML)格式:(Xmin,Ymin,Xmax,Ymax)分别代表左上角和右下角的两个坐标。
COCO(JSON)格式:(Xmin,Ymin,W,H),不是归一化格式,分别代表左上角坐标个宽、高。
目标检测的评估指标
1.交并比 (Intersection over Union,IoU):
计算 2 个区域的重叠比,用 2 个区域的交集除以其并集,公式如下,DR 表示检测结果,GT 表示 Ground Truth。
2.真正(TP)、假正(FP)、真负(TN)、假负(FN):
正确的正向预测(True Positive,TP):正样本被正确检测的数量,需要满足 3 个条件:
-
置信度(Confidence Score)大于阈值,实际上预测出的所有的框都要满足这个条件;
-
预测类型与标签类型匹配;
-
预测的 Bounding Box 与 Ground Truth 的交并比 (Intersection over Union,IoU,后续会详细介绍) 大于阈值 (e.g. 0.5) ,当有多个满足条件的预选框,则选择置信度最大的作为TP,其余的作为 FP。
错误的正向预测(False Positive,FP):负样本被检测为正样本的数量,也称误报,预测的 Bounding Box 与 Ground Truth 的 IoU 小于阈值的检测框(定位错误)或者预测的类型与标签类型不匹配(分类错误)。
错误的负向预测(False Negative,FN):正样本没被检测为负样本的数量,也称漏报,指没有检测出的 Ground Truth 区域。
正确的负向预测(True Negative,TN):是负样本且被检测出的数量,无法计算,在目标检测中,通常也不关注 TN。
3.准确度 (Percision) :
准确度是在识别出的物体中,正确的正向预测 (True Positive,TP) 所占的比率。
4.召回率 (Recall):
召回率是正确识别出的物体占总物体数的比率。
5.API计算方法:11点法
目标检测的传统方法
滑动窗口法:
-
是一种暴力搜索,随机设计一个窗口,让它在图片上滑动,随机搜索区域。
-
特点: 任务相对独立,需要人工设计尺寸,大量冗余操作,定位不准确。
目标检测的深度学习方法
anchor box:
-
anchor box用ratio + scale描述:
-
feature Map的点来决定位置
-
scale来表示目标的面积大小
-
aspect ratio来表示目标的形状(长宽比)
anchor-base和anchor-free:
anchor-base是自顶向下的
anchor-free是自底向上的
tow stage算法:
one stage算法:
非极大值抑制:
设定目标框的置信度阈值,常用的阈值是0.5左右
根据置信度降序排列候选框列表
选取置信度最高的框A添到输出列表,将其从候选框列表中删除
候选框列表中的所有框依次与A计算IoU,删除大于阈值的候选框
重复上述过程,直到候选框列表为空,返回输出列表
YOLO
YOLO(You Only Look Once)系列是由Joseph Redmon等人在2016年首次提出的是一种目标对象检测算法。这一系列算法通过将对象检测视为单次回归问题,从输入图像直接预测对象边界框和类别,极大提高了检测速度。YOLO系列在其每个版本中都进行了改进和优化,逐步提升了精度和速度。
YOLOv1
YOLOv1是YOLO系列的第一个版本,由Joseph Redmon等人在2016年提出。其核心思想是将对象检测问题转换为单次回归问题。
方法:
-
将输入图像划分为SxS的网格(例如7x7)。
-
每个网格预测B个边界框及其置信度(即边界框内包含对象的概率),同时预测C个类别的概率。
-
最终输出为SxSx(B*5+C)的张量,每个网格预测B个边界框,每个边界框有5个参数(x, y, w, h, 置信度)和C个类别概率。
特点:
-
快速:YOLOv1能够实时处理视频流。
-
准确:在大物体检测上表现良好,但在小物体检测和定位精度方面存在不足。
网络架构:
损失函数: YOLOv1使用一个多部分损失函数,包括边界框回归损失、置信度损失和分类损失。