【论文翻译】Deep High-Resolution Representation Learningfor Visual Recognition

news2024/11/16 21:36:25

目录

摘要

介绍

2.相关工作

3 HIGH-RESOLUTION NETWORKS

3.1 并行多分辨率卷积

3.2 重复的多分辨率融合融合模块

3.3 表示头

3.4实例化

3.5分析

4 人体姿态估计

5语义分割

8.总结


摘要

 

高分辨率表示对于位置敏感的视觉问题是必不可少的,例如人体姿势估计、语义分割和目标检测。现有的最先进的框架首先将输入图像编码为低分辨率表示,通过串联高到低分辨率卷积形成的子网络(例如ResNet, VGGNet),然后从编码的低分辨率表示中恢复高分辨率表示。相反,我们提出的网络,称为高分辨率网络(HRNet),在整个过程中保持高分辨率表示。它有两个关键特征:(i)并行连接高分辨率到低分辨率的卷积流;(ii)在不同分辨率之间反复交换信息。这样做的好处是,得到的表示在语义上更丰富,在空间上更精确。我们展示了所提出的HRNet在广泛应用中的优越性,包括人体姿势估计,语义分割和物体检测,这表明HRNet是计算机视觉问题的强大骨干。所有的代码都可以在https://github.com/HRNet上找到。

介绍

        深度卷积神经网络(DCNNs)在图像分类、目标检测、语义分割、人体姿态估计等许多计算机视觉任务中都取得了最先进的结果。其优点是dcnn能够学习比传统手工制作的表示更丰富的表示。

图1所示。从低分辨率恢复高分辨率的结构。(a)低分辨率表示学习子网络(如VGGNet [126], ResNet[54]),由低到高卷积串联而成。(b)高分辨率表示恢复子网络,由低到高卷积串联而成。代表性的例子包括SegNet[3]、DeconvNet[107]、U-Net[119]和Hourglass[105]、编码器-解码器[112]和SimpleBaseline[152]。

        最近开发的分类网络包括AlexNet[77]、VGGNet[126]、GoogleNet[133]、ResNet[54]等,都遵循LeNet-5[81]的设计规则。其规则如图1 (a)所示:逐渐减小特征图的空间大小,将高分辨率到低分辨率的卷积串联起来,得到低分辨率的表示,再进一步处理分类。

        高分辨率表示是位置敏感任务所需要的,例如,语义分割,人体姿势估计和目标检测。先前的最先进的方法采用高分辨率恢复过程,从分类或类分类网络输出的低分辨率表示中提高表示分辨率,如图1 (b)所示,例如,Hourglass [105], SegNet [3], DeconvNet [107], U-Net [119], SimpleBaseline[152]和编码器-解码器[112]。此外,扩张卷积用于去除一些下采样层,从而产生中等分辨率的表示[19],[181]。

        我们提出了一种新的结构,即高分辨率网络(HRNet),它能够在整个过程中保持高分辨率表示。我们从一个高分辨率的卷积流开始,逐个添加高分辨率到低分辨率的卷积流,并将多分辨率的卷积流并行连接。所得到的网络由图2所示的几个(本文中为4个)阶段组成,第n个阶段包含n个对应于n个分辨率的流。我们通过在并行流之间反复交换信息来进行重复的多分辨率融合。

        从HRNet学习到的高分辨率表示不仅语义强,而且空间精确。这来自两个方面。(i)我们的方法是并行连接高分辨率到低分辨率的卷积流,而不是串联。因此,我们的方法能够保持高分辨率,而不是从低分辨率恢复高分辨率,因此学习的表示可能在空间上更精确。(ii)大多数现有的融合方案都是通过上采样低分辨率表示获得高分辨率低分辨率表示。相反,我们重复多分辨率融合,在低分辨率表示的帮助下提高高分辨率表示,反之亦然。因此,所有从高到低分辨率的表示在语义上都是强的。

        我们提出了两个版本的HRNet。第一个被命名为HRNetV1,只输出从高分辨率卷积流计算出的高分辨率表示。我们根据热图估计框架将其应用于人体姿态估计。我们实证地证明了COCO关键点检测数据集上优越的姿态估计性能[94]。

        另一个称为HRNetV2,它结合了来自所有高分辨率到低分辨率并行流的表示。我们将其应用于语义分割,从组合的高分辨率表示估计分割地图。该方法在PASCAL-Context、city scape和LIP上以相似的模型大小和较低的计算复杂度获得了最先进的结果。我们观察到HRNetV1和HRNetV2在COCO姿态估计方面的性能相似,并且HRNetV2在语义分割方面优于HRNet1。

        此外,我们从HRNetV2的高分辨率表示输出中构建了多级表示HRNetV2p,并将其应用于最先进的检测框架,包括Faster R-CNN、Cascade RCNN[12]、FCOS[136]和CenterNet[36],以及最先进的联合检测和实例分割框架,包括Mask R-CNN[53]、Cascade Mask R-CNN和Hybrid Task Cascade[16]。结果表明,该方法提高了检测性能,特别是对小目标的检测性能有显著提高。

