FastestDet:比yolov5更快!更强!全新设计的超实时Anchor-free目标检测算法(附源代码下载)...

news2024/9/26 5:19:15

关注并星标

从此不迷路

计算机视觉研究院

749cc06279525ec64df05df843783393.gif

b3ad5c92b9642c8ae3fd4c8c1665ad84.gif

fc49d40e4025c1001d7e20725f891b2d.png

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

计算机视觉研究院专栏

作者:Edison_G

本篇文章转自于知乎——qiuqiuqiu,主要设计了一个新颖的轻量级网络!

代码地址:https://github.com/dog-qiuqiu/FastestDet

01

概述

FastestDet是设计用来接替yolo-fastest系列算法,相比于业界已有的轻量级目标检测算法如yolov5n, yolox-nano, nanoDet, pp-yolo-tiny, FastestDet和这些算法压根儿不是一个量级,FastestDet无论在速度还是参数量上,都是要小好几个数量级的(不要在拿int8的模型和我fp32的模型比体积了,不公平),但是精度自然而然也比不过。FastestDet是针对计算资源紧缺的ARM平台设计的,突出单核效能,因为在实际业务场景中,不会把所有CPU资源都给推理框架做模型推理的,假如说你想在例如树莓派, RK3399, RK3568去跑实时目标检测,那么FastestDet是比较好的选择,或者移动端上不想占用太多cpu资源,也可以去用单核并设置cpu sleep去推理FastestDet,在低功耗的条件下运行算法。

8db15e4c1d7740fcac6083e66ad5659d.png

02

新框架算法

先说下FastestDet的几个重要特性: 

  • 单轻量化检测头

  • anchor-free

  • 跨网格多候选目标

  • 动态正负样本分配

  • 简单的数据增强

下面我就一个个去详细讲下吧:

单轻量化检测头

这个是对网络结构上对算法模型进行优化,主要是提升算法运行速度,简化后处理步骤,大家可以先看下这块的网络结构:

88fd62cd05dbdd20386e1453efa17670.png

其实多检测头设计的是为了适应检测不同尺度物体目标,高分辨率的检测头负责检测小物体,低分辨的检测头负责检测大物体,一种分而治之的思想。

我个人觉得根因在于感知野,不同尺度的物体所需要的感知野是不同的,而模型每层的感知野都是不一样的,包括FPN也是对不同感知野特征的汇总融合。这块单检测头我也是参考的YOLOF的思想,在网络结构中,采用类似inception的5x5分组卷积并行网络结构,期待能融合不同感知野的特征,让单个检测头也能适应检测不同尺度的物体。

Anchor-Free

原先的anchor-base算法在训练模型都需要对数据集进行anchor-bias的运算,anchor-bias可以理解为对数据集中标注物体的宽高进行聚类,得到一组先验宽高,网络在这组先验宽高的基础上去优化预测框的宽高。FastestDet采用的是anchor-free算法,模型是直接回归gt于特征图宽高的scale值的,是没有先验宽高。这种方法可以简化模型后处理。而且对于anchor-base算法每个特征图的特征点是对应N个anchor候选框的,而这种anchor-free每个特征图的特征点只对应一个候选框,所以在推理速度上也是有优势的。

跨网格多候选目标

这块还是借鉴了yolov5,不单单只把gt中心点所在的网格当成候选目标,还把附近的三个也算进行去,增加正样本候选框的数量,如下图所示:

1b4ef8580a8e79058394fc3ee77f15c4.png

动态正负样本分配

所谓的动态正负样本分配其实就是在模型训练过程去动态分配正负样本,这是有别于以前yolo-fastest的,原先yolo-fastest的anchor-bias设置好以后, 通过计算anchor-bias与gt宽高的scale,对scale卡固定阈值分配正负样本(参考yolov5的做法),而anchor-bias和gt在训练过程中都是不变的,所以正负样本分配在训练过程中也是不变的。

而在FastestDet的正负样本分配参考的ATSS,通过设置预测框与GT计算的SIOU的均值作为分配正负样本的阈值,假如当前预测框与GT的SIOU阈值大于均值,那么为正样本,反之异然。(为什么没有参考simota?那是因为在构建cost矩阵时,不同loss的权重还得调超参,懒的调了)

简单的数据增强

对于轻量级的模型数据增强要慎重,本来学习能力差,脑子不怎么好使,上来给难题做可不拉跨,所以采用简单的数据增强如随机平移和随机缩放,并没有采用moscia和Mixup。

