【语义分割专题】语义分割相关工作--DeepLab系列

深度学习之DeepLab用于语义分割 摘要 研究点:CNN做语义分割 工程主页:http://liangchiehchen.com/projects/DeepLab.html 主要贡献: atrous conv: 可以控制参与卷积的feature的分辨率 Subsample -> Conv(kernel) 和 AtrousConv(kernel) -> Subsample 等价,且 AtrousConv(kernel) 平移不变 阅读详情

DeepLab系列:

DeepLabV1

贡献:首次把空洞卷积引入图形分割领域。

基本内容:

  • 基于VGG16
  • 去掉最后两个池化层改为卷积层(控制分辨率不要太小)
  • 去掉全连接层(保留最后一个用于softmax分类)
  • 后三个卷积改为空洞卷积(保证感受野与去掉池化层前接近)
  • 对结果上采样后用CRF细化分割效果。

DeepLabv2

贡献:引入带空洞卷积的空间金字塔池化(ASPP)

基本内容:

  • 基础网络由VGG16->ResNet
  • 多尺度空洞卷积并行
  • 采用多项式lr衰减
  • 与v1一样,对结果上采样后用CRF细化分割效果。

DeepLabV3

贡献:优化ASPP

基本内容:

  • 提出了多尺度信息的并行与串行结构
  • ASPP中应用了BN层
  • 考虑了dilation rate的意义,重新设置了rate不能过大(rate过大,filter中有效权重减少,更难捕获远距离信息)
  • ASPP中加入全局平均池化,获取全局尺度信息
  • 去掉了CRF后处理

DeepLabV3+

贡献:引入了编码-解码结构

基本内容:

  • v3作为编码部分,添加了解码部分
  • 尝试了用Xception作为基础网络

后续改进方法

改进网络结构:

  • 尝试范围空间卷积
  • ASPP全局平均池化如果是要传递全局尺度信息,直接传原feature map会不会有更好的效果
  • 解码部分尝试U-Net结构,结合不同分辨率下提取到的信息进行分割

用集成学习提高模型效果(模型融合)

  • 同轴为下,相同模型不同参数做平均
  • 同轴位下,不同模型之间做集成
  • 三个轴位,各自训练 模型,然后集成

ASPP卷积那块是不是可以尝试多个卷积,以及加原feature map用上来;以及外加一个senet模块

以及双目结构

DeepLabv1:SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS

贡献:首次把空洞卷积引入图形分割领域。

基本内容:

  • 基于VGG16
  • 去掉最后两个池化层改为卷积层(控制分辨率不要太小)
  • 去掉全连接层(保留最后一个用于softmax分类)
  • 后三个卷积改为空洞卷积(保证感受野与去掉池化层前接近)
  • 对结果上采样后用CRF细化分割效果。

DCNN在像素标记存在两个问题:信号下采样和空间不变性。

第一个问题是由于DCNN重复的最大池化核下采样造成分辨率下降,DeepLabv1通过带孔(atrous)算法解决。

第二个问题是分类器获得以对象为中心的决策需要空间不变性,从而限制了DCNN的空间精度,DeepLabv1通过条件随机场(CRF)提高模型捕获精细细节的能力。

  • 多次池化、下采样使输出信号分辨率变小:使用空洞卷积
  • 池化对于输入变换具有内在空间不变性:使用CRF

DeepLabv1是结合力深度卷积神经网络(DCNNs)和概率图(DenseCRFs)的方法。DeepLab创造性的结合了DCNN和CRF产生一种新的语义分割模型,模型有准确的预测结果同时计算效率高。在PASCAL VOC 2012上展现了先进的水平。DeepLab是卷积神经网络和概率图模型的交集,后续可考虑将CNN和CRF结合到一起做end-to-end训练。

方法

空洞卷积

在这里插入图片描述

条件随机场CRF

在这里插入图片描述

