『深度学习笔记』CNN 网络设计中精巧通用的“小”插件

深度学习八大神经网络实战速通:从CNN到Transformer的代码实现与部署 深度学习作为人工智能的核心技术,通过构建多层神经网络模型,能够从数据中自动学习特征与模式。其核心原理在于利用反向传播算法优化网络参数,以最小化预测误差。这项技术的价值在于能够处理图像、文本、序列等复杂数据,实现分类、预测、生成等高级智能任务,广泛应用于计算机视觉、自然语言处理、推荐系统等领域。本文聚焦于CNN、RNN、GAN、Transformer等八大经典神经网络,通过PyTorch和TensorFlow框架,提供从环境搭建、模型训练到效果验证的完整实战路径,帮助初学者快速建立深度学习知识体系,掌握核心模 阅读详情


前言

  • 所谓“插件”,就是要能锦上添花,又容易植入、落地,即真正的即插即用。本文盘点的“插件”能够提升 CNN 平移、旋转、scale 等变性能力或多尺度特征提取,感受野等能力,在很多 SOTA 网络中都会看到它们的影子。
  • 所谓“插件”,就是不改变网络主体结构, 可以很容易嵌入到主流网络当中,提高网络提取特征的能力,能够做到plug-and-play

一、STN (空间变换器)

在这里插入图片描述

1.1 核心解析

  • 在 OCR 等任务中,你会经常看到它的身影。对于 CNN 网络,我们希望其具有对物体的姿态、位置等有一定的不变性。即在测试集上可以适应一定的姿态、位置的变化。不变性或等变性可以有效提高模型泛化能力。虽然 CNN 使用 sliding-window 卷积操作,在一定程度上具有平移不变性。但很多研究发现,下采样会破坏网络的平移不变性。所以可以认为网络的不变性能力非常弱,更不用说旋转、尺度、光照等不变性。一般我们利用数据增强来实现网络的“不变性”。
  • 本文提出 STN 模块,显式将空间变换植入到网络当中,进而提高网络的旋转、平移、尺度等不变性。可以理解为“对齐”操作。STN 的结构如上图所示,每一个 STN 模块由 Localisation net(本地网络),Grid generator(网格生成器) 和 Sampler(采样器) 三部分组成。
  1. Localisation net 用于学习获取空间变换的参数,就是上式中的六个参数。
  2. Grid generator 用于坐标映射。
  3. Sampler 用于像素的采集,是利用双线性插值的方式进行。

1.2 核心代码

class SpatialTransformer(nn.Module):
    def __init__(self, spatial_dims):
        super(SpatialTransformer, self).__init__()
        self._h, self._w = spatial_dims 
        self.fc1 = nn.Linear(32*4*4, 1024) # 可根据自己的网络参数具体设置
        self.fc2 = nn.Linear(1024, 6)

    def forward(self, x): 
        batch_images = x #保存一份原始数据
        x = x.view(-1, 32*4*4)
        # 利用 FC 结构学习到 6 个参数
        x = self.fc1(x)
        x = self.fc2(x) 
        x = x.view(-1, 2,3) # 2x3
        # 利用 affine_grid 生成采样点
        affine_grid_points = F.affine_grid(x, torch.Size((x.size(0), self._in_ch, self._h, self._w)))
        # 将采样点作用到原始数据上
        rois = F.grid_sample(batch_images, affine_grid_points)
        return rois, affine_grid_points

二、ASPP

在这里插入图片描述

2.1 核心解析

  • 本插件是带有空洞卷积的空间金字塔池化模块,主要是为了提高网络的感受野,并引入多尺度信息而提出的。我们知道,对于语义分割网络,通常面临是分辨率较大的图片,这就要求我们的网络有足够的感受野来覆盖到目标物体。对于 CNN 网络基本是靠卷积层的堆叠加上下采样操作来获取感受野的。本文的该模块可以在不改变特征图大小的同时控制感受野,这有利于提取多尺度信息。其中 rate 控制着感受野的大小,r 越大感受野越大。
  • ASPP 主要包含以下几个部分:
  1. 一个全局平均池化层得到 image-level 特征,并进行 1X1 卷积,并双线性插值到原始大小;
  2. 一个 1X1 卷积层,以及三个 3X3 的空洞卷积;
  3. 将 5 个不同尺度的特征在 channel 维度 concat 在一起,然后送入 1X1 的卷积进行融合输出。

2.2 核心代码

