DAB结构详解

DAB结构详解1 DAB 模块 1 bn conv2D 实现 def bn conv2D x filters kernel size strides 1 1 dilation rate 1 1 use bias False x Conv2D filters kernel size

大家好,我是讯享网,很高兴认识大家。

1、DAB模块


讯享网

1)bn_conv2D实现:

def bn_conv2D(x, filters, kernel_size, strides=(1, 1), dilation_rate=(1, 1), use_bias=False): x = Conv2D(filters, kernel_size, padding='same', strides=strides, kernel_initializer='he_normal', dilation_rate=dilation_rate, use_bias=use_bias)(x) x = BatchNormalization(axis=-1, scale=False, epsilon=1e-3)(x) # x = Activation(activation='relu')(x) return Activation(pre_relu6)(x)

讯享网

2)bn_dw_conv2D实现:

讯享网def bn_dw_conv2D(x, kernel_size, strides=(1, 1), dilation_rate=(1, 1), use_bias=False): x = DepthwiseConv2D(kernel_size, strides=strides, depth_multiplier=1, padding='same', use_bias=use_bias, dilation_rate=dilation_rate, kernel_initializer='he_normal')(x) x = BatchNormalization(axis=-1, scale=False, epsilon=1e-3)(x) return Activation(pre_relu6)(x)

3)bn_relu6实现:

from keras import backend as K def pre_relu6(x): return K.relu(x, alpha=0.001, max_value=6) def bn_relu6(x): x = BatchNormalization(axis=-1, scale=False, epsilon=1e-3)(x) # x = Activation(activation='relu')(x) x = Activation(pre_relu6)(x) return x

4)dab_model实现:

讯享网def dab_model(x, d, k_size): in_shape = K.int_shape(x)[-1] x1 = bn_conv2D(x, in_shape // 2, (k_size, k_size), strides=(1, 1)) x2 = bn_dw_conv2D(x1, (k_size, 1), strides=(1, 1)) x2 = bn_dw_conv2D(x2, (1, k_size), strides=(1, 1)) x3 = bn_dw_conv2D(x1, (k_size, 1), strides=(1, 1), dilation_rate=(d, 1)) x3 = bn_dw_conv2D(x3, (1, k_size), strides=(1, 1), dilation_rate=(1, d)) x2 = bn_relu6(add([x2, x3])) x2 = Conv2D(in_shape, (1, 1), padding="same", strides=(1, 1), kernel_initializer='he_normal', use_bias=True)(x2) return bn_relu6(add([x, x2]))

2、DAB-Net实现

 DAB-Block1实现:

d1 = [2, 2, 2] block1 = len(d1) for i, d in zip(range(0, block1), d1): if i == 0: x = dab_model(x1, d, k_size=3) else: x = dab_model(x, d, k_size=3) x = bn_relu6(concatenate([x, x1, down2], axis=-1))

DAB-Block2实现:

讯享网d2 = [4, 4, 8, 8, 16, 16] block2 = len(d2) for i, d in zip(range(0, block2), d2): if i == 0: x = dab_model(x2, d, k_size=3) else: x = dab_model(x, d, k_size=3) x = bn_relu6(concatenate([x, x2, down3], axis=-1))

 

小讯
上一篇 2025-01-18 11:36
下一篇 2025-04-07 21:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/62161.html