【论文笔记】ViT-CoMer
【题目】:ViT-CoMer: Vision Transformer with Convolutional Multi-scale Feature Interaction for Dense Predictions
【引用格式】:Xia C, Wang X, Lv F, et al. Vit-comer: Vision transformer with convolutional multi-scale feature interaction for dense predictions[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2024: 5493-5502.
【网址】:https://openaccess.thecvf.com/content/CVPR2024/papers/Xia_ViT-CoMer_Vision_Transformer_with_Convolutional_Multi-scale_Feature_Interaction_for_Dense_CVPR_2024_paper.pdf
【开源代码】:https: //github.com/Traffic-X/ViT-CoMer
目录
一、瓶颈问题
二、本文贡献
三、解决方案
1. 总体架构
2. 多感受野特征金字塔
3. CNN与Transformer双向融合交互
四、实验结果
1. 目标检测和实例分割
1.1 实验设置
1.2 与不同骨干网络和框架的比较
1.3 不同预训练权重下的结果
1.4 与最先进方法的比较
2. 语义分割
2.1 实验设置
2.2 与不同骨干网络比较
2.3 与不同预训练权重的比较
2.4 与最先进方法比较
3. 消融实验
3.1 实验设置
3.2 组件消融实验
3.3 双向融合交互的数量
3.4 MRFP中不同卷积核大小
3.5 可扩展性
3.6 定性结果
一、瓶颈问题
- ViT 结构自身缺陷:ViT 存在 Patch 内信息交互不足以及缺乏分层特征的问题,导致其在捕捉图像多尺度信息、长距离依赖关系和语义表示能力上存在局限性,难以有效处理密集预测任务。
- 跨架构特征融合难题:CNN 和 Transformer 架构由于设计原理不同,在特征表示上存在显著差异(如高低频语义、全局 - 局部信息等方面的偏差),使得两者特征难以有效融合,无法充分发挥各自优势。
- 传统 Transformer 特征利用不充分:传统 Transformer 架构仅在单一尺度特征上使用自注意力机制,无法充分利用图像中丰富的多尺度信息,限制了模型在密集预测任务中的性能表现。
- 模型泛化与性能提升瓶颈:在密集预测任务(如目标检测、实例分割和语义分割)中,现有基于 ViT 的方法或特定视觉骨干网络,在模型性能、泛化能力以及对不同预训练策略的适应性方面存在提升瓶颈,难以在各类任务和数据集上取得更优表现 。
二、本文贡献
- 创新跨架构融合机制:提出新的融合策略,通过自注意力机制统一 CNN 与 Transformer 特征,增强特征对模态差异的不变性,并利用双向交互更新 ViT 和 CNN 分支特征,有效解决了不同架构特征融合的难题,提升了模型对多尺度、多层次信息的利用能力。
- 优化多尺度特征处理:改进传统 Transformer 单一尺度特征处理的局限,促使模型更好地捕捉图像多尺度信息,增强了模型在密集预测任务中的特征表达能力。
- 良好的可扩展性与适应性:方法可轻松集成到其他先进模型,在不同模型规模、算法框架和配置下均表现出色;对不同预训练权重具有良好适应性,能利用多样化的开源大规模预训练提升下游任务性能;应用于分层视觉 Transformer(如 Swin)时也能有效提升模型性能,证明了方法的可扩展性。
三、解决方案
1. 总体架构
分支特征提取:
ViT-CoMer架构包含两个分支。对于ViT分支,将形状为(H×W×3)的输入图像送入补丁嵌入(patch embedding),得到分辨率为原始图像( 1 / 16 )的特征。对于另一分支,图像通过一组卷积操作,获得分辨率分别为( 1 / 8 )、( 1 / 16 ) 和( 1 / 32 )的特征金字塔C3、C4和C5,每个特征金字塔都包含D维特征图。
特征交互:
两个分支的特征都要经过N个阶段的特征交互。在每个阶段,特征金字塔首先通过 MRFP 模块进行增强,然后通过 CTI 模块与 ViT 的特征进行双向交互,以获得具有丰富语义信息的多尺度特征。CTI 在每个阶段的开始和结束时进行操作。经过N个阶段的特征交互后,将两个分支在每个尺度上的特征相加,用于密集预测任务。
2. 多感受野特征金字塔
多感受野特征金字塔模块由一个特征金字塔和多感受野卷积层组成。【特征金字塔可以提供丰富的多尺度信息,适应图像中不同大小目标和结构的表征需求。而多感受野卷积层则通过不同的卷积核来扩大感受野,增强了卷积神经网络(CNN)特征的长距离建模能力】。
多感受野特征金字塔由两个线性投影层和一组具有多感受野的深度可分离卷积层组成。该模块的输入是一组多尺度特征{C3,C4,C5},文中将这些特征展平并连接成特征。C首先通过一个线性投影层来获得降维后的特征,然后在通道维度上把这些特征划分为M组;不同组的特征对应具有不同感受野的卷积层(例如卷积核大小k=3x3、5x5)。最后,经过处理的特征被连接起来,通过线性投影层进行升维。这个过程可表示为:
F = FC(DWConv(FC(C)))
- FC:线性投影
- DWConv:具有不同大小卷积核的深度可分离卷积
3. CNN与Transformer双向融合交互
文中提出了一种名为CTI的跨架构特征融合方法,它在不改变 ViT 结构的情况下引入了 CNN 的多尺度特征。同时,通过双向交互,缓解了 ViT 中存在的 Patch 内信息交互不足和非分层特征的问题,同时进一步增强了 CNN 的长距离建模能力和语义表示能力。
文中为了融合ViT特征和通过MRFP模块获得的多尺度特征{F3,F4,F5}(可表示为
),文中直接将特征 X 和 F4 相加,得到集合 F’,表示为F' = {F3,F4',F5},其聚合了来自不同尺度的特征。之后,由于架构差异,它们在台表示上存在偏差(高低频语义以及全局 - 局部信息),文中增加自注意力机制来统一CNN和Transformer的特征【由于F’包含了不同尺寸的信息,通过自注意力机制可以有效解决传统Transformer在单一尺寸上使用自注意力机制的问题】,增强对模态差异的表示不变性,可描述为:
O=FFN(Attention(norm(F')))
- Norm(-):层归一化(LayerNorm)
- Attention():多尺度可变形注意力机制
- FFN():前馈神经网络
最后,通过双线性差值将O3和O5的特征图尺寸调整为与O4一致,并将X作为下一个ViT层的输入。
对于跨架构融合的特征,文中采用双向交互来更新ViT和CNN分支的特征。具体来说,在第i阶段开始时,将两个分支的特征进行融合,然后将融合后的特征注入到ViT分支中,可表示为:
:ViT分支更新后的特征
- α:一个初始化为零的可学习变量,能够在早期训练中最小化随机初始化的CNN架构对ViT的影响
在第 i 阶段结束时,重复该过程将特征注入到CNN分支,可表示为:
:卷积神经网络(CNN)分支更新后的特征
- i:根据ViT的深度来确定
跨架构的特征融合和双向交互使得能够利用多尺度和多层次的特征,提升了模型的表达能力和泛化能力。同时,所提出的组件能够轻松集成到其他先进的模型中,并在密集预测任务中表现得更好。
四、实验结果
1. 目标检测和实例分割
1.1 实验设置
文中利用MMDetection框架来实现文中方案,并在COCO数据集上进行目标检测和实例分割实验。目标检测和实例分割框架包括掩码区域卷积神经网络(Mask R-CNN)、级联掩码区域卷积神经网络(Cascade Mask R-CNN)、自适应训练样本选择算法(ATSS)和 Generalized Focal Loss(GFL)。参考金字塔Vision Transformer(PVT),文中按照 1 倍(12 个训练轮次)或 3 倍(36 个训练轮次)的训练计划进行实验。文中的总批量大小为 16,使用 AdamW 优化器,学习率为1 × 10⁻⁴
,权重衰减为 0.05。
1.2 与不同骨干网络和框架的比较
在模型规模相近的情况下,ViT-CoMer 在 COCO 目标检测和实例分割这两项典型的密集预测任务中,性能优于其他骨干网络。例如,在 1 倍(3 倍)训练计划下,ViT-CoMer-S 相比于普通 ViT-S,边界框平均精度均值(box mAP)显著提升了 + 5.6%(+4.8%),掩码平均精度均值(mask mAP)提升了 + 3.4%(+3.1%)。此外,ViT-CoMer-S 在仅使用 ViT-L 六分之一参数的情况下,检测结果优于 ViT-L。而且,文中的方法相较于特定视觉骨干网络以及适配骨干网络,如 InternImage 和 ViT-Adapter ,也展现出了显著的性能提升。
使用不同的检测框架对 ViT-CoMer 进行评估,在各种框架、模型规模和配置下,文中的方法始终优于其他骨干网络。
1.3 不同预训练权重下的结果
经过多模态预训练的 ViT-CoMer-B 与在 ImageNet-1K 上预训练的模型相比,在边界框平均精度(APb)上提升了(+1.7%),在掩码平均精度(APm)上提升了(+1.7%) 。此外,文中在 ViT-CoMer-L 上比较了更多的预训练方式,其中自监督预训练取得了显著的成果。与在 ImageNet-22K上预训练的模型相比,它在边界框平均精度(APb)上提升了(+3.0%),在掩码平均精度(APm)上提升了(+2.7%) 。
1.4 与最先进方法的比较
2. 语义分割
2.1 实验设置
语义分割实验基于使用了 MMSegmentation 的 ADE20K 数据集。文中选择 UperNet 作为基础框架。训练配置与 Swin 保持一致,包括进行 160,000 次迭代训练。批量大小设置为 16,使用 AdamW 优化器。学习率和权重衰减参数分别调整为(2 × 10⁻⁵) 和 0.05。
2.2 与不同骨干网络比较
ViT-CoMer-S 在多尺度平均交并比(MS mIoU)上达到了 47.7%,超过了许多强大的同类方法,比如 Swin-T(高出 1.9%)和 ViTAdapter-S(高出 0.6%)。同样,ViT-CoMer-L 取得了具有竞争力的多尺度平均交并比(MS mIoU)成绩,达到了 55.6%,比 Swin-L 高出 2.1%,比 ViT-Adapter-L 高出 1.2%。
2.3 与不同预训练权重的比较
当使用 ImageNet-22K 预训练权重时,文中的 ViT-CoMer-L 在多尺度平均交并比(MS mIoU)上达到 55.6%,比 ViT-Adapter-L 的平均交并比(mIoU)高出 1.2%。然后,文中使用多模态预训练来初始化 ViT-CoMer-L,这使文中的模型在平均交并比(mIoU)上显著提升了 2.0%,比 ViT-Adapter-L 高出 1.4%。
2.4 与最先进方法比较
3. 消融实验
3.1 实验设置
文中对 ViT-CoMer-S 进行消融实验,使用掩码区域卷积神经网络(Mask R-CNN)(1 倍训练计划)来执行目标检测和实例分割任务。在训练过程中使用的总批量大小为 16,所采用的优化器是 AdamW,学习率和权重衰减参数分别设置为1 × 10⁻⁴ 和 0.05。
3.2 组件消融实验
当使用多感受野特征金字塔(MRFP)向普通 ViT 提供卷积神经网络(CNN)的多尺度和多感受野特征时(特征直接相加),边界框平均精度(APb)提高了(1.3%),掩码平均精度(APm)提高了(1.1%)。此外,用本文提出的卷积神经网络 - Transformer 双向融合交互模块(CTI)替换 “直接相加” 操作。当仅使用 CTI(作用于 ViT 分支,即 CTI (to V))时,模型的边界框平均精度(APb)提高了(1.8%),掩码平均精度(APm)提高了(1.1%);当同时使用 CTI(作用于 ViT 分支)和 CTI(作用于 CNN 分支,即 CTI (to C))时,性能进一步显著提升,边界框平均精度(APb)提高了(2.5%),掩码平均精度(APm)提高了(1.2%) 。总体而言,与普通 ViT 相比,文中的 ViT-CoMer 在边界框平均精度(APb)上显著提高了(5.6%),在掩码平均精度(APm)上提高了(3.4%)。
3.3 双向融合交互的数量
3.4 MRFP中不同卷积核大小
3.5 可扩展性
文中的方法也可以应用于诸如 Swin 之类的分层视觉 Transformer。文中的方法使 Swin-T 的边界框平均精度(box AP)提升了(+2.1%),掩码平均精度(mask AP)提升了(+1.2%)。由于 Swin 架构已经引入了归纳偏置,与普通的 ViT 相比,性能提升幅度略低。
3.6 定性结果
根据 iFormer,普通的视觉 Transformer(ViT)由于自注意力操作,倾向于捕获图像中的全局和低频特征,而卷积神经网络(CNN)由于卷积操作,倾向于捕获图像中的局部和高频特征。然而,在密集预测任务中,图像中会出现不同大小和密度的各种物体,这要求模型具备同时提取和捕获局部与全局、高频与低频特征的能力。文中通过可视化不同层(下采样率为 1/4、1/8、1/16 和 1/32)的特征图,对普通 ViT 和文中提出的 ViT-CoMer 在实例分割和目标检测任务中的差异进行了定性评估。如图可以看出,与普通 ViT 相比,文中的 ViT-CoMer 生成了更细粒度的多尺度特征,从而增强了模型的目标定位能力。
相关文章:
【论文笔记】ViT-CoMer
【题目】:ViT-CoMer: Vision Transformer with Convolutional Multi-scale Feature Interaction for Dense Predictions 【引用格式】:Xia C, Wang X, Lv F, et al. Vit-comer: Vision transformer with convolutional multi-scale feature interaction…...
kaggle薅羊毛
参考:https://pytorch-tutorial.readthedocs.io/en/latest/tutorial/chapter05_application/5_1_kaggle/#512-kaggle https://github.com/girls-in-ai/Girls-In-AI/blob/master/machine_learning_diary/data_analysis/kaggle_intro.md 1,code training…...
Python 之 Flask 入门学习
安装 Flask 在开始使用 Flask 之前,需要先安装它。可以通过 pip 命令来安装 Flask: pip install Flask创建第一个 Flask 应用 创建一个简单的 Flask 应用,只需要几行代码。以下是一个最基本的 Flask 应用示例: from flask imp…...
SpringBoot Vue MySQL酒店民宿预订系统源码(支付宝沙箱支付)+代码讲解视频
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...
Oracle日期计算跟Mysql计算日期差距问题-导致两边计算不一致
Oracle数据库对日期做加法时,得到的时间是某天的12:00:00 例: Oracle计算 select (TO_DATE(2025-04-14, YYYY-MM-DD)1.5*365) from dual; 结果:2026/10/13 12:00:00Mysql计算 select DATE_ADD( str_to_date( 2025-04-14, %Y-%m-%d ), INTER…...
多线程(三)
上一期关于线程的执行,咱们说到线程是 “ 随机调度,抢占式执行 ”。所以我们对于线程之间执行的先后顺序是难以预知的。 例如咱们打篮球的时候,球场上的每一位运动员都是一个独立的 “ 执行流 ”,也可以认为是一个线程࿰…...
微服务商城(1)开篇、服务划分
参考:https://mp.weixin.qq.com/s?__bizMzg2ODU1MTI0OA&mid2247485597&idx1&sn7e85894b7847cc50df51d66092792453&scene21#wechat_redirect 为什么选择go-zero go-zero 为我们提供了许多高并发场景下的实用工具,比如为了降低接口耗时…...
刘强东 “猪猪侠” 营销:重构创始人IP的符号革命|创客匠人热点评述
当刘强东身着印有外卖箱猪猪侠的 T 恤漫步东京涩谷街头时,这场看似荒诞的行为艺术实则揭开了互联网商业竞争的新篇章。这位曾经以严肃企业家形象示人的京东创始人,正通过二次元 IP 的深度绑定,完成从商业领袖到文化符号的华丽转身。 一、IP …...
MQ消息队列的深入研究
目录 1、Apache Kafka 1.1、 kafka架构设 1.2、最大特点 1.3、功能介绍 1.4、Broker数据共享 1.5、数据一致性 2、RabbitMQ 2.1、架构图 2.2、最大特点 2.3、工作原理 2.4、功能介绍 3、RocketMQ 3.1、 架构设计 3.2、工作原理 3.3、最大特点 3.4、功能介绍 3…...
填涂颜色(bfs)
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言📝 含泪播种的人一定能含笑收获! 题目描述 由数字 0 0 0 组成的方阵中,有一任意形状的由数字 1 1 1 构成的闭合圈。现…...
FFplay 音视频同步机制解析:以音频为基准的时间校准与动态帧调整策略
1.⾳视频同步基础 1.2 简介 看视频时,要是声音和画面不同步,体验会大打折扣。之所以会出现这种情况,和音视频数据的处理过程密切相关。音频和视频的输出不在同一个线程,就像两个工人在不同车间工作,而且不一定会同时…...
【Linux笔记】——进程信号的捕捉——从中断聊聊OS是怎么“活起来”的
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux笔记】——进程信号的保存 🔖流水不争,争的是滔滔不息 一、信号捕捉的流程二、…...
VCS X-PROP建模以及在方针中的应用
VCS X-PROP建模以及在方针中的应用 摘要:VCS X-Prop(X-Propagation)是 Synopsys VCS 仿真工具中的一种高级功能,用于增强 X 态(未知态)和 Z 态(高阻态)在 RTL 仿真中的建模和传播能力…...
OpenSHMEM 介绍和使用指南
OpenSHMEM 介绍和使用指南 什么是 OpenSHMEM? OpenSHMEM 是一个用于并行计算的标准化 API,它提供了一种分区全局地址空间 (PGAS) 编程模型。OpenSHMEM 最初由 Cray 公司开发,后来成为一个开源项目,旨在为高性能计算提供高效的通…...
Electron入门指南:用前端技术打造桌面应用
🌟 目录速览 什么是Electron?为什么要用Electron?核心概念三分钟掌握快速创建第一个应用典型应用场景开发注意事项常见问题解答 一、什么是Electron?🤔 Electron就像魔法转换器,它能将你熟悉的࿱…...
机器学习第十讲:异常值检测 → 发现身高填3米的不合理数据
机器学习第十讲:异常值检测 → 发现身高填3米的不合理数据 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 一、幼儿…...
【Redis】缓存穿透、缓存雪崩、缓存击穿
1.缓存穿透 是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,导致请求直接穿透缓存到达数据库,给数据库带来压力的情况。 常见的解决方案有两种: 缓存空对象:实现简单,维护方便&am…...
科学养生指南:打造健康生活
在快节奏的现代生活中,健康养生成为人们关注的焦点。科学养生无需复杂理论,掌握以下几个关键要素,就能为身体构筑坚实的健康防线。 合理饮食是健康的基础。世界卫生组织建议,每天应摄入至少 5 份蔬菜和水果,保证维生…...
解锁健康生活:现代养生实用方案
早上被闹钟惊醒后匆忙灌下咖啡,中午用外卖应付一餐,深夜刷着手机迟迟不肯入睡 —— 这样的生活模式,正在不知不觉侵蚀我们的健康。科学养生并非遥不可及的目标,只需从生活细节入手,就能逐步改善身体状态。 饮食管理…...
深入解析JVM字节码解释器执行流程(OpenJDK 17源码实现)
一、核心流程概述 JVM解释器的核心任务是将Java字节码逐条翻译为本地机器指令并执行。其执行流程可分为以下关键阶段: 方法调用入口构建:生成栈帧、处理参数、同步锁等。 字节码分派(Dispatch):根据字节码跳转到对应…...
【HCIA】BFD
前言 前面我们介绍了浮动路由以及出口路由器的默认路由配置,可如此配置会存在隐患,就是出口路由器直连的网络设备并不是运营商的路由器,而是交换机。此时我们就需要感知路由器的存活状态,这就需要用到 BFD(Bidirectio…...
vue使用路由技术实现登录成功后跳转到首页
文章目录 一、概述二、使用步骤安装vue-router在src/router/index.js中创建路由器,并导出在vue应用实例中使用router声明router-view标签,展示组件内容 三、配置登录成功后跳转首页四、参考资料 一、概述 路由,决定从起点到终点的路径的进程…...
用户模块 - IP归属地框架吞吐测试
一、引言 在很多用户系统中,我们常常需要知道一个IP地址来自哪里,比如判断一个用户是否来自国内、识别异常登录等。而实现这个功能,通常会使用一个“IP归属地解析框架”,它可以根据IP地址返回国家、省份、城市等信息。 不过&#…...
生活实用小工具-手机号归属地查询
一、接口定义 手机号码归属地接口(又称手机号查询API)是一种通过输入手机号码,快速返回其归属地信息(如省份、城市、运营商、区号等)的应用程序接口。其数据基础来源于运营商(移动、联通、电信)…...
鸿蒙-5.1.0-release源码下载
源码获取 前提条件 注册码云gitee帐号。注册码云SSH公钥,请参考码云帮助中心。安装git客户端和git-lfs并配置用户信息。 git config --global user.name "yourname" # 这得和gitee的账号对的上 git config --global user.email "your-email-ad…...
2020年下半年试题三:论云原生架构及其应用
论文库链接:系统架构设计师论文 论文题目 近年来,随着数字化转型不断深入,科技创新与业务发展不断融合,各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下,以容器盒微服务…...
Flutter到HarmonyOS Next 的跨越:memory_info库的鸿蒙适配之旅
Flutter到鸿蒙的跨越:memory_info库的鸿蒙适配之旅 本项目作者:kirk/坚果 您可以使用这个Flutter插件来更改应用程序图标上的角标 作者仓库:https://github.com/MrOlolo/memory_info/tree/master/memory_info 在数字化浪潮的推动下&#…...
昆士兰科技大学无人机自主导航探索新框架!UAVNav:GNSS拒止与视觉受限环境中的无人机导航与目标检测
作者: Sebastien Boiteau, Fernando Vanegas, Felipe Gonzalez 单位:昆士兰科技大学电气工程与机器人学院,昆士兰科技大学机器人中心 论文标题:Framework for Autonomous UAV Navigation and Target Detection in Global-Naviga…...
uniapp设置 overflow:auto;右边不显示滚动条的问题
设置了overflow:auto;或者其它overflow的属性不显示滚动条是因为在uniapp中默认隐藏了滚动条 解决方法: //强制显示滚动条 ::-webkit-scrollbar {width: 8px !important;background: #ccc !important;display: block !important;}//设置滚动条颜色.cu-…...
基于SIP协议的VOIP话机认证注册流程分析与抓包验证
话机的认证注册报文怎么看? 在SIP协议中,当VOIP话机首次启动的时候,他会向SIP服务器发送一个Register请求来注册自己的信息地址,,告诉服务器 话机当前在线话机的IP地址和端口是什么话机希望接收通话的联系方式 认证注…...
JS,ES,TS三者什么区别
Java Script(JS)、ECMAScript(ES)、TypeScript(TS) 的核心区别与关联的详细解析,结合技术背景、设计目标及应用场景展开说明: 一、核心定义与关系 JavaScript(JS) 定义:一种动态类型、基于原型的脚本语言,由 Netscape 公司于 1995 年首次开发,用于网页交互功能。角…...
深度理解指针(2)
🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 深入理解指…...
笔记本/台式机加装PCIe 5.0固态硬盘兼容性与安装方法详解 —— 金士顿Kingston FURY Renegade G5装机指南
在2025年,存储设备市场迎来了革命性的升级浪潮。作为最高性能PCIe 5.0固态硬盘的代表,Kingston FURY Renegade G5 PCIe 5.0 NVMe M.2 固态硬盘不仅刷新了读写速度新高,更以优异的能耗和温控表现成为高端PC、游戏本和工作站升级的“定心丸”。…...
使用libUSB-win32的简单读写例程参考
USB上位机程序的编写,函数的调用过程. 调用 void usb_init(void); 进行初始化 调用usb_find_busses、usb_find_devices和usb_get_busses这三个函数,获得已找到的USB总线序列;然后通过链表遍历所有的USB设备,根据已知的要打开USB设…...
Tailwind CSS 实战教程:从入门到精通
Tailwind CSS 实战教程:从入门到精通 前言 在Web开发的世界里,CSS框架层出不穷。从早期的Bootstrap到现在的Tailwind CSS,前端开发者们总是在寻找更高效、更灵活的样式解决方案。今天,我们就来深入探讨这个被称为"实用优先…...
【IC】如何获取良好的翻转数据来改进dynamic IR drop分析?
动态电压降分析是一个复杂的过程。为了成功执行适当的分析,需要组合多个输入文件和不同的配置设置。 切换场景是任何动态压降分析的关键。设计中的所有门电路和实例不会同时处于活动状态。此外,对于更复杂的单元,可能的切换模式会非常多。这…...
WebGL知识框架
一、WebGL 基础概念 1. WebGL 简介 是什么? 基于 OpenGL ES 的浏览器 3D 图形 API,直接操作 GPU 渲染。 核心特点 底层、高性能、需手动控制渲染管线。 依赖 JavaScript 和 GLSL(着色器语言)。 与 Three.js 的关系 Three.js…...
集成 ONLYOFFICE 与 AI 插件,为您的服务带来智能文档编辑器
在数字化办公浪潮中,文档处理效率对企业发展具有关键意义。但许多办公平台仅支持基础流程,查阅、批注和修改需借助外部工具,增加了操作复杂性和沟通成本。本文将为开发者介绍如何集成 ONLYOFFICE 文档并利用其中的 AI 插件,智能处…...
Simulink模型回调
Simulink 模型回调函数是一种特殊的 MATLAB 函数,可在模型生命周期的特定阶段自动执行。它们允许用户自定义模型行为、执行初始化任务、验证参数或记录数据。以下是各回调函数的详细说明: 1. PreLoadFcn 触发时机:Simulink 模型加载到内存之…...
网络协议分析 实验五 UDP-IPv6-DNS
文章目录 实验5.1 UDP(User Datagram Protocol)练习二 UDP单播通信练习三 利用仿真编辑器编辑UDP数据包,利用工具接收练习四 UDP受限广播通信练习六 利用仿真编辑器编辑IPV6的UDP数据包并发送实验5.2 DNS(Domain Name System)练习二 仿真编辑DNS查询报文(…...
共享代理IP vs 动态IP:企业级业务场景的选型深度解析
在数字化转型加速的今天,IP地址管理已成为企业网络架构中的核心命题。无论是跨境电商的多账号运营、大数据采集的精准度保障,还是网络安全的纵深防御,IP解决方案的选择直接关系到业务效能与合规风险。本文将从技术底层逻辑出发,结…...
鸿蒙OSUniApp制作一个小巧的图片浏览器#三方框架 #Uniapp
利用UniApp制作一个小巧的图片浏览器 最近接了个需求,要求做一个轻量级的图片浏览工具,考虑到多端适配的问题,果断选择了UniApp作为开发框架。本文记录了我从0到1的开发过程,希望能给有类似需求的小伙伴一些参考。 前言 移动互联…...
Java并发编程面试题:并发工具类(10题)
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
【Oracle专栏】扩容导致数据文件 dbf 丢失,实操
Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 同事检查扩容情况,发现客户扩容后数据盘后,盘中原有文件丢失,再检查发现数据库没有启动。通过检查发现数据盘中丢失的是oracle的 dbf 表空间文件。数据库无法启动。 检查情况:1)没有rman备份 …...
【Linux】Linux 的管道与重定向的理解
目录 一、了解Linux目录配置标准FHS 二、Linux数据重定向的理解与操作 2.1基本背景 2.2重定向的理解 2.3Linux管道命令的理解与操作 三、Linux 环境变量与PATH 3.1环境变量PATH 一、了解Linux目录配置标准FHS FHS本质:是一套规定Linux目录结构,软…...
【交互 / 差分约束】
题目 代码 #include <bits/stdc.h> using namespace std; using ll long long;const int N 10510; const int M 200 * 500 10; int h[N], ne[M], e[M], w[M], idx; ll d[N]; int n, m; bool st[N]; int cnt[N];void add(int a, int b, int c) {w[idx] c, e[idx] b…...
1. Go 语言环境安装
👑 博主简介:高级开发工程师 👣 出没地点:北京 💊 人生目标:自由 ——————————————————————————————————————————— 版权声明:本文为原创文章…...
灰度图像和RGB图像在数据大小和编码处理方式差别
技术背景 好多开发者对灰度图像和RGB图像有些认知差异,今天我们大概介绍下二者差别。灰度图像(Grayscale Image)和RGB图像在编码处理时,数据大小和处理方式的差别主要体现在以下几个方面: 1. 通道数差异 图像类型通道…...
Lord Of The Root: 1.0.1通关
Lord Of The Root: 1.0.1 来自 <Lord Of The Root: 1.0.1 ~ VulnHub> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.247 3&…...
虚拟机安装CentOS7网络问题
虚拟机安装CentOS7网络问题 1. 存在的问题1.1 CentOS7详细信息 2. 解决问题3.Windows下配置桥接模式 1. 存在的问题 虽然已经成功在虚拟机上安装了CentOS7,但是依旧不能上网。 1.1 CentOS7详细信息 [fanzhencentos01 ~]$ hostnamectlStatic hostname: centos01Ic…...