一、TIN网络架构
从一个简单的特征提取器开始,它是一个3x3卷积神经网络层,存在16个输出映射。(图6中的点A)
我们使用扩张卷积来构建多尺度滤波。扩张卷积可以用更少的参数捕获更大的感受野。我们称这个模块为Enrichment。Enrichment模块如下:
3x3表示过滤器大小为3x3,16表示输入的数量,32表示输出的数量/滤波器的数量。每个扩张滤波器的输出在末尾相加。 (图6中的点B)
使用了八个1x1卷积层,以及一个Sigmoid激活函数。
二、损失函数 (加权交叉熵损失)
其中 yi、Xi、W 分别是真实值、输入和权重。 P(X) 是 sigmoid 函数,th 是值为 64 的阈值。通过设置 th,我们忽略了一些弱边。
yi=0代表非边缘区域,1 - P(Xi;W) 表示了模型预测非边缘像素的概率接近0,log(1 - P(Xi;W)) 用于将这个概率映射到一个损失值上。α 是一个权重参数,用于调整损失的重要性。这个损失函数的设计使得模型在非边缘区域尽量减小其预测值,以便更好地区分边缘和非边缘。所以,当地面实际值为0时,损失函数的这一部分有助于约束模型的行为,以确保在非边缘区域进行合适的预测。
-
Y+ 是边缘像素(边)的数量
-
Y- 是非边缘像素(非边)的数量
-
Y 代表总像素数量,即Y = Y+ + Y-
-
γ是一个平衡参数,用于平衡边缘和非边缘的损失。
这个损失函数应用于所有的侧输出(side-outputs)和融合输出(fused outputs)。最终的总损失函数(LL(W))是所有阶段(K个阶段)的损失函数之和。
三、 后处理(多尺度测试、NMS)
使用多尺度测试和非极大值抑制(NMS)作为后处理。输入图像的大小调整为三种不同的分辨率:0.5x、1x 和 1.5x。
非极大值抑制相关内容:NMS
视频讲解:IOU&NMS
四、相关参数
网络是使用PyTorch实现的。除了特征提取器1外,模型(滤波器权重)的初始化采用了均值为零、标准差为0.01的高斯分布,而偏置初始化为0。超参数设置如下:
- mini-batch size(小批量大小)=1:这是训练时每个小批量样本的数量。
- learning rate(学习率)=(1e-2):它决定了每次参数更新的步长大小,控制着模型在训练过程中的收敛速度。
- weight decay(权重衰减)=(5e-4):用于控制模型的正则化项,有助于防止过拟合。
- momentum(动量)=0.9:它是随机梯度下降(SGD)优化算法中的一个超参数,用于加速收敛。
- training epochs(训练轮数)=120:这是训练过程中模型要遍历整个训练数据集的次数。
- 我们将学习率在每10轮训练时除以10,以逐渐降低学习率,有助于更稳定地收敛。
- 我们使用SGD(随机梯度下降)优化器来优化模型参数。
五、解释相关参数
1.模型权重(滤波器权重)初始化: 模型的权重通常是在训练过程中学习的参数。在模型训练开始之前,需要对这些权重进行初始值的设置。这里描述的初始化方法是使用高斯分布来随机生成权重的初始值。具体来说,它使用了均值(期望值)为零(零均值)和标准差为0.01的高斯分布来生成权重的初始值。这意味着初始权重值是随机的,但其平均值接近于零,标准差较小(0.01),这有助于控制权重的初始范围,使其不会过大或过小。
2.偏差初始化: 偏差是模型中的另一个参数,通常用于偏移模型的输出。在这里,偏差被初始化为0,这意味着在训练开始时,模型的偏差值被设置为零,不需要进行特殊的随机初始化。
3.mini-batch size:mini-batch size
(小批量大小)的不同取值代表了在训练深度学习模型时每个小批量中包含的训练样本数量。mini-batch size(小批量大小)=1这意味着每个小批量中只包含一个训练样本。这种情况通常称为随机梯度下降(Stochastic Gradient Descent,SGD)。优点是内存占用较小,每个参数更新都基于单个样本,引入了更多的随机性,可能有助于跳出局部最小值。缺点是训练过程可能更慢,因为参数更新的方差较大,收敛可能不稳定。
- 小批量大小越小,内存占用越低,但训练速度可能变慢,且可能更容易跳出局部最小值。
- 小批量大小越大,训练速度通常越快,但需要更多的内存,并且可能导致更稳定的收敛。
4.learning rate(学习率):learning rate(学习率)它决定了每次参数更新的步长大小。学习率的大小直接影响了模型训练的收敛速度。较大的学习率可能会导致模型更快地收敛,但也可能导致训练不稳定,甚至发散。较小的学习率通常会导致训练更稳定,但可能需要更多的迭代次数才能达到收敛。
-
学习率控制着每次迭代(epoch)中参数更新的幅度。
- 参数更新 = 学习率 * 梯度
5.weight decay(权重衰减):weight decay(权重衰减)它可以控制模型复杂度,防止模型过于复杂来适应训练数据。
更新后的权重 = 原权重 - 学习率 * 损失梯度 - 学习率 * 权重衰减率 * 权重
6.momentum(动量):momentum(动量)是一种优化算法,在参数更新公式中,加入了当前梯度的累计值,这个累计值叫做动量。
-
动量可以平滑梯度,抑制梯度在陡峭区域的振荡,加速收敛。
-
较大的动量(如0.9)可以保留梯度的前进动量,避免被小波动干扰,更快到达最优点。
7.training epochs(训练轮数):training epochs(训练轮数)一个epoch表示整个训练数据集在神经网络模型中正向和反向传播一次。训练轮数决定了模型会学习训练数据多少次。每一次epoch都会更新模型的参数。