在这里插入图片描述

  • VGG16的全连接层(FC层)转为卷积层(步幅32,步幅=输入尺寸/输出特征吃尺寸)
  • 最后的两个池化层去掉了下采样(目标步幅8)
  • 后续卷积层的卷积核改为了空洞卷积(扩大感受野,缩小步幅)
  • 在ImageNet预训练的VGG16的权重上做fine-tune(迁移学习)

DeepLabv2: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

贡献:引入带空洞卷积的空间金字塔池化(ASPP)

基本内容:

  • 基础网络由VGG16->ResNet
  • 多尺度空洞卷积并行
  • 采用多项式lr衰减
  • 与v1一样,对结果上采样后用CRF细化分割效果。

在V1的基础上,做了以下改进:

  • 在多尺度获得了更好的分割效果(使用ASPP)

  • 基础层由VGG16转为ResNet

  • 使用不同的学习策略(poly)

  • 首先,强调使用空洞卷积,作为密集预测任务的强大工具。空洞卷积能够明确的控制DCNN内计算特征响应的分辨率,即可有效的扩大感受野,在不增加参数量和计算量的同时获取更多的上下文。

  • 其次,提出了空洞空间卷积池化金字塔(atrous spatial pyramid pooling(ASPP)),以多尺度的信息得到更强健的分割效果。ASPP并行的采用多个采样率的空洞卷积来探测,以多个比例捕捉对象以及图像上下文。

  • 最后,通过组合DCNN和概率图模型,改进分割边界结果。在DCNN中最大池化和下采样组合实现可平移不变性,但这对精度是由影响的。通过将最终的DCNN层响应和全连接的CRF组合来克服这个问题。

在这里插入图片描述

在这里插入图片描述

总体步骤如下:

  • 输入经过改进的DCNN(带空洞卷积和ASPP模型)得到粗略预测结果,即Aeroplane Coarse Score map;
  • 通过双线性插值扩大到原本大小,即Bi-linear Interpolation
  • 再通过全连接的CRF细化预测结果,得到最终输出Final Output

空洞卷积能在保持计算量和参数量的同时扩大感受野,配合使用金字塔池化方案可以聚合多尺度的上下文信息,可通过空洞卷积控制特征分辨率,配合更先进的DCNN模型、多尺度联合技术,并在DCNN之上集成全连接的CRF可以获得更好的分割效果。

  • 空洞卷积用于密集特征提取和扩大感受野
  • 使用ASPP模块表示多尺度图像
  • 使用全连接CRF做结构预测用于恢复边界精度。

DeepLabV3:Rethinking Atrous Convolution for Semantic Image Segmentation

贡献:优化ASPP

基本内容:

  • 提出了多尺度信息的并行与串行结构

  • ASPP中应用了BN层

  • 考虑了dilation rate的意义,重新设置了rate不能过大(rate过大,filter中有效权重减少,更难捕获远距离信息)

  • ASPP中加入全局平均池化,获取全局尺度信息

  • 去掉了CRF后处理

  • 在本文中重新讨论了空洞卷积的使用,在级联模块和空间金字塔池化的框架下,能够获取更大的感受野从而获取多尺度的信息。

  • 改进了ASPP模块:由不同采样率的空洞卷积核BN层组成,我们尝试以级联或并行的方式布局模块。

  • 讨论了一个重要问题:使用大采样率的3 * 3 的空洞卷积,因为图像边界响应无法捕捉远距离信息,会退化为1 x 1的卷积,我们建议将图像级特征融合到ASPP模块中。

