IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(三)- 特征提取网络实现 -> 正文阅读

[人工智能]Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(三)- 特征提取网络实现

Tensorflow2.0—DeepLab v3+分割网络原理及代码解析(三)- 特征提取网络实现

一、backbone

DeepLab v3+分割网络默认使用Xception或mobilenetV2作为其的主干网络,用于特征提取。其中mobilenetV2的结构,大佬已经解释的很清楚(https://blog.csdn.net/weixin_44791964/article/details/122655063),这里由于我的电脑还能跑的动大模型,所以我这里我选择的是Xception作为网络的backbone(有时间再写一篇关于backbone的blog吧~)

x, atrous_rates, skip1 = Xception(img_input, alpha, downsample_factor=downsample_factor)

上段代码是将(512,512,3)的输入图片经过Xception主干网络进行特征提取之后生成的fearture map。输出的三个值的shape如下:

  • x:(N,32,32,2048)
  • atrous_rates:(6,12,18)
  • skip1:(N,128,128,256)

在这里插入图片描述
上面A模块就是backbone,他一共有两个特征图输出,上述对应的x(经过下采样2倍的低特征提取)会经过B模块,进行进一步的特征提取,而上述对应的x(经过下采样4倍的高特征提取)会进入decoder模块。


先说x

 # 分支0
    b0 = Conv2D(256, (1, 1), padding='same', use_bias=False, name='aspp0')(x)
    b0 = BatchNormalization(name='aspp0_BN', epsilon=1e-5)(b0)
    b0 = Activation('relu', name='aspp0_activation')(b0)

    # 分支1 rate = 6 (12)
    b1 = SepConv_BN(x, 256, 'aspp1',
                    rate=atrous_rates[0], depth_activation=True, epsilon=1e-5)
    # 分支2 rate = 12 (24)
    b2 = SepConv_BN(x, 256, 'aspp2',
                    rate=atrous_rates[1], depth_activation=True, epsilon=1e-5)
    # 分支3 rate = 18 (36)
    b3 = SepConv_BN(x, 256, 'aspp3',
                    rate=atrous_rates[2], depth_activation=True, epsilon=1e-5)
                    
    # 分支4 全部求平均后,再利用expand_dims扩充维度,之后利用1x1卷积调整通道
    b4 = GlobalAveragePooling2D()(x)
    b4 = Lambda(lambda x: K.expand_dims(x, 1))(b4)
    b4 = Lambda(lambda x: K.expand_dims(x, 1))(b4)
    b4 = Conv2D(256, (1, 1), padding='same', use_bias=False, name='image_pooling')(b4)
    b4 = BatchNormalization(name='image_pooling_BN', epsilon=1e-5)(b4)
    b4 = Activation('relu')(b4)
    # 直接利用resize_images扩充hw
    b4 = Lambda(lambda x: tf.compat.v1.image.resize_images(x, size_before[1:3], align_corners=True))(b4)

在这里插入图片描述
根据debug之后发现,x经过5个分支之后所得到的fearture map的shape都是(N,32,32,256),然后进行channels维度上面叠加,最后x变成了(N,32,32,1280),根据图中所示,再经过一次(1,1)的卷积,改变一下通道数,得到了(N,32,32,256)。

x = Lambda(lambda xx: tf.compat.v1.image.resize_images(xx, skip_size[1:3], align_corners=True))(x)

最后一步,就是将上述的x进行上采样,得到了(N,128,128,256),待与skip进行concat。

再来看下skip1~

dec_skip1 = Conv2D(48, (1, 1), padding='same',use_bias=False, name='feature_projection0')(skip1)
dec_skip1 = BatchNormalization(name='feature_projection0_BN', epsilon=1e-5)(dec_skip1)
dec_skip1 = Activation(tf.nn.relu)(dec_skip1)

先将skip1的通道数变成48,然后与上述的x(N,128,128,256)进行concat,后接两次卷积得到一个fearture map(N,128,128,256)。
最后一步,就是将x转换为n_class通道数:

size_before3 = tf.keras.backend.int_shape(img_input)
# 512,512,21
x = Conv2D(num_classes, (1, 1), padding='same')(x)
x = Lambda(lambda xx:tf.compat.v1.image.resize_images(xx,size_before3[1:3], align_corners=True))(x)
x = Softmax()(x)

最终最终,我们得到了一个shape大小为(512,512,2)的fearture map,其中2是(1+分割类别数),因为最后一步采用了softmax,所以表达的是每个类别所占的比例大小。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:33:38  更:2022-03-04 15:36:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:43:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码