网络网站推广首荐乐云seo,优化二十条措施建议,近期国内重大新闻,宁夏建设职业技术学院官方网站1. 目标检测
物体检测#xff08;目标检测#xff09;是计算机视觉和数字图像处理的热门方向#xff0c;意在判断一幅图像上是否存在感兴趣物体#xff0c;并给出物体分类及位置等#xff08;What and Where#xff09;。本文主要进行物体检测研究背景、发展脉络、相关算…1. 目标检测
物体检测目标检测是计算机视觉和数字图像处理的热门方向意在判断一幅图像上是否存在感兴趣物体并给出物体分类及位置等What and Where。本文主要进行物体检测研究背景、发展脉络、相关算法及评价指标的概述。
我们要识别中所有我们感兴趣的物体并且找出每个物体的位置。
边缘框
边缘框是图片中物体的真实位置和范围有两种表示方式一种是边角坐标表示法通过物体左上和右下两个角的坐标表示一个矩形框还有一种是中心表示法用物体的中心和宽高表示矩形框。
一个边缘框可以通过4个数字定义 (左上x左上y右下x右下y)(左上x左上y宽高) 目标检测数据集
每行表示一个物体 图片文件名、物体类别、边缘框 COCO数据集 80物体330K图片1.5M物体
定义两种边缘框之间的转换函数
import torch
def box_corner_to_center(boxes): 从左上右下转换到中间宽度高度 x1,y1,x2,y2 boxes[:,0],boxes[:,1],boxes[:,2],boxes[:,3]cx (x1x2)/2cy (y1y2)/2w x2-x1h y2-y1boxes torch.stack((cx,cy,w,h),dim1)return boxesdef box_center_to_corner(boxes):从中间宽度高度转换到左上右下cx,cy,w,h boxes[:,0],boxes[:,1],boxes[:,2],boxes[:,3]x1 cx - 0.5 * wy1 cy - 0.5 * hx2 cx 0.5 * wy2 cy 0.5 * hboxes torch.stack((x1, y1, x2, y2), dim1)return boxes边缘框实现
from matplotlib import pyplot as plt# 将边界框在图中画出
def bbox_to_rect(bbox,color):return plt.Rectangle(xy(bbox[0], bbox[1]), widthbbox[2] - bbox[0], heightbbox[3] - bbox[1],fillFalse, edgecolorcolor, linewidth2)dog_bbox, cat_bbox [60.0, 45.0, 378.0, 516.0], [400.0, 112.0, 655.0, 493.0]fig plt.figure(figsize(5,8),dpi100)
ax1 fig.add_subplot(1,1,1)
image plt.imread(code/images/catdog.jpg)
ax1.imshow(image)ax1.axes.add_patch(bbox_to_rect(dog_bbox, blue))
ax1.axes.add_patch(bbox_to_rect(cat_bbox, red));
plt.show()2. 锚框
在众多经典的目标检测模型中均有先验框的说法有的paper(如Faster RCNN)中称之为anchor(锚点)有的paper(如SSD)称之为prior bounding box(先验框)实际上是一个概念。
锚框的作用
对于目标检测任务有这样一种经典解决方案遍历输入图像上所有可能的像素框然后选出正确的目标框并对位置和大小进行调整就可以完成目标检测任务。这些进行预测的像素框就叫锚框。这些锚框通常都是方形的。
同时为了增加任务成功的几率通常会在同一位置设置不同宽高比的锚框。锚框的设置形式有很多种。
一类目标检测算法是基于锚框 提出多个被称为锚框的区域边缘框预测每个锚框里是否含有关注的物体如果是预测从这个锚框到真实边缘的偏移 3. IoU - 交并比
IoU用来计算两个框之间的相似度 0表示无重叠1表示重合
这是Jacquard指数的一个特殊情况
给定两个集合$\ A\ 和 和 和\ B\ $ J ( A , B ) ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A,B)\frac{|A \cap B|}{|A \cup B|} J(A,B)∣A∪B∣∣A∩B∣ 4. 赋予锚框标号 每个锚框是一个训练样本 将每个锚框要么标注成背景要么关联上一个真实边缘框 我们可能会生成大量的锚框 这个导致大量的负类样本
在蓝色格子里面寻求IoU的最高值选中比如
第一个最大值为$\ x_{23}\ $,那就用锚框2来预测边缘框3去除锚框2边缘框3所对应的行列。
继续在剩下的格子里面寻找最大值如$\ x_{71}\ $那就用锚框7来预测边缘框1去除锚框7边缘框1所对应的行列。 赋予标号的方式有很多种。 5. 使用非极大值抑制NMS输出
每个锚框预测一个边缘框NMS可以合并相似的预测 选中的是非背景类的最大预测值去掉所有其它和它IoU值大于$\ \theta\ $的预测重复上诉过程直到所有预测要么被选中要么被去掉
如 首先选取狗类别的最大预测值为0.9然后去除该类别预测值小于0.9且IoU大于$\ \theta\ 的值。然后选取猫类别的最大预测值为 0.9 然后去除该类别预测值小于 0.9 且 I o U 大于 的值。 然后选取猫类别的最大预测值为0.9然后去除该类别预测值小于0.9且IoU大于 的值。然后选取猫类别的最大预测值为0.9然后去除该类别预测值小于0.9且IoU大于\ \theta\ $的值。 总结 一类目标检测算法基于锚框来预测首先生成大量锚框并赋予标号每个锚框作为一个样本进行训练在预测时使用NMS来去掉冗余的预测