>>>深度学习Tricks,第一时间送达<<<


论文题目:《GhostNet:More Features from Cheap Operations》
论文地址:  https://arxiv.org/pdf/1911.11907v1.pdf

由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络(CNNs)是很困难的。特征图中的冗余性是这些成功cnn的一个重要特征,但在神经结构设计中很少被研究。本文提出了一种新的ghost模块,从廉价的操作中生成更多的特征映射。基于一组内在特征映射,应用一系列成本低廉的线性变换来生成许多幽灵特征映射,可以充分揭示内在特征背后的信息。提出的ghost模块可以作为即插即用组件来升级现有的卷积神经网络。 Ghost bottlenecks被设计为堆栈的ghost模块,可以很容易地建立轻量级的GhostNet。特征层中充足或者冗余的信息总是可以保证对输入数据的全面理解,而且特征层之间有很多是相似的,这些相似的特征层就像彼此的ghost (幻象)。考虑到特征层中冗余的信息可能是一个成功模型的重要组成部分,论文在设计轻量化模型时并没有试图去除这些冗余,而是用更低成本的计算量来获取它们。

由于嵌入式设备有限的内存和计算资源,在其上部署神经网络很困难,一般需要降低神经网络的大小和计算资源的占用。若将轻量型的Ghost模块与YOLOv5算法相结合,可大幅降低网络参数量,在满足模型轻量化的同时,还可以加快原始网络推理速度。

1.Ghost Module网络结构图

2.Ghost Module相应代码

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 = oupinit_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,:,:]

3.Ghost Bottlenecks网络结构图

 4.Ghost Bottlenecks相应代码

