Page 325 - 《软件学报》2021年第11期
P. 325
郭松 等:基于多任务学习的眼底图像红色病变点分割 3651
最后,网络参数见表 1.为了方便,表中只列出了卷积层的参数,包括卷积核的大小和卷积核个数,省略了池
化、ReLU 等信息.
Table 1 Detailed configurations of Red-Seg (only list settings of convolutional layers)
表 1 Red-Seg 模型详细配置表(只列出了卷积层设置参数)
conv1 conv2 conv3 conv4 conv5
conv1_1 conv2_1 conv3_1 conv4_1 conv5_1
(3×3-64) (3×3-128) (3×3-256) (3×3-512) (3×3-512)
主网络 conv1_2 conv2_2 conv3_2 conv4_2 conv5_2
(VGGNet)
(3×3-64) (3×3-128) (3×3-256) (3×3-512) (3×3-512)
conv3_3 conv4_3 conv5_3
− −
(3×3-256) (3×3-512) (3×3-512)
conv conv conv
微动脉瘤分割分支 − −
(1×1-1) (1×1-1) (1×1-1)
conv conv conv
出血点分割分支 − −
(1×1-1) (1×1-1) (1×1-1)
可以看出,主网络使用 VGGNet 的前 5 组卷积,共包括 13 个卷积层,每个卷积层都使用 3×3 的卷积核;而且
随着网络深度的增加,卷积核的个数从 conv1 中的 64 增加到 conv5 中的 512.在微动脉瘤和出血点分割分支中,
每个卷积层中卷积核的大小为 1×1,且只包括一个卷积核.
2.2 损失函数及训练算法
交叉熵损失函数通常被用来训练分割网络,而普通的带权交叉熵损失并未考虑难分与易分样本的问题,因
此,在这种病变点和背景点极易混淆的场景下,眼底病变点分割极易出现严重的误识别问题.本文使用改进的
[9]
Top-k 带权交叉熵损失函数 ,通过不断丢弃易分样本,使网络更多地集中在难分样本的学习上,从而提高网络
的判别能力.同时,为了进一步减少误分,本文直接将最小化误分(假阴性+假阳性)作为优化目标去训练 Red-Seg
模型,提出了一种两阶段训练算法.
2.2.1 第 1 阶段的损失函数
[9]
Top-k 带权交叉熵损失函数 定义如下:
β
L 1 ( , )py =− ∑ log p − (1 β − ) ∑ log(1 p− i ),
i
i y = 1 i y top
∈
其中,p 为激活值,由 sigmoid 函数计算得来;y 为标注;β为权重因子.Top-k 损失需要将负样本按照其损失降序排
序,然后选择损失最大的一部分负样本进行优化.形式化如下:
y top ={t 1 ,t 2 ,…,t λ },
其中,t i 为损失第 i 大的负样本编号,λ为选中的负样本个数.负样本确定之后,可用如下公式定义权重因子:
λ
β = ,
λ + N +
其中,N + 为正样本个数.可见,权重因子为负样本占所有记入损失样本的比例.
原始的 Top-k 损失使用的是固定的λ值,每次网络迭代都选择固定数量的负样本,这就使得随着网络的训练,
选中的负样本中易分样本的比例逐渐增加.为了解决这个问题,本文提出了一种随着训练迭代λ线性衰减的调
度策略.定义如下:
λ 0 ⎢ ⎥
r
λ () r = λ 0 − ⎢ ⎥ ,
⎣
M / SS ⎦
其中,λ 0 为初始值,M 为网络最大迭代次数,r 为当前迭代次数,S 为衰减周期.当 r∈[1,S−1]时,λ(r)=λ 0 ;当 r∈[S,2S−1]
⎛ 1 ⎞
时, ()rλ = λ 0 ⎜ 1− ⎟ .
⎝ M / S ⎠
2.2.2 第 2 阶段的损失函数
为了将误分情况集成到损失函数中,首先定义假阴性(false negative,简称 FN)和假阳性(false positive,简称