LITv2来袭 | 使用HiLo Attention实现高精度、快速度的变形金刚,下游任务均实时

2023-05-16

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

bae28057e2ea6b08713c38f1b863ed20.png

作者丨ChaucerG

来源丨集智书童

07ba556e90ad1a5f9aa9672008ddba58.png

近两年来,ViT 在计算机视觉领域的取得了很多重大的突破。它们的高效设计主要受计算复杂度的间接度量(即 FLOPs)指导,但与吞吐量等直接度量存在明显差距。因此,LIT作者建议使用目标平台上的直接速度评估作为高效 ViT 的设计原则。

因此本文提出了 LITv2,一种简单而有效的 ViT,它以更快的速度在各种不同模型大小的频谱上与现有的最先进方法相比表现出色。LITv2 的核心是一种新颖的Self-Attention机制,这里称之为 HiLoHiLo 的灵感来源于图像中的高频捕捉局部细节,低频聚焦于全局结构,而Multi-Head Self-Attention忽略了不同频率的特征。因此,建议通过将 Head 分解成两组来解耦注意力层中的高/低频模式,其中一组通过每个局部窗口内的Self-Attention对高频进行编码,另一组通过执行注意力来建模来自每个窗口的平均池化的低频key与输入特征图中的每个query位置之间的全局关系。

受益于前面2组的高效设计,通过对 FLOPs、GPU 上的速度和内存消耗进行全面基准测试,证明 HiLo 优于现有的注意力机制。在 HiLo 的支持下,LITv2 是主流视觉任务的强大支柱,包括图像分类、密集检测和分割。

1简介

现实世界的应用程序通常需要模型在有限的计算预算下进行最佳速度和精度权衡,例如无人机和自动驾驶。这激发了朝着高效 ViT 设计的大量工作,例如 PVTSwinFocal Transformer 等。为了衡量计算复杂度,最近 ViT 设计中广泛采用的度量是浮点运算的数量,即 FLOPs。但是,FLOPs 是一个间接指标,不能直接反映目标平台上的真实速度。例如,Focal-Tiny 在 GPU 上比 Swin-Ti 慢得多,尽管它们的 FLOPs 相当。

一般来说,最近 ViT 中间接指标 (FLOP) 和直接指标 (速度) 之间的差异可归因于2个主要原因。

  • 首先,尽管 self-attention 在低分辨率特征图上很有效,但由于内存访问成本高,内存和时间的二次复杂度使得在高分辨率图像上的速度要慢得多,从片外 DRAM 获取数据可能会加快速度消耗。

  • 其次,ViTs 中的一些高效注意力机制理论上的复杂度保证较低,但实际上在 GPU 上速度很慢,因为特定的操作对硬件不友好或无法并行化,例如多尺度窗口划分递归扩张窗口等。

有了这些观察结果,在本文中通过直接度量来评估 ViT,即吞吐量,而不仅仅是 FLOPs。基于此原理引入了 LITv2,这是一种新型高效且准确的Vision Transformer,它在标准基准测试中优于大多数最先进的 ViT,同时在 GPU 上实际上速度更快。

LITv2 是在 LITv1 的基础上构建的,LITv1 是一个简单的 ViT Baseline,它在早期 Stage 移除所有Multi-Head Self-Attention,同时在后期 Stage 应用标准Multi-Head Self-Attention。得益于这种设计,LITv1 比许多现有的 ImageNet 分类工作更快,因为早期的 Multi-Head Self-Attention 没有计算成本,而后来的 Multi-Head Self-Attention 只需要处理下采样的低分辨率特征图。然而,标准的 Multi-Head Self-Attention 在高分辨率图像上仍然存在巨大的计算成本,尤其是对于密集预测任务。

