蛇形卷积介绍

蛇形卷积常用于特征提取模块的改进 ---- 适用于细长微弱的局部结构特征与复杂多变的形态特征(将应用于管状结构上的动态蛇形卷积移植到杂草识别上)

管状目标分割的特点细长且复杂,标准卷积、空洞卷积无法根据目标特征调整关注区域,可变形卷积可以根据特征自适应学习感兴趣区域,但是对于管状目标,可变形卷积无法限制关注区域的连通性,而动态蛇形卷积则可变形卷积的基础上,限制了关注区域的连通性

在动态蛇形卷积中引入变形偏移△,对于可变形卷积模型被完全自由的学习偏移,感知场往往会偏离目标,特别是在处理一些细长复杂多变的目标,因此蛇形卷积采用迭代策略,依次选择每个要处理目标的下一个位置进行观察,从而确保了观察连续性,不会由于大的偏移将感知范围扩散的太远,我们将连续性约束加入卷积核的设计中,每一个卷积卷积位置都由前一个位置为基准,自由选择摆动方向,从而在自由选择的同时确保感受的连续性

卷积核咋蛇变呢??

普通的卷积核比如(3*3)的格子位置是规整的,但动态蛇形卷积要让这些格子"蛇形"排列,所以得从新算每一个格子的位置

位置算法----累加偏移的过程

从中心格子开始,往外扩展时,每个新格子的位置 = 前一个格子位置+偏移量(△,在范围在(1,-1))

比如计算x轴方向

中心是(xi,yj),往右边扩展(+c方向),每个新格子的y坐标要把之前的偏移(△y)累加

往左扩展(-c方向)同理,也是累加偏移

计算y轴格子位置同理

简单来说:从中心出发,每一步走的时候,把偏移一点点加上,让卷积核格子蛇形扭起来。

将C3_Snake替换掉我们YOLOv5里原来的C3特征提取模块,让模型更好的提取特征

左边模块(Bottlenck_D+C3_Snake)

Input(输入):将图像数据丢进去

Conv(普通卷积)+DySnakeConv(动态蛇形卷积):两条分支,一条普通卷积,另一条用动态蛇形卷积(更灵活提取数据特征)

合并:两次合并,最后输出,第一次合并普通卷积+动态蛇形卷积,第二次卷积,在第一次合并的基础上+原始数据

普通卷积稳住基本盘,动态蛇形卷积(更灵活提取)两者一结合更厉害

右边模块(多分枝+拼接)

Input输入

Conv+DSConv(动态蛇形卷积*2),三条分支,不同分支抓住不同的特征

Concat(拼接):把三条分支的结果"并排拼起来",在用一次普通卷积整理,最后输出

用不同的卷积分支广撒网抓特征,抓住的特征拼起来,在经过一次普通卷积让模型拿到更全面的信息

相关推荐
为何创造硅基生物29 分钟前
C 语言 typedef 结构体私有化
c语言·开发语言·算法
yzx99101332 分钟前
递归算法入门:像俄罗斯套娃一样思考
人工智能·算法
心中有国也有家38 分钟前
从零上手 CANN 学习中心:像逛技术便利店一样学昇腾
学习·算法·开源
oo哦哦1 小时前
搜索矩阵系统的最短路密码:用Dijkstra算法和网络流理论,解释为什么你做了1000个关键词,流量还不如别人30个
网络·算法·矩阵
Matlab程序猿小助手1 小时前
【MATLAB源码-第319期】基于matlab的帝王蝶优化算法(MBO)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab
图码1 小时前
二分查找进阶:如何在有序数组中快速找到Upper Bound?
数据结构·算法·面试·分类·柔性数组
试剂界的爱马仕1 小时前
《古董局·终局5:潮生》第 2 章:镜子的天赋
大数据·人工智能·算法
Cthy_hy1 小时前
树状数组(BIT)进阶:差分优化实现区间修改、区间查询
数据结构·python·算法
YsyaaabB2 小时前
ACM 模式通用代码模板
java·c++·python·算法
ComputerInBook2 小时前
Euclid 几何变换——仿射(affine)变换
算法·仿射变换·几何变换