12、论文阅读:SpikeYOLO:高性能低能耗目标检测网络

SpikeYOLO:高性能低能耗目标检测网络

  • 前言
    • 解释
  • 介绍
  • 相关工作
  • 论文提出的方法
    • 网络输入
    • SpikeYOLO架构
      • 概述
      • 网络输出
      • 宏观设计
      • 微观设计
    • I-LIF脉冲神经元
      • LIF
      • I-LIF
  • 实验
  • 代码

前言

脉冲神经网络(Spiking Neural Networks, SNNs)具有生物合理性低功耗的优势,相较于人工神经网络(Artificial Neural Networks, ANNs)。然而,由于性能较差,目前 SNNs 的应用仅限于简单的分类任务。

在这项工作中,我们专注于缩小 SNNs 和 ANNs 在物体检测任务上的性能差距。我们的设计围绕网络架构脉冲神经元展开。

首先,YOLO 系列在转换为对应的脉冲版本时,由于模块设计过于复杂,导致了脉冲退化。为了解决这个问题,我们设计了一种 SpikeYOLO 架构,通过简化原始 YOLO 并引入元 SNN 模块来解决这一问题。

其次,在脉冲神经元将膜电位转换为二进制脉冲的过程中,物体检测对量化误差更加敏感。为了解决这个挑战,我们设计了一种新型脉冲神经元,在训练过程中激活整数值,并通过扩展虚拟时间步长在推理过程中保持脉冲驱动。该方法在静态和神经形态物体检测数据集上进行了验证。

在静态 COCO 数据集上,我们获得了 66.2% mAP@50 和 48.9% mAP@50:95,分别比之前最先进的 SNN 高 15.0% 和 18.7%。 在神经形态 Gen1 数据集上,我们实现了 67.2% mAP@50,比具有同等架构的 ANN 高出 2.5%,并且能量效率提高了 5.7 倍。

解释

(1)低功耗
由于神经元只有在特定条件下才会发放脉冲,这种机制使得 SNNs 的活动非常稀疏。这种稀疏性降低了整体的计算需求,因此大大减少了能耗
(2)脉冲退化
“脉冲退化”指的是在脉冲神经网络(SNNs)中,由于某些因素导致脉冲信号的质量下降或失去原有特性 。这种退化可能源于以下几个方面:
在这里插入图片描述
“脉冲退化”本质上是指脉冲神经网络在信息处理和传递过程中,由于架构复杂性、时间特征丢失、量化误差或噪声干扰等因素,导致脉冲信号无法准确保留和传递原始信息。这种现象会降低网络的整体性能,尤其是在处理复杂任务(如物体检测)时影响更大
(3)膜电位转换为二进制脉冲
在这里插入图片描述

介绍

受到大脑启发的脉冲神经网络(SNN)以其低功耗而闻名。脉冲神经元结合了时空信息,当膜电位超过阈值时发出脉冲。因此,脉冲神经元仅在接收到脉冲时触发稀疏加法,其余时间保持闲置。这种脉冲驱动的特性使得SNN在部署于神经形态芯片时,相较于人工神经网络(ANN)展现出明显的低功耗优势。然而,复杂的神经动态和脉冲驱动特性带来的负面影响是,SNN难以训练,任务性能和应用场景有限

例如,脉冲神经网络(SNN)算法在计算机视觉中的大多数应用仅限于简单的图像分类任务。而另一种更常用且具有挑战性的计算机视觉任务——目标检测,在SNN中很少被探索。2020年,Spiking-YOLO提供了深度SNN中第一个目标检测模型,利用将人工神经网络(ANN)转换为SNN的方法,并使用了数千个时间步【时间步在脉冲神经网络(SNN)中指的是神经元状态更新的离散时间间隔。SNN的计算是基于时间的,神经元在每个时间步内根据输入和自身状态进行更新,并决定是否发放脉冲。整个计算过程通常在多个时间步内进行,网络会随着时间的推移不断积累信息,从而捕捉时序和空间上的特征。在SNN中,时间步的数量决定了神经元可以更新和发放脉冲的频率。因此,更多的时间步通常意味着网络有更多的机会去模拟连续信号,从而减少量化误差,提高ANN2SNN转换过程中精度的保真度。不过,增加时间步的同时也会增加计算复杂度和功耗】。

