【YOLOv8改进- Backbone主干】YOLOv8 更换主干网络之EfficientNet,高效的卷积神经网络,降低参数量

简介: YOLOv8专栏探讨了目标检测的创新改进,包括模型扩展和神经架构搜索。提出的新方法使用复合系数平衡网络的深度、宽度和分辨率,产生了EfficientNets系列,其在准确性和效率上超越了先前的ConvNets。EfficientNet-B7在ImageNet上达到84.3%的顶级准确率,同时保持较小的模型大小和更快的推理速度。文章提供了论文和代码链接,以及核心的EfficientNet模型构建Python代码。

YOLOv8目标检测创新改进与实战案例专栏

专栏目录: YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLOv8基础解析+创新改进+实战案例

介绍

image-20240715223214537

摘要

卷积神经网络(ConvNets)通常在固定的资源预算下开发,如果有更多资源可用,则会进行扩展以提高准确性。在本文中,我们系统地研究了模型扩展,并发现仔细平衡网络的深度、宽度和分辨率可以带来更好的性能。基于这一观察,我们提出了一种新的扩展方法,使用一个简单但非常有效的复合系数均匀扩展深度、宽度和分辨率的所有维度。我们展示了这种方法在扩展MobileNets和ResNet时的有效性。

为了进一步提高,我们使用神经架构搜索设计了一个新的基准网络,并将其扩展,获得了一系列称为EfficientNets的模型,这些模型比以前的ConvNets在准确性和效率方面都有了很大的提升。特别是,我们的EfficientNet-B7在ImageNet上实现了最先进的84.3%的top-1准确率,同时在推理时比现有的最佳ConvNet小8.4倍,快6.1倍。我们的EfficientNets在迁移学习任务中也表现良好,在CIFAR-100(91.7%)、Flowers(98.8%)和其他3个迁移学习数据集上实现了最先进的准确率,参数量减少了一个数量级。源码可在:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet 找到。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理


卷积神经网络(ConvNets)通常是在固定资源预算下开发的,当有更多资源可用时,可以通过增加网络深度(depth)、网络宽度(width)和输入图像分辨率(resolution)来提高精度。然而,手动调整这些参数组合非常困难,尤其在计算资源有限的情况下,不同参数的组合空间太大,难以穷举。

创新方法
本文提出了一种新的模型缩放方法,通过使用一个简单而高效的复合系数,从深度(depth)、宽度(width)和分辨率(resolution)三个维度放大网络。相比传统方法,该方法不会随意缩放网络的维度,结合神经结构搜索技术,可以获得最优的一组参数(复合系数)。

复合模型扩张方法

  1. 问题定义:卷积网络N可以分为多个阶段,每个阶段由多个相同结构的卷积层组成。
  2. 优化目标:在资源有限的情况下,最大化精度(Accuracy)。更大的网络具有更大的宽度、深度或分辨率,可以获得更高精度,但单一维度的扩展效果有限。
  3. 模型扩张的局限性:只对单一维度进行扩张的精度增益迅速饱和,说明需要平衡各个维度的扩张。

复合扩张方法的求解

  1. 求解参数:通过固定φ=1,通过网格搜索(grid search)得到最优的α、β、γ,得到基本模型EfficientNet-B0。
  2. 扩展模型:固定α、β、γ的值,通过调整φ的大小,获得EfficientNet-B1到B7。φ的大小决定了资源消耗的大小。

核心代码



import sys
sys.path.append('tpu/models/official/efficientnet')
from modeling.architecture import efficientnet_constants
from modeling.architecture import nn_blocks
from modeling.architecture import nn_ops
from official.efficientnet import efficientnet_builder


class Efficientnet(object):
  """Class to build EfficientNet family models."""

  def __init__(self,
               model_name):
    """EfficientNet initialization function.

    Args:
      model_name: string, the EfficientNet model name, e.g., `efficient-b0`.
    """
    self._model_name = model_name

  def __call__(self, inputs, is_training=False):
    """Returns features at various levels for EfficientNet model.

    Args:
      inputs: a `Tesnor` with shape [batch_size, height, width, 3] representing
        a batch of images.
      is_training: `bool` if True, the model is in training mode.

    Returns:
      a `dict` containing `int` keys for continuous feature levels [2, 3, 4, 5].
      The values are corresponding feature hierarchy in EfficientNet with shape
      [batch_size, height_l, width_l, num_filters].
    """
    _, endpoints = efficientnet_builder.build_model(
        inputs,
        self._model_name,
        training=is_training,
        override_params=None)
    u2 = endpoints['reduction_2']
    u3 = endpoints['reduction_3']
    u4 = endpoints['reduction_4']
    u5 = endpoints['reduction_5']
    return {
   2: u2, 3: u3, 4: u4, 5: u5}

