主要内容

focalLossLayer

使用焦丢失函数创建焦丢失层

描述

焦点丢失层使用焦点丢失预测对象类。当前景类和背景类之间存在不平衡时,添加焦点丢失层来训练目标检测、语义分割或分类网络。为了弥补分类不平衡,焦损失函数将交叉熵函数乘以一个调制因子,增加了网络对错误分类观测的敏感性。

创建

描述

例子

= focalLossLayer为深度学习网络创建焦点损失层。有关如何在目标检测网络中使用焦丢失层的信息,请参见创建SSD对象检测网络

例子

= focalLossLayer (名称,值通过使用一个或多个名称-值对参数设置焦点丢失层的属性。将每个属性名用引号括起来。

例如,focalLossLayer('名称',' focalloss ')创建一个具有名称的焦丢失层“focalloss”以及指定的平衡和聚焦参数。

属性

全部展开

焦损耗函数的平衡参数,指定为正实数。的α值线性缩放损失函数,通常设置为0.25.如果你减少α,增加γ

聚焦损失函数的聚焦参数,指定为一个正实数。增加…的价值γ增加网络对错误分类观察的敏感性。

网络被训练来检测的对象类,指定为字符串向量、类别向量、字符向量单元数组或“汽车”.当您设置“汽车”,课程在训练时自动设置。当指定字符串向量或字符向量的单元格数组时,则是根据输出的类别函数。

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

层名,指定为字符向量或字符串标量。若要在层图中包含层,必须指定非空的唯一层名。如果你用层和的名字被设置为'',然后软件在训练时自动为该层分配一个名称。

数据类型:字符|字符串

例子

全部折叠

指定类名。

类= [“汽车”,“背景”];

指定焦损函数的平衡参数和聚焦参数。为这两个类创建一个名为focallosslayer的焦丢失层,显示结果。

层= focalLossLayer (“类”、类“名字”,“focallosslayer”
layer = focallsslayer with properties: Name: ' focallsslayer ' Hyperparameters Gamma: 2 Alpha: 0.2500 Classes: [2x1 category] LossFunction: 'focalLoss'

创建基于ResNet-18的DeepLab v3+网络。

imageSize = [480 640 3];numClasses = 5;网络=“resnet18”;lgraph = deeplabv3plusLayers(图象尺寸,numClasses、网络“DownsamplingFactor”, 16)
lgraph = LayerGraph with properties: Layers: [100x1 nnet.cnn.layer.Layer] Connections: [113x2 table] InputNames: {'data'} OutputNames: {'classification'}

显示网络的输出层。DeepLab v3+网络的输出层是一个像素分类它利用交叉熵损失来预测输入二维图像中每个像素的分类标签。

lgraph.Layers(结束)
ans = PixelClassificationLayer with properties: Name: 'classification' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'

替换输出像素分类损失处理数据中不平衡的类。

层= focalLossLayer (“名称”,“focalloss”);lgraph = replaceLayer (lgraph,“分类”层);

显示网络。

analyzeNetwork (lgraph);

使用。创建一个用于语义分割的三维U-Net网络unet3dLayers函数。设置编码器-解码器深度为2,并指定第一卷积层的输出通道数为16。

imageSize = [128 128 128 3];numClasses = 5;numClasses lgraph = unet3dLayers(图象尺寸,“EncoderDepth”2,...“NumFirstEncoderFilters”16);图绘制(lgraph)

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

创建一个焦丢失层并替换Segmentation-Layer在具有焦损层的网络中。该层预测输入三维体积中每个体素的分类标签。

层= focalLossLayer (“名称”,“focalloss”);lgraph = replaceLayer (lgraph,“Segmentation-Layer”层)
lgraph = LayerGraph with properties: Layers: [40x1 nnet.cnn.layer.Layer] Connections: [41x2 table] InputNames: {'ImageInputLayer'} OutputNames: {'focalloss'}

显示网络。

analyzeNetwork (lgraph);

更多关于

全部展开

参考文献

[1]林宗毅、Priya Goyal、Ross Girshick、Kaiming He、Piotr Dollar“聚焦丢失用于密集目标检测。”2017年IEEE®计算机视觉国际会议,2999 - 3007。威尼斯:IEEE 2017。https://doi.org/10.1109/ICCV.2017.324。

扩展功能

介绍了R2020a