为了解决这个问题,本文提出了一种新的高效注意力机制,称为 HiLoHiLo 的动机是自然图像包含丰富的频率,其中高/低频在编码图像模式中扮演不同的角色,即分别为局部细节全局结构。典型的 MSA 层在所有图像块上强制执行相同的全局注意力,而不考虑不同基础频率的特征。这促使提出将 MSA 层分成两条路径,其中一条路径通过局部Self-Attention和相对高分辨率的特征图对高频交互进行编码,而另一条路径通过全局注意力和下采样特征对低频交互进行编码,从而大大提高了效率。

92d75875587125c77c38d7b0d9f0d655.png

图1

具体来说,HiLo 采用两种有效的注意力来解耦特征图中的高/低频率。如图 1 所示,在上面的路径中,将几个Head分配给高频注意力(Hi-Fi),以通过Local Window Self-Attention(例如,2×2 窗口)捕获细粒度的高频,即比标准 MSA 更有效。在下面的路径中,实现低频注意力(Lo-Fi),首先将平均池化应用于每个窗口以获得低频信号。然后,将剩余的Head配给 Lo-Fi,以对输入特征图中的每个query位置与每个窗口的平均池化低频key之间的关系进行建模。受益于keyvalue长度的减少,Lo-Fi 复杂度显著降低。

最后,将细化的高/低频特征连接起来,并将结果输出转发到后续层。由于 Hi-FiLo-Fi 都没有配备扩张窗口和递归等耗时操作,因此 HiLo 的整体框架在 GPU 上是快速的。通过全面的基准测试表明,HiLo 在性能、FLOPs吞吐量内存消耗方面优于现有的注意力机制。

此外,作者发现 LITv1 中的固定相对位置编码由于针对不同图像分辨率的插值而显著降低了其在密集预测任务上的速度。为了提高效率,建议在每个 FFN 中采用一个具有零填充的 3×3 深度卷积层,以结合从零填充中隐式学习的位置信息。此外,3×3 卷积同时有助于扩大 LITv1 中早期多层感知器 (MLP) 块的感受野。

最后,在 ImageNetCOCOADE20K 上进行了广泛的实验,以评估 LITv2 的性能。与 SoTA 模型的全面比较表明,LITv2 架构以更快的吞吐量实现了具有竞争力的性能,使 ViT 在现实场景中运行低延迟应用程序更加可行。

2本文方法

2.1 HiLo Attetion

自然图像包含丰富的频率,其中高频捕获对象的局部细节(例如,线条和形状),而低频编码全局结构(例如,纹理和颜色)。

然而,典型 MSA 层中的全局自注意力没有考虑不同底层频率的特征。为此,建议在注意力层的特征图中分别处理高/低频。将新的注意力机制命名为 HiLo,如图 1 所示。如图所示,HiLo 包含高频注意力 (Hi-Fi) 和低频注意力 (Lo-Fi),用于对特征图中不同频率的关系进行建模。

1、High-frequency attention (Hi-Fi)

直观地说,由于高频对对象的局部细节进行编码,因此在特征图上应用全局注意力可能是冗余且计算成本高的。因此,建议设计 Hi-Fi 来捕获具有局部窗口自注意力(例如2 × 2窗口)的细粒度高频,这可以节省大量的计算复杂度。

此外,在 Hi-Fi 中采用了简单的非重叠窗口,与窗口移位或多尺度窗口划分等耗时的操作相比,它对硬件更加友好。

2、Low-frequency attention (Lo-Fi)

最近的研究表明,MSA 中的全局注意力有助于捕获低频。然而,直接将 MSA 应用于高分辨率特征图需要巨大的计算成本。

由于平均是一个低通滤波器,Lo-Fi 首先对每个窗口应用平均池化以获得输入 X 中的低频信号。接下来,平均池化的特征图被投影到KeyVlaue ,其中 s 是窗口大小。Lo-Fi 中的query Q 仍然来自原始特征图 X。然后应用标准注意力来捕获特征图中丰富的低频信息。

请注意,由于 KV 的空间缩减,Lo-Fi 同时降低了矩阵运算Self-Attention的复杂度。

3、Head splitting