2023年,EMS-YOLO 成为第一个使用直接训练的SNN处理目标检测的工作。最近,直接训练的Meta-SpikeFormer首次以预训练和微调的方式处理目标检测。然而,这些工作的性能与ANN之间的差距仍然显著。在本研究中,我们旨在弥补这一差距,展示SNN的低功耗及其在神经形态应用中的独特优势。我们通过两个方面来实现这一目标

首先,我们设计了一种新的架构SpikeYOLO,它结合了YOLO的宏观设计和SNN模块的微观设计。简单地用脉冲神经元替换YOLO系列中的人工神经元通常是行不通的。现有的解决方案包括建立ANN激活与脉冲发放率之间的等价关系,或改善残差设计。我们认为,另一个潜在的原因是YOLO系列中的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KMP 算法

目录 KMP 算法 算法思路 为什么不需要在主串中进行回退 计算 next 数组 代码实现 next 数组优化 查找所有起始位置 KMP 算法 KMP 算法是一种改进的字符串匹配算法,由 D.E.Knuth,J.H.Morris 和 V.R.Pratt 提出的,因此人们称它为 克努特…

【ODSS】An Open Dataset of Synthetic Speech

文章目录 An Open Dataset of Synthetic Speechkey pointsODSS数据集局限性An Open Dataset of Synthetic Speech 会议/期刊:WIFS 2023 作者: key points 一个由合成语音和自然语音组成的多语言、多说话人数据集ODSS,旨在促进合成语音检测的研究和基准测试。 是由156个声…

Android compose 重建流程1

