主要内容

检测

使用SSD多盒对象检测器检测对象

描述

例子

bboxes=检测(探测器检测单个图像或图像数组中的对象,,使用单发多盒检测器(SSD)。检测到的对象的位置作为一组包围框返回。

当使用此功能时,使用CUDA®使英伟达®强烈推荐GPU。GPU显著减少了计算时间。GPU的使用需要并行计算工具箱™。有关受支持的计算功能的信息,请参见万博1manbetxGPU支万博1manbetx持版本(并行计算工具箱)

bboxes分数=检测(探测器还返回每个包围框的检测分数。

___标签=检测(探测器还使用上述语法之一返回分配给边界框的标签的分类数组。对象类使用的标签在训练期间使用trainSSDObjectDetector函数。

___=检测(___roi所指定的矩形搜索区域内的对象roi

detectionResults=检测(探测器ds方法返回的图像系列中的对象输入数据存储的函数。

___=检测(___名称,值使用一个或多个选项指定选项名称,值对参数。例如,检测(探测器,我,“阈值”,0.75)设置检测评分阈值为0.75.任何得分较低的检测都将被删除。

例子

全部折叠

加载预训练的单镜头检测器(SSD)对象来检测图像中的车辆。探测器使用高速公路现场的汽车图像进行训练。

车辆检测仪=负载(“ssdVehicleDetector.mat”“探测器”);探测器=车辆探测器。探测器;

将一个测试映像读入工作区。

I = imread(“highway.png”);

显示测试图像。

imshow(我);

图中包含一个轴对象。axis对象包含一个image类型的对象。

运行预训练的SSD对象检测器检测函数。输出包含边界框、分数和图像中检测到的车辆的标签。标签派生自一会检测器的属性。

[bboxes,scores,labels] = detect(检测器,I)
bboxes =2×4139 78 96 81 99 67 165 146
成绩=2x1个单列向量0.8349 - 0.6302
标签=2 x1分类车车

用检测结果标注图像。

如果~isempty(bboxes) detectedI = insertObjectAnnotation(I,“矩形”、bboxes cellstr(标签);其他的detectedI = insertText(I,[10 10],“不检测”);结束图imshow (detectedI)

图中包含一个轴对象。axis对象包含一个image类型的对象。

输入参数

全部折叠

SSD对象检测器,指定为ssdObjectDetector对象。要创建此对象,请调用trainSSDObjectDetector函数以训练数据作为输入。

输入图像,指定为H——- - - - - -W——- - - - - -C——- - - - - -B图像的数字数组图像必须是实数,非稀疏,灰度或RGB图像。

  • H:身高

  • W宽度:

  • C:每个图像中的通道大小必须等于网络的输入通道大小。例如,对于灰度图像,C必须等于1.对于RGB彩色图像,它必须等于3.

  • B:数组中映像的数量。

检测器对输入图像的范围很敏感。因此,请确保输入图像范围与用于训练检测器的图像范围相似。例如,如果探测器被训练在uint8图像,将此输入图像重新缩放到范围[0,255]im2uint8重新调节函数。输入图像的大小应该与训练中使用的图像的大小相当。如果这些大小差异很大,探测器就很难检测到物体,因为输入图像中物体的尺度与探测器训练识别的物体的尺度不同。考虑是否使用了SmallestImageDimension属性,以修改训练图像的大小。

数据类型:uint8|uint16|int16|||逻辑

数据存储,指定为包含图像集合的数据存储对象。每张图像必须是灰度、RGB或多通道图像。该函数只处理数据存储的第一列,其中必须包含图像,并且必须是单元格数组或具有多列的表。

搜索感兴趣的区域,指定为[xy宽度高度)向量。向量指定一个区域的左上角和大小(以像素为单位)。

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“SelectStrongest”,真的

检测阈值,指定为范围[0,1]中的标量。分数小于此阈值的检测将被删除。为了减少误报,增加这个值。

为每个检测到的对象选择最强的包围框,指定为由逗号分隔的对组成“SelectStrongest”,要么真正的

  • 真正的-返回每个对象最强的包围框。要选择这些方框,检测调用selectStrongestBboxMulticlass函数,该函数使用非最大抑制来根据置信分数消除重叠的包围框。

    例如:

    selectStrongestBboxMulticlass (bbox,分数,...“RatioType”“联盟”...“OverlapThreshold”, 0.5);

  • —返回所有检测到的包围框。然后,您可以创建自己的自定义操作来消除重叠的包围框。

包含被检测对象的最大区域大小,由逗号分隔的对组成最大容量的和a [高度宽度)向量。单位是像素。

为了减少计算时间,将此值设置为图像中检测到的物体的已知最大区域大小。默认情况下,最大容量的设置为输入图像的高度和宽度,

包含被检测对象的最小区域大小,指定为逗号分隔的对,由“MinSize”,及[高度宽度)向量。单位是像素。

为了减少计算时间,将此值设置为图像中被检测到的物体的已知最小区域大小。默认情况下,“MinSize”设置为[1].

最小批大小,由逗号分隔的对组成“MiniBatchSize”和一个标量值。使用MiniBatchSize处理大量图像的集合。为了提高计算效率,将图像分组为小批量,进行批量处理。增加小批尺寸以减少处理时间。减小大小以使用更少的内存。

运行检测器的硬件资源,指定为逗号分隔的对,由“ExecutionEnvironment”而且“汽车”“图形”,或“cpu”

  • “汽车”—如果有图形处理器,请使用图形处理器。否则请使用CPU。

  • “图形”—使用GPU。要使用GPU,您必须具有并行计算工具箱和启用CUDA的NVIDIA GPU。如果没有合适的GPU,该函数将返回一个错误。有关受支持的计算功能的信息,请参见万博1manbetxGPU支万博1manbetx持版本(并行计算工具箱)

  • “cpu”—使用CPU。

输出参数

全部折叠

在输入图像或图像中检测到的对象的位置,作为-乘4矩阵或aB-by-1单元格数组。是图像中包围框的数量,和B-by-4矩阵,当输入包含图像数组时。

每行bboxes包含一个四元素向量,形式为[xy宽度高度].这个向量指定了左上角和相应包围框的大小(以像素为单位)。

检测信心分数,返回为an-by-1向量或者aB-by-1单元格数组。是图像中包围框的数量,和B-by-1向量,当输入包含图像数组时。分数越高,表示检测的可信度越高。

边界框的标签,返回为-by-1分类数组或aB-by-1单元格数组。是图像中标签的数量,和B当输入包含图像数组时,使用-by-1分类数组。在训练输入时定义用于标记对象的类名探测器

检测结果,返回为包含变量名的3列表,盒子分数,标签.的盒子-by-4矩阵,的在图像中找到的对象的包围框。每行包含一个包含4个元素向量的包围框,格式为[xy宽度高度].该格式指定了相应图像中边界框的左上角位置和像素大小。

R2020a中引入