def depthwise_conv(inp, oup, kernel_size=3, stride=1, relu=False):return nn.Sequential(nn.Conv2d(inp, oup, kernel_size, stride, kernel_size//2, groups=inp, bias=False),nn.BatchNorm2d(oup),nn.ReLU(inplace=True) if relu else nn.Sequential(),)class SELayer(nn.Module):def __init__(self, channel, reduction=4):super(SELayer, self).__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.fc = nn.Sequential(nn.Linear(channel, channel // reduction),nn.ReLU(inplace=True),nn.Linear(channel // reduction, channel),        )def forward(self, x):b, c, _, _ = x.size()y = self.avg_pool(x).view(b, c)y = self.fc(y).view(b, c, 1, 1)y = torch.clamp(y, 0, 1)return x * yclass GhostBottleneck(nn.Module):def __init__(self, inp, hidden_dim, oup, kernel_size, stride, use_se):super(GhostBottleneck, self).__init__()assert stride in [1, 2]self.conv = nn.Sequential(# pwGhostModule(inp, hidden_dim, kernel_size=1, relu=True),# dwdepthwise_conv(hidden_dim, hidden_dim, kernel_size, stride, relu=False) if stride==2 else nn.Sequential(),# Squeeze-and-ExciteSELayer(hidden_dim) if use_se else nn.Sequential(),# pw-linearGhostModule(hidden_dim, oup, kernel_size=1, relu=False),)if stride == 1 and inp == oup:self.shortcut = nn.Sequential()else:self.shortcut = nn.Sequential(depthwise_conv(inp, inp, 3, stride, relu=True),nn.Conv2d(inp, oup, 1, 1, 0, bias=False),nn.BatchNorm2d(oup),)def forward(self, x):return self.conv(x) + self.shortcut(x)

实验表明,YOLOv5-Ghost算法不仅降低了网络参数总量和计算复杂度FLOPS,同时还提高了网络推理速度。


目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块相关推荐

  1. 目标检测算法——YOLOv5/YOLOv7改进之结合GAMAttention

    >>>深度学习Tricks,第一时间送达<<< 目录 超越CBAM,全新注意力GAM:不计成本提高精度! (一)前沿介绍 1.GAM结构图 2.相关实验结果 (二) ...

  2. 目标检测算法——YOLOv5/YOLOv7改进之结合​PP-LCNet(轻量级CPU网络)

    >>>深度学习Tricks,第一时间送达<<< 目录 ​PP-LCNet--轻量级且超强悍的CPU级骨干网络!! (一)前沿介绍 1.PP-LCNet主要模块 2. ...

  3. ​目标检测算法——YOLOv5/YOLOv7改进之结合​SOCA(单幅图像超分辨率)

    >>>深度学习Tricks,第一时间送达<<< 目录 CVPR19 单幅图像超分辨率来了!!! (一)前沿介绍 论文题目:Second-order Attentio ...

  4. 目标检测算法——YOLOv5/YOLOv7改进之结合​RepVGG(速度飙升)

    >>>深度学习Tricks,第一时间送达<<< 目录 RepVGG--极简架构,SOTA性能!!! (一)前沿介绍 1.RepVGGBlock模块 2.相关实验结果 ...

  5. 目标检测算法——YOLOv5/YOLOv7改进之结合轻量化网络MobileNetV3(降参提速)

    >>>深度学习Tricks,第一时间送达<<< 论文题目:Searching for MobileNetV3 论文地址:https://arxiv.org/abs/ ...

  6. 目标检测算法——YOLOv5/YOLOv7改进之结合BiFPN

    >>>深度学习Tricks,第一时间送达<<< 论文题目:<EfficientDet: Scalable and Efficient Object Detec ...

  7. 目标检测算法——YOLOv5/YOLOv7改进|将IOU Loss替换为EIOU Loss

    >>>深度学习Tricks,第一时间送达<<< 论文题目:<Focal and Efficient IOU Loss for Accurate Boundin ...

  8. 目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)

    >>>深度学习Tricks,第一时间送达<<< 目录 (一)前言介绍 1.摘要 2.不同注意力步骤比较 (二)相关实验 (三)YOLOv5结合无参注意力SimAM ...

  9. 目标检测算法——YOLOv5/YOLOv7改进之结合CBAM注意力机制

    深度学习Tricks,第一时间送达 论文题目:<CBAM: Convolutional Block Attention Module> 论文地址:  https://arxiv.org/p ...

最新文章

  1. 处理文本框的鼠标事件,判断鼠标的状态
  2. java泛型中?和T有什么区别?
  3. mysql 配置路径
  4. c# winform datagridview改变表头标题的颜色(column header)
  5. 滴滴魅族手机人脸识别没有反应_手机UI颜值排名榜单,小米MIUI排到第九,魅族没有上榜...
  6. 基于LINQ to SQL的WEB开发三层架构(1)
  7. FPGA开平方的实现
  8. 天生对数字不敏感的人,如何提升对数据的敏感度?
  9. 深入浅出Node.js(一):什么是Node.js
  10. ubuntu ble c语言编程,c – 如何在ubuntu上安装bluez进行开发?
  11. BZOJ2716[Violet] 天使玩偶/SJY摆棋子
  12. iOS —— 极光推送和极光IM
  13. 国药准字、药品本位码
  14. 服务器无线网卡禁止怎么办,台式机无线网卡被禁用了如何解决
  15. 微信小程序 一键授权 给第三方平台代开发管理(一,创建第三方平台)
  16. Android数据加密之——Base64编码算法
  17. mysql 小_mysql小脚本
  18. 经典编程书籍大全-python
  19. 云和恩墨大讲堂新春第一讲-Oracle安全特性之加密登陆
  20. 〖Python 数据库开发实战 - MongoDB篇②〗- Mac环境下的MongoDB数据库安装

热门文章

  1. Java集合专题3——HashMap和HashTable
  2. php分割中文字符串(1个字,多个字)
  3. 软件快速开发平台的优势
  4. 心情不错!大家一起高兴!
  5. 文件后缀名和MimeType的映射关系
  6. 2021物联网国赛通用库开发——D卷
  7. macOS、iOS、Darwin、类 unix、POSIX
  8. 如何选题、撰写微信小程序毕业论文,以及答辩流程?
  9. srtp移植到android平台
  10. android 陀螺仪 加速度定位,Android陀螺仪版加速度计