前言 本文是笔者学习Compose是如何自动触发UI刷新的笔记,可能缺乏一定可读性和教导性.(建议阅读参考文献更具启发性) 使用以下BOM作为研究环境. composeBom "2024.04.01" androidx-compose-bom { group "androidx.compose", name "compose-bom…

HarmonyOS Next应用开发——图像PixelMap压缩保存

【高心星出品】 图片编码保存 图片编码指将PixelMap编码成不同格式的存档图片,当前支持打包为JPEG、WebP、png和 HEIF(不同硬件设备支持情况不同) 格式,用于后续处理,如保存、传输等。图片编码是图片解码-图片处理-图片保存的最后环节&…

C#中的接口的使用

定义接口 public interface IMyInterface {int MyProperty { get; set; }void MyMethod(); } 实现类 internal class MyClass : IMyInterface {public int MyProperty { get; set; }public void MyMethod(){Console.WriteLine("MyMethod is called");} } 目录结构…

负载箱的作用?

负载箱,顾名思义,就是用来承载电力设备的箱子。在电力系统中,负载箱的作用非常重要,它不仅可以模拟实际的电力负载,还可以对电力设备进行测试和调试,确保其正常运行。下面详细介绍负载箱的作用。 1. 模拟实…

深入了解Spring重试组件spring-retry

在我们的项目中,为了提高程序的健壮性,很多时候都需要有重试机制进行兜底,最多就场景就比如调用远程的服务,调用中间件服务等,因为网络是不稳定的,所以在进行远程调用的时候偶尔会产生超时的异常&#xff0…

这几次比赛题解

因为考虑到再看&#xff0c;所以将所有题目都做成了pdf格式 梦熊十三连测 T1 这道题其实什么也不用想&#xff0c;就按照题目给的意思来打代码就行&#xff0c;这就有40分可以拿。懒人做法 #include<bits/stdc.h> using namespace std; typedef long long ll; ll read…

MP9928模块分析

MP9928 是一款高性能的同步降压 DC/DC 转换器控制器 IC&#xff0c;具有宽输入范围。以下是其操作和关键特性的总结&#xff1a; 概述 电流模式控制&#xff1a;MP9928 使用电流模式、可编程开关频率控制架构&#xff0c;通过外部 N 沟道 MOSFET 开关来调节输出电压。 反馈和…

Golang | Leetcode Golang题解之第500题键盘行

题目&#xff1a; 题解&#xff1a; func findWords(words []string) (ans []string) {const rowIdx "12210111011122000010020202" next:for _, word : range words {idx : rowIdx[unicode.ToLower(rune(word[0]))-a]for _, ch : range word[1:] {if rowIdx[unico…

【uni-app学习-2】

一、跳转 方法&#xff1a;在methods中去定义方法&#xff1a; 上述为直接跳转&#xff0c;但是当你要跳转页面是由多个可切换页面组成比如&#xff1a; 这个页面其实是由两个页面组成&#xff0c;一个主页&#xff0c;一个我的&#xff0c;两个页面 路由配置需要用到toob…

房屋租赁网站毕业设计基于SpringBootSSM框架的计算机毕业设计

计算机毕业设计/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序 目录 一、项目背景与目的‌ ‌二、系统需求分析‌ 2.1功能需求 2.2 技术需求 2.3 可执行性 ‌三、系统设计与实现‌ ‌3.1系统架构设计‌&#xff1a; ‌3.2功能模块开发‌&#xff1a; ‌3.3…

golang生成并分析cpu prof文件

1. 定义一个接口&#xff0c;请求接口时&#xff0c;生成cpu.prof文件 在主协程中新启一个协程&#xff0c;当请求接口时&#xff0c;生成一个60秒的cpu.prof文件 go func() {http.HandleFunc("/prof", startProfileHandler)http.ListenAndServe(":9092"…

Spring Boot助力:构建响应式论坛网站

3系统分析 3.1可行性分析 通过对本论坛网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本论坛网站采用SSM框架&#xff0c;JAVA作为开发语言&#xff0c;是…

华为云CodeArts Pipeline架构与内容双重优化,高效助力持续交付!

点击下方链接进入帮助中心 成长地图_流水线 CodeArts Pipeline_华为云

unity学习-全局光照(GI)

在全局光照&#xff08;Lighting&#xff09;界面有两个选项 Realtime Light&#xff08;实时光照&#xff09;&#xff1a;在项目中会提前计算好光照以及阴影的程序&#xff0c;当你需要调用实时全局光照的时候会将程序调用出来使用 Mixed Light&#xff08;烘焙光照&#x…

HBuilder X 中Vue.js基础使用1(三)

一、 模板语法 Vue 使用一种基于 HTML 的模板语法&#xff0c;使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML&#xff0c;可以被符合规范的浏览器和 HTML 解析器解析。 英文官网: Vue.js - The Progressive JavaScript Fr…

DPRNN 学习

DPRNN介绍 双路径循环语音分离神经网络&#xff08;Dual-Path RNN&#xff09;由三个处理阶段组成, 编码器、分离和解码器。首先&#xff0c;编码器模块用于将混合波形的短段转换为它们在中间特征空间中的对应表示。然后&#xff0c;该表示用于在每个时间步估计每个源的乘法函…

HCIP-HarmonyOS Application Developer 习题(十四)

&#xff08;多选&#xff09;1、HarmonyOs为应用提供丰富的Al(Artificial Intelligence)能力&#xff0c;支持开箱即用。下列哪些是它拥有的AI能力? A、通用文字识别 B、词性标注 C、实体识别 D、语音播报 答案&#xff1a;ABCD 分析&#xff1a; AI能力简介二维码生成根据开…

(JAVA)贪心算法、加权有向图与求得最短路径的基本论述与实现

1. 贪心算法 1.1 贪心算法的概述&#xff1a; 贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。 贪心算法的特点是一步一步地进行&#xff0c;常以当前情况为基础根据某个优化测度作最优选择&#xff0c;而不考虑各种可能的整体情况&#xff0c;省去了为找最优…