【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译
文章目录
- 【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译
- 摘要
- 1. 简介
- 2. 方法
- 2.1 半监督框架概述
- 2.2 监督局部对比学习
- 2.3 下采样和块划分
- 3. 实验
- 4. 结论
【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译
论文题目:Semi-supervised Contrastive Learning for Label-efficient Medical Image Segmentation
中文题目:基于半监督对比学习的医学图像标签高效分割
论文链接:https://arxiv.org/abs/2109.07407
论文代码:https://github.com/xhu248/semi_cotrast_seg
发表时间:2021年9月
论文团队:美国圣母大学&广东省人民医院
引用:Hu X, Zeng D, Xu X, et al. Semi-supervised contrastive learning for label-efficient medical image segmentation[C]//Medical Image Computing and Computer Assisted Intervention–MICCAI 2021: 24th International Conference, Strasbourg, France, September 27–October 1, 2021, Proceedings, Part II 24. Springer International Publishing, 2021: 481-490.
引用数:40(截止时间:2023年1月27号)
摘要
摘要深度学习方法在医学图像分割任务中的成功与否,很大程度上依赖于大量标注数据的监督训练。
另一方面,生物医学图像的注释需要领域知识,可能是费力的。
近年来,对比学习在学习图像的潜在表征方面表现出了巨大的潜力。
现有的工作已经探索了它在生物医学图像分割中的应用,其中只有一小部分数据被标记,通过基于自我监督对比学习的训练前阶段,不使用任何标签,然后只对标记的部分数据进行监督微调阶段。
在本文中,我们建立了通过在训练前阶段包含有限的标签信息,可以提高对比学习的性能。
我们提出了一种有监督的局部对比损失
,利用有限的像素级注释来迫使具有相同标签的像素聚集在嵌入空间周围。这样的损耗需要像素级的计算,对于大的图像来说,这可能是昂贵的,我们进一步提出了两种策略,下采样和块划分
,以解决这个问题。
我们评估了我们的方法在两个公共生物医学图像数据集的不同模式。对于不同数量的标记数据,我们的方法始终优于最先进的基于对比的方法和其他半监督学习技术
1. 简介
准确的语义分割结果对医学应用具有重要价值,为医生提供疾病诊断和治疗的解剖结构信息。
随着卷积神经网络的出现,有监督深度学习在许多生物医学图像分割任务中取得了最先进的性能,包括不同的器官和不同的模式[6,13,15,16]。
这些方法都需要大量已知像素或体素类的标记数据来指导训练。
然而,很难收集密集标记的医学图像,因为标记医学图像需要特定领域的知识,像素级的注释可能很耗时
为了解决这个问题,人们提出了各种各样的方法。其中一个分支是数据增强,它通过生成对抗网络(generative adversarial networks, GAN)[9]进行数据合成[3,5,8]或通过简单的线性组合[18]对标记数据集进行扩展。
但是,由于人工生成的图像和标签的缺陷,数据扩增只能对分割性能的提高起到有限的作用。
作为一种更好的替代方法,基于半监督学习的方法[2,12,14,19]可以有效地利用标记数据和未标记数据。
近年来,对比学习[7,10]在自监督分类问题上取得了最新的进展,它通过将相似图像的嵌入特征在潜在空间内强制接近,而将不同图像的嵌入特征隔离开来。
从无标签数据中提取对下游任务有用的特征的强大能力使其成为标签高效学习的一个很好的候选者。
而,现有的对比学习方法大多以图像分类为目标。
另一方面,语义分割需要像素级的分类。[4, 17]首次尝试在只标记部分数据时使用对比学习来提高分割的准确性。对于[4],采用两步自监督对比学习方案,在训练前阶段从无标记数据中学习全局和局部特征。
具体来说,它首先用编码器路径将2D切片投影到潜在空间,并计算全局对比度损失,类似于用于图像分类问题的方法。
然后在训练好的编码器的基础上加入解码器块,并利用中间特征映射进行像素级的局部对比学习。
在特征图的固定位置上只选择少量的点。
接下来,在微调阶段,在对数据标注部分的监督下,对来自对比学习的预训练模型进行训练。
在这样的框架中,标签信息从未在训练前阶段使用。然而从直觉上来说,通过包含这些信息来提供一定的监督,通过对比学习可以更好地提取特征。
遵循这一理念,在本工作中,我们提出了一个由自我监督的全局对比和监督的局部对比组成的半监督框架,以利用可用的标签。
与文献中的无监督局部对比相比,有监督局部对比能更好地增强同一类内特征之间的相似性,并能区分不具有监督局部对比的特征。
此外,我们采用了下采样和块分割两种策略来解决由于监督局部对比度损失而带来的高计算复杂度。
我们对两个不同模式的公共医学图像分割数据集进行了实验。我们发现,对于不同数量的标记数据,我们的框架总能产生比最先进的方法更高的分割结果。
2. 方法
2.1 半监督框架概述
深度分割网络的结构骨干通常由编码器E和解码器d两部分组成。编码器包括几个下采样块,用于从输入图像中提取特征,解码器路径部署多个上采样块,以恢复像素级预测的分辨率。
在训练前阶段,我们的框架包含一个自我监督的全局对比学习步骤,该步骤只使用未标记的数据来训练E并捕获图像级特征,然后是一个监督的局部对比学习步骤,该步骤使用有限的标记数据来进一步训练E和D并捕获像素级特征。
整体对比学习类似于文献中使用的方法(如SimCLR[7]),为了完整起见,我们在这里通过图1(a)中的插图对其进行了简要描述。给定一个输入批B = {x1, x2,…, xb},其中xi表示一个输入2D切片,对B中的每幅图像随机进行两次图像变换组合aug(·),形成一对增广图像,与现有的对比学习方法相同。这些增广图像构成一个增广图像集a。设ai, i∈i ={1…2b}表示A中的一个增广图像,设j(i)为A中另一个图像的索引,该图像由B中ai的同一张图像衍生而来,即ai和aj(i)是一个增广对。整体对比损失则表现为以下形式
Lg=−1∣A∣∑i∈Ilogexp(zi⋅zj(i)/τ)∑k∈I−{i}exp((zi⋅zk)/τ)L_g=-\frac{1}{|A|}\sum_{i\in I}\log \frac{exp(z_i\cdot z_{j(i)}/\tau)}{\sum_{k\in I-\{i\}}exp((z_i\cdot z_k)/\tau)} Lg=−∣A∣1i∈I∑log∑k∈I−{i}exp((zi⋅zk)/τ)exp(zi⋅zj(i)/τ)
其中,ziz_izi是归一化的输出特征,在编码E中增加了头部h1(·)。头部通常是一个多层感知器,增强了从E中提取特征的表示能力。τ\tauτ是温度常数。仅仅教编码器提取图像级的特征是不够的,因为分割需要预测输入图像中的所有像素。在完成全局对比学习后,我们将译码器路径D附加到编码器上,并使用监督局部对比损耗对整个网络进行再训练。这就是我们的工作与现有工作的不同之处,详细情况将在下一节中描述。两步预训练阶段最终会生成一个模型,用于后续对标注数据的微调阶段的初始化,以提高分割的准确性。
2.2 监督局部对比学习
局部对比学习的目标是训练解码器提取有特色的局部表示。设fl(xi) = h2(Dl(E(ai))是增强输入ai的第l个最上层解码器块Dl的输出特征映射,其中h2是一个两层逐点卷积。对于feature map f(ai),局部对比损耗定义为
loss(ai)=−1∣Ω∣∑(u,v)∈Ω1∣P(u,v)∣log∑up,vp∈P(u,v)exp(fu,vl⋅fup,vpl/τ)∑u′,v′∈N(u,v)exp(fu,vl⋅fu′,v′l/τ)loss(a_i)=-\frac{1}{|\Omega|}\sum_{(u,v)\in \Omega}\frac{1}{|P(u,v)|}\log \frac{\sum_{u_p,v_p}\in P(u,v)exp(f^l_{u,v}\cdot f^l_{u_p,v_p}/\tau)}{\sum_{u^\prime,v^\prime}\in N(u,v)exp(f^l_{u,v}\cdot f^l_{u^\prime,v^\prime}/\tau)} loss(ai)=−∣Ω∣1(u,v)∈Ω∑∣P(u,v)∣1log∑u′,v′∈N(u,v)exp(fu,vl⋅fu′,v′l/τ)∑up,vp∈P(u,v)exp(fu,vl⋅fup,vpl/τ)
fu,vl∈Rcf_{u,v}^l\in R^cfu,vl∈Rc,其中c为通道号,表示特征图的第uth列和第vth行特征。Ω是fu,vf_{u,v}fu,v中用来计算损失的点的集合。P(u, v)和N(u, v)分别表示fu,v(ai)的正集和负集。则整体局部对比损失为
Ll=1∣A∣∑ai∈Aloss(ai)L_l=\frac{1}{|A|}\sum_{a_i\in A}loss(a_i) Ll=∣A∣1ai∈A∑loss(ai)
在自监督设置下,[4]仅从feature map中选取9或13个点,如图2(b)所示。在没有标注信息的情况下,P(u, v)只包含在成对图像的特征图上来自同一位置的点,即fu,v(aj(i)),负集为A中所有图像Ω减去正集的并集。
SimCLR认为,将对比学习应用于图像分类任务时,提高精度最大的数据增强是空间变换,如crop和cutout。而在自监督设置中,变换aug(·)只能包含颜色畸变、高斯噪声、高斯模糊等强度变换。这是因为经过空间变换后,f(ai)和f(aj(i))相同位置的特征可能来自不同的点或区域,但在计算(2)时仍然被视为相似。而且,在没有任何监督的情况下,Ω中选择的点可能都对应于背景区域,这样模型就不能有效地学习局部特征。
受[11]的启发,由于数据集包含有限的标记数据,无论如何都可以在微调阶段使用,我们可以通过监督局部对比学习在训练前阶段使用它。
观察到U-Net函数的最后一个逐点卷积类似于分类网络的全连通层,我们将1x1卷积层之前的特征映射f1∈Rc×h×hf^1\in R^{c\times h\times h}f1∈Rc×h×h视为所有像素对潜空间的投影,其中c等于通道数,也是潜空间的维数,h为输入图像维数。给定特征映射中的点(u, v),正集P(u, v)的定义是指a的特征映射中所有与(u, v)具有相同注释的特征,负集则是指a的特征映射中被标记为不同类别的所有特征。
另外,背景像素的两个嵌入特征构成了大部分的正对,比较这两个特征对对后的分割任务受益较少。因此,对于监督设置,我们将Ω的定义更改为只包含带有非背景注释的点。请注意,背景像素仍然包含在负集合N(u, v)中。监督对比度损失的形式与(2)相同,除了上面讨论的Ω,P(u, v),N(u, v)的新含义之外。在标签的指导下,监督对比丢失提供了来自同一类的特征的相似度和类间特征的不相似度的附加信息。
2.3 下采样和块划分
当我们尝试利用分割标注时,feature map的大小与输入图像相同。虽然我们只考虑不属于背景的点,但|p (u, v)|仍然可以非常大,即O(h2),输入图像维数h × h,则叠加局部对比度损失的总体计算复杂度为O(h4)。
例如“MMWHS”中的镜像大小为“512×512”。甚至在我们将切片重塑为160×160之后,负集的大小大约是104,计算损失所需的总乘法大约是108。为了解决这个问题,我们提出了两种策略来减少负集的大小,如图2所示。
第一种方法是对feature map进行固定步幅下样。该方法的思想是邻近像素包含冗余信息,它们的嵌入特征在潜在空间中看起来非常相似。
随着步数s的增加,P(u, v)的大小和损失函数的计算复杂度分别降低了s2和s4的1 / 4。
因为较大的步幅会导致较少的负对,而负对的数量对于对比学习很重要[10]。 在这项工作中,我们将步幅设置为4,这是在我们的实验平台上不会导致内存不足(OOM)问题的最小值。
3. 实验
数据集和预处理。我们评估了我们的方法在两个公共医学图像分割数据集的不同模式,MRI和CT。(1)海马数据集来自MICCAI 2018医学分段十项全能挑战赛[1]。260个单模态MRI三维扫描体,具有前、后海马体的标注。(2) MMWHS[20]来自MICCAI 2017挑战赛,包含20个3D心脏CT容积。该标注包括心脏的7个结构:左心室、左心房、右心室、右心房、心肌、升主动脉、肺动脉。在预处理方面,我们将整个体积的强度归一化。然后我们调整同一数据集中所有卷的切片大小,使用双线性插值将它们统一起来。两个重塑数据集的分辨率为64×64, MMWHS为160 × 160。
实验设置。与[4]类似,我们选择的分割网络骨干网是2D U-Net,编码器和解码器路径都有三个块,实现基于PyTorch库。对于这两个集合,我们将数据分为三个部分,训练集Xtr,验证集xl和测试集Xts。海马的|Xtr|: |Xvl|: |Xts|的比例为3:1:1,MMWHS的比例为2:1:1。
然后在Xtr中随机选取一定数量的样本作为标记体积,其余的视为未标记体积。我们将数据集分割了4次以生成4个不同的折叠,并使用Xts上的平均骰子分数作为比较的指标。
我们选择Adam作为对比学习和接下来的分割训练的优化器。对比学习的学习率为0.0001,分割训练的学习率为0.00001。对比学习的训练纪元为70,分割训练的训练纪元为120。海马数据集和MMWHS数据集分别在两台NVIDIA GTX 1080和Tesla P100上进行了实验。
我们实现了该方法的四个变体:两步全局对比度和下采样监督局部对比度(global+local(stride))和块划分(global+local(block));而对于消融研究而言,这两种方法均无全局对比(local(stride)和local(block))。
为了进行比较,我们实现了两种最新的基于对比的方法:全局对比学习方法7和自我监督全局和局部对比学习方法[4](global + local(self))。请注意,我们使用了整个训练数据,但没有任何标签用于全局对比和自我监督的局部对比,而只有标记的训练数据用于我们的监督的局部对比。
我们进一步实现了三种无对比基线方法:随机初始化从头开始训练(random)、基于数据增强的方法Mixup[18]和最先进的半监督学习方法TCSM[14]。
表1列出了所有方法的平均骰子分数。首先,与随机方法相比,所有对比学习方法都能获得更高的骰子分数,这意味着当标签有限时,对比学习是一个可行的初始化方法。
其次,我们注意到,提出的监督局部对比度单独(local(stride)和local(block))产生的分割结果与现有的基于对比度的方法相比较。
考虑到前者只使用标记数据,而后者利用所有卷,监督对比损耗有效地教会模型由相同类共享的像素级表示。
最后,将有监督的局部对比度和全局对比度相结合,半有监督的分割效果比目前的算法有了很大的提高。
结果表明,无监督全局对比度提取的图像级表示与有监督局部对比度提取的像素级表示是互补的。
最后,我们的方法、最先进的(global+local(self)[4])和随机方法在带有40%标记数据的MMWHS上的分割结果如图3所示。从图中我们可以清楚地看到,我们的方法表现最好。
在相同的设置下,这些方法应用t-SNE后的嵌入特征如图4所示。从图中我们可以看出,与random方法相比,global+local(block)方法对于同一类的特征是紧密聚类的,对于不同类的特征是明显分开的,而最先进的方法则更加分散。这与表1中的结果一致,其中global+local(block)方法获得了最高的Dice(最右边的一列)。
4. 结论
有限的标注一直是深度学习医学图像分割方法发展的障碍。针对这一挑战,在本研究中,我们提出了一种监督局部对比损失来学习像素级的表示。在此基础上,提出了两种降低损失计算复杂度的策略。在两个只有部分标签的公共医学图像数据集上进行的实验表明,当将提出的监督局部对比度与全局对比度相结合时,得到的半监督对比学习在最先进的图像分割性能上得到了显著改善。
相关文章:
【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译
文章目录【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译摘要1. 简介2. 方法2.1 半监督框架概述2.2 监督局部对比学习2.3 下采样和块划分3. 实验4. 结论【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译 论文题目:Semi-supervised Contrastive Learning for Labe…...
vivo官网App模块化开发方案-ModularDevTool
作者:vivo 互联网客户端团队- Wang Zhenyu 本文主要讲述了Android客户端模块化开发的痛点及解决方案,详细讲解了方案的实现思路和具体实现方法。 说明:本工具基于vivo互联网客户端团队内部开源的编译管理工具开发。 一、背景 现在客户端的业…...
Python基础-数据类型之数字类型
变量中的变量值是用来存储事物状态的,事物的状态分成不同的种类(例如:人的姓名、年龄,身高、职位、工资等),因此变量值有多种不同的数据类型。 age 18 # 用整型记录年龄 salary 3.1 # 用浮点型记录…...
基于Web的6个完美3D图形WebGL库
现代前端、游戏和Web开发正是WebGL可以转化为数字杰作的东西。使用GPU绘制在浏览器屏幕上生成的矢量元素,WebGL创建交互式Web图形,从而获得用户体验。视觉元素的质量和复杂性使该工具在HTML或CSS等其他方法中脱颖而出。WebGL基础WebGL不是一个图形套件。…...
界面组件DevExpress Reporting v22.2 - 增强的Web报表组件UI
DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。DevExpress Reporting v22.2版本已正式发布&…...
初学vector
目录 string的收尾 拷贝构造的现代写法: 浅拷贝: 拷贝构造的现代写法: swap函数: 内置类型有拷贝构造和赋值重载吗? 完善拷贝构造的现代写法: 赋值重载的现代写法: 更精简的现代写法&…...
Windows10 安装wsl2、Ubuntu相关操作
Windows10 安装wsl2、Ubuntu相关操作 安装wsl2 查看本机windows版本: 键盘上按下winr,输入winver,查看系统版本。必须运行 windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 windows 11。满足版本要求后…...
SpringBoot简单使用MongoDB
MongoDB介绍 SpringBoot简单使用MongoDB 一、配置步骤 1、application.yml 2、pom 3、entity 4、mapper 二、案例代码使用 1、库 前期准备上一篇安装MongoDB地址http://t.csdn.cn/G4oYJ 跟关系型数据库概念对比 Mysql MongoDB Database(数据库) Datab…...
Oracle Data Guard 角色转换(Role Transitions)
查询视图V$DATABASE的DATABASE_ROLE列可以看到数据库当前的角色。 1.角色转换介绍 Oracle Data Guard让你可以使用SQL语句或者通过Oracle Data Guard broker界面来动态更改数据库的角色,Oracle Data Guard支持以下的角色转换: 1࿰…...
opencv的TrackBar控件
大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...
关于基线长度对双天线GNSS测姿精度的影响
文章目录一、GNSS测姿原理1. 载波相位双差求解基线向量2. GNSS姿态角表示二、基线长度对GNSS测姿精度的影响三、GNSS定向产品精度描述实例四、参考文献在GNSS定向模块或者板卡的指标参数中,我们一般会看到航向的测量精度和基线的长度相关。在实际使用,用…...
口交换机睿易 RG-NBS1826GC 24 口
接口形态不将就,标配光纤接口传输性能不将就,标配千兆上联口和大缓存设计端口数量不将就,8/16/24 三种选择楼宇对讲交换机不将就,保证开锁指令品质服务不将就,监控专用交换机接口形态不将就,标配光纤接口非…...
如何在Excel中向下拉列表中添加条件
在Excel中向下拉列表中添加条件 创建矩阵型数据集创建下拉列表创建第一个下拉列表创建第二个下拉列表你可以使用Microsoft Excel下拉列表来显示一个简单的列表,尽管有时需要更多的控制。假设你的人员分散在四个地区:北部、南部、东部和西部。你希望按地区与人员合作,而不是与…...
自定义bean 加载到spring IOC容器中
自定义bean加载到spring容器中的两种方式: 1.在类上添加注解Controller、RestController(本质是Controller)、Service、Repository、Component2.使用Configuration和Bean 这篇文章主要介绍第二种方式原理(因为在实际使用中&#…...
[python入门㊻] - python装饰器和类的装饰器
目录 ❤ python装饰器介绍 ❤ 什么是装饰器 ❤ 装饰器的流程 ❤ 定义装饰器时通常会涉及以下3个函数 无参装饰器 有参装饰器 多重装饰器 ❤ 装饰器的用法(闭包) ❤ 装饰器语法糖 ❤ 时间计时器 ❤ 装饰器中wraps作用 不使用wraps装饰器 使用wraps装饰器解…...
企业级信息系统开发学习1.1 初识Spring——采用Spring配置文件管理Bean
文章目录一、Spring容器演示——采用Spring配置文件管理Bean(一)创建Maven项目(二)添加Spring依赖(三)创建杀龙任务类(四)创建勇敢骑士类(五)采用传统方式让勇…...
CSS盒子模型
盒子模型 CSS三大特性 继承性、层叠性、优先级 优先级比较 继承 < 通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important 注意:!important不能提升继承的优先级,只要是继承优先级最低 复合选择器权重叠加计…...
Python基础学习笔记 —— 数据结构与算法
数据结构与算法1 数据结构基础1.1 数组1.2 链表1.3 队列1.4 栈1.5 二叉树2 排序算法2.1 冒泡排序2.2 快速排序2.3 (简单)选择排序2.4 堆排序2.5 (直接)插入排序3 查找3.1 二分查找1 数据结构基础 本章所需相关基础知识:…...
笔记本连接wifi,浏览器访问页面,显示访问被拒绝
打开chrome、edge浏览器访问第1个第2个页面正常,后面再打开页面显示异常。 但手机连接正常,笔记本连接异常,起初完全没有怀疑是wifi问题 以为用了vpn软件问题,认为中了病毒。杀毒,并没有中毒。 1、关闭vpn代理&#…...
36个物联网专业毕业论文选题推荐
物联网技术在智能家居系统中的应用研究物联网在智慧城市建设中的作用物联网在工业4.0中的实现与发展 物联网与智能物流系统的结合物联网与医疗健康领域的融合研究物联网与环境监测系统的集成物联网与农业生产的结合研究物联网技术对汽车行业的影响与发展物联网在智能安防领域的…...
Pytorch复习笔记--torch.nn.functional.interpolate()和cv2.resize()的使用与比较
1--前言 博主在处理图片尺度问题时,习惯使用 cv2.resize() 函数;但当图片数据需用显卡加速运算时,数据需要在 GPU 和 CPU 之间不断迁移,导致程序运行效率降低; Pytorch 提供了一个类似于 cv2.resize() 的采样函数&…...
ASP.NET Core MVC 项目 AOP之ActionFilterAttribute
目录 一:说明 二:实现ActionFilterAttribute父类 一:说明 ActionFilterAttribute比前两者简单方便,易于扩展,不易产生代码冗余。 ActionFilterAttribute过滤器执行顺序: 1:执行控制器中的构造函数,实例化控制器 2:执行ActionFilterAttribute.OnActionExecutionA…...
浅析EasyCVR安防视频能力在智慧小区建设场景中的应用及意义
一、行业需求 城市的发展创造了大量工作机会,人口的聚集也推动了居民住宅建设率的增长。人民生活旨在安居乐业,能否住得“踏实”是很多劳动工作者最关心的问题。但目前随着住宅小区规模的不断扩大、人口逐渐密集,在保证居住环境舒适整洁的同…...
Python的深、浅拷贝到底是怎么回事?一篇解决问题
嗨害大家好鸭!我是小熊猫~ 一、赋值 Python中, 对象的赋值都是进行对象引用(内存地址)传递, 赋值(), 就是创建了对象的一个新的引用, 修改其中任意一个变量都会影响到另一个 will …...
TCP协议十大特性
日升时奋斗,日落时自省 目录 1、确认应答 1.1、序号编辑 2、超时重传 3、连接管理 3.1、三次握手 3.2、四次挥手 4、滑动窗口 5、流量控制 6、拥塞控制 7、延时应答 8、捎带应答 9、面向字节流 10、异常情况 TCP协议: 特点:有…...
2.14作业【GPIIO控制LED】
设备树 myleds{ myled1 <&gpioe 10 0>; myled2 <&gpiof 10 0>; myled3 <&gpioe 8 0>; }; 驱动代码 #include<linux/init.h> #include<linux/module.h> #include<linux/of.h&…...
5min搞定linux环境Jenkins的安装
5min搞定linux环境Jenkins的安装 安装Jenkinsstep1: 使用wget 命令下载Jenkinsstep2、创建Jenkins日志目录并运行jekinsstep3、访问jenkins并解锁jenkins,安装插件以及创建管理员用户step4、到此,就完成了Finish、以上步骤中遇到的问题1、 jenkins启动不了2、jenkins无法访问…...
Cortex-M0存储器系统
目录1.概述2.存储器映射3.程序存储器、Boot Loader和存储器重映射4.数据存储器5.支持小端和大端数据类型数据对齐访问非法地址多寄存器加载和存储指令的使用6.存储器属性1.概述 Cortex-M0处理器具有32位系统总线接口,以及32位地址线(4GB的地址空间&…...
软件测试——测试用例之场景法
一、场景法的应用场合 场景法主要用于测试软件的业务流程和业务逻辑。场景法是基于软件业务的测试方法。在场景法中测试人员把自己当成最终用户,尽可能真实的模拟用户在使用此软件的操作情景: 重点模拟两类操作: 1)模拟用户正确…...
英文写作中的常用的衔接词
1. 增补 (Addition) in addition, furthermore, again, also, besides, moreover, whats more, similarly, next, finally 2.比较(Comparision) in the same way, similarly, equally, in comparison, just as 3. 对照 (Contrast) in contrast, on …...
网站生成软件app制作/互联网营销外包推广
一、 基于文件的通信 普通文件(io/mmap)有名管道文件匿名管道Socket二、 基于内存的通信 1. 一组内核内存的工具 ipcs //查看以下三个 ipcs -m //查看共享内存 ipcs -q //查看共享队列 ipcs -s //查看共享信号量 ipcrm -q 编号ID //删除。。。 2. 普通的父子进程之间的匿…...
域名停靠app盘他射门下载/厦门seo百度快照优化
查看当前时区 ls -l /etc/localtime我目前这台服务器的时区时美国纽约时间 查看时区选择列表 tzselect执行tzselect后会出现上图的选择内容,我们输入5来选择亚洲时区,接着会有下图 然后接着输入9,表示选择中国 接着选择北京时间或者新疆…...
php下载站源码/网络推广外包要多少钱
MySQL配置参数优化 本文来自道森学习笔记,版权归 http://wubx.net/ 所有 MyISAM存储引擎优化 涉及参数如下: Key_buffery_size Concurrent_insert 2 | WAAYS Bulk_insert_buffer_size8M Myisam_recover_optionsFORCE Myisam_recover_threads1 Myisam_so…...
广西住房和城乡建设厅官方网站/seo推广主要做什么的
作者:滴滴公共前端团队 - 水乙 我们在使用 webpack 打包我们的工程模块时,经常会需要 devtool 开启 sourceMap 让我们可以调试代码,但是 webpack 文档中关于 devtool 给出了7种模式,文档也写得非常简略,初学者很难上手…...
提供手机网站制作哪家好/襄阳seo
用单调栈维护斜率,使之斜率单调递增,左右各跑一遍,具体的可以看代码里的注释 #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<cmath> #include <iomanip> #defi…...
公司网站被劫持怎么办/合肥seo排名公司
文章目录背景前情回顾描述方法约定slub 简介slub 结构总览slub 数据结构关系图数据结构简述数据结构介绍结构体pagekmem_cache_cpukmem_cache_nodekmem_cache全局变量kmalloc_caches其他slab管理结构slab_caches背景 前情回顾 [linux kernel]slub内存管理分析(0) 导读 描述方…...