【HetConv】基于异构内核的深度cnn卷积

简介: 【HetConv】基于异构内核的深度cnn卷积

前言

  在深度学习领域,卷积神经网络是非常重要的一类模型,它们在图像处理、自然语言处理、语音识别等多个领域都有广泛应用。然而,由于卷积操作的局限性,传统的卷积神经网络在处理非均匀、不规则的数据时会受到限制。为了克服这个问题,学者们提出了很多改进的卷积操作,其中就包括了本文要介绍的HetConv。与传统卷积相比,HetConv能够在处理非均匀、不规则的数据时发挥更强的效果,因此在实际应用中具有广泛的应用前景。接下来,我们将对HetConv的原理、优点和应用进行详细介绍。

HetConv

  在传统的卷积神经网络中,卷积操作是在均匀的网格状输入数据上进行的,例如图像数据就是一个二维矩阵,每个像素的位置和取值都是确定的。然而,在现实生活中,很多数据并不是均匀的网格状结构,而是具有不规则形状、不均匀分布的数据,例如点云数据、三维网格数据等。对于这些数据,传统的卷积操作就无法很好地处理,因为它们没有固定的排列方式。

原理

  为了解决这一问题在2019年德国马普学院的Yongheng Zhao等人提出了HetConv卷积算子, 它可以处理非均匀、不规则的输入数据。

image.png

  HetConv卷积的结构设计很简单,即输入特征图的一部分通道应用k×k的卷积核,其余的通道应用1×1的卷积核。其中,P为控制卷积核为k的比例。

image.png

贡献:

  1. 设计了一种高效的异构卷积滤波器(heterogeneous convolutional filter),它可以插入到任何现有架构中,以提高架构的效率(FLOPs减少3倍到8倍),而不牺牲准确性。
  2. 所提出的HetConv滤波器被设计成具有零延迟。因此,从输入到输出的延迟可以忽略不计。

与传统卷积比较

  HetConv具有处理非均匀、不规则数据、保留空间结构信息、处理局部特征和全局特征、自适应地学习输入数据拓扑结构等优点,因此在处理非均匀、不规则的数据时具有广泛的应用前景。具体如下:

  1. 能够处理非均匀、不规则的输入数据

  传统的卷积操作只能处理均匀的网格状数据,而对于非均匀、不规则的数据,如点云数据和三维网格数据,传统卷积操作无法处理。而HetConv基于图结构进行卷积操作,可以处理非均匀、不规则的输入数据,因此在处理这类数据时具有优势。

  1. 能够保留空间结构信息

  传统的卷积操作会破坏输入数据的空间结构信息,导致输出结果丢失空间位置的信息。而HetConv基于图结构进行卷积操作,可以保留输入数据的空间结构信息,输出结果具有空间位置的信息,因此在图像分割、目标检测等任务中具有优势。

  1. 能够处理局部特征和全局特征

  传统的卷积操作只能处理局部特征,而不能捕捉全局特征。而HetConv基于图结构进行卷积操作,可以同时处理局部特征和全局特征,因此在识别物体形状和结构等任务中具有优势。

  1. 能够自适应地学习输入数据的拓扑结构

  传统的卷积操作需要先设定输入数据的拓扑结构,而对于非均匀、不规则的数据,拓扑结构是不确定的。而HetConv可以自适应地学习输入数据的拓扑结构,因此在处理非均匀、不规则的数据时具有优势。

代码

python

复制代码

import torch
from torch import nn
class HetConv(nn.Module):
    def __init__(self, in_channels, out_channels, p=1):
        super(HetConv, self).__init__()
        # Groupwise Convolution
        self.gwc = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1, groups=p, bias=False)
        # Pointwise Convolution
        self.pwc = nn.Conv2d(in_channels, out_channels, kernel_size=1, bias=False)
    def forward(self, x):
        return self.gwc(x) + self.pwc(x)
if __name__ == "__main__":
    x = torch.zeros(1, 3, 640, 640)
    model = HetConv(in_channels=3, out_channels=64, p=1)
    y = model(x)
    print(y.shape)


相关文章
|
21天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络中的卷积层,如何提取图片的特征?
卷积神经网络中的卷积层,如何提取图片的特征?
29 0
|
1月前
|
机器学习/深度学习 存储 自然语言处理
卷积神经元网络CNN基础
卷积神经元网络CNN基础
37 1
|
1月前
|
机器学习/深度学习
大模型开发:解释卷积神经网络(CNN)是如何在图像识别任务中工作的。
**CNN图像识别摘要:** CNN通过卷积层提取图像局部特征,池化层减小尺寸并保持关键信息,全连接层整合特征,最后用Softmax等分类器进行识别。自动学习与空间处理能力使其在图像识别中表现出色。
24 2
|
1月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
4月前
|
机器学习/深度学习
CNN卷积神经网络手写数字集实现对抗样本与对抗攻击实战(附源码)
CNN卷积神经网络手写数字集实现对抗样本与对抗攻击实战(附源码)
39 0
|
3天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
11 0
|
4月前
|
机器学习/深度学习 存储 TensorFlow
【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)
【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)
115 0
|
11天前
|
机器学习/深度学习 数据采集 TensorFlow
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
29 0
|
1月前
|
机器学习/深度学习 人工智能 算法
详细介绍卷积神经网络(CNN)的原理 !!
详细介绍卷积神经网络(CNN)的原理 !!
78 0
|
2月前
|
机器学习/深度学习 编解码 计算机视觉
【OctaveConv】下降一个八度:用八度卷积减少卷积神经网络中的空间冗余
【OctaveConv】下降一个八度:用八度卷积减少卷积神经网络中的空间冗余
34 0
【OctaveConv】下降一个八度:用八度卷积减少卷积神经网络中的空间冗余

热门文章

最新文章

相关实验场景

更多