代码详解

您所在的位置:网站首页 计算机的内核与积实 代码详解

代码详解

2024-07-10 19:46| 来源: 网络整理| 查看: 265

改进点1:将原始卷积权值w_k分离为depth-wise和point-wise两部分,其中depth-wise部分由原始的location-aware modulation scalar m_k负责,point-wise部分是采样点之间的共享投影权值w。 如下图所示,DCNv3的实现代码offset和mask是由经过dw_conv的depth-wise convolution得到的x1生成,但是一同输入dcnv3的是原始的x_proj。 在这里插入图片描述 如下图是DCNv2的实现代码,其中它的m(mask)和offset 是原始输入x分别通过普通卷积p_conv和m_conv生成。 在这里插入图片描述 假设卷积核的大小是(kernel_h,kernel_w), 输入的大小是(c_in,h,w)。卷积核需要滑动t次。 那么普通卷积需要的总乘法运算数是c_out*kernel_h*kernel_w*c_in*t 而depth-wise 卷积需要的总乘法数是kernel_h*kernel_w*c_in*t, 相比下减少了c_out倍。 因此用dw_conv生成offset和mask,可以提升模型的效率。

改进点2:我们将空间聚集过程分成 G G G组,每个组都有单独的采样偏移 ∆ p g k ∆p_{gk} ∆pgk​和调制规模 m g k m_{gk} mgk​, DCNv3生成的mask大小是(N,H,W,group*kernel_size*kernel_size), offset的大小是(N,H,W,2*group*kernel_size*kernel_size),每个组都有不同的采样偏移和调制规模。 而DCNv2生成的mask大小是(N,H,W,kernel_size*kernel_size), offset的大小是(N,H,W,2*kernel_size*kernel_size)。

改进点3:将基于element-wise的sigmoid归一化改为基于样本点的softmax归一化。 如下图,DCNv3的softmax函数在最后一个维度上进行归一化,保证了最后一个维度的kernel_size*kernel_size个元素的和为1。 在这里插入图片描述 如下图所示,DCNv2的softmax函数只是将所有的element通过sigmod 函数,保证每个element的值在[0,1]范围内。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3