主要内容

创建YOLO V2对象检测网络

此示例显示如何修改佩带的MobileNet V2网络以创建Yolo V2对象检测网络。

将净化网络转换为YOLO V2网络的过程类似于图像分类的传输学习过程:

  1. 加载佩带的网络。

  2. 从佩带的网络中选择一个层以用于特征提取。

  3. 特征提取层后拆下所有图层。

  4. 添加新图层以支持对象检测任务。万博1manbetx

加载净化网络

使用佩带的MobileNet V2网络使用MobileNetv2.。这需要MobileNet V2网络™支持包的深度学习工具箱模型。万博1manbetx如果未安装此支持万博1manbetx包,则该函数提供了下载链接。加载网络后,将网络转换为a分层图对象使您可以操纵图层。

net = mobilenetv2();Lgraph =图层图(网);

更新网络输入大小

更新网络输入大小以满足培训数据要求。例如,假设训练数据是300×300 RGB图像。设置输入大小。

imageInputSize = [300 300 3];

接下来,创建一个具有与原始图层相同的名称的新图像输入层。

imglayer = imageInputLayer(imageInputSize,“姓名”“输入_1”的)
Imglayer = ImageInputLayer具有属性:名称:'input_1'输入:[300 300 3] HyperParameters DataAugmentation:'无'归一化:'Zerocenter'标准化Dimension:'Auto'均值:[]

用新的图像输入层替换旧图像输入层。

Lgraph =替换剂(LGROPLAYER(“输入_1”,imglayer);

选择要素提取层

当输出特征宽度和高度介于比输入图像小8到16倍之间时,YOLO V2特征提取层最有效。此下采样量是空间分辨率和输出特征质量之间的权衡。你可以使用分析功能或深网络设计器应用程序以确定网络内的图​​层的输出大小。请注意,选择最佳特征提取层需要经验评估。

将特征提取层设置为“block_12_add”。该层的输出大小比输入图像大小为300×300的输出大小为约16倍。

featureextractionlayer =“block_12_add”;

特征提取层后拆下图层

接下来,在特征提取层之后拆下层。您可以通过将网络导入深度网络设计器应用程序,手动删除图层,并将修改的网络导出到工作区。

对于此示例,加载修改的网络,该网络已作为支持文件添加到该示例。万博1manbetx

修改= load(“mobilenetv2block12add.mat”);Lgraph = Modified.mobilenetv2block12add;

创建YOLO V2检测子网

检测子网由串联卷积,Relu和批量归一化层组组成。这些层是一个YOLOV2TRANSFORMLAYER.A.YOLOV2OUTPUTLAYER.

首先,创建两组串联连接的卷积,Relu和批量归一化层。将卷积层过滤器大小设置为3乘3,并匹配特征提取层输出中的通道数的滤波器数。指定“相同的”在卷积层中填充以保持输入大小。

filtersize = [3 3];numfilters = 96;检测模式= [卷积2dlayer(过滤,numfilters,“姓名”“yolov2conv1”“填充”“相同的”“掌控itializer”,@(sz)randn(sz)* 0.01)BatchnormalizationLayer(“姓名”“yolov2batch1”)剥离(“姓名”“yolov2relu1”)卷积2dlayer(过滤,numfilters,“姓名”“yolov2conv2”“填充”“相同的”“掌控itializer”,@(sz)randn(sz)* 0.01)BatchnormalizationLayer(“姓名”“yolov2batch2”)剥离(“姓名”“yolov2relu2”
DetectionLayers = 6x1层阵列带图层:1'yolov2conv1'卷积96 3x3卷绕卷曲[1 1]和填充'相同'2'yolov2batch1'批量归一化批量归一化3'yolov2relu1'Relu Relu 4'yolov2conv2'卷积96 3x3卷积迈进[1 1]和填充'相同'5'yolov2batch2'批量归一化批量归一化6'yolov2relu2'relu Relu

接下来,创建检测子网的最终部分,其具有卷积层,然后是一个YOLOV2TRANSFORMLAYER.A.YOLOV2OUTPUTLAYER.。卷积层的输出预测每个锚点盒的以下内容:

  1. 对象类概率。

  2. x和y位置偏移。

  3. 宽度和高度偏移。

指定锚框和类的数量,并计算卷积层的过滤器数。

numclasses = 5;锚盒= [16 16 32 16];Numanchors =尺寸(锚盒,1);numpredictionsperanchor = 5;numfiltersinlastconvlayer = numanchors *(numclasses + numpredictionsperanchor);

添加Convolution2Dlayer.YOLOV2TRANSFORMLAYER., 和YOLOV2OUTPUTLAYER.到检测子网。

检测模式= [检测模式卷积2dlayer(1,numfiltersinlastconvlayer,“姓名”“yolov2classconv”......“掌控itializer”,@(sz)randn(sz)* 0.01)YOLOV2TRANSFORMLAYER(NUMANCHONS,“姓名”“yolov2transform”)Yolov2OutputLayer(锚盒,“姓名”“yolov2outputplayer”
DetectionLayers =带有层的9x1层阵列:1'yolov2conv1'卷积96 3x3卷绕卷曲[11]和填充'相同'2'yolov2batch1'批量归一化批量归一化3'yolov2relu1'Relu Relu 4'yolov2conv2'卷积96 3x3卷积迈进[1 1]和填充'相同的'5'yolov2batch2'批量归一化批量归一化6'yolov2Relu2'Relu Relu 7'yolov2classconv'卷积20 1x1卷曲的卷积[11]和填充[0 0 0 0] 8'yolov2transform'YOLO V2变换层YOLO V2变换层用2个锚9'yolov2OutputLayer'YOLO V2输出YOLO V2输出,带2个锚

完整的YOLO V2检测网络

将检测子网附加到特征提取网络。

Lgraph = Addlayers(LGraph,DetectionLayers);LGRAPH = CONNECTLAYERS(LAPHE,FeatureeXtractionLayer,“yolov2conv1”);

采用分析(LGraph)检查网络然后使用培训YOLO V2对象检测器trainyolov2objectdetector功能。