class ASPP(nn.Module):
    def __init__(self, in_channel=512, depth=256):
        super(ASPP,self).__init__()
        self.mean = nn.AdaptiveAvgPool2d((1, 1))
        self.conv = nn.Conv2d(in_channel, depth, 1, 1)
        self.atrous_block1 = nn.Conv2d(in_channel, depth, 1, 1)
        # 不同空洞率的卷积
        self.atrous_block6 = nn.Conv2d(in_channel, depth, 3, 1, padding=6, dilation=6)
        self.atrous_block12 = nn.Conv2d(in_channel, depth, 3, 1, padding=12, dilation=12)
        self.atrous_block18 = nn.Conv2d(in_channel, depth, 3, 1, padding=18, dilation=18)
        self.conv_1x1_output = nn.Conv2d(depth * 5, depth, 1, 1)

    def forward(self, x):
        size = x.shape[2:]
     	# 池化分支
        image_features = self.mean(x)
        image_features = self.conv(image_features)
        image_features = F.upsample(image_features, size=size, mode='bilinear')
     	# 不同空洞率的卷积
        atrous_block1 = self.atrous_block1(x)
        atrous_block6 = self.atrous_block6(x)
        atrous_block12 = self.atrous_block12(x)
        atrous_block18 = self.atrous_block18(x)
        # 汇合所有尺度的特征
     	x = torch.cat([image_features, atrous_block1, atrous_block6,atrous_block12, atrous_block18], dim=1)
        # 利用1X1卷积融合特征输出
        x = self.conv_1x1_output(x)
        return net

三、Non-local

在这里插入图片描述

3.1 核心解析

Non-Local 是一种 attention 机制,也是一个易于植入和集成的模块。Local 主要是针对感受野(receptive field)来说的,以 CNN 中的卷积操作和池化操作为例,它的感受野大小就是卷积核大小,而我们常用 3X3 的卷积层进行堆叠,它只考虑局部区域,都是 local 的运算。不同的是,non-local 操作感受野可以很大,可以是全局区域,而不是一个局部区域。捕获长距离依赖(long-range dependencies),即如何建立图像上两个有一定距离的像素之间的联系,是一种注意力机制。所谓注意力机制就是利用网络生成 saliency map,注意力对应的是显著性区域,是需要网络重点关注的区域。

具体实现步骤:

  • 首先分别对输入的特征图进行 1X1的卷积来压缩通道数,得到 θ , ϕ , g \theta, \phi, g θ,ϕ,g 特征。
  • 通过 reshape 操作,转化三个特征的维度,然后对进行矩阵乘操作,得到类似协方差矩阵, 这一步为了计算出特征中的自相关性,即得到每帧中每个像素对其他所有帧所有像素的关系。
  • 然后对自相关特征进行 Softmax 操作,得到 0~1 的 weights,这里就是我们需要的 Self-attention 系数。
  • 最后将 attention 系数,对应乘回特征矩阵 g 上,与原输入 feature map X 残差相加输出即可。

3.2 核心代码

class NonLocal(nn.Module):
    def __init__(self, channel):
        super(NonLocalBlock, self).__init__()
        self.inter_channel = channel // 2
        self.conv_phi = nn.Conv2d(channel, self.inter_channel, 1, 1,0, False)
        self.conv_theta = nn.Conv2d(channel, self.inter_channel, 1, 1,0, False)
        self.conv_g = nn.Conv2d(channel, self.inter_channel, 1, 1, 0, False)
        self.softmax = nn.Softmax(dim=1)
        self.conv_mask = nn.Conv2d(self.inter_channel, channel, 1, 1, 0, False)

    def forward(self, x):
        # [N, C, H , W]
        b, c, h, w = x.size()
        # 获取phi特征,维度为[N, C/2, H * W],注意是要保留batch和通道维度的,是在HW上进行的
        x_phi = self.conv_phi(x).view(b, c, -1)
        # 获取theta特征,维度为[N, H * W, C/2]
        x_theta = self.conv_theta(x).view(b, c, -1).permute(0, 2, 1).contiguous()
        # 获取g特征,维度为[N, H * W, C/2]
        x_g = self.conv_g(x).view(b, c, -1).permute(0, 2, 1).contiguous()
        # 对phi和theta进行矩阵乘,[N, H * W, H * W]
        mul_theta_phi = torch.matmul(x_theta, x_phi)
        # softmax拉到0~1之间
        mul_theta_phi = self.softmax(mul_theta_phi)
        # 与g特征进行矩阵乘运算,[N, H * W, C/2]
        mul_theta_phi_g = torch.matmul(mul_theta_phi, x_g)
        # [N, C/2, H, W]
        mul_theta_phi_g = mul_theta_phi_g.permute(0, 2, 1).contiguous().view(b, self.inter_channel, h, w)
        # 1X1卷积扩充通道数
        mask = self.conv_mask(mul_theta_phi_g)
        out = mask + x # 残差连接
        return out

