主要内容

创建YOLO V2对象检测网络

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

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

  1. 加载佩带的网络。

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

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

  4. 添加新图层以支持对象检测任务。金宝app

负载净化网络

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

net = mobilenetv2();Lgraph = LayerGraph(网);

更新网络输入大小

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

imageInputSize = [300 300 3];

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

imglayer = imageInputLayer(imageInputSize,“名称”“输入_1”
IMGLayer = ImageInputLayer具有属性:名称:'input_1'输入:[300 300 3] HyperParameters DataAugmentation:'None'归一化:'Zerocenter'NormalizationDimension:'Auto'均值:[]

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

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

选择要素提取层

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

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

featureextractionlayer =“block_12_add”;

特征提取层后拆下图层

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

对于此示例,加载已将修改的网络添加到该示例中作为支持文件。金宝app

修改= 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

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

  1. 对象类概率。

  2. x和y位置偏移。

  3. 宽度和高度偏移。

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

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

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

RetectionLayers = [DetectionLayers Convolution2dlayer(1,NumFiltersinlastConvlayer,“名称”“yolov2classconv”......“掌控itializer”,@(sz)randn(sz)* 0.01)YOLOV2TRANSFORMLAYER(NUMANCHORS,“名称”“yolov2transform”)YOLOV2OUTPUTLAYER(锚盒,“名称”“yolov2outputlayer”
DetectionLayers =带有层的9x1层阵列:1'yolov2conv1'卷积96 3x3卷绕卷曲[1 1]和填充'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(LGROPT,FeatureeXtractionLayer,“yolov2conv1”);

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