4种不同的类型利用上下文信息做语义分割的全卷积网络

  • 图像金字塔(Image pyramid):通常使用共享权重的模型,适用于多尺度的输入。小尺度的输入响应控制语义,大尺寸的输入响应控制细节。通过拉布拉斯金字塔对输入变换成多尺度,传入DCNN,融合输出。这类的缺点是:因为GPU存储器的限制,对于更大/更深的模型不方便扩展。通常应用于推断阶段。
  • 编码器-解码器(Encoder-decoder):编码器的高层次的特征容易捕获更长的距离信息,在解码器阶段使用编码器阶段的信息帮助恢复目标的细节和空间维度。例如SegNet利用下采样的池化索引作为上采样的指导;U-Net增加了编码器部分的特征跳跃连接到解码器;RefineNet等证明了Encoder-Decoder结构的有效性。
  • 上下文模块(Context module):包含了额外的模块用于级联编码长距离的上下文。一种有效的方法是DenseCRF并入DCNN中,共同训练DCNN和CRF.
  • 空间金字塔池化(Spatial pyramid pooling):采用空间金字塔池化可以捕获多个层次的上下文。在ParseNet中从不同图像等级的特征中获取上下文信息;DeepLabV2提出ASPP,以不同采样率的并行空洞卷积捕捉多尺度信息。最近PSPNet在不同网格尺度上执行空间池化,并在多个数据集上获得优异的表现。

在这里插入图片描述

串联

在这里插入图片描述

纵式

在这里插入图片描述

DeepLabv3+:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

贡献:引入了编码-解码结构

基本内容:

  • v3作为编码部分,添加了解码部分
  • 尝试了用Xception作为基础网络

v3+的创新点:

  • 设计基于v3的decode的module
  • 用modify xception作为backbone

在这里插入图片描述

在这里插入图片描述

代码

在这里插入图片描述

class BilinearUpsampling(Layer):

    def __init__(self, upsampling=(2, 2), data_format=None, **kwargs):

        super(BilinearUpsampling, self).__init__(**kwargs)
        self.data_format = normalize_data_format(data_format)
        self.upsampling = normalize_tuple(upsampling, 2, 'size')
        self.input_spec = InputSpec(ndim=4)

    def compute_output_shape(self, input_shape):
        height = self.upsampling[0] * \
            input_shape[1] if input_shape[1] is not None else None
        width = self.upsampling[1] * \
            input_shape[2] if input_shape[2] is not None else None
        return (input_shape[0],
                height,
                width,
                input_shape[3])

    def call(self, inputs):
        return K.tf.image.resize_bilinear(inputs, (int(inputs.shape[1]*self.upsampling[0]),
                                                   int(inputs.shape[2]*self.upsampling[1])))

    def get_config(self):
        config = {'size': self.upsampling,
                  'data_format': self.data_format}
        base_config = super(BilinearUpsampling, self).get_config()
        return dict(list(base_config.items()) + list(config.items()))

