动态蛇形卷积模块DySnakeConv
血管、道路等拓扑管状结构的精确分割在各个领域都至关重要,确保下游任务的准确性和效率。 然而,许多因素使任务变得复杂,包括薄的局部结构和可变的全局形态。在这项工作中,我们注意到管状结构的特殊性,并利用这些知识来指导我们的 DSCNet 在三个阶段同时增强感知:特征提取、特征融合、 和损失约束。 首先,我们提出了一种动态蛇卷积,通过自适应地关注细长和曲折的局部结构来准确捕获管状结构的特征。 随后,我们提出了一种多视图特征融合策略,以补充特征融合过程中多角度对特征的关注,确保保留来自不同全局形态的重要信息。 最后,提出了一种基于持久同源性的连续性约束损失函数,以更好地约束分割的拓扑连续性。 2D 和 3D 数据集上的实验表明,与多种方法相比,我们的 DSCNet 在管状结构分割任务上提供了更好的准确性和连续性。 我们的代码是公开的。
主要的挑战源于细长微弱的局部结构特征与复杂多变的全局形态特征。本文关注到管状结构细长连续的特点,并利用这一信息在神经网络以下三个阶段同时增强感知:特征提取、特征融合和损失约束。分别设计了动态蛇形卷积(Dynamic Snake Convolution),多视角特征融合策略与连续性拓扑约束损失。
DySnakeConv代码实现
参考链接:pytorch代码实现之动态蛇形卷积模块DySnakeConv
具体修改步骤
common.py文件修改
将pytorch代码实现之动态蛇形卷积模块DySnakeConv中的Class定义部分添加至common.py中的最后。
yolo.py文件修改
将C3_DySnake模块添加至parse_model函数中
如果需要用DySnakeConv替代原有卷积,则需进一步修改:
以YOLOv5 v6.0版本为例,修改.yaml配置文件
Backbone修改
Neck部分修改
方式1:只替换其中Conv卷积层,直接用DySnakeConv替换即可
方式2: 在Conv卷积层之后添加DySnakeConv,保持通道数,并修改网络层编号