03

实验结果

1a641bf2ed41f857bad04c8f70c7ace1.png

f027a9b31607d0bbda0d83534969a07f.png

3ec14f5dd24afcc40139b4138ac1a721.png

a06201bd7fe817adfc8d8349e3093ec5.png

© THE END 

转载请联系本公众号获得授权

48e7abf4162e29816f820c352e8d16c9.gif

计算机视觉研究院学习群等你加入!

ABOUT

计算机视觉研究院

计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

VX:2311123606

e650436ea5e4d0f55b198bfc80517b21.png

往期推荐 

🔗

  • AI助力社会安全,最新视频异常行为检测方法框架

  • 目前精度最高效率最快存储最小的目标检测模型(附源码下载)

  • CVPR小目标检测:上下文和注意力机制提升小目标检测(附论文下载)

  • Double-Head:检测头上再创新,提升精度(附原论文下载)

  • 海康研究院出品:具有场景自适应概念学习的无监督目标检测(附论文下载)

  • 新技术:高效的自监督视觉预训练,局部遮挡再也不用担心!

  • VS Code支持配置远程同步了

  • 改进的阴影抑制用于光照鲁棒的人脸识别

  • 基于文本驱动用于创建和编辑图像(附源代码)

  • 基于分层自监督学习将视觉Transformer扩展到千兆像素图像

  • 霸榜第一框架:工业检测,基于差异和共性的半监督方法用于图像表面缺陷检测

  • CLCNet:用分类置信网络重新思考集成建模(附源代码下载)

  • YOLOS:通过目标检测重新思考Transformer(附源代码)

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

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

相关文章

【多线程】线程安全(重点)

文章目录 1. 观察线程不安全1.1 示例11.2 示例2 2. 线程不安全的原因2.1 修改共享数据2.2 原子性2.3 可见性2.4 顺序性 3. synchronized同步方法3.1 synchronized特性3.1.1 互斥3.1.2 刷新内存3.1.3 可重入 3.2 synchronized使用3.2.1 直接修饰普通方法3.2.2 修饰静态方法3.2.3…

开源照片管理服务LibrePhotos

本文是为了解决网友 赵云遇到的问题,顺便折腾的。虽然软件跑起来了,但是他遇到的问题,超出了老苏的认知。当然最终问题还是得到了解决,不过与 LibrePhotos 无关; 什么是 LibrePhotos ? LibrePhotos 是一个自托管的开源…

uniapp微信小程序用户隐私保护

使用wx.requirePrivacyAuthorize实现微信小程序用户隐私保护。 一、前言 微信小程序官方出了一个公告《关于小程序隐私保护指引设置的公告》。不整的话,后果很多授权无法使用,详见《小程序用户隐私保护指引内容介绍》 。 二、隐私相关设置 1、在 微信…

基于Laravel通用型内容建站企业官网系统源码 可免费商用

是一个基于 Laravel 企业内容建站系统。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,免费且不限制商业使用 2023年08月23日增加了以下12个特性: [新功能] 手机端Banner支持…

视频监控人员行为识别算法

视频监控人员行为识别算法通过opencvpython网络模型框架算法,视频监控人员行为识别算法可以识别和判断员工的行为是否符合规范要求,一旦发现不符合规定的行为,视频监控人员行为识别算法将自动发送告警信息。OpenCV的全称是Open Source Comput…

Java8实战-总结18

Java8实战-总结18 使用流筛选和切片用谓词筛选筛选各异的元素截短流跳过元素 使用流 流让你从外部迭代转向内部迭代。这样&#xff0c;就用不着写下面这样的代码来显式地管理数据集合的迭代(外部迭代)了&#xff1a; List<Dish> vegetarianDishes new ArrayList<>…

​​​​​​​嵌入式学习笔记(8)ARM汇编伪指令

伪指令的意义 伪指令不是指令&#xff0c;伪指令和指令的根本区别是经过汇编后不会生成机器码。 伪指令的意义在于指导汇编过程。 伪指令是和具体的汇编器有关的&#xff0c;我们使用gnu工具链&#xff0c;因此学习gnu下的汇编伪指令 gnu汇编中的一些符号 用来做注释。 : …

react利用wangEditor写评论和@功能

