计算机视觉研究院 | EdgeYOLO:边缘设备上实时运行的目标检测器及Pytorch实现

news2024/9/28 15:24:16

本文来源公众号“计算机视觉研究院”,仅用于学术分享,侵权删,干货满满。

原文链接:EdgeYOLO:边缘设备上实时运行的目标检测器及Pytorch实现

代码地址:https://github.com/LSH9832/edgeyolo

今天分享的研究者提出了一种基于最先进的YOLO框架的高效、低复杂度和无锚的目标检测器,该检测器可以在边缘计算平台上实时实现。

01 概述

研究者开发了一种增强的数据增强方法来有效抑制训练过程中的过拟合,并设计了一种混合随机损失函数来提高小目标的检测精度。受FCOS的启发,提出了一种更轻、更高效的解耦头,可以在不损失精度的情况下提高推理速度。提出的基线模型在MS COCO2017数据集中可以达到50.6%的AP50:95和69.8%的AP50准确度,在VisDrone2019 DET数据集可以达到26.4%的AP50:95和44.8%的AP50准确度,并且它满足边缘计算设备Nvidia Jetson AGX Xavier的实时性要求(FPS≥30)。

02 介绍

在常见的目标检测数据集(如MS COCO2017)上,使用两阶段策略的模型比使用一阶段策略的要好一点。尽管如此,由于两阶段框架的内部限制,它远远不能满足传统计算设备的实时性要求,并且在大多数高性能计算平台上可能面临同样的情况。相比之下,单级目标检测器可以在实时指标和性能之间保持平衡。因此,他们更受研究人员的关注,YOLO系列算法以高速迭代更新。从YOLOv1到YOLOv3的更新主要是对底层框架结构的改进,YOLO的大多数后期主流版本都专注于提高精度和推理速度

此外,他们的优化测试平台主要是具有高性能GPU的大型工作站。然而,他们最先进的模型在这些边缘计算设备上通常以令人不满意的低FPS运行。为此,一些研究人员提出了参数较少、结构较轻的网络结构,如MobileNetShuffleNet,以取代原有的骨干网络,从而在移动设备和边缘设备上实现更好的实时性能,但要牺牲一定的精度。在今天分享中,研究者的目标是设计一种具有良好精度并可以在边缘设备上实时运行的物体检测器

如下图所示,研究者还为计算能力较低的边缘计算设备设计了更轻、参数更少的模型,这些设备也显示出更好的性能。

03 新框架

随机数据扩充不可避免地会导致一些标签无效,例如(a)中第二张图的右下角和第三张图的左下角。虽然有方框,但它们不能提供有效的目标信息。标签数量过少会对训练产生明显的负面影响,可以通过增加(b)中的有效方框数量来避免这种影响。

Enhanced-Mosaic & Mixup

常用的数据增强策略如下(a)和(b)所示,但是(a)和(b)由于数据变换,容易包含不含有效目标的图像,此外这种情况的概率随着每个原始图像中标签数量的减少而逐渐增加。

作者因此提出的方法(c):

  • 首先,对多组图像使用Mosaic方法(可以根据数据集中单个图片中标签的平均数量的丰富程度来设置组数)

  • 然后,通过Mixup方法将最后一个简单处理的图像与Mosaic处理的图像混合(最后一幅图像的原始图像边界在变换后的最终输出图像的边界内)

Lite-Decoupled Head

解耦头首先在FCOS中提出,然后用于其他Anchor-Free目标检测器,如YOLOX。在最后几个网络层使用解耦结构可以加速网络收敛并提高回归性能。但是由于解耦头采用了导致额外推理成本的分支结构,因此YOLOv6提出了具有更快推理速度的高效解耦头,这将中间3×3卷积层的数量减少到仅一层,同时保持与输入特征图相同的更大数量的通道。

但是这种额外的推理成本随着通道和输入大小的增加也变得更加明显。因此引入重参化的技术增强学习能力的同时加快推理。

04 实验

representative results in VisDrone2019-DET-val

representative results on MS COCO2017-val

THE END!

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

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

相关文章

【Python】使用plt库绘制动态曲线图,并导出为GIF或MP4

一、绘制初始图像 正常使用plt进行绘图,这里举例一个正弦函数: 二、绘制动态图的每一帧 思路: 根据横坐标点数绘制每一帧画面每次在当前坐标处,绘制一个点和垂直的线,来表示当前点可以在点上加个坐标等样式来增加…

ENISA 2023年威胁态势报告:主要发现和建议

欧盟网络安全局(ENISA)最近发布了其年度2023年威胁态势报告。该报告确定了预计在未来几年塑造网络安全格局的主要威胁、主要趋势、威胁参与者和攻击技术。在本文中,我们将总结报告的主要发现,并提供可操作的建议来缓解这些威胁。 介绍 ENISA 威胁态势报告…

基于SSM的网上医院预约挂号系统的设计与实现(论文+源码)_kaic

摘 要 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让医院预约挂号信息的管理模式进行升级,也为了更好的维护医院预约挂号信息,网上医院预约挂号系统的开发运用就显得很…

linux系统网络配置

文章目录 Linux系统配置IPLinux系统配置DNSLinux网卡名称命名CentOS7密码重置远程管理Linux服务器 前文我们了解如何启动linux系统,接下来我们继续学习如何配置linux系统的网络,同时也是学习一下Centos 7 系统的密码重置以及借用工具远程链接服务器 Lin…