2.相关工作

本文从低分辨率表示学习、高分辨率表示恢复和高分辨率表示维护三个方面综述了主要针对人体姿态估计[57]、语义分割和目标检测开发的相关表示学习技术。此外,我们还提到了一些与多尺度聚变有关的工作。

学习低分辨率表示。全卷积网络方法[99],[124]通过去除分类网络中的全连接层来计算低分辨率表示,并估计其粗分割映射。通过结合从中级低水平中分辨率表示估计的精细分割得分图[99]或迭代过程[76],对估计的分割地图进行改进。类似的技术也应用于边缘检测,如整体边缘检测[157]。

        通过将一些(通常是两个)跨步卷积和相关卷积替换为扩张卷积,将全卷积网络扩展为扩张版本,从而得到中等分辨率的表示[18],[19],[86],[168],[181]。通过特征金字塔在多个尺度上分割对象,表示形式进一步增强为多尺度上下文表示[19],[21],[181]。

恢复高分辨率表示。上采样过程可用于从低分辨率表示逐渐恢复高分辨率表示。上采样子网络可以是下采样过程的对称版本(例如VGGNet),在一些镜像层上使用跳跃连接(skipping connection)来转换池化索引,例如SegNet[3]和DeconvNet[107],或者复制特征映射,例如U-Net[119]和沙漏[8],[9],[27],[31],[68],[105],[134],[163],[165],编码器-解码器[112]等等。U-Net的一个扩展,全分辨残差网络[114],引入了一个额外的全分辨率流,以全图像分辨率承载信息,以取代跳跃连接(skipping connection),下采样和上采样子网络中的每个单元从全分辨率流接收信息并向全分辨率流发送信息。

        不对称上采样工艺也被广泛研究。RefineNet[90]改进了上采样表示和从下采样过程复制的相同分辨率表示的组合。其他工作包括:轻上采样过程[7],[24],[92],[152],可能在主干中使用了扩张卷积[63],[89],[113];轻下样和重上样过程[141],重组网络[55];使用更多或更复杂的卷积单元改进跳过连接[64],[111],[180],以及将信息从低分辨率跳过连接发送到高分辨率跳过连接[189]或在它们之间交换信息[49];研究上样过程的细节[147];结合多尺度金字塔表示[22],[154];堆叠多个DeconvNets/UNets/Hourglass[44],[149],具有密集连接[135]。

维护高分辨率表示。我们的工作与一些也可以生成高分辨率表示的工作密切相关,例如卷积神经结构[123]、interlinked cnn[188]、GridNet[42]和多尺度DenseNet[58]。

        早期的convolutional neural fabrics[123]和interlinked CNNs[188]在何时启动低分辨率并行流、如何以及在何处跨并行流交换信息方面缺乏精心设计,并且没有使用批处理归一化和剩余连接,因此表现不尽如人意。GridNet[42]类似于多个u - net的组合,包含两个对称的信息交换阶段:第一个阶段只将信息从高分辨率传递到低分辨率,第二个阶段只将信息从低分辨率传递到高分辨率。这限制了它的分割质量。多尺度DenseNet[58]不能学习高分辨率表示,因为没有从低分辨率表示接收到信息。