四、SE

在这里插入图片描述

4.1 核心解析

本文是 ImageNet 最后一届比赛的冠军作品,你会在很多经典网络结构中看到它的身影,例如 Mobilenet v3。其实是一种通道注意力机制。由于特征压缩和FC的存在,其捕获的通道注意力特征是具有全局信息的。本文提出了一种新的结构单元—— “Squeeze-and Excitation(SE)” 模块,可以自适应的调整各通道的特征响应值,对通道间的内部依赖关系进行建模。

有以下几个步骤:

  • Squeeze: 沿着空间维度进行特征压缩,将每个二维的特征通道变成一个数,是具有全局的感受野。
  • Excitation: 每个特征通道生成一个权重,用来代表该特征通道的重要程度。
  • Reweight: 将 Excitation 输出的权重看做每个特征通道的重要性,通过相乘的方式作用于每一个通道上。

4.2 核心代码

class SE_Block(nn.Module):
    def __init__(self, ch_in, reduction=16):
        super(SE_Block, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)  # 全局自适应池化
        self.fc = nn.Sequential(
            nn.Linear(ch_in, ch_in // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(ch_in // reduction, ch_in, bias=False),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c) # squeeze操作
        y = self.fc(y).view(b, c, 1, 1) # FC获取通道注意力权重,是具有全局信息的
        return x * y.expand_as(x) # 注意力作用每一个通道上

五、CBAM

5.1 核心解析

  • SENet 在 feature map 的通道上进行 attention 权重获取,然后与原来的 feature map 相乘。这篇文章指出,该种 attention 方法只关注了通道层面上哪些层会具有更强的反馈能力,但是在空间维度上并不能体现出 attention。
  • CBAM 作为本文的亮点,将 attention 同时运用在 channel 和 spatial 两个维度上, CBAM 与 SE Module 一样,可以嵌入在大部分的主流网络中,在不显著增加计算量和参数量的前提下能提升模型的特征提取能力。

通道注意力: 如上图所示

  1. 首先,输入是一个 H×W×C 的特征 F,我们先分别进两个空间的全局平均池化和最大池化得到 两个 1×1×C 的通道描述。
  2. 再将它们分别送进一个两层的神经网络,第一层神经元个数为 C/r,激活函数为 Relu,第二层神经元个数为 C。注意,这个两层的神经网络是共享的。
  3. 然后,再将得到的两个特征相加后经过一个 Sigmoid 激活函数得到权重系数 Mc。
  4. 最后,拿权重系数和 原来的特征 F 相乘即可得到缩放后的新特征。

伪代码:

def forward(self, x):
    # 利用FC获取全局信息,和Non-local的矩阵相乘本质上式一样的
    avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x))))
    max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x))))
    out = avg_out + max_out
    return self.sigmoid(out)

空间注意力:

  • 与通道注意力相似,给定一个 H×W×C 的特征 F‘,我们先分别进行一个通道维度的平均池化和最大池化得到两个 H×W×1 的通道描述,并将这两个描述按照通道拼接在一起。然后,经过一个 7×7 的卷积层, 激活函数为 Sigmoid,得到权重系数 Ms。最后,拿权重系数和特征 F’ 相乘即可得到缩放后的新特征。

伪代码:

def forward(self, x):
    # 这里利用池化获取全局信息
    avg_out = torch.mean(x, dim=1, keepdim=True)
    max_out, _ = torch.max(x, dim=1, keepdim=True)
    x = torch.cat([avg_out, max_out], dim=1)
    x = self.conv1(x)
    return self.sigmoid(x)

待补全调整...

参考链接

  1. https://mp.weixin.qq.com/s/glQSmbuvRI6CV8EyfYLezw
PyTorch实现服装识别:CNN实战与优化技巧 卷积神经网络(CNN)作为计算机视觉的核心技术,通过局部感知和权值共享机制高效提取图像特征。其分层结构能自动学习从边缘到语义的抽象表示,在图像分类任务中展现出超越传统方法的性能优势。PyTorch框架凭借动态计算图和丰富的工具链,成为实现CNN模型的工业级首选。本文以Fashion-MNIST数据集为例,详解如何使用PyTorch构建包含数据增强、Dropout正则化的CNN分类器,并分享学习率调度、Early Stopping等工程实践技巧。该方案可迁移至电商商品识别、智能相册管理等实际场景,准确率达92 阅读详情