一个简单的Head分配解决方案是为 Hi-FiLo-Fi 分配与标准 MSA 层相同数量的Head。然而,这也的2和Head会导致更多的计算成本。为了获得更好的效率,HiLoMSA 中相同数量的Head分成2组,分配比为α,其中个Head用于 Hi-Fi,其他 个Head用于 Lo-Fi

通过这样做,由于每个注意力的复杂度都低于标准的 MSAHiLo 的整个框架保证了低复杂度并确保了 GPU 上的高吞吐量。此外,head split 的另一个好处是可学习参数 可以分解为2个更小的矩阵,这有助于减少模型参数。最后,HiLo 的输出是每个注意力输出的拼接:

b9347e1b89b78cc8d92aa784d48cdcad.png

其中[·]表示拼接操作。

4、Complexity Analysis

设 N 和 D 是 HiLo 注意力层中的Token数和隐藏维度数。将 s 表示为窗口大小。为简单起见,假设 Hi-FiLo-Fi 具有相同的Head数和特征图具有相等的宽度和高度。那么,每个注意力的计算成本来自三个部分:

  1. Q、K、V 矩阵的投影

  2. 注意力计算和V的加权和

  3. 最终线性投影

对于 Hi-Fi,每个部分的计算成本为

c2c67aa5cbe49080957b916472f4b5ab.png

求和以上3个部分的结果可以得到 Hi-Fi 的总计算成本为 。

Lo-Fi 中每个部分的计算成本为

ba24a4f38322a5753d671c049a5a0387.png

求和以上3个部分的结果可以得到 Lo-Fi 的总计算成本为 。

782c43f6d995aa3ee981a6b786b98645.png

图2

如图2-(a)和(b)所示,在较小的输入图像分辨率和较小的 s 值(例如,s = 2)下,Hi-FiLo-Fi 的效率相当。然而,在分辨率更高的情况下,Lo-Fi 将导致巨大的计算成本。在这种情况下,稍微增加 s(例如,s = 4)有助于 Lo-Fi 在保持准确性的同时实现更好的效率。

将这2个注意力结合在一起,更大的窗口大小也有助于 HiLo 的整体框架减少高分辨率图像上的更多 FLOPs,如图 2-(c) 所示。因此,建议在现有框架中采用 HiLo 的实用指南:

增加窗口大小以便在高分辨率图像上获得更好的效率

2.2 Positional Encoding

位置编码由于其排列不变的特性而对Self-Attention至关重要。在 LITv1 中,后来的 MSA 采用与 Swin 相同的相对位置编码 (RPE) 方案。这个与使用绝对位置编码相比,该方法在 ImageNet 上的 Top-1 准确度上显着提高了 0.7%。

然而,在密集预测任务中,必须针对不同的图像分辨率对固定的 RPE 进行插值,这大大减慢了 LITv1 的训练/推理速度。正如最近的一项研究表明,位置信息可以从 CNN 中的零填充中隐式学习,建议在每个 FFN 中采用具有零填充的一层 3×3 深度卷积层来代替耗时的 RPE。值得注意的是,由于消除了早期Stage中的 MSALITv1 中的早期Stage Block只剩下 FFN,这导致了 1×1 的微小感受野。为此,作者还在每个 FFN 中采用的 3×3 卷积滤波器通过同时扩大早期Stage的感受野来改进 LITv2

2.3 模型架构

LITv2 具有三个变体:LITv2-SLITv2-MLITv2-B,分别对应 LITv1 中的Smallmediumbase设置。为了公平比较,保持网络宽度和深度与 LITv1 相同。整体修改简单地分为2个步骤:

  1. 在每个 FFN 中添加一层带有零填充的深度卷积,并删除所有 MSA 中的所有相对位置编码

  2. 用建议的 HiLo 注意力替换所有注意力层。

具体架构信息和配分分别参考下图3和表6

808bd38f9cf2b4ba7c1b2461ea539e05.png

图3

c3609576c0d16b08d3dea69d889922cd.png