多尺度融合。多尺度融合广泛研究[11],[19],[24],[42],[58],[66],[122],[123],[157],[161],[181],[188]。最简单的方法是将多分辨率图像分别输入多个网络,并聚合输出响应映射[137]。沙漏(Hourglass)[105]、UNet[119]和SegNet[3]通过跳跃式连接,将高到低下采样过程中的低级特征逐步组合为低到高上采样过程中的相同分辨率的高级特征。

        PSPNet[181]和DeepLabV2/3[19]融合了金字塔池化模块和 ASSP(atrous spatial pyramid pool)池化得到的金字塔特征。我们的多尺度(分辨率)融合模块类似于两个池化模块。差异包括:(1)我们的融合输出了四种分辨率的表示,而不是只有一种,(2)我们的融合模块重复了几次,这是受深度融合[129],[143],[155],[178],[184]的启发。

我们的方法。我们的网络并行连接高到低卷积流。它在整个过程中保持高分辨率表示,并通过多次融合来自多分辨率流的表示,生成可靠的高分辨率表示,具有较强的位置灵敏度。

        这篇论文代表了我们之前的会议论文[130]的一个非常实质性的扩展,从我们未发表的技术报告[131]中添加了额外的材料,以及在最近开发的最先进的对象检测和实例分割框架下的更多对象检测结果。与[130]相比,主要的技术创新有三个方面。(1)我们将[130]中提出的网络(称为HRNetV1)扩展到两个版本:HRNetV2和HRNetV2p,它们探索了所有的四分辨率表示。(2)我们建立了多分辨率融合和正则卷积之间的联系,这为探索HRNetV2和HRNetV2p中所有四分辨率表示的必要性提供了证据。(3)我们展示了HRNetV2和HRNetV2p相对于HRNetV1的优越性,并介绍了HRNetV2和HRNetV2p在广泛的视觉问题中的应用,包括语义分割和物体检测。

3 HIGH-RESOLUTION NETWORKS

我们将图像输入到一个由两个步长为2的 3 × 3卷积组成的主干中,将分辨率降低到1/4,然后输出具有相同分辨率的表示(1/4)的主体。主体如图2所示,并在下面详细说明,由几个组件组成:并行多分辨率卷积重复多分辨率融合,以及如图4所示的表示头

3.1 并行多分辨率卷积

我们从一个高分辨率的卷积流作为第一阶段,逐步增加一个高分辨率到低分辨率的流,形成新的阶段,并将多分辨率流并行连接。因此,后一阶段平行流的分辨率由前一阶段的分辨率和一个额外的低分辨率组成

        图2所示的网络结构示例,包含4个并行流,逻辑上如下:

 其中N_{sr}是 s th阶段的子流,r是分辨率指数。第一个流的分辨率指数为r = 1。索引r的分辨率为第一个流分辨率的\frac{1 }{2^{r -1}}

3.2 重复的多分辨率融合融合模块

融合模块的目标是跨多分辨率表示交换信息。这个模块会重复几次(例如,每4个残差单元)。

        让我们看一个融合3-分辨率表示的示例,如图3所示。融合2个表示和4个表示可以很容易地得到。输入由三个表示组成:\left \{ {R_i^r, r = 1,2,3} \right \},其中r是分辨率索引,相关的输出表示为\left \{ {R_r^o, r = 1,2,3} \right \}。每个输出表示都是三个输入转换后表示的和:R^o_r = f_{1r}(R_{1}^{i}) + f_{2r}(R_{2}^{i}) + f_{3r}(R_{3}^{i})。跨阶段(从阶段3到阶段4)的融合有一个额外的输出:R^o_4= f_{14}(R_{1}^{i}) + f_{24}(R_{2}^{i}) + f_{34}(R_{3}^{i})

        变换函数f_{xr}(·)的选择取决于输入分辨率指数x和输出分辨率指数r。如果x = r, f_{xr}(R)=R。如果x < r, f_{xr}(R)通过(r−s)个步长为2的 3 × 3卷积对输入表示R进行下采样。例如,对2×下采样进行一次步长为23 × 3卷积,对4×下采样进行两次连续步长为2 3 × 3卷积。如果x > r, f_{xr}(R)通过双线性上采样对输入表示r进行上采样,然后进行1 × 1卷积以对齐通道的数量。图3描述了这些功能。

 

 图3所示。说明融合模块如何从左到右分别聚合高、中、低分辨率的信息。右图例:strided 3 × 3 = 步长为2的 3 × 3卷积,向上采样。1 × 1 =双线性上采样,然后是1 × 1卷积。