相关推荐

从零手动搭建ResNet18:PyTorch实战与CNN架构深度解析

卷积神经网络(CNN)是计算机视觉领域的核心架构,其通过卷积层、池化层等模块自动提取图像特征。ResNet(残差网络)通过引入残差连接(Residual Connection)这一关键创新,有效解决了深层网络中的梯度消失问题,使网络深度得以大幅增加,成为现代深度学习模型的基石。这一技术显著提升了模型在图像分类、目标检测等任务上的性能,被广泛应用于工业界和学术界。本文聚焦于ResNet18这一经典轻量级网络,通过PyTorch框架从零开始手动实现其完整结构,涵盖BasicBlock模块设计、维度匹配、权重初始

迷彩风情 399

上采样、反卷积、上池化的区别

上采样、反卷积、上池化的区别 最近,工作中遇到了一个小问题,就是pytorch转onnx转caffe转wk(海思相机NNIE支持的深度学习权重文件格式)的时候,最终输出的Tensor的值有些许差别,后来找到了原因:pytorch项目中使用的upsample中mode选择的是"bilinear",但是onnx2caffemodel的时候默认使用是的"nearest",最终就会导致二者输入Tensor的余弦相似度并不是99.9999%。所以,特地把上采样这一块最容易忽略的知识点领出来单独说说,以下内容要是有说的

weixin_42206075的博客 3531

高光谱图像处理:三维张量建模与双流CNN实战

高光谱成像是一种获取物体逐像素光谱响应的先进技术,其数据本质是三维张量而非普通图像,每个像素对应一条由数十至数百个波段构成的‘化学指纹’曲线。该技术依赖光谱维度的物理可解释性与空间维度的结构相关性,需通过联合建模实现物质成分识别与定量反演。三维卷积(3D-CNN)和双流CNN成为主流架构,前者显式建模空-谱耦合,后者解耦处理以兼顾效率与精度。在农业遥感、工业过程监控和医学诊断等场景中,合理波段选择、逐波段Z-score归一化及空间块裁剪是特征提取的关键预处理步骤。本文围绕高光谱数据结构特性,系统解析双流CN

weixin_28235513的博客 293

pytorch中的双线性插值上采样(Bilinear Upsampling)、F.upsample_bilinear

在Fully Convolutional Networks for Semantic Segmentation这篇文章中,介绍到Bilinear Upsampling这种上采样的方式,虽然文章最后用的是deconvolution,给出的理由就是不希望upsampling filter是固定的= =! 因为以前用的upsampling的方式是很简单的,比如放大两倍,就是把一个像素点复制一下变成四个。这样的做法会导致图像变得模糊。在介绍双线性插值前,先介绍一下线性插值。 其实说白了就很简单,就是两点确定一条线

m0_46378271的博客 1万+

pytorch中的上采样以及各种反操作,求逆操作详解

import torch.nn.functional as F import torch.nn as nn F.upsample(input, size=None, scale_factor=None,mode=’nearest’, align_corners=None) rUpsamples the input to either the given :attr:`size` or the given :attr:`scale_factor` The algorithm used for upsampling is determined by :attr:`mode`.

商品评论中的实体情感分析

在之前的文章中我已经将商品评论中的评价实体,也就是特征(feature)给挖掘出来了,我看了一下,挖掘的效果还是不错的。原文链接:http://blog.csdn.net/chixujohnny/article/details/52794685 下面一步要做的是施加情感因子,也就是说,要将人们评论时候所连带的感情程度施加一下。这项任务的归类应该是情感分析技术。 目前该类问题的情感分析技

chixujohnny 7971

pytorch中的上采样以及各种反操作,求逆操作