# 定义xception的下采样模块
def xception_downsample_block(x, channels, top_relu=False):
    ##separable conv1
    if top_relu:
        x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(channels, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)

    ##separable conv2
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(channels, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)

    ##separable conv3
    x = DepthwiseConv2D((3, 3), strides=(2, 2), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(channels, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    return x

# 定义一个res的xception的下采样模块
def res_xception_downsample_block(x,channels):
	res=Conv2D(channels,(1,1),strides=(2,2),padding="same",use_bias=False)(x)
	res=BatchNormalization()(res)
	x=xception_downsample_block(x,channels)
	x=add([x,res])
	return x

# 定义一个xception的卷积模块
def xception_block(x, channels):
    ##separable conv1
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(channels, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)

    ##separable conv2
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(channels, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)

    ##separable conv3
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(channels, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    return x

# 定义一个res_xception模块
def res_xception_block(x,channels):
	res=x
	x=xception_block(x,channels)
	x=add([x,res])
	return x

# 定义一个aspp模块
def aspp(x, input_shape, out_stride):
    b0 = Conv2D(256, (1, 1), padding="same", use_bias=False)(x)
    b0 = BatchNormalization()(b0)
    b0 = Activation("relu")(b0)

    b1 = DepthwiseConv2D((3, 3), dilation_rate=(6, 6), padding="same", use_bias=False)(x)
    b1 = BatchNormalization()(b1)
    b1 = Activation("relu")(b1)
    b1 = Conv2D(256, (1, 1), padding="same", use_bias=False)(b1)
    b1 = BatchNormalization()(b1)
    b1 = Activation("relu")(b1)

    b2 = DepthwiseConv2D((3, 3), dilation_rate=(12, 12), padding="same", use_bias=False)(x)
    b2 = BatchNormalization()(b2)
    b2 = Activation("relu")(b2)
    b2 = Conv2D(256, (1, 1), padding="same", use_bias=False)(b2)
    b2 = BatchNormalization()(b2)
    b2 = Activation("relu")(b2)

    b3 = DepthwiseConv2D((3, 3), dilation_rate=(12, 12), padding="same", use_bias=False)(x)
    b3 = BatchNormalization()(b3)
    b3 = Activation("relu")(b3)
    b3 = Conv2D(256, (1, 1), padding="same", use_bias=False)(b3)
    b3 = BatchNormalization()(b3)
    b3 = Activation("relu")(b3)

    out_shape = int(input_shape[0] / out_stride)
    b4 = AveragePooling2D(pool_size=(out_shape, out_shape))(x)
    b4 = Conv2D(256, (1, 1), padding="same", use_bias=False)(b4)
    b4 = BatchNormalization()(b4)
    b4 = Activation("relu")(b4)
    b4 = BilinearUpsampling((out_shape, out_shape))(b4)

    x = Concatenate()([b4, b0, b1, b2, b3])
    return x


def deeplabv3_plus(input_shape=(512, 512, 3), out_stride=16, num_classes=21):
    img_input = Input(shape=input_shape)
    x = Conv2D(32, (3, 3), strides=(2, 2), padding="same", use_bias=False)(img_input)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = Conv2D(64, (3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)

    x = res_xception_downsample_block(x, 128)

    res = Conv2D(256, (1, 1), strides=(2, 2), padding="same", use_bias=False)(x)
    res = BatchNormalization()(res)
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(256, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(256, (1, 1), padding="same", use_bias=False)(x)
    skip = BatchNormalization()(x)
    x = Activation("relu")(skip)
    x = DepthwiseConv2D((3, 3), strides=(2, 2), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(256, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = add([x, res])

    x = xception_downsample_block(x, 512, top_relu=True)

    for i in range(8):
        x = res_xception_block(x, 512)

    res = Conv2D(1024, (1, 1), padding="same", use_bias=False)(x)
    res = BatchNormalization()(res)
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(512, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(1024, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(1024, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = add([x, res])

    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(1024, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(1024, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Conv2D(2048, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)

    # aspp
    x = aspp(x, input_shape, out_stride)
    x = Conv2D(256, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = Dropout(0.9)(x)

    ##decoder
    x = BilinearUpsampling((4, 4))(x)
    dec_skip = Conv2D(48, (1, 1), padding="same", use_bias=False)(skip)
    dec_skip = BatchNormalization()(dec_skip)
    dec_skip = Activation("relu")(dec_skip)
    x = Concatenate()([x, dec_skip])

    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = Conv2D(256, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)

    x = DepthwiseConv2D((3, 3), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)
    x = Conv2D(256, (1, 1), padding="same", use_bias=False)(x)
    x = BatchNormalization()(x)
    x = Activation("relu")(x)

    x = Conv2D(num_classes, (1, 1), padding="same")(x)
    x = BilinearUpsampling((4, 4))(x)

    # 添加softmax层
    x = Reshape((-1,num_classes))(x)
    output = Softmax()(x)

    model = Model(img_input, output)

    return model

DeepLabV3+ 基本原理及Pytorch版注解 1.原理图 注意的地方: A.用到的sync_batchnorm.batchnorm比归一化包,pytorch版本的可以在https://github.com/acgtyrant/Synchronized-BatchNorm-PyTorch下载 B.在python2.7中,引用的队列是大写import Queue import math import torch import torch.nn as nn import torch.nn.functional a... 阅读详情

相关推荐

DeepLab系列

DeepLab V1: AFully Connected CRFs Dilated Conv & Receptive Field CRFs for accurate localization Deeplab V2: astrous spatial pyramid pooling DeepLab是Google团队一系列semantic image segmentation的...

Victor的草原 1万+

CV07-DeepLab v3+笔记

Deeplab v3+笔记,记录一些自己认为重要的要点,以免日后遗忘。 Deeplab v3+将特征提取阶段最后几个layer的conv(图片中黄色部分)变成了dilated conv,使分辨率不再降低,但感受野保持不变。也就是说这样在保留位置信息的同时,语义信息保持不变。 一、Dilated Convolution 膨胀卷积 Dilated Convolution膨胀卷积在语义分割(D...

福来阁86号技师的妖孽日常 2797

计算机视觉的应用25-关于Deeplab系列语义分割模型的应用场景,以及空洞卷积的介绍

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用25-关于Deeplab系列语义分割模型的应用场景,以及空洞卷积的介绍。Deeplab是Google研发的一系列深度学习模型,主要用于图像语义分割任务,其在众多应用场景中展现出卓越性能,如自动驾驶、医学影像分析、遥感图像处理、无人机场景理解等。该模型通过精确地对图像中的每个像素进行分类,实现图像内容的细粒度理解与解析。

微学AI的博客 2052

VGG16网络架构的一些知识点

VGG16的网络架构非常简单明了,使用了堆叠的卷积层和全连接层,并在每个卷积层之后进行池化操作。较多的参数:由于VGG16具有多个卷积层和全连接层,它的参数数量相对较大,导致模型的存储空间和计算成本较高。较小的卷积核:VGG16使用较小尺寸的3x3卷积核进行特征提取,这种设计有助于增加网络的深度和非线性表达能力,提高模型的准确性。有效的参数共享:由于VGG16的卷积层使用相同大小的卷积核,导致参数共享,减少了参数数量,提高了模型的效率和训练速度。添加全连接层:在卷积层之后,添加全连接层用于分类或预测任务。

qq_63543605的博客 2190

Deeplab相关改进的阅读记录(Deeplab V3和Deeplab V3+)

前言: {     Deeplab目前最新的版本是V3+,这个系列一直都有不错的语义分割表现,所以这一次我还是选择了它来了解一下。     论文地址:https://arxiv.org/pdf/1706.05587v1.pdf(Deeplab V3);和https://arxiv.org/pdf/1802.02611.pdf(Deeplab V3+) }   正文: {     D...

fish_like_apple的博客 1万+

【计算机视觉】语义分割实战:FCN、U-Net与DeepLab系列详解

语义分割实战:FCN、U-Net与DeepLab系列详解,人工智能、大模型、AI深度学习在计算机视觉领域取得了令人瞩目的进展,语义分割作为计算机视觉领域的关键任务,旨在将图像中的每个像素都分配到特定的类别中,实现对图像内容的精细理解。与目标检测关注物体的类别与位置不同,语义分割能够对场景中的所有元素进行像素级别的分类,这在自动驾驶、医学图像分析、遥感图像解译等众多领域都有着至关重要的应用。例如,在自动驾驶中,准确的语义分割可以帮助车辆识别道路、行人、交通标志等,为安全行驶提供决策依据;在医学图像分析中……

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 9万+

一文速览!语义分割算法盘点

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达导读图像语义分割是图像处理和是机器视觉技术中关于图像理解的重要任务。语义分割即是对图像中每一个像素点进行分类,确定每个点的类别,从而进行区域划分,为了能够帮助大家更好的了解语义分割领域,我们精选知乎文章。作者Xavier CHEN针对语义分割进行系统的介绍,从原理解析到算法发展总结,文章思路清晰,总结全面,推荐大家阅读。本文作者...

小白学视觉 1880

完整IC设计流程解析&Makefile学习

本文介绍了decorder38项目的文件结构、自动化综合流程和Makefile使用方法。项目包含RTL到GDSII全流程文件,重点关注syn目录中的综合脚本。通过make dc命令运行综合流程,生成网表、约束和时序文件。关键报告如qor.rpt、area.rpt和min_vio.rpt用于分析综合质量、面积和时序。Makefile部分解释了其基本语法、IC设计中的典型结构,包括目标定义、命令执行和特殊声明,强调了其在自动化构建和依赖管理中的重要性。

m0_63352623的博客 856

基于超大尺寸图像的语义分割论文和代码汇总

文章目录2021Progressive Semantic Segmentation(CVPR)High Quality Segmentation for Ultra High-resolution Images 2021 Progressive Semantic Segmentation(CVPR) code : https://github.com/VinAIResearch/MagNet 摘要: 这项工作的目的是分割高分辨率的图像,而不超载GPU内存的使用或丢失输出分割地图中的细节。内存约束意味着我们要

如果想成为中心,那么就到中心去吧。 1万+

VSCode + ESP-IDF 项目搭建及配置

VSCode 搭建 ESP-IDF 开发环境

weixin_51358957的博客 2万+

ComfyUI 的 LoRA 训练:秋叶 LoRA-scripts 参数设置与测试方法详解

秋叶 LoRA-scripts 的参数设置需结合理论(如模型原理、优化器机制)和硬件条件(显存、算力),新手可先按推荐值起步,再逐步调整。测试时,loss 值帮你判断训练是否正常,XYZ 图表法帮你找到最佳使用参数。掌握这些知识,你就能避开 LoRA 训练的常见坑,从 “盲目调参” 变为 “精准训练”。

2301_78150483的博客 2403

图像语义分割网络DeepLab-v3+

文章目录1. 图像分割任务2. 常用数据集3. 语义分割4. DeepLab系列网络总结对比4.1 基础知识编码器/解码器(encoder/decoder)结构卷积运算空洞卷积或者膨胀卷积DCNN4.2 DeepLab-v14.3 DeepLab-v24.4 DeepLab-v34.5 DeepLab-v3+各种版本的DeepLab总结对比5. DeepLab-v3+网络结构和原理5.1 DeepLab-v3结构特点主要特点获取多尺度上下文的架构比较采用级联模块和带孔卷积提取多尺度信息具有图像级功能的AS

我是天才很好 3426

visionpro官方示例分析(一) 模板匹配工具 缺陷检测工具

使用CogPMAlignTool工具,该工具是模板匹配工具,见名知意,所谓模板匹配工具就是说先使用该工具对一张图像建立模板,然后用这个模板在其他图像上进行匹配,匹配上了就说明找到了,匹配不上就说明没有找到。

sc_1313的博客 1925

语义分割--DeepLab系列总结

本文是对语义分割领域的优秀模型DeepLab系列进行的总结。 一、空洞卷积Atrous Convolution 空洞卷积,也称之为膨胀(dilated)卷积,经常用在小波变换上,现在被应用在卷积网络中。空洞卷积的操作与常规卷积相比,多了一个“rate”参数。 上图是1维空洞卷积示例(pad=n表示在左右两边都进行填充n个零输入): 当rate=1时(上图),就是常规卷积,每一个输出特征(绿色)对应三个位置上连续的输入特征,即采样的间隔为0。 当rate>1时(下图),就是空洞卷积,每个输

LawGeorge的博客 951

Doris实战——结合Flink构建极速易用的实时数仓

Doris实战——结合Flink构建极速易用的实时数仓

爱吃辣条的博客 8234

【软考】系统集成项目管理工程师(一)信息化知识

软考中级——系统集成项目管理工程师备考干货第一章:信息化知识。

商务合作 | 共同学习 | 携手共进 9万+

语义分割之deeplab系列(一)

语义分割之deeplab系列(一)语义分割何为语义分割应用领域面临的挑战Deeplab系列二级标题三级标题四级标题一级标题二级标题三级标题四级标题参考文献二级标题三级标题四级标题 语义分割 何为语义分割 应用领域 面临的挑战 Deeplab系列 二级标题 三级标题 四级标题 一级标题 二级标题 三级标题 四级标题 参考文献 二级标题 三级标题 四级标题 ...

qq_34852379的博客 890

YOLO11改进:轻量级改进 | 通用倒瓶颈(UIB)搜索块结合C3k2二次创新 | 轻量化之王MobileNetV4

通用倒瓶颈(UIB)搜索块替代YOLO11的C3k2

会AI的学姐 294

语义分割(FCN,UNET,DEEPLAB)

语义分割(FCN,UNET,DEEPLAB) 语义分割的目的是对图像中的每一个像素点进行分类,从而确定每个像素点所属的类别。(从像素级别进行分类) 1.FCN(Fully Convolustional Networks) VGG和Resnet等CNN网络通过在网络最后加入全连接层,然后再经过softmax获得类别的概率信息,得到的一维概率信息可以对整张图片的类别进行识别。FCN提出将网络后边的全连接层全部换成卷积,从而得到二维的特征图(feature map),使用反卷积层对特征图进行上采样,恢复到与图像相

space_dandy的博客 2845

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

语义分割模型-DeepLab

语义分割模型-DeepLab 介绍下DeepLab系列,由谷歌推出的针对语义分割的模型,到目前为止,共有四个版本,这里重点介绍下前两个版本,由于时间原因,并没有来得及读v3+的论文 针对其中用到的主要方法,和大家分享下 空洞卷积 结构化预测—全连接的CRF 多尺度预测—ASPP 空洞卷积 空洞卷积(Dilated Convolution/Atrous Convolution):在标准卷积核的两...

qq_36183496的博客 947

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

语义分割丨DeepLab系列总结「v1、v2、v3、v3+」

花了点时间梳理了一下DeepLab系列的工作,主要关注每篇工作的背景和贡献,理清它们之间的联系,而实验和部分细节并没有过多介绍,请见谅。 DeepLabv1 Semantic image segmentation with deep convolutional nets and fully connected CRFs link:https://arxiv.org/pdf/1412.7062v3....

weixin_33909059的博客 3435

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

语义分割网络总结:FCN、SegNet、U-Net、PSPNet、RefineNet到DeepLab v1~v3+

语义分割梳理 写这篇博客也是想主要梳理一下最流行的几个语义分割网络,并且做一个小总结。接下来将从2014年的FCN到2018年的DeepLabv3+,来描述几个基于FCNs的深度语义分割网络的结构是如何变化。 值得注意的是语义分割的任务是基于像素点的密集预测任务,其目的是将输入图像的每个像素分配一个寓意类别。 FCNs(全卷积神经网络) 在之前基于CNN的分割网络中存在两个问题: ...

qq_19329785的博客 5398

语义分割DeepLab v1/v2/v3系列网络模型

语义分割DeepLab v1/v2/v3系列网络模型

IT菜鸟 1919

语义分割之FCN、Deeplab V3+

1、相关参考链接 基本概念: 语义分割 三维语义分割 空洞卷积 两篇综述 最新论文: LEDNet 这里将语义分割网络分为两类:一类是以FCN为代表的“encode-decode”,另一类是以Deeplab为代表的“dilate convolution”(空洞卷积网络)。 2、从FCN讲起 FCN(Fully Convolutional Networks for Semantic Segmenta...

DaGongJiGuoMaLu09的博客 6832
上一篇: 【语义分割专题】语义分割相关工作--Multi-Scale Context Aggregation by Dilated Convolution
下一篇: 【语义分割专题】语义分割相关工作--DANet
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值