表6

3实验

3.1 消融实验

1、HiLo与其他注意力机制的比较

基于 LITv2-S,将 HiLo 的性能与 ImageNet-1K 上的其他有效注意力机制进行了比较,包括 PVT 中的空间缩减注意力 (SRA)、Swin 中的基于移位窗口的注意力 (W-MSA) 以及Twinsz中的交替的局部和全局注意力 (T-MSA)。

9c9c7d69835b97f01ecf8547a369b7b1.png

表 4

在实现中,直接用每个比较方法替换 HiLo。结果如表 4 所示。总的来说,HiLo 减少了更多的 FLOPs,同时实现了更好的性能和更快的速度。

2478afe62b768446486a3c5ebb987b5d.png

图3

此外,在图 3 中,提供了基于不同图像分辨率的更多注意力机制的综合基准,包括 FocalQuadTreePerformer。由于并行性较弱,它们甚至比在 GPU 上使用标准 MSA 还要慢。与它们相比,HiLoFLOPs吞吐量内存消耗方面取得了具有竞争力的结果。

2、α的影响

500343e08b1cb1a06a2637798117a9fe.png

图 4

如图 4 所示,由于在 224 × 224 的分辨率和窗口大小为2的情况下,Lo-Fi 的复杂度低于 Hi-Fi,因此更大的 α 有助于减少更多的 FLOPs,因为将更多的Head分配给 Lo-Fi

此外,作者发现 HiLo 在 α = 0 时表现不佳,在这种情况下,只剩下 Hi-FiHiLo 只关注高频。作者推测低频在自注意力中起着重要作用。对于其他 α 值,作者发现性能差异约为 0.2%,其中 α = 0.9 实现了最佳性能。

3、架构修改的影响

2709fa0c930e317165307fbad1b3ae06.png

表 5

基于 LITv2-S探索架构修改的效果。如表 5 所示,受益于早期扩大的感受野,深度卷积的采用提高了 ImageNetCOCO 的性能。接下来,通过去除相对位置编码提高了密集预测任务的 FPS,但在两个数据集上的性能略有下降。

另注意,由于深度卷积通过零填充对位置信息进行了编码,因此与之前的工作相比,RPE 的消除不会导致性能显着下降。最后,得益于 HiLo,在 ImageNetCOCO 上都获得了更多的模型效率提升。

4、HiLo光谱分析

72fbcd39dc0845db1fd418944036bf5e.png

图 5

在图 5 中,分别可视化了来自 Hi-FiLo-Fi 注意力的输出特征图的频率幅度。可视化表明 Hi-Fi 捕获更多的高频,而 Lo-Fi 主要侧重于低频。这与在单个注意力层分离特征图中的高频和低频的目标非常一致。

3.2 图像分类

703b4c4b041c49cce54768fd0606da85.png

3.3 目标检测与实例分割

30fa67f5209def764273e0dd87724848.png

3.4 语义分割

180766cde05f4ea75746eaf95105c695.png

4参考

[1].Fast Vision Transformers with HiLo Attention

本文仅做学术分享,如有侵权,请联系删文。

干货下载与学习

后台回复:巴塞罗自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件

后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf

后台回复:3D视觉课程,即可学习3D视觉领域精品课程

计算机视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

15.国内首个3D缺陷检测教程:理论、源码与实战

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

3d2be2cadd624a826e1b8770e342ae79.png

▲长按加微信群或投稿

9c116afffc82a2f495f04f87cc0171a4.png

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

