主要内容

yolov3ObjectDetector

使用YOLO v3对象检测器检测对象

描述

yolov3ObjectDetectorobject创建一个你只看一次版本3 (YOLO v3)的对象检测器,用于检测图像中的对象。使用这个对象,你可以:

  • 通过使用在COCO数据集上训练的YOLO v3深度学习网络创建预训练的YOLO v3对象检测器。

  • 通过使用任何预训练或未训练的YOLO v3深度学习网络创建自定义YOLO v3对象检测器。

创建

描述

预训练YOLO v3对象检测器

例子

探测器= yolov3ObjectDetector (名字通过使用在COCO数据集上训练的YOLO v3深度学习网络创建预训练的YOLO v3对象检测器。

请注意

要使用在COCO数据集上训练的预训练YOLO v3深度学习网络,必须安装计算机视觉工具箱™YOLO v3对象检测模型从Add-On Explorer。有关安装外接程序的详细信息,请参见获取和管理外接组件.要运行此函数,您将需要深度学习工具箱™。

自定义YOLO v3对象检测器

探测器= yolov3ObjectDetector (名字aboxes创建一个预训练的YOLO v3对象检测器,并配置它使用指定的对象类和锚框集执行迁移学习。为了获得最佳结果,您必须在执行检测之前在新的训练图像上训练检测器。

探测器= yolov3ObjectDetector (aboxes利用深度学习网络创建对象检测器

如果为预训练YOLO v3深度学习网络,该函数创建预训练YOLO v3对象检测器。的而且aboxes是用于训练网络的值。

如果是一个未经训练的YOLO v3深度学习网络,该函数创建一个YOLO v3对象检测器用于训练和推断。而且aboxes分别指定用于训练YOLO v3网络的对象类和锚框。

在执行对象检测之前,必须在训练数据集上训练检测器。有关如何训练YOLO v3对象检测器的信息,请参见预处理训练数据而且火车模型的部分基于YOLO v3深度学习的目标检测的例子。

例子

探测器= yolov3ObjectDetector (baseNetaboxes“DetectionNetworkSource”,通过将检测头添加到基础网络,创建YOLO v3对象检测器,baseNet

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

如果baseNet是一个预训练的深度学习网络,该函数创建一个YOLO v3对象检测器,并配置它对指定的对象类和锚框进行迁移学习。

如果baseNet是一个未经训练的深度学习网络,该函数创建一个YOLO v3对象检测器,并将其配置为对象检测。而且aboxes分别指定用于训练YOLO v3网络的对象类和锚框。

在执行对象检测之前,必须在训练数据集上训练检测器。

探测器= yolov3ObjectDetector (___名称,值设置InputSize而且ModelName属性,使用名称-值对参数。名字属性名称和价值对应的值。必须将每个属性名用引号括起来。

输入参数

全部展开

预训练YOLO v3深度学习网络的名称,指定为以下其中之一:

  • “darknet53-coco”-使用DarkNet-53作为基础网络创建的预训练YOLO v3深度学习网络,并在COCO数据集上训练。

  • “tiny-yolov3-coco”-预训练YOLO v3深度学习网络,使用小型基础网络创建,并在COCO数据集上进行训练。

数据类型:字符|字符串

用于训练检测器的对象类的名称,指定为字符串向量、字符向量的单元格数组或分类向量。此参数设置一会的属性yolov3ObjectDetector对象。

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

用于训练检测器的锚盒,指定为N-by-1单元格数组。N为YOLO v3深度学习网络的输出层数。每个单元格包含一个-by-2矩阵是该层中锚框的数量。中的每一行-by-2矩阵表示[]形式的锚框的大小。高度宽度].

单元格数组中的第一个元素指定与第一个输出层相关联的锚框,单元格数组中的第二个元素指定与第二个输出层相关联的锚框,依此类推。为保证检测结果准确,第一个输出层指定大锚框,最后一个输出层指定小锚框。也就是说,每个输出层的锚框大小必须按照层在YOLO v3深度学习网络中出现的顺序减小。

此参数设置AnchorBoxes的属性yolov3ObjectDetector对象。

数据类型:细胞

YOLO v3深度学习网络,指定为adlnetwork(深度学习工具箱)对象。输入网络可以是未经训练的深度学习网络,也可以是预训练的深度学习网络。

用于创建YOLO v3深度学习网络的基础网络dlnetwork(深度学习工具箱)对象,或DAGNetwork(深度学习工具箱)对象。该网络可以是未经训练的深度学习网络,也可以是预训练的深度学习网络。

基本网络中的特征提取层的名称,指定为字符向量的单元格数组或字符串数组。

该函数通过将检测头层添加到基础网络中的特征提取层的输出中来创建YOLO v3网络。特征提取层必须按照它们在网络体系结构中出现的相反顺序指定。例如,给定一个具有四个特征提取层的基本网络,必须将第一个检测头添加到第四个特征提取层,将第二个检测头添加到第三个特征提取层,以此类推。

例子:Layer = {'conv10','fire9-concat','fire8-concat'}

例子:Layer = ["conv10","fire9-concat","fire8-concat"]

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

属性

全部展开

此属性是只读的。

YOLO v3深度学习网络用于对象检测,存储为dlnetwork(深度学习工具箱)对象。

此属性是只读的。

一套锚框,存储为N-by-1单元格数组。单元格中的每个元素都是a2矩阵。中的每一行-by-2矩阵表示锚框的大小,形式为[高度宽度].表示锚框的数量。N为YOLO v3深度学习网络中定义锚框的输出层数。单元格数组中的第一个元素指定第一个输出层的锚框,单元格数组中的第二个元素指定第二个输出层的锚框,依此类推。

您可以使用input参数设置此属性aboxes

此属性是只读的。

要检测的对象类名称,存储为分类向量。您可以使用input参数设置此属性

此属性是只读的。

用于训练的图像大小集,存储为类型的-by-2矩阵.每一行的形式为[高度宽度].若要设置此属性,请在创建对象时指定它。

例如,检测器= yolov3ObjectDetector(net,classes,aboxes,'InputSize',[220 220;440 440])

对象检测器的名称,存储为字符向量。若要设置此属性,请在创建对象时指定它。

例如,yolov3ObjectDetector(净类、aboxes ModelName, customDetector)将对象检测器的名称设置为“customDetector”

对象的功能

检测 使用YOLO v3对象检测器检测对象
进行预处理 预处理训练和测试图像
向前 计算YOLO v3深度学习网络输出进行训练
预测 计算YOLO v3深度学习网络输出进行推理

例子

全部折叠

指定预训练的YOLO v3深度学习网络的名称。

name =“tiny-yolov3-coco”

使用预先训练好的YOLO v3网络创建YOLO v3对象检测器。

探测器= yolov3ObjectDetector(name);

显示和检查YOLO v3对象检测器的属性。

disp(探测器)
yolov3ObjectDetector with properties: Network: [1x1 dlnetwork] AnchorBoxes: {2x1 cell} ClassNames: [80x1 categorical] InputSize: [416 416 3] Learnables: [48x3 table] State: [22x3 table] ModelName: 'tiny-yolov3-coco'

使用analyzeNetwork命令,显示YOLO v3网络结构,并获取网络层信息。该网络有两个检测头连接到特征提取网络。

analyzeNetwork (detector.Network)

使用预训练的YOLO v3对象检测器检测未知图像中的对象。

Img = imread(“sherlock.jpg”);Img =预处理(检测器,Img);Img = im2single(Img);[bboxes,scores,labels] = detect(检测器,img,“DetectionPreprocessing”“没有”);

显示检测结果。

detectedImg = insertObjectAnnotation(img,“矩形”、bboxes、标签);图imshow (detectedImg)

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

这个例子展示了如何通过使用预训练的SqueezeNet作为基础网络来创建一个自定义的YOLO v3对象检测器。

加载预训练的SqueezeNet网络。SqueezeNet网络是一个卷积神经网络,您可以使用它作为创建YOLO v3对象检测器的基础网络。

网=挤压网
net = DAGNetwork with properties: Layers: [68x1 nnet.cnn.layer.Layer] Connections: [75x2 table] InputNames: {'data'} OutputNames: {'ClassificationLayer_predictions'}

通过使用,检查基础网络的结构analyzeNetwork(深度学习工具箱)函数。

analyzeNetwork(净)

指定用于训练YOLO v3网络的锚框和类。

aboxes ={(150127, 97, 90, 68, 67];[38, 42岁,41岁,29日,31日23]};类= {“汽车”“卡车”};

在基础网络中选择两个特征提取层作为检测子网的源。

层= {“fire9-concat”“fire8-concat”};

通过向基本网络的特征提取层添加检测头来创建自定义YOLO v3对象检测器。指定模型名、类和锚框。

检测器= yolov3ObjectDetector(net,classes,aboxes,“ModelName”自定义YOLO v3“DetectionNetworkSource”层);

通过使用YOLO v3深度学习网络,检验了YOLO v3深度学习网络的结构analyzeNetwork(深度学习工具箱)函数。

analyzeNetwork (detector.Network)

检查YOLO v3对象检测器的属性。您现在可以在自定义训练数据集上训练YOLO v3对象检测器并执行对象检测。

disp(探测器)
yolov3ObjectDetector with properties: Network: [1x1 dlnetwork] AnchorBoxes: {2x1 cell} ClassNames: [2x1 categorical] InputSize: [227 227 3] Learnables: [66x3 table] State: [6x3 table] ModelName: 'Custom YOLO v3'

有关如何训练YOLO v3对象检测器的信息,请参阅基于YOLO v3深度学习的目标检测的例子。

扩展功能

版本历史

R2021a中引入

Baidu
map