import torch.nn.functional as F import torch.nn as nn   F.upsample(input, size=None, scale_factor=None,mode='nearest', align_corners=None) r"""Upsamples the input to either the given :attr...

zz2230633069的博客 1万+

Foxglove Studio实战:5步搞定自动驾驶数据可视化(附避坑指南)

本文详细介绍了如何使用Foxglove Studio高效搭建自动驾驶数据可视化工作流。通过五个核心步骤:环境准备、数据导入、面板搭建、交互分析与自动化集成,帮助开发者快速掌握这一专为机器人系统设计的开源平台。文章重点解析了其与ROS/ROS 2、MCAP等数据源的无缝对接,以及3D点云、多传感器融合、团队标注等核心功能,并附有实用的性能优化与避坑指南,旨在提升算法调试与团队协作效率。

d3e4f的博客 337

pytorch 与 tensorrt upsample对应关系

pytorch:F.upsample(x, size=(H, W), mode='bilinear',align_corners=True) 对应trt: tensorrt: IResizeLayer* P5_resize = network->addResize(*P5->getOutput(0)); auto C4_shape = network->addShape(*C4->getOutput(0))->getOutput(0); P5_resi

无左无右的博客 1769

《从底层结构开始学习FPGA》目录与传送门

《从底层结构开始学习FPGA》目录与传送门

孤独的单刀 16万+

华为数字化转型之道 方法篇 第五章 视IT为投资,用产品思维管理IT

比较传统信息化和数字化转型下的IT系统特征,我们发现业务环境、IT能力、业务和IT的关系都发生了巨大的变化(见图5-1)从“管理系统”到“作业平台”。企业通常的做法是将线下的文档、流程线上化,IT系统是作为管理系统而存在的。而面向数字化,企业的业务作业、业务运营和决策、团队协同等业务动作已经和IT系统集成,IT系统逐步转变为作业系统。从“功能优先”到“体验优先”,如果要整体完成一项工作往往需要用户在不同系统间切换,费时费力。

沧海之巅的专栏 1095

UpSampling上采样相关技术

UpSampling上采样相关技术

IT菜鸟 5503

UE4动作游戏实例RPG Action解析二:GAS系统播放武器绑定的技能,以及GE效果

官方实例激活技能通过装备系统数据激活,我先用武器数据资产直接激活官方实例蒙太奇播放是自定义的AbilityTask,我先用更简单的方法实现效果1.1.1 插件启用AbilitySystem1.1.2 PlayerCharacter绑定技能组件AbilitySystemComponent 1.1.3 技能初始化,AbilitySystemComponent->GiveAbility 把上节获取到的默认武器绑定的技能GameAbility 添加到ASC组件 1.2、创建一个GameplayAbili

yuchenwuhen的专栏 1281

真正的即插即用!盘点11种CNN网络设计中精巧通用的“小”插件

点击上方“3D视觉工坊”,选择“星标”干货第一时间送达作者丨皮特潘编辑丨极市平台导读所谓“插件”,就是要能锦上添花,又容易植入、落地,即真正的即插即用。本文盘点的“插件”能够提升CNN...

3D视觉工坊 2576

GD32F4xx 移植agile_modbus软件包与电能表通信

GD32F4XX 移植agile modbus软件包实现与DTSU电能表通信调试记录

madao1234的博客 1306

黑猫带你学UFS协议第17篇:UFS安全模式详解(Secure Mode)

本文详细介绍了UFS协议中的安全模式,包括Erase, Discard, Purge和Wipe Device操作。Erase用于永久删除数据并确保无法恢复;Discard不保证数据清除;Purge类似于Sanitize,清除内部未映射的物理块数据;Wipe Device则是格式化设备。这些操作涉及逻辑单元、擦除单位、相关寄存器配置等,确保数据安全。" 126036669,12409270,MySQL 8.0 开窗函数详解,"['数据库理论', 'SQL']

黑猫奥利奥的博客 2560

【深度学习】真正的即插即用!盘点11种CNN网络设计中精巧通用的“小”插件...

作者丨皮特潘编辑丨极市平台导读所谓“插件”,就是要能锦上添花,又容易植入、落地,即真正的即插即用。本文盘点的“插件”能够提升CNN平移、旋转、scale等变性能力或多尺度特征提取,...

fengdu78的博客 3756

8.26华为OD机试真题 新系统 - 字符串回文判 (Java/Py/C/C++/Js/Go)

8.26华为OD机试真题 新系统 - 字符串回文判 (Java/Py/C/C++/Js/Go)

算法大师! 1236

深度学习 卷积神经网络即插即用的小插件

卷积神经网络即插即用的小插件前言小插件STNASPPNon-localSECBAMDCN v1&v2BlurPoolRFBASFF代码实现STNASPPNon-localSECBAMDCNBlurPoolRFBASFF 前言 本篇博客主要介绍卷积神经网络中的即插即用的模块。“即插即用的插件“意味着该插件能够快速复现,并且能够随时应用到神经网络中,容易植入,容易落地,真正做到“plug-and-play”。在之前的项目当中,使用yolov4已经涉及到一些模块,如channel attention、CB

Fantastic 7213

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

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

基于CNN的猫狗识别:从数据到部署的深度学习实践

卷积神经网络(CNN)作为计算机视觉的核心技术,通过局部感知和权值共享机制高效提取图像特征。在PyTorch框架下,利用预训练ResNet等模型进行迁移学习,可以快速实现高精度图像分类。本文以Kaggle猫狗数据集为例,详解数据清洗、增强策略、模型微调等关键技术环节,特别分享混合精度训练和模型剪枝等工程优化技巧。针对深度学习入门项目中常见的数据不均衡、过拟合等问题,提供数据增强和早停策略等解决方案。该实践不仅适用于毕业设计项目,也可扩展至工业级图像识别应用场景。

weixin_29046035的博客 224

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

自然信号的三大性质与 CNN 设计原理:从稀疏连接、参数共享到 MNIST 对照实验(NYU-DLSP20)

> 本讲内容源自 NYU Deep Learning Spring 2020(NYU-DLSP20)第 03 讲第三部分 *Properties of natural signals*(讲师 Alfredo Canziani),对应的波斯语讲义位于 [docs/fa/week03/03-3.md](https://link.gitcode.com/i/65226389bef469612dc45af

gitblog_00374的博客 174

Python镜像折叠深度学习项目实战解析

镜像折叠是计算机视觉中处理对称性问题的关键技术,通过深度学习模型自动检测物体的对称轴和对称特征。其核心原理是利用卷积神经网络提取特征,结合对称性注意力机制增强模型对镜像特征的感知能力。该技术在医学影像分析、工业质检等领域具有重要应用价值,能显著提升对称物体检测和缺陷识别的准确率。典型的实现方案包括PyTorch框架下的对称性检测网络、数据增强策略以及特殊的损失函数设计。通过CNN骨干网络与注意力模块的结合,配合保持对称性的数据增强方法,可以有效解决实际工程中的镜像折叠问题。

agtvo48266的专栏 343

基于CNN的罗马数字识别实战:从数据预处理到模型部署

计算机视觉中的字符识别是深度学习经典应用场景,其中卷积神经网络(CNN)通过局部感知和权值共享机制,能有效提取字符的笔画、结构等空间特征。在OCR技术领域,罗马数字识别因其独特的组合规则和复杂背景,成为检验模型鲁棒性的典型案例。通过PyTorch框架实现端到端的训练pipeline,开发者可以掌握数据增强、模型轻量化等工程实践技巧。本项目重点解决古文献数字识别中的倾斜矫正、背景干扰等实际问题,其技术方案也可迁移到车牌识别、验证码破解等应用场景。特别在数据预处理环节,针对羊皮纸纹理等噪声的模拟增强策略,能显著

weixin_29531177的博客 34

GAN深度学习实战:从零构建生成对抗网络

生成对抗网络(GAN)是深度学习领域的重要架构,通过生成器与判别器的对抗训练实现数据生成。其核心原理基于博弈论中的纳什均衡,生成器试图生成逼真样本欺骗判别器,而判别器则努力区分真实与生成数据。这种机制在图像生成、数据增强等领域展现出巨大技术价值。使用TensorFlow或PyTorch框架实现DCGAN时,需掌握转置卷积、批量归一化等关键技术,并解决模式崩溃等典型问题。本教程以Fashion-MNIST数据集为例,详细讲解GAN的PyTorch实现与调优技巧,帮助开发者快速掌握这一热点技术。

weixin_29050271的博客 315

ComfyUI抠图插件大比拼:BEN vs BiRefNet-v2.0 vs RMBG-v2.0,哪个更适合你的项目?

本文深入评测了ComfyUI平台上三款主流抠图插件BEN、BiRefNet-v2.0和RMBG-v2.0的性能表现与适用场景。通过对比测试数据和技术分析,为不同项目需求(如电商产品图处理、人像精修、视频抠像等)提供选型建议,帮助用户根据精度、速度和硬件配置选择最佳工具。特别推荐BiRefNet-v2.0用于高精度人像抠图,RMBG-v2.0适合实时应用,BEN则在通用场景表现均衡。

app77的博客 183
上一篇: 『pytorch』Pytorch中的Distributed Data Parallel与混合精度训练(Apex)
下一篇: 『工程项目实践』条形码的检测与识别
libo-coder
博客等级 码龄11年 1万+粉丝 109原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

libo-coder

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

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

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

打赏作者

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

抵扣说明:

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

余额充值