先引入wangeditor写评论功能 import React, { useEffect, useState, useRef, forwardRef, useImperativeHandle } from react; import wangeditor/editor/dist/css/style.css; import { Editor, Toolbar } from wangeditor/editor-for-react; import { Button, Card, Col, For…

IPv6网络实验:地址自动生成与全球单播通信探索

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. 在R1和PC3上开启IPv6链路本地地址自动生成&#xff0c;测试是否能够使用链路本地地址互通2. 为R1配置全球单播地址2001::1/64&#xff0c;使PC3能够自动生成与R1同一网段的IPv6地址3. 测试R1和PC3是否能够使…

动力学约束下的运动规划算法——Hybrid A*算法(附程序实现及详细解释)

前言&#xff08;推荐读一下&#xff09; 本文主要介绍动力学约束下的运动规划算法中非常经典的Hybrid A*算法&#xff0c;大致分为三部分&#xff0c;第一部分是在传统A * 算法的基础上&#xff0c;对Hybrid A * 算法的原理、流程进行理论介绍。第二部分是详细分析 MotionPl…

[C++]vector使用和模拟实现

&#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录 一、vec…

什么是Flex容器和Flex项目(Flex Container and Flex Item)?它们之间有什么关系?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Flex容器和Flex项目⭐ Flex容器⭐ Flex项目⭐ 关系⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为…

OpenCV: cv2.findContours - ValueError: too many values to unpack

OpenCV找轮廓findContours报错 ValueError: not enough values to unpack (expected 3,got 2) 问题指向这行代码&#x1f447; binary, cnts, hierarchy cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE ) 报错的意思是需要3个返回值但只给了两…

【C++】快速排序的学习和介绍

前言 本篇文章我们先会学习快速排序这个算法&#xff0c;之后我们会学习sort这个函数 分治算法 在学习快速排序之前&#xff0c;我们先来学习一下分治算法&#xff0c;快速排序就是分治算法的一种&#xff0c;下面是分治算法的介绍&#xff0c; 分治算法&#xff0c;就是”…

设计模式-迭代器

文章目录 1. 引言1.1 概述1.2 设计模式1.3 迭代器模式的应用场景1.4 迭代器模式的作用 2. 基本概念2.1 迭代器 Iterator2.2 聚合 Aggregate2.3 具体聚合 ConcreteAggregate 3. Java 实现迭代器模式3.1 Java 集合框架3.2 Java 迭代器接口3.3 Java 迭代器模式实现示例 4. 迭代器模…

ESP32系列ESP32-D0WD双模BLE4.2+2.4G WIFI SoC芯片

目录 ESP32系列简介ESP32系列SoC功能框图ESP32-D0WD-V3芯片特性 ESP32系列SoC对比 ESP32系列简介 ESP32-DU1906和ESP32-DU1906-U两款AI模组&#xff0c;是基于ESP32-D0WD-V3芯片和语音芯片DU1906设计&#xff0c;集Wi-Fi、 传统蓝牙、低功耗蓝牙性能&#xff0c;以及音频语音处…

11.添加侧边栏,并导入数据

修改CommonAside的代码&#xff1a; <template><div><el-menu default-active"1-4-1" class"el-menu-vertical-demo" open"handleOpen" close"handleClose":collapse"isCollapse"><!--<el-menu-it…

管理类联考——逻辑——形式逻辑——汇总篇——知识点突破——假言——各种假言

角度 多重假言 &#xff08;1&#xff09;如果A&#xff0c;那么B&#xff0c;除非C。 符号化为&#xff1a;┐C→ (A→B)。 等价于&#xff1a;┐C→ (┐A∨B)。 等价于&#xff1a;C∨(┐A∨B)。 等价于&#xff1a;C∨┐A∨B。 等价于&#xff1a;┐(C∨┐A&#xff09;→…

K8S自动化运维容器化(Docker)集群程序

K8S自动化运维容器化集群程序 一、K8S概述1.什么是K8S2.为什么要用K8S3.作用及功能 二、K8S的特性1.弹性伸缩2.自我修复3.服务发现和复制均衡4.自动发布和回滚5.集中化配置管理和秘钥管理6.存储编排7.任务批量处理运行 三、K8S的集群架构1.架构2.模式3.工作4.流程图 四、K8S的核…

电子电路原理题目整理(2)

半导体是一种既不是导体也不是绝缘体的材料&#xff0c;其中包含自由电子和空穴&#xff0c;空穴的存在使半导体具有特殊的性质。 1.为什么铜是电的良导体&#xff1f; 从原子结构来看&#xff0c;铜原子的价带轨道上有一个价电子&#xff0c;由于核心和价电子之间的吸引力很弱…