【经典分割网络】网络+模块+数据集+实验结果(整理中。。

KolektorSDD数据集中包
含了 50组电子换向器图片,其中每组包含 8张图
片以及对应的语义分割标签,图像宽均为 500像
素,高为 1 240~1 273像素

1、FCN

2、U-net

3、PSPnet

4、deeplab

5、seg-net

6、Refinenet

[CVPR 17]RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation

提出了一套网络架构以实现高精度的语义分割任务。从网络结构来看,是U-Net的一个变种。文章的主要贡献和创新在于U-Net折返向上的通路之中。

相同感知野下残差卷积和空洞卷积优缺点对比:

  • 残差卷积:防止梯度爆炸、计算量小,但会损失特征图分辨率
  • 空洞卷积:计算量大,训练成本高,但能保存较大特征图分辨率,利于边界的定位细化。

设计目的:利用残差卷积,做到全局特征融合

  • 编码部分:RESNET,生成四个不同大小特征层
  • 解码部分:提出refinenet模块,进行残差堆叠和特征融合。

在这里插入图片描述

最左边一列就是FCN的encoder部分(用VGG作为主干特征提取网络),先把pretrained ResNet按feature map的分辨率分成四个ResNet blocks,然后向右把4个blocks分别作为4个path通过RefineNet block进行融合,最后得到一个refined feature map (接softmax再双线性插值输出)。注意除了RefineNet4之外,所有的RefineNet block都有两个输入,用于融合不同尺寸的特征层做refine。

RefineNet Block
主要组成部分是Residual convolution unit,Multi-resolution Fusion,chained Residual Pooling,output convolutions。作用是融合多个level的feature map输出单个level的feature map。

在这里插入图片描述

  • RCU就是去除了BN的恒等残差块(identity residual unit)。两个RCU模块构成一条残差边,每个分辨率的特征层应用两个串联的RCU模块,提取分割结果的残差,最后相加来校正原始分割结果。除RefineNet 4中为512个卷积核外,其余所有输入路径上的卷积核个数均为256。
  • Multi-resolution fusion(多分辨率融合)将所有的输入通过这个模块融合到高分辨率特征图上。网络首先通过一个卷积层处理输入的不同分辨率卷积层,得到各通道下的适应性权重。随后,应用上采样,将所有输入卷积层上采样到所有输入中的最大size,并根据不同通道权重加权求和。【若只有一个输入路径,例如RefineNet-4,则输入将直接经过此块而不做任何更改。若有多个输入,比如RefineNet-3,输入1为resnet压缩后为1/16原图大小的特征层,输入2为RefineNet-4输出的为1/32原图大小的特征层,则经过RefineNet-3,两个输入会上采样为1/16原图大小的特征层,再加权相加,最后输出1/16原图大小的特征层,作为RefineNet-2的输入。】
  • chained residual pooling(串联残差池化)通过残差校正的方式,优化前两步融合得到的分割结果。由一个残差结构、一个池化层和一个卷积层组成。池化层加卷积层用来习得用于校正的残差。Relu对接下来的池化的有效性很重要,还可以使模型对学习率的变化没这么的敏感,这个链式结构能从很大范围区域上获取背景,此外,这个结构中大量使用了identity mapping这样的连接,无论长距离或者短距离,这样的结构允许梯度从一个block直接向其他任一block传播。
  • Output convolutions就是输出前再加一个RCU。平衡所有的权重,最终得到与输入空间尺寸相同的分割结果。
  • RefineNe用了一个比较巧妙的做法:用前一级的残差结果作为下一级的残差学习模块的输入,而非直接从校正后的分割结果上再重新习得一个独立的残差。这样做的目的,RefineNet的作者是这样解释的:可以使得后面的模块在前面残差的基础上,继续深入学习,得到一个更好的残差校正结果。

在这里插入图片描述

7、HRNet

7、Deep layer aggregation

8、Deeply Supervised Salient Object Detection with Short Connections

  • 实验数据记录:

网络结构数据集结果

FCN-resnet50

· 200epoch

· ./params/fcn_resnet50_coco-1167a1af.pth

NEU-seg    global correct: 96.8
average row correct: ['98.4', '77.7', '89.1', '84.3']
IoU: ['96.5', '65.0', '82.6', '74.6']
mean IoU: 79.7

PSP-mobilenet

· 200epoch,downsample_factor=16

· 无预训练 

--{netmodel_199.pth}

NEU-segglobal correct: 96.3
average row correct: ['98.2', '72.9', '90.1', '74.1']
IoU: ['95.9', '60.6', '83.0', '63.4']
mean IoU: 75.7

PSP-resnet50

· 200epoch,downsample_factor=16

· 无预训练 

--{resnet50_netmodel_199.pth}

--{resnet50[8]_netmodel_199.pth}

NEU-seg

downsample_factor=16

global correct: 96.4
average row correct: ['98.3', '70.6', '90.3', '77.2']
IoU: ['96.0', '60.4', '83.5', '64.8']
mean IoU: 76.2

downsample_factor=8

global correct: 97.2
average row correct: ['98.5', '80.9', '91.6', '85.1']
IoU: ['96.8', '69.3', '85.0', '75.3']
mean IoU: 81.6

deeplabV3

· 200epoch,downsample_factor=16

· 无预训练 

NEU-segglobal correct: 97.1
average row correct: ['98.5', '78.0', '91.1', '86.2']
IoU: ['96.8', '67.4', '84.3', '76.5']
mean IoU: 81.3
  • NAS实验数据记录:

网络结构cell结果

normal+reduce(8个)

'none', 'max_pool_3x3', 'avg_pool_3x3',    'skip_connect', 'sep_conv_3x3',  'sep_conv_5x5',   'dil_conv_3x3' 'dil_conv_5x5',

DARTS (cell_step=4) 

NASNet_zora;

2022-10-21

global correct: 97.9
average row correct: ['99.0', '74.9', '88.9', '83.5']
IoU: ['97.8', '62.4', '81.2', '75.1']
mean IoU: 79.1

normal+reduce(8个)

'none', 'max_pool_3x3', 'avg_pool_3x3',    'skip_connect', 'sep_conv_3x3',  'sep_conv_5x5',   'dil_conv_3x3' 'dil_conv_5x5',

改变搜索策略为Pdarts

P-DARTS (cell_step=4) 

【剪枝设置:3.2.2】

这个搜索的效果不好,可能是因为剪枝剪得暴力了。

NASNet_Pdarts_zora;

2022-10-25;

2022-10-27 08:07:04,838 global correct: 97.9
average row correct: ['99.1', '65.6', '88.7', '83.9']
IoU: ['97.8', '58.0', '81.0', '75.1']
mean IoU: 78.0

normal+reduce(8个)

'none', 'max_pool_3x3', 'avg_pool_3x3',    'skip_connect', 'sep_conv_3x3',  'sep_conv_5x5',   'dil_conv_3x3' 'dil_conv_5x5','conv_7x1_1x7'

增加了'conv_7x1_1x7'操作,剪枝数量变了

P-DARTS (cell_step=4) 

【剪枝设置:3.2.2.1】

-----------------------------------

做了两次实验:

2022-10-28:取得是过程训练最佳结果的结构;

2022-10-28(1):取得是最后一个结果结构。

NASNet_Pdarts_zora;

2022-10-28:

average row correct: ['99.1', '70.7', '89.4', '84.2']
IoU: ['97.9', '61.0', '82.3', '75.6']
mean IoU: 79.2

----------------------------------

2022-10-28(1):

average row correct: ['99.0', '74.4', '89.9', '86.4']
IoU: ['97.9', '63.6', '82.2', '76.1']
mean IoU: 80.0

【80, 79.9, 79.8, 79.8, 79.6】

normal+reduce(13个)

'none', 'max_pool_3x3', 'avg_pool_3x3',    'skip_connect', 'sep_conv_3x3',  'sep_conv_5x5',   'dil_conv_3x3' 'dil_conv_5x5','conv_7x1_1x7'

网络块从8个变成了13个,增加了'conv_7x1_1x7'操作,同样采用Pdarts搜索策略

P-DARTS (cell_step=4)

【剪枝设置:3.2.2.1】 

NASNet12_Pdarts_zora;

2022-10-28;

average row correct: ['99.0', '77.4', '89.8', '84.7']
IoU: ['97.9', '64.0', '81.9', '75.7']
mean IoU: 79.9

【79.9, 79.7, 79.6, 79.5, 79.3】

normal+reduce(13个)

'none', 'max_pool_3x3', 'avg_pool_3x3',    'skip_connect', 'sep_conv_3x3',  'sep_conv_5x5',   'dil_conv_3x3' 'dil_conv_5x5','conv_7x1_1x7'

用了原始的DARTS搜索策略

DARTS (cell_step=4) 

NASNet12_zora;

2022-10-31;

global correct: 97.9
average row correct: ['99.1', '69.6', '89.8', '83.2']
IoU: ['97.8', '59.9', '81.3', '75.4']
mean IoU: 78.6

 

【78.6, 78.4, 78.2, 78.1, 78.0】

normal+reduce(9个)

     'none', 'max_pool_3x3', 'avg_pool_3x3',    'skip_connect', 'sep_conv_3x3',  'sep_conv_5x5',   'dil_conv_3x3' 'dil_conv_5x5',   'conv_7x1_1x7'

加残差模块

P-DARTS (cell_step=4) 

【剪枝设置:3.2.2.1】

NasNet_resnet_Pdarts_Zora

global correct: 97.9
average row correct: ['99.2', '72.4', '85.4', '84.7']
IoU: ['97.8', '61.4', '79.8', '75.6']
mean IoU: 78.6

【78.6, 78.6, 78.5, 78.5, 78.5】

normal+reduce(13个)

     'none', 'max_pool_3x3', 'avg_pool_3x3',    'skip_connect', 'sep_conv_3x3',  'sep_conv_5x5',   'dil_conv_3x3' 'dil_conv_5x5',   'conv_7x1_1x7'

加残差模块

P-DARTS (cell_step=4) 

【剪枝设置:3.2.2.1】

NasNet12_resnet_Pdarts_Zora

global correct: 98.0
average row correct: ['99.0', '74.2', '88.3', '85.7']
IoU: ['97.8', '62.4', '81.0', '76.2']
mean IoU: 79.4

79.4, 79.2, 78.9, 78.9, 78.9,

normal+reduce(9个)

改变通道数12->30,cell变9个,上采样加1*1卷积

​​​​​​​P-DARTS (cell_step=4) 

【剪枝设置:3.2.2.1】

NasNet_channel30_Pdarts_Zora

global correct: 98.1
average row correct: ['99.2', '73.8', '87.5', '85.7']
IoU: ['97.9', '63.6', '81.8', '76.1']
mean IoU: 79.9

【79.9, 79.8, 79.8, 79.7, 79.6】

----------------------------------

global correct: 98.1
average row correct: ['99.1', '75.1', '90.0', '83.2']
IoU: ['98.0', '63.9', '82.7', '75.5']
mean IoU: 80.0

​​​​​​​

【80.0, 79.8,79.7, 79.6,79.6】

 normal+reduce(9个)

改变搜索策略:ADARTS

(cell_step=4) 


SSD网络结构

(1)采用多尺度特征图用于检测
CNN网络一般前面的特征图比较大,后面会逐渐采用stride=2的卷积或者pool来降低特征图大小,这正如图3所示,一个比较大的特征图和一个比较小的特征图,它们都用来做检测。这样做的好处是比较大的特征图来用来检测相对较小的目标,而小的特征图负责检测大目标。
在这里插入图片描述
(2)采用卷积进行检测
SSD直接采用卷积对不同的特征图来进行提取检测结果。对于形状为mnp的特征图,只需要采用33p这样比较小的卷积核得到检测值。
(每个添加的特征层使用一系列卷积滤波器可以产生一系列固定的预测。)

(3)设置先验框
SSD借鉴faster rcnn中ancho理念,每个单元设置尺度或者长宽比不同的先验框,预测的是对于该单元格先验框的偏移量,以及每个类被预测反映框中该物体类别的置信度。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Win10系统下,使用DeepLab V3进行语义分割训练自己的数据集可以通过以下步骤实现: 1. 准备数据集:首先,需要进行数据集的准备工作。收集大量的图像数据,并为每张图像标注像素级别的语义标签。确保训练图像和标签数据是一一对应的。 2. 安装依赖环境:在Win10系统下,首先需要安装Python和TensorFlow等深度学习框架,并配置好相应的环境变量。确保能够成功导入相关的库和模块。 3. 下载DeepLab V3:从GitHub上下载DeepLab V3的源代码,并解压到本地目录。在命令行切换到DeepLab V3的根目录。 4. 数据预处理:使用脚本文件对数据集进行预处理,将图像和标签数据转换成模型可接受的格式。这可以通过运行预处理脚本来完成。 5. 配置参数:在配置文件设置相关的训练参数,如训练图像的路径、标签的路径、模型的参数等。可以根据实际需要进行调整。 6. 运行训练:在命令行运行训练脚本,该脚本会调用DeepLab V3模型进行训练。根据配置文件的设置,模型将使用训练数据进行迭代训练,以优化模型的性能。 7. 评估模型:训练完成后,可以运行评估脚本对训练得到的模型进行评估。该脚本将使用测试数据进行预测,并计算出预测结果的准确性。 8. 使用模型:训练完成后,可以使用已训练好的模型对新的图像进行语义分割。通过在命令行运行预测脚本,将输入图像作为参数进行预测,即可得到相应的语义分割结果。 以上是在Win10系统下使用DeepLab V3进行语义分割训练自己的数据集的基本步骤。根据具体情况和需求,可能还需要进行一些额外的调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值