【GhostNet】复现CVPR2020| 保证模型轻量化的同时,提升网络的性能表现

简介: 【GhostNet】复现CVPR2020| 保证模型轻量化的同时,提升网络的性能表现

前言

  近年来,随着深度学习技术的快速发展,越来越多的神经网络架构被提出。其中,GhostNet是一个备受关注的网络架构,其提出的主要目的是在保证模型轻量化的同时,提升网络的性能表现。GhostNet的设计思想独特,引入了ghost module这一新的网络模块,并采用了一系列的优化方法。本篇博客将详细介绍GhostNet的原理、优点以及应用场景,以及其在图像分类任务上的性能表现。

GhostNet

原理

  出于对轻量化神经网络的需求,ghost module采用了“组卷积”和“通道分组”两种技术,可以将输入特征图拆分成两个子特征图,分别进行不同的卷积操作。其中,一个子特征图较小,被称为ghost feature map,另一个子特征图较大,被称为primary feature map。ghost feature map负责提取局部信息,primary feature map负责提取全局信息。

image.png

  最后将两个子特征图合并起来,形成最终的输出特征图。这种方式可以在不增加太多参数和计算复杂度的前提下,提高模型的表现能力。

优点

更轻量化

  GhostNet在保证模型性能的同时,大大减小了模型的体积和参数量,使得模型更加轻量化。这对于在计算资源有限的情况下使用深度学习模型非常重要,例如在嵌入式设备或者移动端设备中部署模型。

更高效

  由于引入了ghost module,GhostNet在一定程度上减少了计算量和内存开销。这使得模型在推理阶段具有更高的速度和更低的能耗。

更好的表现

  GhostNet通过引入新的网络模块和优化方法,可以在保证模型轻量化的前提下,提高模型的表现能力。在图像分类等任务上,GhostNet的表现甚至超过了传统的卷积神经网络。

更适合端到端训练

  GhostNet采用了一种新型的训练方法,称为low-rank decomposition,这种方法可以更好地适应端到端训练。与传统的方法相比,low-rank decomposition可以减少模型的过拟合问题。

性能

ImageNet数据集上的Top-1精度vsFLOPs。

image.png

ImageNet数据集上的Top-1精度vs延迟:

image.png

在当前较为先进的小型网络在ImageNet数据集上的分类精度、权重和flop的比较:

image.png

实现

ini

复制代码

import torch
import torch.nn as nn
import math
class GhostModule(nn.Module):
    def __init__(self, inp, oup, kernel_size=1, ratio=2, dw_size=3, stride=1, relu=True):
        super(GhostModule, self).__init__()
        self.oup = oup
        init_channels = math.ceil(oup / ratio)
        new_channels = init_channels*(ratio-1)
        self.primary_conv = nn.Sequential(
            nn.Conv2d(inp, init_channels, kernel_size, stride, kernel_size//2, bias=False),
            nn.BatchNorm2d(init_channels),
            nn.ReLU(inplace=True) if relu else nn.Sequential(),
        )
        self.cheap_operation = nn.Sequential(
            nn.Conv2d(init_channels, new_channels, dw_size, 1, dw_size//2, groups=init_channels, bias=False),
            nn.BatchNorm2d(new_channels),
            nn.ReLU(inplace=True) if relu else nn.Sequential(),
        )
    def forward(self, x):
        x1 = self.primary_conv(x)
        x2 = self.cheap_operation(x1)
        out = torch.cat([x1,x2], dim=1)
        return out[:,:self.oup,:,:]
if __name__ == "__main__":
    x = torch.zeros(1, 3, 640, 640)
    model = GhostModule(inp=3, oup=64)
    y = model(x)
    print(y.shape)



相关文章
|
3天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
26 1
|
8天前
|
监控 安全 BI
什么是零信任模型?如何实施以保证网络安全?
随着数字化转型,网络边界不断变化,组织需采用新的安全方法。零信任基于“永不信任,永远验证”原则,强调无论内外部,任何用户、设备或网络都不可信任。该模型包括微分段、多因素身份验证、单点登录、最小特权原则、持续监控和审核用户活动、监控设备等核心准则,以实现强大的网络安全态势。
|
25天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
64 7
|
1月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
87 2
|
1月前
|
运维 网络协议 算法
7 层 OSI 参考模型:详解网络通信的层次结构
7 层 OSI 参考模型:详解网络通信的层次结构
170 1
|
2月前
|
机器学习/深度学习
YOLOv10优改系列一:YOLOv10融合C2f_Ghost网络,让YoloV10实现性能的均衡
本文介绍了YOLOv10的性能优化,通过融合Ghost模块和C2f结构,实现了网络性能的均衡。GhostNet通过GhostModule和GhostBottleNeck减少参数量,适用于资源有限的场景。YOLOv10-C2f_Ghost在减少参数和计算量的同时,保持了与原始网络相当或更好的性能。文章还提供了详细的代码修改步骤和可能遇到的问题解决方案。
298 1
YOLOv10优改系列一:YOLOv10融合C2f_Ghost网络,让YoloV10实现性能的均衡
|
1月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
2月前
|
缓存 监控 前端开发
优化网络应用的性能
【10月更文挑战第21天】优化网络应用的性能
38 2
|
1月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
87 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2融合YOLO-MS的MSBlock : 分层特征融合策略,轻量化网络结构
【YOLO11改进 - C3k2融合】C3k2融合YOLO-MS的MSBlock : 分层特征融合策略,轻量化网络结构