主要内容

ssdObjectDetector

使用SSD深度学习检测器检测对象

自从R2020a

描述

ssdObjectDetector检测对象从一个图像,使用单一探测器探测器(SSD)对象。检测对象在一个图像,通过训练检测器检测函数。您还可以使用多类对象的训练检测器检测。SSD深入学习网络信息,请参阅开始使用SSD Multibox检测

创建

描述

探测器= ssdObjectDetector (,,aboxes)创建一个对象探测器使用SSD深度学习网络

如果pretrained SSD深入学习网络,函数创建一个pretrained SSD对象探测器。的aboxes值用于训练网络。

如果是一个未经训练的SSD深入学习网络,该函数创建一个SSD对象探测器用于培训和推理。aboxes指定对象类和锚箱,分别训练SSD网络。

使用trainSSDObjectDetector功能训练网络执行对象检测之前。

例子

探测器= ssdObjectDetector (baseNet,,aboxes“DetectionNetworkSource”,)创建一个SSD对象探测器通过添加检测头基地网络,baseNet

指定的函数将检测头添加到特征提取层在基础网络。指定的名称特征提取层,使用名称-值参数“DetectionNetworkSource”,

如果baseNetpretrained深入学习网络,函数创建一个SSD对象探测器,并配置它来执行转移学习与指定的对象类和锚盒子。

如果baseNet是一个未经训练的深度学习网络,该函数创建一个SSD对象探测器和配置对象检测。aboxes指定对象类和锚箱,分别训练SSD网络。

你必须训练检测器在训练数据集执行对象检测。使用trainSSDObjectDetector功能训练检测器。

探测器= ssdObjectDetector (___,名称=值)设置InputSizeModelName对象的属性检测器通过使用名称,值对参数。的名字属性名和吗价值相应的价值。你必须在报价附上每个属性的名字。

输入参数

全部展开

SSD深度学习网络,指定为一个LayerGraph(深度学习工具箱)对象。输入网络可以是一个未经训练或pretrained深度学习网络。输入网络层必须没有损失。

创建SSD深入学习网络基础网络,作为一个指定LayerGraph(深度学习工具箱)对象。网络可以是一个未经训练或pretrained深度学习网络。当你指定这个参数,您还必须指定的值DetectionNetworkSource名称-值参数。

培训对象类探测器的名字,指定为字符串向量,单元阵列特征向量,或分类向量。这个参数设置一会财产的ssdObjectDetector对象。

数据类型:字符|字符串|分类

锚箱训练检测器,指定为一个N1单元阵列。N输出层的数量在SSD深度学习网络。每个单元包含一个2矩阵,是锚箱的数量在这一层。中的每一行2的矩阵表示形式锚箱的大小(高度宽度]。

细胞数组中的第一个元素指定了锚箱与第一输出层单元数组中的第二个元素指定了锚箱与第二个输出层,等等。对于准确的检测结果,指定大锚箱第一输出层和小锚箱输出层。即锚箱尺寸必须为每个输出层减少层的顺序出现在SSD深度学习网络。

这个参数设置AnchorBoxes财产的ssdObjectDetector对象。

数据类型:细胞

特征提取层基础网络的名称,指定为一个单元阵列的特征向量,或一个字符串数组。函数创建一个SSD网络通过添加分类和回归层到输出层特征提取的基础网络。

例子:层= {‘conv10’,‘fire9-concat}

例子:层= (“conv10”、“fire9-concat”)

数据类型:字符|字符串|细胞

属性

全部展开

这个属性是只读的。

分类模型的名称,指定为一个特征向量或字符串标量。默认情况下,这个名字将第二列的标题trainingData表中指定的trainSSDObjectDetector函数。您可以修改这个名字在创建你的ssdObjectDetector对象。

这个属性是只读的。

训练有素的SSD multibox对象检测网络,作为一个指定DAGNetwork(深度学习工具箱)对象。这个对象存储层定义了SSD卷积神经网络中使用探测器。

这个属性是只读的。

锚盒子大小,指定为一个P1细胞数组P数量的特征提取层用于目标检测的SSD网络。数组的每个元素包含一个2锚盒子大小的矩阵,在格式(高度宽度]。每个单元可以包含不同的锚箱的数量。这个值设置在训练。

你可以设置这个属性使用输入参数aboxes

这个属性是只读的。

对象类的名称,SSD检测器训练,指定为一个单元阵列。你可以设置这个属性使用输入参数

对象的功能

检测 使用SSD multibox对象检测器检测对象

例子

全部折叠

这个例子展示了如何创建一个SSD对象检测网络使用pretrained ResNet -50卷积神经网络为基础的网络。

加载一个pretrained深入学习网络作为基础网络。这个示例使用ResNet-50 pretrained网络为基础网络。其他可用pretrained网络的信息,请参阅Pretrained深层神经网络(深度学习工具箱)(深度学习工具箱)。

basenet = resnet50;

使用analyzeNetwork显示基础网络的体系结构。

analyzeNetwork (basenet)

指定要使用的类名和锚箱培训使用创建的SSD深入学习网络resnet50为基础网络。

一会= [“人”“汽车”“狗”];anchorBoxes = {[30 60; 60 30、50 50 100 100),(40 70;70 40、60 60 120 120),60 (80;80;70;70 140 140]};

指定的名称特征提取层基础网络使用的检测头。

featureExtractionLayers = [“activation_11_relu”“activation_22_relu”“activation_40_relu”];

创建一个SSD对象探测器通过使用指定的基础网络和检测。

basenet = layerGraph (basenet);探测器= ssdObjectDetector (basenet,一会,anchorBoxes DetectionNetworkSource = featureExtractionLayers);

显示和探测器检查SSD的属性对象。

disp(探测器)
ssdObjectDetector属性:网络:[1 x1 DAGNetwork] AnchorBoxes: {} 3 x1细胞类名:[3 x1字符串]InputSize: [224 224 3] ModelName:“

使用analyzeNetwork显示SSD网络体系结构和网络层的信息。

analyzeNetwork (detector.Network)

加载pretrained单发射击检测器(SSD)对象来检测图像中的车辆。探测器是训练图像的汽车在公路上的场景。

vehicleDetector =负载(“ssdVehicleDetector.mat”,“探测器”);探测器= vehicleDetector.detector;

读一个测试图像到工作区中。

我= imread (“highway.png”);

显示测试图像。

imshow(我);

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

运行pretrained SSD对象探测器使用检测函数。输出包含边界框、分数和车辆图像中检测到的标签。来自的标签一会财产的探测器。

[bboxes、分数、标签]=检测(探测器,我)
bboxes =2×4139 78 96 81 99 67 165 146
成绩=2 x1单一列向量0.8349 - 0.6302
标签=2 x1分类车车

注释的图像检测的结果。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

扩展功能

版本历史

介绍了R2020a