目标检测基础知识(目标检测概念)

作者:许和定,浙江大学,数据鲸优秀学习者
来源:微信微信官方账号:Datawhale
origin _ _ biz=mziynjm 2 mzqyng==mid=2247545057 idx=1sn=047d 56 CB 0 a 01d 87 a 1056 DD 437791247 e
本文阐述了目标检测的基本概念,分析了目标检测的一般思路。下一篇文章将介绍目标检测的经典数据集VOC数据集的基本信息,以及处理VOC数据集的方法。
1.目标探测的基本概念。什么是目标探测?目标检测是计算机视觉中的一项重要任务。近年来,传统的目标检测方法已经很难满足人们对目标检测结果的要求。随着深度学习在计算机视觉任务中的巨大进步,基于深度学习的目标检测算法成为主流。与基于深度学习的图像分类任务相比,目标检测任务难度更大。具体区别如下图所示。图像分类:只需要判断输入图像是否包含感兴趣的物体。目标检测:在识别图片中目标所属类别的基础上,需要准确定位目标的具体位置,并用外部矩形框进行标记。
和分类目标检测任务。
2.目标检测的常见思路自从2012年Alex Krizhevsky与Alex在ImageNet图像分类挑战赛中夺冠后,深度学习开始在图像识别领域大放异彩,尤其是图像分类领域,大众的视野又回到了深度神经网络。随后,更深更复杂的网络不断出现,ImageNet图像分类大赛的记录一次次被刷新。研究发现,通过合理的构造,神经网络可以用来预测各种实际问题。于是人们开始了基于CNN的目标检测的研究,但是随着进一步的探索,似乎CNN并不擅长直接预测坐标信息。而且,一幅图像中可能存在的物体数量是不确定的,如何建立模型也很棘手。所以人们想,如果我们知道图像中某个位置有一个物体,然后把对应的局部区域送入分类网络进行判别,难道我就不能知道图像中每个物体的位置和类别吗?但是怎么才能知道每个物体的位置呢?显然,我们无法知道,但我们可以猜测!猜测,其实就是通过滑动窗口,列出图片中所有可能的区域,逐一尝试,发送到分类网络进行分类,得到它们的类别。同时,我们会对当前的包围盒进行微调,这样就可以得到图像中每个区域的(class,x1,y1,x2,y2)五个属性,汇总后最终得到图片中物体的类别和坐标信息。总结一下我们对这个方案的想法:先建立很多候选框,然后对候选框进行分类和微调。观察下图可以更形象地理解这个想法:
从分类的角度看目标检测
3.目标框的定义方法。任何图像任务的训练数据应该包括两项,图片和真实标签信息,通常称为GT。在图像分类中,标签信息就是类别。检测到的标签信息除了类别标签外,还需要包含目标的位置信息,即目标外接矩形的包围盒。通常有两种格式用来表示bbox,(x1,y1,x2,y2)和(c_x,c_y,w,h),如图所示:
目标框的定义方法之所以使用两种不同格式的目标框信息表达,是因为两种格式在不同的后续场景下会更容易计算。两种格式转换的实现在utils.py中,代码也很简单:
def xy_to_cxcy(xy): ‘ ‘ ‘将边界框从边界坐标(x_min,y_min,x_max,y_max)转换为中心尺寸坐标(c_x,c_y,w,h)。param xy:边界坐标中的边界框,一个大小为(n _ box,4) :return:的中心大小坐标中的边界框,一个大小为(n _ box,4)’ ‘ ‘ return torch . cat([(xy[:2:] xy[:2])/2,# c_x,c_y xy[:2:] -的张量:param cxcy:中心尺寸坐标中的边界框,尺寸张量(n _ box,4) :return:边界坐标中的边界框,尺寸张量(n _ box,4)’ ‘ ‘ return torch . cat([CXCY[:2] – (cxcy[:23360]/2),# x _ min,y _ min CXCY [3360,33362]
4.交并比(IOU)在目标检测任务中,IoU的计算贯穿于模型训练、测试和评估的全过程,是一个非常非常重要的概念。其目的是测量两个目标帧的重叠程度。IoU的全称是交集超过并集,表示两个目标框的交集占其并集的比例。下图是IOU计算3360的原理图。
从iou计算示意图可以看出,分子中的黄色区域是红色bbox和绿色bbox的交集,分母中的黄红绿区域是红色bbox和绿色bbox的并集,它们的比值就是IOU。那么怎么算呢?这里是计算流程3360的简要描述。
首先得到两个盒子的坐标,红盒子坐标:左上(red_x1,red_y1),右下(red_x2,red_y2),绿盒子坐标3360,左上(green_x1,green_y1),右下(green_x2,green_y2),计算两个盒子左上点的最大坐标。Green_x1),max(red_y1,green_y1)),右下点的最小坐标值为3360 (min (red _ x2,green _ x2),min (red _ y2,Green_y2))利用2计算的信息计算黄色方框的面积:yellow_area计算红色和绿色方框的面积:red_area和Green _ area iou=yellow _ area/(red _ area Green _ area-yellow _ area)如果文字不够清晰,再看代码:
定义查找交集(集合1,集合2): ‘ ‘ ‘找出边界坐标中两组盒子之间每个盒子组合的交集:param set_1:集合1,维数张量(n1,4) :param set_2:集合2,维数张量(n2,4):返回:集合数字一(one)中的每个框相对于集合注射毒品中的每个框的交集,维数张量(n1,n2) ”’ # PyTorch自动广播单元素维数下限=torch.max(set_1[:33366unsqueeze(1),set_2[:2]).unsqueeze(0)) # (n1,n2,2)upper _ bounds=torch。min(set _ 1[:2:]).unsqueeze(1),set_2[:2:].unsqueeze(0)) # (n1,n2,2)intersection _ dims=torch。’ clamp(upper _ bounds-lower _ bounds,min=0) # (n1,n2,2)return intersection _ dims[:0] * intersection_dims[:1] # (n1,N2)def Find _ JAC card _ Overlap(set _ 1,set_2): ‘ ‘ ‘找出每个盒子组合的JAC卡片重叠部分(IoU):param set_1:集合1,维数张量(n1,4) :param set_2:集合2,维数张量(n2,4) :return: Jaccard集合数字一(one)中的每个框相对于集合注射毒品中的每个框的重叠,维数张量(N2 n1)“#查找交集交集=查找交集(集合1,集合2) # (n1,n2) #查找每个的区域1])#(n1)areas _ set _ 2=(set _ 2[:2] – set_2[:0]) * (set_2[:3] – set_2[:1]) # (n2) #查找并集# PyTorch自动广播单例维度union=areas _ set _ 1。取消排队(1)areas _ set _ 2。取消排队(0)-交集#(n1,n2)返回交集/union # (n1,n2以上代码位于utils.py脚本的寻找交集和find_jaccard_overlap。
函数寻找交集寻找交集(集合1,集合2)是求形状为(n1,4)和(氮气,4)的盒子的交集的面积set_1[:2]的形状为(n1,2),后面加上.取消排队(1),形状变为(n1,1,2)。同理set_2[:2].取消排队(0),形状为(1,n2,2)。(n1,1,2)和(1,n2,2),作了torch.max,有广播存在,(n1,1,2)变成(n1,n2,2),(1,n2,2)也变成(n1,n2,2)。因此得到了形状为(n1,n2,2)的框的左上角坐标那个注射毒品就是储存了x1,y1。火炬.夹钳()是将函数限制在最大值和最小值范围内,如果超过就变成那个最大值或者最小值。这里最小值=0,意思是如果面积小于0,那么面积取0(排除异常)。函数find_jaccard_overlap计算欠条,交集/并集,最后联盟计算, 升维(n1)-(n1,1),(n2)-(1,n2),接下去相加,广播成(n1,n2),减去一个(n1,n2)的交集面积,得到并集面积。5.小结本小节首先介绍了目标检测的问题背景,随后分析了一个实现目标检测的解决思路,这也是众多经典检测网络所采用的思路(即先确立众多候选框,再对候选框进行分类和微调)。最后介绍了视频和借据这两个目标检测相关的基本概念。
作者:徐和鼎,浙江大学,数据鲸优秀学习者
来源:微信公众号:数据鲸
出处:https://mp.weixin.qq.com/s _ _ biz=mziynjm 2 mzqyng==mid=2247545057 idx=1sn=047d 56 CB 0 a 01d 87 a 1056 DD 437791247 e

综合资源

纹身男 男人纹身纹什么好

2023-12-8 9:48:38

综合资源

当女人的裸体上身照片时,谁的神经正在伤害?

2025-4-21 1:20:34

购物车
优惠劵
搜索