task与yaml配置

详见: https://blog.csdn.net/shangyanaf/article/details/140451442

相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 计算机视觉
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaNet替换YOLOV8主干
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaNet替换YOLOV8主干
|
3月前
|
机器学习/深度学习 计算机视觉 异构计算
【YOLOv8改进 - Backbone主干】ShuffleNet V2:卷积神经网络(CNN)架构
【YOLOv8改进 - Backbone主干】ShuffleNet V2:卷积神经网络(CNN)架构
|
3月前
|
机器学习/深度学习 自然语言处理 计算机视觉
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaBlock降低YOLOV8参数
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaBlock降低YOLOV8参数
|
5天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:守护数字世界的坚盾
本文旨在探讨网络安全与信息安全领域的关键要素,包括网络安全漏洞、加密技术以及安全意识的重要性。通过深入浅出的方式,帮助读者理解这些概念,并强调每个人都应具备基本的安全防范意识,共同维护数字世界的安全。
|
2天前
|
SQL 安全 算法
网络安全与信息安全的前沿探索
【10月更文挑战第5天】 在当今信息化社会,网络安全和信息安全已成为至关重要的话题。本文将深入探讨网络安全漏洞、加密技术及安全意识的重要性,旨在为读者提供技术性的见解和实用的建议。通过分析常见的网络攻击手段和防御策略,我们将揭示如何保护个人和企业的数据免受威胁,同时强调每个人都应具备的基本安全意识和最佳实践。
9 1
|
2天前
|
存储 安全 程序员
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第5天】 本文旨在探讨网络安全和信息安全领域的重要方面,包括网络漏洞、加密技术及安全意识。通过深入分析这些关键概念,我们希望提高读者对这些重要领域的理解,并强调在当今数字化世界中保护个人和组织数据的重要性。我们将从网络漏洞的定义及其成因开始,接着介绍常见的加密技术及其应用,最后讨论提升安全意识的方法,以帮助读者更好地保护自己的信息安全。
|
4天前
|
安全 算法 网络安全
网络安全与信息安全:守护数字世界的坚盾在这个高度数字化的时代,网络安全和信息安全已成为全球关注的焦点。无论是个人隐私还是企业数据,都面临着前所未有的风险和挑战。本文将深入探讨网络安全漏洞、加密技术以及安全意识的重要性,旨在为读者提供实用的知识,帮助构建更加安全的网络环境。
【10月更文挑战第4天】 在数字化浪潮中,网络安全与信息安全成为不可忽视的议题。本文通过分析网络安全漏洞的类型与成因,探讨加密技术的原理与应用,并强调提升安全意识的必要性,为读者提供一套全面的网络安全知识框架。旨在帮助个人和企业更好地应对网络威胁,保护数字资产安全。
|
2天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第6天】在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将探讨网络安全漏洞、加密技术和安全意识等方面的内容,以帮助读者更好地了解这些主题,并采取适当的措施保护自己的信息安全。我们将通过代码示例来演示一些常见的安全漏洞,并提供解决方案。最后,我们将强调培养良好的安全意识对于维护个人和组织的信息安全的重要性。
|
4天前
|
SQL 负载均衡 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第3天】本文将探讨网络安全与信息安全的重要性,包括网络安全漏洞、加密技术和安全意识等方面。我们将介绍一些常见的网络安全漏洞,并提供一些预防措施和解决方案。同时,我们还将讨论加密技术的作用和应用,以及如何提高个人和组织的安全意识。通过这些知识的分享,我们希望能够帮助读者更好地理解和应对网络安全挑战。
|
2天前
|
存储 SQL 安全
网络防御的艺术:从漏洞识别到加密技术,构建信息安全的堡垒
【10月更文挑战第6天】在数字化浪潮下,网络安全与信息安全成为我们不可忽视的重要议题。本文将深入浅出地探讨网络安全漏洞的识别、加密技术的基本原理,以及提升个人和组织安全意识的重要性。通过实际案例分析和代码示例,我们将揭示如何有效防御网络攻击,保护个人隐私和组织数据不受侵犯。无论你是网络安全新手,还是希望深化理解的专业人士,这篇文章都将为你提供宝贵的知识分享。

热门文章

最新文章