《Masked Autoencoders Are Scalable Vision Learners》---CV版的BERT
目录
一、与之前阅读文章的关系?
二、标题:带掩码的自auto编码器是一个可拓展的视觉学习器
三、摘要
四、核心图
五、结果图
六、不同mask比例对比图
七、“Introduction” (He 等, 2021, p. 1) 引言
八、“Related Work” (He 等, 2021, p. 3)相关工作
九、“Approach” (He 等, 2021, p. 3)MAE模型
1.Masking 如何掩码的?
2.Encoder 编码器架构
3.Decoder 解码器
4.Reconstruction Target 如何重构原始像素?
5.Simple implementation 简单实现
十、“. ImageNet Experiments” 实验部分
十一、结论
论文:Masked Autoencoders Are Scalable Vision Learners
参考博文:MAE 论文逐段精读【论文精读】 - 哔哩哔哩
作者: Kaiming He, Xinlei Chen, Saining Xie, Yanghao Li, Piotr Dollár, Ross Girshick
会议: ICLR 2022代码:https://github.com/facebookresearch/mae
一、与之前阅读文章的关系?
Transformer:纯基于注意力机制的编码器和解码器,在机器翻译任务上比基于RNN的架构好很多
BERT:使用transformer的编码器,拓展到一般的NLP任务上,使用完形填空类似的自监督的训练机制,可以在一个大规模无标号的数据上训练出非常好的模型,加速了transformer架构在NLP领域的应用
VIT:将transformer用到CV上面,把图片割成16*16的小方块,每个方块做一个词,然后放到transformer进行训练---->训练数据足够大时精度越高
MAE:BERT的一个CV版本,基于VIT的这篇文章,但是把整个训练拓展到没有没有标号的数据上面(和BERET一样),通过完形填空来获取图片的一个理解【但不是第一个将BERT拓展到CV上的工作】
二、标题:带掩码的自auto编码器是一个可拓展的视觉学习器
auto:代表自模型,这一大类模型的特点是标号y和样本x来自同一个东西【如语言模型:每次用前面的词去预测下面一个词,在一个样本中,预测的词既是标号,也是另外一个样本的x本身】。。。。本篇图片的标号也是图片本身【和之前很多工作区分开来了】
三、摘要
核心思想:随机挡住图片的大部分区域,然后让模型根据剩下的碎片猜出被挡住的部分
【来源于BERT带掩码的语言模型,patch===》image的一个块,预测的是这一个块的所有像素】
核心设计一:非对称的encoder-decoder架构,MAE的编码器只编码可见的patches,被masked的块不编码,而解码器需要重构所有块。
-
encoder只作用在可见的patch上,被mask掉的patch不做计算,可节约计算,提升训练速度
-
decoder用于重构被mask掉的像素
(“非对称”意味着编码器和解码器在结构或功能上不是完全对称的,它们的复杂度、层数、参数数量或其他方面有所不同。在MAE(Masked Autoencoder)中,编码器只处理未被遮挡的图像块25%,而解码器需要处理所有块100%,包括被遮挡的部分。Decoder更加轻量的)
核心设计二:高掩码率,掩盖很大一部分输入图像,例如 75%,才能得到一个比较好的自监督训练效果====》构造了一个比较有挑战的任务
(就像考试时题目越难,复习效果越好。大范围遮挡迫使模型深入理解图像的整体结构,而不是死记局部细节。)
实际效果:
-
图像分类:用MAE训练的模型,在ImageNet数据集(1000类图片分类)上准确率达到87.8%,无需人工标注,超过了传统需要人工标注的方法。
-
MAE只用小规模数据集,并且使用自监督方法就可以达到很好的效果
-
迁移学习:比如将预训练模型用于医学影像分析或自动驾驶,MAE训练的模型表现更好,因为它学到的是通用的图像理解能力,而非特定任务的死记硬背。
-
扩展性强:模型越大(比如参数更多),效果提升越明显,MAE适合训练超大规模视觉模型。
对比:
-
传统方法:给它看1000张标注好的猫狗图片,机器人只能记住这些特征。
-
MAE方法:把图片撕掉一大半,让机器人根据剩下的碎片猜是什么动物。经过大量练习,它不仅能认出猫狗,还能理解“耳朵尖的是猫,耳朵圆的是狗”这种深层规律,甚至能辨认没见过的动物。
四、核心图
对输入图像切分patch,然后对部分patch进行mask操作,把未被mask掉的部分取出来组成输入序列--->输入序列放入一个encoder里面(vit)得到每一个patch的向量表示--->把encoder输出的序列拉长,因为需要把mask掉的patch放回原位置;没被mask掉的patch就是填上ViT后输出的特征,被mask掉的patch就只有位置信息----->将整合好的输入到decoder中,解码器会把里面的像素信息重构回来---->target训练处理即为原始的没有被掩码盖住的图片
-
主要计算量来自编码器,最重要的就是对图片的像素进行编码,对于编码器一张图片只要看到1/4的像素就行了,计算量降低
-
接下游任务时只需要用到encoder,并且图片也不需要做mask,直接切patch,送入encoder得到每个patch的向量表示
五、结果图
掩蔽图像--MAE重建图像---原图
有些图片mask后人都分辨不出来,MAE恢复的很好,作者可能是挑选了一些重构比较好的例子放在了论文中。
六、不同mask比例对比图
mask 95%时看起来也很玄学,哇塞,那么几小块像素就可恢复成那样
七、“Introduction” (He 等, 2021, p. 1) 引言
-
CV领域的任务仍然需要百万级甚至更多的有标签数据来训练
-
NLP领域的GPT、BERT等都是在无标签数据上通过自监督方式学习得到不错的效果
-
CV里已有的maksed autoencoder带掩码的自编码器,如denoising autoencoder(一张图片里加入很多噪音,通过去噪来学习对这张图片的理解)
-
最近有将BERT迁移至CV领域任务的工作,但是结果均不如在NLP领域的效果好
Bert用到cv邻域会有什么问题?What makes masked autoencoding different between vision and language?
-
在CNN中,卷积窗口使得不好将mask放进去:因为在transformer中,mask是一个特定的词[MASK],它始终是和其它词区分开的,并且一直保留到最后;而CNN中如果对图像块做mask,卷积窗口进行滑动时是无法区分这个mask个边界的(从而无法和其它未被mask的部分区分开),导致掩码部分的信息最后很难还原---VIT已经解决了
-
语言和图像的信息密度不同:在NLP中,一个词就是一个语义的实体,所以对于一句话假如去掉几个词再回复会比较难;在图像中,如果简单去掉一些像素,可以很容易通过邻域的像素进行插值还原:
所以,MAE的做法是非常高比例(75%)的随机mask掉一些块,极大降低图片的冗余性,提高任务难度,使得学习得到的模型有看到全局信息的能力,而不是只关注局部信息
-
NLP中,decoder的作用是还原出被mask掉的词,词是一个高语义的东西(所以只需一个MLP即可,预测出词的标签);而CV中,decoder的任务是还原出被mask掉的像素,它是比较低层次的表示,一个MLP是不够的
基于以上问题,MAE的做法
-
随机mask掉大量的块,然后去重构被mask掉的像素信息,使用一个非对称的encoder-decoder架构
-
encoder只计算未被mask掉的块,decoder计算encoder的输出以及被mask掉的信息
八、“Related Work” (He 等, 2021, p. 3)相关工作
DAE:带去噪的自编码
“Our MAE is a form of denoising autoencoding, but different from the classical DAE in numerous ways.” (He 等, 2021, p. 3)MAE其实也是一种denoising encoder的一种形式,把一些块mask可以看作是加了很多噪声,但是和传统的DAE不一样毕竟是基于VIT,基于整个transformer架构。
“Masked image encoding” (He 等, 2021, p. 3)带掩码的编码器在计算机视觉上的应用之前有igpt (gpt在图像上的应用)、beit(BERT在image上的应用)
“Self-supervised learning” 自监督学习,contrastive learning: 主要使用的是数据增强来实现自监督学习的
九、“Approach” (He 等, 2021, p. 3)MAE模型
MAE是一个简单的自编码器【即看到部分观察的数据,用它来重构完整的原始信号】,输入的是未被mask的部分图像,然后重构完整的图像区域;比较特别的是使用非对称的架构,编码器只能看到可见的那些块,不可见的就不看了节省开销
1.Masking 如何掩码的?
mask操作与ViT的方式相同,先对图像切patch,然后随机均匀的采样出来少量的一些patch,剩余的用掩码mask掉。其中关键点是mask率要高(75%),减少冗余
2.Encoder 编码器架构
MAE的encoder其实就是一个ViT,但是它只作用在未被mask掉的patch上。每个patch做线性投影再加上位置信息,patch embedding + position embedding -> Transformer
3.Decoder 解码器
Decoder会接收两部分的信息:
-
未被mask的patch,经encoder编码之后的输出
-
被mask的patch,没有进入编码器的
Decoder只在预训练阶段使用,在微调下游任务时并不需要,只需要编码器对一个图片编码即可,这样比较灵活了
MAE中decoder的计算量不到encoder的1/10
4.Reconstruction Target 如何重构原始像素?
MAE的目标是重构被mask掉的图像像素
-
decoder的最后一层是MLP,输出是每一个patch的向量表示;假如patch大小为(16, 16),那么向量的维度就是256,然后再将其reshape至(16, 16)作为最终还原的像素
-
损失函数为MSE,只在被mask掉的部分使用(预测和原始真正的像素相减再平方和)
-
训练的时候对mask掉的部分的预测输出做normalization(每个patch),数值更加稳定
5.Simple implementation 简单实现
-
首先把切好的patch构成一个序列,然后做(线性投影+位置信息)patch embedding + position embedding
-
随机采样出25%:把序列random shuffle,只保留前25%,送入encoder
-
解码时,需要把之前mask掉的的patch加进来,此时序列长度和原始相同,然后再unshuffle操作恢复原始序列的顺序,这样算误差 的时候和原始的patch能够一一对应
十、“. ImageNet Experiments” 实验部分
1.ImageNet-1k实验
-
MAE通过自监督的方式可以从ImageNet上学习到额外的信息
2.消融实验
-
微调时参数全部参与训练比只调最后一层效果更好
-
送入encoder的块不包含mask部分会更好
-
预测时,如果对patch内的像素值做归一化,效果会更好
-
MAE对数据增强不敏感,只做resize和随机裁剪就可以
-
mask操作随机采样的方式效果更好
十一、结论
-
MAE在小规模数 据集ImageNet-1k上,通过自监督学习的方法得到了可以媲美有监督方法的结果
-
在NLP中,一个token是一个语义单元,包含较多的语义信息;而MAE中的图像patch并不是一个语义的segment(一个patch并不一定包含一个物体或者patch是一个物体的一块);即使如此,MAE也可以学的比较好的隐藏的语义表达
-
broader impacts(如果该工作出圈可能带来的影响):只用了图像本身的信息去学习,如果数据集中有一些bias,可能会趋向于学习数据中不好的部分;MAE是生成式模型,可以生成不存在的内容,和GAN一样可能得到误导大家的结果;
相关文章:
《Masked Autoencoders Are Scalable Vision Learners》---CV版的BERT
目录 一、与之前阅读文章的关系? 二、标题:带掩码的自auto编码器是一个可拓展的视觉学习器 三、摘要 四、核心图 五、结果图 六、不同mask比例对比图 七、“Introduction” (He 等, 2021, p. 1) 引言 八、“Related Work” (He 等, 2021, p. 3)相…...
(云计算HCIP)HCIP全笔记(十三)本篇介绍虚拟化技术,内容包含:虚拟化资源、虚拟化过程、I/O虚拟化、虚拟化架构KVM和Xen介绍、主流虚拟化技术介绍
1. 虚拟化资源 1.1 虚拟化对象 CPU虚拟化: 目标是使虚拟机上的指令能被正常执行,且效率接近物理机 内存虚拟化: 目标是能做好虚拟机内存空间之 间的隔离,使每个虚拟机都认为自己拥有了整个内存地址,且效率页能接近物理…...
C++核心编程:类与对象全面解析
C核心编程:类与对象全面解析 大家好!今天我要和大家深入探讨C面向对象编程中最核心的概念:类与对象。👨💻 这是我们迈向高级C开发的第一步,掌握好这部分内容,对未来学习更高级的设计模式和框…...
Linux基础命令和文件系统结构:从入门到实践
目录 1. 引言 2. Linux文件系统结构概述 2.1 根目录 编辑 2.2 常见目录介绍: 1. /home:用户的家目录 2. /etc:存放配置文件的目录 3. /var:可变数据 4. /bin 和 /sbin:常见命令和系统管理工具 5. /tmp&…...
「Mac畅玩AIGC与多模态05」部署篇03 - 在 Mac 上部署本地向量化模型(Embedding Models)
一、概述 本篇介绍如何在 macOS 环境下,为 Dify 平台部署本地向量化模型(Embedding Models),支持知识库文档向量化、语义检索与智能体上下文增强。向量化模型是实现知识库问答与 RAG(检索增强生成)应用的基础组件。 二、部署流程 1. 环境准备 确认 Docker Desktop 正常…...
Java-Optional类
介绍 Optional是 Java 8 引入的一个类,用于解决空指针异常问题。它本质上是一个容器类,可以包含或不包含一个非空值。 示例 创建Optional对象 Optional.of(T value):创建一个包含非空值的Optional对象。如传入null值,会抛出Nu…...
Android 热点开发调试总结
Android 热点开发调试总结 文章目录 Android 热点开发调试总结一、前言二、热点开发1、开关和默认配置wifi和热点配置信息保存的位置: 2、主要流程3、相关日志4、相关广播5、demo示例 三、其他1、Android 热点开发调试小结2、其他热点相关知识小结(1&…...
【“星瑞” O6 评测】 — llm CPU部署对比高通骁龙CPU
前言 随着大模型应用场景的不断拓展,arm cpu 凭借其独特优势在大模型推理领域的重要性日益凸显。它在性能、功耗、架构适配等多方面发挥关键作用,推动大模型在不同场景落地 1. CPU对比 星睿 O6 CPU 采用 Armv9 架构,集成了 Armv9 CPU 核心…...
快乐数(双指针解法)
题目链接202. 快乐数 - 力扣(LeetCode) 题目拆解 1 取一个正整数每一位的平方和为,如果为1那么直接可以判定为快乐数,如果不为1,就重复这个过程,直到出现1 2 实际上,这道题只有两种情况…...
【Vue3-Bug】中路由加载页面直接显示空白
Vue3中路由加载页面直接显示空白 没有子路由 路由定义不能重复,请自己查看数据在main.js(或者)mina.ts入口文件中,需要将router的注入到vue中的执行放在,vue挂在元素之前 // 顺序不能变 app.use(router) app.mount(#app)在App.vue中 // 在…...
线性代数——行列式⭐
目录 一、行列式的定义⭐ 1-1、三阶行列式练习 1-2、下面介绍下三角行列式、上三角行列式、对角行列式 编辑 二、行列式的性质 2-1、性质1,2,3,4,5,6 编辑 2-2、性质7 2- 3、拉普拉斯定理、克莱姆法则 三…...
flume----初步安装与配置
目录标题 **flume的简单介绍**⭐flume的**核心组件**⭐**核心特点** **安装部署**1)**解压安装包**2)**修改名字** **(配置文件时,更方便)****3)⭐⭐配置文件**4)**兼容Hadoop**5)**…...
vscode源代码管理Tab-文件右侧标志(M、A 等)的含义
Git 常用标志(M、A 等)的含义 在 VSCode 的源代码管理(Source Control)标签页中,文件右侧显示的 Monaco 装饰徽章(Badge)(如 M、A 等),本质上是对 Git 文件状态标志 的可视化呈现。…...
【力扣刷题实战】丢失的数字
大家好,我是小卡皮巴拉 文章目录 目录 力扣题目:丢失的数字 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C) 兄弟们共勉 !!! 每篇前言 博客主页:小…...
具身智能机器人的应用场景及最新进展
具身智能机器人正通过“感知-学习-决策-行动”的闭环能力,重塑全球各行业的生产与服务模式。以下是其在当今世界的典型应用场景及最新进展: 一、工业制造:柔性生产与智能运维 高精度装配与检测 特斯拉Optimus通过双目视觉与惯性测量单元&…...
网络安全怎么入门?快速了解
网络安全是一个快速发展的领域,入门需要系统化的学习和实践。以下是适合零基础或转行者的分阶段学习路径,涵盖必备知识、学习资源、实战方法和职业方向: 一、基础阶段(1-3个月) 1. 掌握核心基础知识 计算机网络&#…...
STM32N6570-DK ISP调试
STM32N6570-DK之ISP调试应用 准备工作-下载安装软件包:一、使用STM32CubeProgrammer给板子烧入STM32N6_ISP_IQTune_App_revC01-v1.1.0-trusted.bin。二、打开STM32 ISP IQTune.exe ,出现可连接端口:三、根据教程进行相应调试:准备工作-下载安装软件包: https://www.st.co…...
Nacos源码—1.Nacos服务注册发现分析一
大纲 1.客户端如何发起服务注册 发送服务心跳 2.服务端如何处理客户端的服务注册请求 3.注册服务—如何实现高并发支撑上百万服务注册 4.内存注册表—如何处理注册表的高并发读写冲突 1.客户端如何发起服务注册 发送服务心跳 (1)Nacos客户端项目启动时为什么会自动注册服…...
NHANES指标推荐:CTI
文章题目:Association between the C-reactive protein-triglyceride-glucose index and endometriosis: a cross-sectional study using data from the national health and nutrition examination survey, 1996-2006 DOI:10.1186/s12905-024-03541-x 中…...
开源模型应用落地-全能音频新纪元-Kimi-Audio-7B-Instruct-重塑多模态交互边界
一、前言 在AI技术持续突破的2025年,音频交互正从单一任务处理迈向全场景融合的新阶段。4月27日,月之暗面(Moonshot AI)开源的Kimi-Audio-7B-Instruct,以“全能音频通才”之姿,为这一进程树立了里程碑式标杆。这款基于70亿参数架构的模型,首次在单一框架内整合语…...
mtrace和memleak源码分析
文章目录 1. 内存泄漏2. 定位工具2.1 memleak 工具定位内存泄漏2.1.1 源码解读 2.2 mtrace 工具定位内存泄漏2.2.1 源码解读 嵌入式内存泄漏定位工具mtrace和memleak源码分析 1. 内存泄漏 内存泄漏(Memory Leak)指程序中已动态分配的堆内存因未正确释放或…...
Python爬虫技术全解析:从入门到实战的终极指南大纲(深度解读与扩展)
Python爬虫技术全解析:从入门到实战的终极指南大纲(深度解读与扩展) 文章目录 Python爬虫技术全解析:从入门到实战的终极指南大纲(深度解读与扩展)前言:数据时代的爬虫使命第一章:Py…...
【网络入侵检测】基于源码分析Suricata的统计模块
【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全,欢迎关注与评论。 1. 概要 👋 在 Suricata 的配置文件中,stats 节点用于配置统计信息相关的参数,它的主要作用是控制 Suricata 如何收集和输出统计数据,帮助用户了解 Suricata 的运行状态和…...
JDBC之Blob类型使用的实现
目录 一、 MySql Blob类型简介 1. Mysql中的Blob类型 2. Blob类型使用的注意事项 二. 插入Blob类型数据 1. 创建表 2. 通过PreparedStatement存储Blob类型数据 三. 解除文件大小限制 四、 读取Blob类型数据 前言 本文来讲解JDBC中的Blob类型 个人主页:艺杯羹…...
truffle
文章目录 truffle目录结构各文件作用在本地测试合约 truffle 项目来自https://github.com/Dapp-Learning-DAO/Dapp-Learning/blob/main/basic/04-web3js-truffle/README-CN.md Truffle 是基于 Solidity 语言的一套开发框架,它简化了去中心化应用(Dapp&…...
网盘不限速
引言 哈喽小伙伴们!说到网盘下载,是不是感觉心头一紧?特别是像某度那样不开会员就限速到怀疑人生!就连之前号称不限速的阿里云盘,现在也是限的死死的。 随着阿里网盘开始限速,很多小伙伴开始转战其他平台。…...
TVM中的Pass两种实现方法?如何选择?
以下是TVM中基于DFPatternCallback和VisitDFPattern两种编写Pass的方法的详细对比与示例总结: 1. 核心概念对比 特性DFPatternCallbackVisitDFPattern (DFPatternFunctor)抽象层级声明式模式匹配命令式访问者模式适用场景简单/中等复杂度的模式匹配需要精细控制匹配…...
JAVA EE_网络原理_UDP与TCP
人海中未遇见时,我将独自前行... ----------陳長生. 1.UDP协议 1.1.UDP协议端格式 UDP(用户数据报协议)是由 源端口,目标端口,长度,校验和,数据 5种结构组成。16位是UDP报文中字段的长度&#…...
智能Python开发工具PyCharm v2025.1——AI层级功能重磅升级
JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外,该IDE提供了一些高级功能,以用于Django框架下的专业Web开发。 立即获取PyCharm v2025.1正式版 具体更新内容: PyCh…...
15、项目搭建:绘制城堡蓝图——React 19 工程配置
一、魔法结界初始化 1. 召唤项目骨架 npx create-next-applatest hogwarts-castle --ts --tailwind 核心咒语: • --ts:激活预言水晶球(TypeScript类型安全) • --tailwind:注入飞天扫帚级原子样式(…...
docker搭建swarm集群
环境准备 主机名 IP 角色 manger1 192.168.111.47 管理节点 worker1 192.168.111.48 工作节点 worker2 192.168.111.49 工作节点 注:三台主机都已经拉去完swarm和…...
普通IT的股票交易成长史--20250428晚
声明:本文章的内容只是自己学习的总结,不构成投资建议。文中观点基本来自yt站Andylee,美股Alpha姐,综合自己的观点得出。感谢他的无私分享。 仓位就是生命,绝对不能满仓!!!…...
【React Native】精通 react native
活到老,学到老。 一、基础核心 JavaScript/TypeScript 基础 掌握 ES6+ 语法(箭头函数、解构、Promise、async/await)。熟悉 TypeScript(类型系统、接口、泛型)以提高代码质量。React 核心概念 组件化开发(函数组件、类组件)。状态管理(useState, useEffect, useContex…...
微信小程序-van-uploader的preview-size
preview-size支持数组格式 修改前修改后1、升级微信小程序里面的van版本:2、 重新构建npm3、重启微信开发工具 修改前 引用van组件的上传文件,设置预览图尺寸,刚开始设置的是preview-size“140”,出来的效果就是一个正方形。 修改后 1、升级…...
成员方法的详细说明(结合Oracle官方文档)
在Java的对象创建过程中,成员方法的地址并不存储在对象的堆内存中。Java虚拟机的设计说明(包括Oracle的Java虚拟机规范、OpenJDK文档、以及HotSpot的设计文档)都明确区分了对象的实例数据(存储在堆内存中)和类的元数据…...
[蓝桥杯刷题]---模拟法[2]日期问题
题目如下: 题目的意思是: 给出一个日期(格式是yy mm dd,注意年份只有两位数),要找出所有可能的真实日期(合法的yyyy-mm-dd格式)。 需要考虑: 年份范围在1960到2059。 输入的yy、mm、…...
阿里开源图生动画模型AnimateAnyone2
项目背景 近年来,基于扩散模型(diffusion models)的人物图像动画化方法取得了显著进展,例如 Animate Anyone 在生成一致性和泛化性方面表现优异。然而,这些方法在处理人物与环境之间的空间关系和人-物体交互࿰…...
02_使用 AES 算法实现文件加密上传至阿里云、解密下载
02_使用 AES 算法实现文件加密上传至阿里云、解密下载 一、文件上传下载接口 controller 层 RestController RequestMapping("/api/common/file") Api(tags "公共文件上传") AllArgsConstructor Slf4j public class FileV2Controller {private final Os…...
Linux运维——Vim基础
Vim基础 一、移动光标1.1、基础移动1.2、屏幕滚动 二、编辑操作2.1、插入模式2.2、删除与修改2.3、复制粘贴 三、搜索与替换3.1、搜索3.2、替换 4、分屏与窗口管理4.1、分屏操作4.2、窗口调整 五、宏与批量操作六、效率技巧 一、移动光标 1.1、基础移动 快捷键作用h j k l左/…...
从外卖大战看O2O新趋势:上门私厨平台系统架构设计解析
京东高调进军外卖市场,美团全力防守,两大巨头的竞争让整个行业风起云涌。但在这场外卖大战之外,一个更具潜力的细分市场正在悄然兴起——上门私厨服务。 与标准化外卖不同,上门私厨提供的是个性化定制服务。厨师带着新鲜食材上门现…...
【网络编程】ARP协议与主机之间的通信
1. 什么是ARP协议? ARP(地址解析协议,Address Resolution Protocol) 是一种用于在网络中将IP地址转换为MAC地址的协议。它属于TCP/IP协议栈中的网络层协议,通常在局域网(LAN)环境下使用&#x…...
JVM模型、GC、OOM定位
JVM模型 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来…...
什么是数据链路层的CRC检测以及为什么要放到帧尾?
数据链路层在封装过程中添加CRC(循环冗余校验)帧尾,主要目的是为了检测数据传输过程中可能出现的比特错误,确保数据的完整性和可靠性。具体原因如下: 1. 错误检测 物理层传输的不可靠性:数据在物理介质&am…...
Electron 入门指南
Electron 入门指南 Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架。通过 Electron,你可以利用 Web 技术开发出功能强大的桌面应用程序,并且能够运行在 Windows、Mac 和 Linux 系统上。 本文将带你从零开始构建一个简单的 Ele…...
目标检测YOLO实战应用案例100讲- 无人机平台下露天目标检测与计数
目录 知识储备 基于YOLOv8改进的无人机露天目标检测与计数 一、环境配置与依赖安装 二、核心代码实现(带详细注释) 1. 改进YOLOv8模型定义(添加注意力机制) 2. 无人机视角数据增强(drone_augment.py ) 3. 多目标跟踪与计数(tracking_counter.py ) 4. 完整推理流…...
ArkTS基础实验 (二)
任务一:使用模板字符串相关知识,实现多个变量的拼接。同学们可以把自己的姓名、年纪和爱好这三个变量进行拼接。把代码和日志中console.log的打印结果截图保留。 预期效果: 任务二:使用状态变量和点击事件相关知识实现计数器案例…...
【计算机视觉】Bayer Pattern与Demosaic算法详解:从传感器原始数据到彩色图像
Bayer Pattern与Demosaic算法详解:从传感器原始数据到彩色图像 一、引言 在现代数码相机和手机摄像头中,我们能够拍摄到丰富多彩的彩色图像。然而,你可能不知道的是,图像传感器本身并不能直接感知颜色——它们只能感知光的强度。…...
媒体查询使用
一、引言 为了确保网页在不同设备上都能提供良好的用户体验,响应式设计变得至关重要。而媒体查询(Media Queries)就是前端开发中实现响应式设计的核心技术之一。 二、媒体查询的概念 媒体查询是 CSS3 引入的一项强大功能,它允许开…...
deepseek对IBM MQ SSL 证书算法的建议与解答
在IBM MQ配置SSL TLS的命令中,如果参数SSLCIPH使用TLS_RSA_WITH_AES_128_CBC_SHA256,如下所示: DEFINE CHANNEL(QM1.TO.QM2) CHLTYPE(SDR) TRPTYPE(TCP) CONNAME(QM1.MACH.COM) XMITQ(QM2) SSLCIPH(TLS_RSA_WITH_AES_128_CBC_SHA256) DESCR(S…...
服务器文件同步工具有哪些?
服务器文件同步工具的选择取决于你的具体需求(如实时同步、单向/双向同步、跨平台支持、安全性等)。以下是几款主流的服务器文件同步工具推荐,适用于不同场景: 1. 实时同步工具(适合高频率、低延迟需求) rsync 特点:经典增量同步工具,支持本地/远程同步,高效节省带宽。…...