3.3 表示头

 图4所示。(a) HRNetV1:只输出高分辨率卷积流的表示。(b) HRNetV2:连接来自所有分辨率的(上采样)表示(后续的1 × 1卷积没有显示出来)。(c) HRNetV2p:由HRNetV2表示形成特征金字塔。每个子图底部的四分辨率表示都是从图2中的网络输出的,灰色框表示如何从输入四分辨率表示中获得输出表示。

我们有三种表示头,如图4所示,分别称为HRNetV1、HRNetV2和HRNetV1p。

HRNetV1 输出仅是来自高分辨率流的表示。其他三个表示形式被忽略。如图4 (a)所示。

HRNetV2 我们在不改变高分辨率通道数的情况下,通过双线性上采样重新缩放低分辨率表示,并将四种表示连接起来,然后进行1 × 1卷积来混合四种表示。如图4 (b)所示。

HRNetV2p 我们通过将HRNetV2的高分辨率表示输出下采样到多个级别来构建多级表示。如图4 (c)所示。

        在本文中,我们将展示将HRNetV1应用于人体姿势估计,HRNetV2应用于语义分割,HRNetV2p应用于对象检测的结果。

3.4实例化

主体包括四个阶段,四个并行卷积流。分辨率分别为1/4、1/8、1/16和1/32。第一阶段包含4个残差单元,每个残差单元由宽度为64的瓶颈组成,然后进行一个3 × 3卷积,将特征映射的宽度改为c。第二、第三、第四阶段分别包含1、4、3个模块化块。模块化块的多分辨率并行卷积的每个分支包含4个残差单元。每个单元包含每个分辨率的两个3 × 3卷积,其中每个卷积之后是批量归一化和非线性激活ReLU。四种分辨率的卷积宽度(通道数)分别为C、2C、4C、8C。图2描述了一个示例

3.5分析

我们分析模块化块,它分为两个部分:多分辨率并行卷积(图5 (a))和多分辨率融合(图5 (b))。多分辨率并行卷积类似于群卷积。它将输入信道划分为若干个信道子集,分别在不同的空间分辨率上对每个子集进行正则卷积,而在组卷积中,分辨率是相同的。这种联系意味着多分辨率并行卷积具有群卷积的一些优点。

        多分辨率融合单元类似于正则卷积的多分支全连接形式,如图5 (c)所示。正则卷积可以被划分为多个小卷积,如[178]所述。输入通道被划分为几个子集,输出通道也被划分为几个子集。输入和输出子集以全连接的方式连接,每个连接都是一个正则卷积。输出通道的每个子集是输入通道的每个子集上卷积输出的总和。不同之处在于我们的多分辨率融合需要处理分辨率的变化。多分辨率融合和正则卷积之间的联系为探索HRNetV2和HRNetV2p中完成的所有四分辨率表示提供了证据。

4 人体姿态估计

【后面这些应用我就不具体翻译了】

人体姿态估计,又称关键点检测,旨在从尺寸为W × H × 3的图像I中检测出K个关键点或部位(如肘部、手腕等)的位置。我们遵循最先进的框架,将这个问题转化为估计W 4 × H 4的K个热图,{H1, H2,…HK},其中每个热图HK表示第k个关键点的位置置信度。

        我们在HRNetV1输出的高分辨率表示上回归热图。我们通过经验观察,HRNetV1和HRNetV2的性能基本相同,因此我们选择HRNetV1,因为其计算复杂度稍低。损失函数定义为均方误差,用于比较预测热图和真实热图。

5语义分割

....

8.总结

在本文中,我们提出了一个用于视觉识别问题的高分辨率网络。它与现有的低分辨率分类网络和高分辨率表示学习网络有三个根本区别:(i)将高分辨率和低分辨率卷积并行连接而不是串联;(ii)在整个过程中保持高分辨率,而不是从低分辨率恢复高分辨率;(iii)重复融合多分辨率表示,呈现丰富的高分辨率表示,具有较强的位置灵敏度。

        在广泛的视觉识别问题上的优异结果表明,我们提出的HRNet是计算机视觉问题的强大骨干。我们的研究还鼓励更多的研究工作,直接针对特定的视觉问题设计网络架构,而不是扩展、补救或修复从低分辨率网络(例如ResNet或VGGNet)中学到的表示。