1b8ef79712370a8373e0a7a65ecafec9.png

 圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LITv2来袭 | 使用HiLo Attention实现高精度、快速度的变形金刚,下游任务均实时 的相关文章

  • 详解LVDS通信协议

    目录 LVDS概述LVDS接口电路的组成LVDS输出接口电路类型单路6位LVDS输出接口双路6位LVDS输出接口单路8位1TL输出接口双路8位1TL输出位接口 典型LVDS发送芯片介绍四通道LVDS发送芯片五通道LVDS发送芯片十通道LVD
  • 自动跟随机器人:一种简易的自动跟随方案,自动跟随小车、自动跟随平衡小车、STM32、基于超声波的自动跟随小车

    目的 xff1a 一种廉价的跟随方案 xff0c 让大家都能够参与进来 xff0c 技术难度不大 xff0c 一些人也能够DIY一些属于自己的 跟随 机器人 xff01 并不是要做工业应用什么的 只是做出来玩玩 1 介绍 先看视频 xff0
  • 详解MIPI协议

    目录 前言MIPI简介MIPI联盟的MIPI DSI规范MIPI名词解释MIPI DSI分层结构command和video模式 D PHYLane模组Lane 全局架构Lane电压和状态DATA LANE操作模式时钟LANE低功耗状态高速数
  • 音频处理——详解PCM数据格式

    目录 知识储备什么是PCM采样采样率重采样 量化编码PCM常用指标 PCM数据流 知识储备 音频处理 音频编码原理简介 音频处理 音频处理的基本概念 什么是PCM PCM全称Pulse Code Modulation xff0c 翻译一下是
  • 音频处理——常用音频编码格式简介(PCM、G726、ADPCM、LPCM、G711、AAC)

    目录 PCMG726ADPCMLPCMG711AAC格式对比音频帧长音频播放过程 PCM 音频处理 详解PCM数据格式 音频处理 解析PCM格式实例 xff08 音量调控 xff09 G726 G 726是ITU T定义的音频编码算法 19
  • 音频处理——G711标准详解

    目录 G711简介G711A算法原理压缩方法举例代码 G711U算法原理压缩方法举例代码 G711A与G711U对比 参考链接 G711简介 G711是国际电信联盟ITU T定制出来的一套语音压缩标准 xff0c 它代表了对数PCM xff
  • PS流详解(载荷H264)

    目录 PS简介标准结构标准H264流结构定长音频帧和其他流式私有数据的结构 PS流封装标准PSH结构PES包结构PSM包结构体 元素流 PS 封装规则H264元素流封装规则音频元素流封装规则私有信息封装规则 PS简介 PS 封装方式需要支持
  • Postman中的authorization

    1 概述 Authorization是验证是否拥有从服务器访问所需数据的权限 当发送请求时 xff0c 通常必须包含参数 xff0c 以确保请求具有访问和返回所需数据的权限 Postman提供了授权类型 xff0c 可以轻松地在Postma
  • 操作pdf,提示startxref not found

    startxref not found多半是文件被损坏了 xff0c 检查一下 xff0c 是不是之前自己写的代码把pdf文件跑崩了 可以尝试重新生成一遍该pdf文件 xff0c 然后再进行操作 或者尝试一下 xff1a https www
  • FTP 530未登录

    提供一种思路 xff1a 如果说FTP服务器已开 xff0c 服务器也能ping通 就得考虑是不是我们在FTP服务器上设置的默认路径有问题 xff08 不符合我们的需求 xff09 Windows10下 xff0c FTP设置默认位置 xf
  • 开源个小demo

    https github com UnderADome epms 内部项目管理
  • LDAP的基本知识

    https zhuanlan zhihu com p 147768058 https www cnblogs com gaoyanbing p 13967860 html
  • 「权威发布」2019年电赛最全各类题目细节问题解答汇总

    点击上方 大鱼机器人 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 xff01 各位朋友大家上午好 xff0c 今天是比赛的第二天 xff0c 许多朋友都给我发消息 xff0c 我不是不回 xff0c 我实在是回不
  • Unable to find explicit activity class

    做项目从一个activity逐渐转向到使用多个activity xff0c 这个时候新手就容易出现一个问题 xff0c 忘了给activity在AndroidManifest xml中注册 打开日志 xff0c 在遇到这个报错信息的时候 x
  • Errors running builder 'Maven Project Builder'

    由于第一次玩maven的时候 xff0c 很多东西都还是懵懵懂懂 xff0c 不是很清楚 xff0c 不知道怎么把Myeclipse中的maven配置弄坏了 xff0c 从外部导入maven项目的时候 xff0c 总会报一些错误 xff1a
  • Type handler was null on parameter mapping for property '__frch_id_0'

    1 Type handler was null on parameter mapping for property frch id 0 2 Type handler was null on parameter mapping or prop
  • 如何解决error: failed to push some refs to 'xxx(远程库)'

    在使用git 对源代码进行push到gitHub时可能会出错 xff0c 信息如下 此时很多人会尝试下面的命令把当前分支代码上传到master分支上 git push u origin master 但依然没能解决问题 出现错误的主要原因是
  • expected an indented block

    Python中没有分号 xff0c 用严格的缩进来表示上下级从属关系 导致excepted an indented block这个错误的原因一般有两个 xff1a 1 冒号后面是要写上一定的内容的 xff08 新手容易遗忘这一点 xff09
  • C 实现TCP服务端(select、poll、epoll)

    使用C简单的实现一个tcp server xff0c 包括常规server 多线程实现server select实现server poll实现server epoll实现server IO模型原理可以看上一篇文章 常规模式 define M
  • UART串口通信

    目录 一 通信特点二 通信应用三 接线示意图三 UART通信协议四 STM32F4 串口使用1 资源分布2 特性3 UART框图4 使用方法5 相关库函数6 函数实例 五 实战 上位机控制开发板小灯 一 通信特点 异步 串行 全双工 一般描