Python二级备考

考试大纲如下: 基本要求 考试内容 考试方式 比较希望能直接刷题,因为不懂的比较多可能会看视频。 基础操作刷题: 知乎大头计算机1-13题 import jieba txtinput() lsjieba.lcut(txt) print("{:.1f}".format(len(txt)/len(ls)…

WorldGPT、Pix2Pix-OnTheFly、StyleDyRF、ManiGaussian、Face SR

本文首发于公众号:机器感知 WorldGPT、Pix2Pix-OnTheFly、StyleDyRF、ManiGaussian、Face SR HandGCAT: Occlusion-Robust 3D Hand Mesh Reconstruction from Monocular Images We propose a robust and accurate method for reconstructing 3D hand mesh from m…

Selenium 学习(0.20)——软件测试之单元测试

我又(浪完)回来了…… 很久没有学习了,今天忙完终于想起来学习了。没有学习的这段时间,主要是请了两个事假(5工作日和10工作日)放了个年假(13天),然后就到现在了。 看了下…

每周一算法:A*(A Star)算法

八数码难题 题目描述 在 3 3 3\times 3 33 的棋盘上,摆有八个棋子,每个棋子上标有 1 1 1 至 8 8 8 的某一数字。棋盘中留有一个空格,空格用 0 0 0 来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局…

微信小程序购物/超市/餐饮/酒店商城开发搭建过程和需求

1. 商城开发的基本框架 a. 用户界面(Frontend) 页面设计:包括首页、商品列表、商品详情、购物车、下单界面、用户中心等。交云设计:如何让用户操作更加流畅,包括搜索、筛选、排序等功能的实现。响应式设计&#xff1…

【JAVA重要知识 | 第六篇】Java集合类使用总结(List、Set、Map接口及常见实现类)以及常见面试题

文章目录 6.Java集合类使用总结6.1概览6.1.1集合接口类特性6.1.2List接口和Set接口的区别6.1.3简要介绍(1)List接口(2)Set接口(3)Map接口 6.2Collection接口6.3List接口6.3.1ArrayList6.3.2LinkedList—不常…

网络模块使用Hilt注入

retrofit的异步回调方法已经做了线程切换&#xff0c;切换到了主线程 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"><uses-permission android:name"andr…

Solidity 智能合约开发 - 基础:基础语法 基础数据类型、以及用法和示例

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 本篇主要是做一个知识的整理和规划 作为一个类似文档的作用 更为简要和明了 具体的实现案例和用法 后续会陆续给出…

Milvus向量数据库检索

官方文档&#xff1a;https://milvus.io/docs/search.md   本节介绍如何使用 Milvus 搜索实体。   Milvus 中的向量相似度搜索会计算查询向量与具有指定相似度度量的集合中的向量之间的距离&#xff0c;并返回最相似的结果。您可以通过指定过滤标量字段或主键字段的布尔表达…

Redis及其数据类型和常用命令(一)

Redis 非关系型数据库&#xff0c;不需要使用sql语句对数据库进行操作&#xff0c;而是使用命令进行操作&#xff0c;在数据库存储时使用键值对进行存储&#xff0c;应用场景广泛&#xff0c;一般存储访问频率较高的数据。 一般关系型数据库&#xff08;使用sql语句进行操作的…

市场复盘总结 20240314

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 25% 最常用的…

二.递归及实例(汉诺塔问题)

目录 5.递归 6-递归实例:汉诺塔问题 思路: 详细过程: 代码: 5.递归 调用自身 结束条件 6-递归实例:汉诺塔问题 思路: 结果: 详细过程: 代码: #n为盘子的个数 a,b,c分别为3个地方. def hannuta(n,a,b,c): ​if n>0:hannuta(n-1,a,c,b) #将n-1个从a经过c移到到b(a…

【C语言_C语言语句_复习篇】

目录 一、C语言的语句有哪些 1.1 空语句 1.2 表达式语句 1.3 函数调用语句 1.4 复合语句 1.5 控制语句 二、分支语句&#xff08;两种&#xff09; 1.1 if语句 1.1.1 普通分支语句(if、if_else) 1.1.2 嵌套if语句 1.1.3 else嵌套if两种写法的比较 1.1.4 else悬空问题 1.1.…

代码随想录算法训练营第四十七天|动态规划|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

198.打家劫舍 文章 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代…

Docker容器化技术(使用Docker搭建论坛)

第一步&#xff1a;删除容器镜像文件 [rootlocalhost ~]# docker rm -f docker ps -aq b09ee6438986 e0fe8ebf3ba1第二步&#xff1a;使用docker拉取数据库 [rootlocalhost ~]# docker run -d --name db mysql:5.7 02a4e5bfffdc81cb6403985fe4cd6acb0c5fab0b19edf9f5b8274783…

NLP:HanLP的下载与使用

昨天说到要做一个自定义的训练模型&#xff0c;但是很快这个想法就被扑灭了&#xff0c;因为这个手工标记的成本太大&#xff0c;而且我的上级并不是想要我做这个场景&#xff0c;而是希望我通过这个场景展示出可以接下最终需求的能力。换句话来说&#xff1a;可以&#xff0c;…