讨论。可能存在一个误解:HRNet的内存成本随着分辨率的提高而增大。事实上,HRNet对于人体姿态估计、语义分割和目标检测这三个应用程序的内存成本与目前的技术水平相当,只是目标检测中的训练内存成本略大一些。

        此外,我们总结了PyTorch 1.0平台上的运行时成本比较。除了(1)用于分割的HRNet的推理时间要小得多,(2)用于姿态估计的HRNet的训练时间要大一些之外,HRNet的训练和推理时间成本与现有的技术水平相当,但在支持静态图推理的MXNet 1.5.1平台上的训练和推理时间成本与SimpleBaseline相似。我们要强调的是,对于语义分割,推理成本明显小于PSPNet和DeepLabv3。表13总结了内存和时间成本的比较。

未来及后续工作。我们将研究HRNet与其他技术的结合,以实现语义分割和实例分割。目前,我们通过将HRNet与对象上下文表示(OCR)方案(对象上下文[59],[171]的一种变体)相结合,得到了表3 4 5 6所示的结果(mIoU)。我们将通过进一步增加表示的分辨率来进行研究,例如,增加到12甚至完全分辨率。

        HRNet的应用并不局限于以上所做的工作,它还适用于其他位置敏感视觉应用,如人脸地标检测、超分辨率、光流估计、深度估计等。目前已有后续工作,如图像风式化[83],inpainting[50],图像增强[62],图像去雾[1],时间姿态估计[6],无人机目标检测[190]。

[26]中报道,在单模型情况下,稍加改进的HRNet结合ASPP在Mapillary全景分割中取得了最好的性能。在ICCV 2019的COCO + Mapillary联合识别挑战研讨会上,COCO DensePose挑战的获胜者和几乎所有COCO关键点检测挑战的参与者都采用了HRNet。OpenImage实例分割挑战赛(ICCV 2019)的获胜者也使用了HRNet。

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

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

相关文章

垃圾收集器必问系列—G1

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 人生下来不是为了拖着锁链&#xff0c;而是为了展开双翼。——雨果 文章目录基于Region的堆内存布局可预测的停顿时间模型跨Region引用对象对象引用关系改变运作过程CMS VS G1相关参数Garbage First&#xff…

重要的数据表

重要的数据表目录概述需求&#xff1a;设计思路实现思路分析1.-- 组织结构数据库.参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challeng…

51单片机学习笔记-6串口通信

6 串口通信 [toc] 注&#xff1a;笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 6.1 串口通信原理 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通…