随机推荐

  • 项目:文件搜索助手(FileSeeker)

    目录 1 项目简介 2 项目源代码 3 相关技术 4 实现原理 5 项目架构图 6 项目功能 7 测试报告 7 1 测试用例 7 2 测试环境 7 3 测试结论 7 3 1 功能测试 7 3 2 性能测试 7 3 3 兼容性 7 3 4 容
  • cocos2d实现2D地图A*广度路径算法

    h ifndef HELLOWORLD SCENE H define HELLOWORLD SCENE H include 34 cocos2d h 34 USING NS CC enum PatchFront Uper 61 1 Down
  • Keil 中,仿真调试查看局部变量值总是显示<not in scope>

    原因 xff1a 编译器把代码优化掉了 xff0c 直接导致在仿真中变量根本没有分配内存 xff0c 也就无法查看变量值 以后调试中遇到这种情况的解决办法 xff1a 核心思想是 xff1a 让变量值在代码中被读取其内存值 1 把变量定义为
  • 联合体在串口通讯中的妙用

    背景 本文主要涉及到的是一种串口通讯的数据处理方法 xff0c 主要是为了解决浮点数在串口通讯中的传输问题 xff1b 通常而言 xff0c 整形的数据类型 xff0c 只需进行移位运算按位取出每个字节即可 xff0c 那么遇到浮点型的数据
  • Linux 平均负载

    本文首发自公众号 LinuxOK xff0c ID 为 xff1a Linux ok 关注公众号第一时间获取更新 xff0c 分享不仅技术文章 xff0c 还有关于职场生活的碎碎念 在 Linux 系统中 xff0c 所谓平均负载 xff0
  • Linux 进程状态

    Linux 进程状态是平时排查问题 程序稳定性测试的基础知识 xff0c 查看进程状态的常用工具有 top 和 ps 以 top 的输出为例 xff1a S 列 xff08 Status xff09 表示进程的状态 xff0c 图中可见 D
  • Docker 是什么

    本文首发自公众号 LinuxOK xff0c ID为 xff1a Linux ok xff0c 关注公众号第一时间获取更新 xff0c 分享记录职场开发过程中所见所感 Docker 是一个用 GO 语言实现的开源项目 xff0c 它可以将应
  • 哈希表示例

    哈希表的意义在于高效查找 对于查找来说 xff0c 如果数据量特别大 xff0c 二分查找和哈希表算法十分有用了 二分查找前面已经讲过 xff0c 现来讲讲哈希表算法 就像输入数据数组下标返回数组元素一样 xff0c 这样的查找方式是最高效
  • RS-485通讯协议

    1 硬件层协议 通讯协议主要是实现两个设备之间的数据交换功能 xff0c 通讯协议分硬件层协议和软件层协议 硬件层协议决定数据如何传输问题 xff0c 比如要在设备1向设备2发送0x63 xff0c 0x63的二进制数为0110 0011
  • udp通讯中的connect()和bind()函数

    本文收录于微信公众号 LinuxOK xff0c ID为 xff1a Linux ok xff0c 关注公众号第一时间获取更多技术学习文章 udp是一个基于无连接的通讯协议 xff0c 通讯基本模型如下 可以看出 xff0c 不论是在客户端
  • c语言和c++的相互调用

    本文收录于微信公众号 LinuxOK xff0c ID为 xff1a Linux ok xff0c 关注公众号第一时间获取更多技术学习文章 在实际项目开发中 xff0c c和c 43 43 代码的相互调用是常见的 xff0c c 43 43
  • MSVC 版本号对应

    MSVC 43 43 14 0 MSC VER 61 61 1900 Visual Studio 2015 MSVC 43 43 12 0 MSC VER 61 61 1800 Visual Studio 2013 MSVC 43 43 1
  • SPI通讯协议介绍

    来到SPI通讯协议了 废话两句 xff0c SPI很重要 xff0c 这是我在学校时候听那些单片机开发工程师说的 出来实习 xff0c 到后来工作 xff0c 确实如此 xff0c SPI的使用很常见 xff0c 那么自然重要咯 SPI S
  • Qt多线程中的信号与槽

    1 Qt对象的依附性和事务循环 QThread继承自QObject xff0c 自然拥有发射信号 定义槽函数的能力 QThread默认声明了以下几个关键信号 信号只能声明不能定义 xff1a 1 线程开始运行时发射的信号 span clas
  • TCP/IP协议四层模型

    本文收录于微信公众号 LinuxOK xff0c ID为 xff1a Linux ok xff0c 关注公众号第一时间获取更多技术学习文章 接下来的学习重心会放在Linux网络编程这一块 xff0c 我的博客也会随之更新 参照的书籍有 Li
  • 常见的DoS攻击

    本文收录于微信公众号 LinuxOK xff0c ID为 xff1a Linux ok xff0c 关注公众号第一时间获取更多技术学习文章 拒绝服务攻击DoS Denial of Service xff1a 使系统过于忙碌而不能执行有用的业
  • stm32的can总线理解及应用——程序对应stm32f103系列

    CAN 是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 它的通信速度较快 xff0c 通信距离远 xff0c 最高1Mbps xff08 距离小
  • 多视图几何三维重建实战系列之MVSNet

    点击上方 计算机视觉工坊 xff0c 选择 星标 干货第一时间送达 1 概述 MVS是一种从具有一定重叠度的多视图视角中恢复场景的稠密结构的技术 xff0c 传统方法利用几何 光学一致性构造匹配代价 xff0c 进行匹配代价累积 xff0c
  • LiLi-OM: 走向高性能固态激光雷达惯性里程计和建图系统

    点击上方 计算机视觉工坊 xff0c 选择 星标 干货第一时间送达 编辑丨当SLAM遇见小王同学 声明 本文只是个人学习记录 xff0c 侵权可删 论文版权与著作权等全归原作者所有 xff0c 小王自觉遵守 中华人民共和国著作权法 与 伯尔
  • LITv2来袭 | 使用HiLo Attention实现高精度、快速度的变形金刚,下游任务均实时

    点击上方 计算机视觉工坊 xff0c 选择 星标 干货第一时间送达 作者丨ChaucerG 来源丨集智书童 近两年来 xff0c ViT 在计算机视觉领域的取得了很多重大的突破 它们的高效设计主要受计算复杂度的间接度量 xff08 即 FL