层级选择器

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>层级选择器</title> <style type"text/css"> /*需求&#xff1a;需要选中前三个段落标签*/ /*下面两个选择器之间加…

JavaScript 发布订阅者模式和观察者模式及区别

一、发布订阅模式 发布订阅模式其实是一种对象间一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都将得到状态改变的通知。 多方订阅&#xff0c;一方发布&#xff0c;订阅放会收到通知 举例&#xff1a;教学楼中每个教室都有一个广…

Iterator_fail-fast和Iterator_fail-safe~

初识fail-fast&#xff1a; fail-fast 机制是java集合(Collection)中的一种错误机制&#xff0c;当多个线程对同一个集合的内容进行操作时&#xff0c;就可能会产生fail-fast事件&#xff0c;它只是一种错误检测机制&#xff0c;只能被用来检测错误&#xff0c;因为JDK并不保证…

蓝桥杯2022Python组

蓝桥杯2022Python组 1.排列字母 用一个sorted就好了&#xff0c;没啥好说的 s WHERETHEREISAWILLTHEREISAWAY s sorted(s) # 变成列表形式了 print(.join(s))2.寻找整数 这题我刚开始以为答案只能是11和17的倍数&#xff0c;就在他们的倍数里面找&#xff0c;发现不对&…

STL——STL简介、STL六大组件

一、STL是什么 STL(standard template library)&#xff1a; C标准模板库&#xff0c;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;还是一个包罗数据结构与算法的软件框架。 通俗来讲&#xff1a; STL就是将常见的数据结构&#xff08;顺序表、…

Superset权限管理

文章目录1.Superset角色1&#xff09;Admin2&#xff09;Alpha3&#xff09;Gamma4&#xff09;Sql_lab5&#xff09;Public2.实操自定义授权1&#xff09;权限集2&#xff09;实操1.Superset角色 Superset的默认角色有&#xff1a;Admin、Alpha、Gamma、sql_lab、Public 1&a…

【信息资源建设】

考试分为单选、判断改错、名词解释、简答、综合论述 1.1 如果按价值观念划分&#xff0c;则可将信息分为有用信息和无用信息 信息的特性&#xff1a;普遍性、客观性、时效性、传递性、共享性、变换性、转化性、可伪性。 1.1.2 &#xff08;必考&#xff09;OECD的知识分类…

【docker概念和实践 4】(4) 本地镜像提交到本地仓库

一、说明 registry是一个镜像&#xff0c;该镜像专门生成镜像仓库的容器&#xff0c;registry是基于http协议&#xff0c;那就是说&#xff0c;在单机、局域网、或者互联网上都可以建立registry数据仓库&#xff0c;存放自己构建的镜像。本篇专门介绍如何在本地单机上建立容器仓…

Python中的集合(set and frozenset)语法汇总

集合的基本语法知识目前有两种集合类型&#xff1a;set和frozenset。可变集合&#xff1a;set()set类型是可变的&#xff0c; 其内容可以使用 add() 和 remove() 这样的方法来改变&#xff0c;因为是可变的&#xff0c;所以没有哈希值&#xff0c;且不能被用作字典的键或其它集…

java线上项目排查,Arthas简单上手

Arthas 是Alibaba开源的Java诊断工具。参考&#xff1a;Arthas 用户文档 — Arthas 3.5.4 文档 当你遇到以下类似问题而束手无策时&#xff0c;Arthas可以帮助你解决&#xff1a; 这个类从哪个 jar 包加载的&#xff1f;为什么会报各种类相关的 Exception&#xff1f;我改的代…

一起Talk Android吧(第四百七十九回:集合类视图动画)

文章目录使用方法属性介绍示例代码各位看官们大家好&#xff0c;上一回中咱们说的例子是"旋转类视图动画",这一回中咱们说的例子是"集合类视图动画"。闲话休提&#xff0c;言归正转&#xff0c;让我们一起Talk Android吧&#xff01; 使用方法 集合类动画…

web测试2:嵌入式移植boa

读此篇之前&#xff0c;先读前一篇 1.在源码编译的时候&#xff0c;指定交叉编译工具链 lkmaoubuntu:~$ arm-linux-gnueabi-gcc --version arm-linux-gnueabi-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation, Inc.…

C++工程的CMakeLists.txt文件编写

最简单的demo工程如下&#xff1a; #include <iostream> #include <string> int main(int argc,char** argv) {std::cout << "hello world" << std::endl;return 0; } 文件结构如下&#xff0c;其中include可用来自定义接口功能类。 CMake…

IMX Linux 用户手册 --- 1

IMX Linux 用户手册 — 1 第一章 概述 本文档介绍了i.MX LinuxOS BSP (BSP代表Board Support Package)在i.MX平台上的构建和安装方法。它还涵盖了特殊的i.MX功能和如何使用它们。 本文档还提供了运行i.MX平台的步骤&#xff0c;包括单板拨码开关设置、U-Boot引导加载程序的配置…

IP地址是什么

我们知道&#xff0c;网络通讯的本质就是收发数据包。如果说收发数据包就跟收发快递一样。那IP地址就类似于快递上填的收件地址和发件地址一样&#xff0c;有了它&#xff0c;路由器就可以开始充当快递员的角色&#xff0c;在这个纷繁复杂的网络世界里找到该由谁来接收这个数据…

linux上git三板斧的使用

前言 现在在我们的生活当中&#xff0c;用我们程序员的一句玩笑话&#xff0c;来说就是“全球最大的同性交友网站就是githup”。 那么它具有什们功能呢&#xff0c;能让人这么吹捧&#xff0c;用通俗易懂的话来说就是&#xff0c;储存和管理代码&#xff0c;它会记录我们修改甚…

java知识总结(一)

ArrayList和LinkedList的区别1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。2. 对于随机访问ArrayList要优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问,而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,查找某个…