【个人整理】一文看尽目标检测算法SSD的核心架构与设计思想

前言:SSD(Single Shot MultiBox Detector)是大神Wei Liu在 ECCV 2016上发表的一种的目标检测算法。对于输入图像大小300x300的版本在VOC2007数据集上达到了72.1%mAP的准确率并且检测速度达到了惊人的58FPS( Faster RCNN:73.2%mAP,7FPS; YOLOv1: 63.4%mAP,45FPS  ),500x500的版本达到了75.1%mAP的准确率。SSD作为当前非常流行的object detection算法,本文总结一下SSD算法的核心设计思想。

一、SSD算法的概览

二、SSD算法的核心设计理念

2.1 采用多尺度特征图进行检测——金字塔特征

2.2 设置Default boxes
     2.2.1Default boxes 尺寸的确定

2.3. 采用卷积进行检测

三、SSD的网络结构

四、SSD的训练

4.1 样本数据——正负样本的类别不均衡

4.2 先验框匹配

4.3 data augment数据预处

4.4 损失函数

    4.4.1 位置误差

    4.4.2 置信度误差

4.5  NMS(非极大值抑制)

五、SSD的预测以及性能评估

5.1 SSD的预测
5.2 SSD的性能评估

    5.2.1 模块性能

    5.2.2 SSD 速度更快的原因的原因

5.3 SSD算法的优缺点

六、SSD的keras实现(网络结构图)


一、SSD算法的概览

SSD算法,其英文全名是Single Shot MultiBox Detector,顾名思义,Single shot指明了SSD算法属于one-stage方法,MultiBox指明了SSD是多框预测,这里有两个关于SSD的资源:

SSD Github: https://github.com/weiliu89/caffe 
SSD paper: http://arxiv.org/abs/1512.02325

当前目标检测算法主要是分为3个系列,即RCNN系列、YOLO系列、SSD系列,

RCNN系列(R-CNN、fast-RCNN、faster-RCNN)它们最主要的问题是运算效率和检测速度的困境,当然faster-RCNN已经有了比较好的改善措施,但还是达不到要求;

YOLO系列(YOLO V1、YOLO V2、YOLO V3)它们最大的问题是对于物体的尺度相对比较敏感,面对尺度变化较大的物体时泛化能力较差,尤其对于小物体的检测准确率太低了,虽然后面改进的YOLO V2和YOLO V3版本已经有了很好的改善;

当前SSD系列,faster-RCNN、YOLO V3算法都有非常多的人青睐。在这些主流的算法中,又主要分为两个类型:

two-stage方法:如R-CNN系列算法,其主要思路是先通过启发式方法(selective search)或者 CNN 网络(RPN)产生一系列稀疏的候选框,然后对这些候选框进行分类(classification)与回归(bounding box regression),two-stage方法的优势是准确度高; 
one-stage方法:如YOLO和SSD,其主要思路是均匀地在图片多个层数的特征图上进行密集抽样,抽样时可以采用不同尺度和长宽比,然后利用CNN提取特征后直接进行分类与回归,整个过程只需要一步,所以其优势是速度快。但是均匀的密集采样的一个重要缺点是训练比较困难,这主要是因为正样本与负样本(背景)极其不均衡,导致模型准确度稍低。

不同算法的性能如图1所示,可以看到两类方法在准确度和速度上的差异。


 

二、SSD算法的核心设计理念

鉴于RCNN系列与YOLO系列的一些优缺点,SSD算法借鉴了其中的很多思想,也有很多思想上的改进

2.1 采用多尺度特征图进行检测——金字塔特征

所谓多尺度采用大小不同的特征图,CNN网络一般前面的特征图比较大,后面会逐渐采用stride=2的卷积或者pool来降低特征图大小,一个比较大的特征图和一个比较小的特征图,它们都用来做检测。这样做的好处是比较大的特征图来用来检测相对较小的目标,而小的特征图负责检测大目标(提高对物体尺度变化的泛化能力),如图4所示,8x8的特征图可以划分更多的单元,但是其每个单元的先验框尺度比较小,而4*4的特征图有更少的划分单元,但是每一个单元的先验框尺度相对较大。如下图所示:


可以通过下面的这个例子来说明,在下图(a)中,浅层网络特征图很适合用来识别猫这一目标(蓝色方框,因为猫比较小),但面对狗这一目标,选框尺寸显得太小无法很好地将目标检测到。而到了深层网络,由于特征图经过池化层后尺寸减小,感受野变大。因此,红色选框可以较准确地识别到狗,所以高层特征可以更好的识别狗这一目标。


                                                                 (a)

                                                                                               (b)

SSD采用了特征金字塔结构进行检测,即检测时利用了conv4-3,conv-7(FC7),conv6-2,conv7-2,conv8_2,conv9_2这些大小不同的feature maps,在多个feature maps上同时进行softmax分类和位置回归,如下图:

总结:对于相同大小的先验框,在低层特征图上,由于相对应的感受野较小,便于检测小目标;在高层特征图上,由于同样的范围所对应的感受野更大,便于检测大目标。采用多尺度特征用于检测可以提高识别的准确度。

2.2 设置Default boxes

       default box(默认框),这是SSD算法的核心思想之一。是指在feature map的每个小格(cell)上都有一系列固定大小的box,可能是4个、6个或者是其他。假设每个feature map cell有k个default box,那么对于每个default box都需要预测c个类别score和4个offset(位置信息),那么如果一个feature map的大小是m×n,也就是有m*n个cell,那么这个feature map就一共有(c+4)*k * m*n 个输出。这些输出个数的含义是:采用3×3的卷积核对该层的feature map卷积时卷积核的个数,包含两部分(实际code是分别用不同数量的3*3卷积核对该层feature map进行卷积):数量c*k*m*n是confidence输出,表示每个default box的confidence,也就是类别的概率;数量4*k*m*n是localization输出,表示每个default box回归后的坐标)。

       SSD借鉴了Faster R-CNN中anchor的理念,每个单元设置尺度或者长宽比不同的Default boxes,预测的边界框(bounding boxes)是以这些Default boxes为基准的,在一定程度上减少训练难度。一般情况下,每个单元会设置多个先验框,其尺度和长宽比存在差异(这也是YOLO里面的思想)。

        对应上一条核心思想我们知道,Default boxes其实就是在某一feature map上每一点处选取的不同长宽比的选框。与YOLO不同的是,YOLO在每个位置只选取正方形选框,但是真实目标的形状是多变的,Yolo需要在训练过程中自适应目标的形状。


2.2.1Default boxes 尺寸的确定

        我们说特征图上的每一个cell所对应的k个default box,那么这写默认框框的大小是怎么确定的呢?随便确定的吗?当然不是的,实际上它是根据各个层的特征图的大小来确定的。

Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2作为检测所用的特征图,加上Conv4_3层,共提取了6个特征图,其中:

Convm_n中 表示的是第几个卷积层,n表示的是这一层卷卷积的stride,论文中这6个特征图的其大小分别是(38,38)(19,19)(10,10)(5,5)(3,3)(1,1)。但是不同特征图设置的先验框数目不同。先验框的设置,包括尺度(scale)长宽比(aspect ratio)两个方面。对于先验框的尺度,其遵守一个线性递增规则:随着特征图大小降低,先验框尺度线性增加:

这里smin是0.2,表示最底层的尺度是0.2,;smax是0.9,表示最高层的尺度是0.9。通过这种计算方法,可以得出6个特征图的default box尺度分别为:[30,60,111,162,213,264]。长宽比用??表示为下式(注意这里一共有5种长宽比): 

 通过下面的公式计算 default box 的宽度w和高度h:

式子中,sk表示default box的大小,ar表示5种长宽比,默认情况下,每个特征图会有一个?? =1且尺度为??的先验框,除此之外,还会设置一个尺度为

的先验框,这样每个特征图都设置了两个长宽比为1但大小不同的正方形先验框。因此,每个特征图一共有6个先验框,但是论文在实现时,Conv4_3,Conv10_2和Conv11_2层仅使用4个先验框,它们不使用长宽比为3,1/3的先验框,至于是为什么。这是作者不断试验得出的结果,那么按照上面的设计,下面以SSD300为例:

SSD300一共可以预测的default box个数为:

 即一共预测了8732个box,所以说SSD本质上是密集采样的。
 

2.3. 采用卷积进行检测

        与 Yolo最后采用全连接层不同,SSD直接采用卷积对不同的特征图来进行提取检测结果。

对网络中 6 个特定的卷积层的输出分别用两个 3*3 的卷积核进行卷积,一个输出分类用的confidence,每个default box生成21个confidence(这是针对VOC数据集包含20 个 object 类别而言的,另外一个是背景的分类);一个输出回归用的 localization,每个 default box生成4个坐标值(x,y,w,h)。

在上图中,给出了一个5*5大小的特征图的检测过程。其中Prior box是代表default box(只是不同叫法,实际上是一样的),前面已经介绍了生成规则。检测值包含两个部分:类别置信度边界框位置,各采用一次 3*3 卷积来进行完成。令?为该特征图所采用的先验框数目,那么类别置信度需要的卷积核数量为? × ?,而边界框位置需要的卷积核数量为? × 4。在上图中,中间的那个是负责预测localization的,卷积核的数量是k*4个,而右侧的那个是负责预测Classification的,卷积核的数量是k*c个,c指的是类别数目。

三、SSD的网络结构

SSD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测。SSD的网络结构如下图所示。上面是SSD模型,下面是Yolo模型,可以明显看到SSD利用了多尺度的特征图做检测。模型的输入图片大小是 300×300 300\times300300×300 (还可以是 512×512 512\times512512×512 ,其与前者网络结构没有差别,只是最后新增一个卷积层,本文不再讨论)。

采用VGG16做基础模型,首先VGG16是在ILSVRC CLS-LOC数据集预训练。然后借鉴了DeepLab-LargeFOV,分别将VGG16的全连接层fc6和fc7转换成 3×3 的卷积层 conv6,和 1×1 的卷积层conv7,同时将池化层pool5由原来的stride=2的 2×2 变成stride=1的 3×3 (猜想是不想reduce特征图大小),为了配合这种变化,采用了一种Atrous Algorithm

什么是Atrous Algorithm?

atrous,本意为深黑的;纯黑色;暗灰色,在深度学习领域,Atrous 卷积,就是带洞的卷积,卷积核是稀疏的。所以这里的Atrous Algorithm实际上就是conv6采用扩展卷积或带孔卷积(Dilation Conv),其在不增加参数与模型复杂度的条件下指数级扩大卷积的视野,其使用扩张率(dilation rate)参数,来表示扩张的大小,如下图所示,

(a)是普通的 3×3 3\times33×3 卷积,其视野就是 3×3

(b)是扩张率为1,此时视野变成 7×7

(c)扩张率为3时,视野扩大为 15×15,但是视野的特征更稀疏了。Conv6采用 3×3 大小但dilation rate=6的扩展卷积。

然后移除dropout层和fc8层,并新增一系列卷积层,在检测数据集上做finetuing。
 

四、SSD的训练

4.1 样本数据——正负样本的类别不均衡

       将prior box和 grount truth box 按照IOU(JaccardOverlap)进行匹配,匹配成功则这个prior box就是positive example(正样本,即包含有检测物体的样本),如果匹配不上,就是negative example(负样本,即所谓的背景,不包含检测物体),显然这样产生的负样本的数量要远远多于正样本。因为检测图片中大部分一般都是背景。这种严重的类别不均衡问题,那怎么办呢?

这就是下面要说的先验框的匹配问题了。

4.2 先验框匹配

         在训练过程中,首先要确定训练图片中的ground truth(真实目标)与哪个先验框来进行匹配,与之匹配的先验框所对应的边界框将负责预测它。

        在Yolo中,ground truth的中心落在哪个单元格,该单元格中与其IOU最大的边界框负责预测它。

        但是在SSD中却完全不一样,SSD的先验框与ground truth的匹配原则主要有两点:

(1)第一个原则:

       对于图片中每个ground truth,找到与其IOU最大的先验框,该先验框与其匹配,这样,可以保证每个ground truth一定与某个先验框匹配。通常称与ground truth匹配的先验框为正样本,反之,若一个先验框没有与任何ground truth进行匹配,那么该先验框只能与背景匹配,就是负样本。一个图片中ground truth是非常少的, 而先验框却很多,如果仅按第一个原则匹配,很多先验框会是负样本,正负样本极其不平衡,所以需要第二个原则;

(2)第二个原则:

       对于剩余的未匹配先验框,若某个ground truth的 IOU 大于某个阈值(一般是0.5),那么该先验框也与这个ground truth进行匹配。这意味着某个ground truth可能与多个先验框匹配,这是可以的。但是反过来却不可以,因为一个先验框只能匹配一个ground truth,如果多个ground truth与某个先验框 IOU大于阈值,那么先验框只与IOU最大的那个先验框进行匹配。第二个原则一定在第一个原则之后进行,仔细考虑一下这种情况,如果某个ground truth所对应最大IOU 小于阈值,并且所匹配的先验框却与另外一个ground truth的 IOU大于阈值,那么该先验框应该匹配谁,答案应该是前者,首先要确保某个ground truth一定有一个先验框与之匹配。但是,这种情况我觉得基本上是不存在的。由于先验框很多,某个ground truth的最大 IOU 肯定大于阈值,所以可能只实施第二个原则既可以了,

       其实让包含物体的Ground truth与多个候选框匹配,目的就是增加正样本的数量

       但是尽管一个ground truth可以与多个先验框匹配,但是ground truth相对先验框还是太少了,所以负样本相对正样本会很多。为了保证正负样本尽量平衡,SSD采用了hard negative mining方法,就是对负样本进行抽样,抽样时按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3。
 

4.3 data augment数据预处理
      不同于Faster R-CNN,SSD算法使用了多种数据增强的方法,包括水平翻转、裁剪、放大和缩小等。论文明确指出,数据增强可以明显的提高算法的性能。主要的目的是为了使得该算法对输入的不同大小和不同形状的目标具有更好的鲁棒性。直观的理解是通过这个数据增强操作可以增加训练样本的个数,同时构造出更多的不同形状和大小的目标,将其输入到网络中,可以使得网络学习到更加鲁棒的特征。


上图是水平翻转、裁剪、放大和缩小等数据增强的方法。

4.4 损失函数

      在训练样本确定了之后,就是选择损失函数了。损失函数定义为位置误差(locatization loss, loc)与置信度误差(confidence loss, conf)的加权和:

     其中N是先验框的正样本数量。c为类别置信度预测值。l 为先验框的所对应边界框的位置预测值,而g是ground truth的位置参数。权重系数α通过交叉验证设置为1。

4.4.1 位置误差

      对于位置误差,其采用Smooth L1 loss,定义如下:


这里???? ∈ {1,0}为一个指示参数,当???? = 1时表示第i个default boxes与第j个ground truth匹配,并且ground truth的类别为g。由于????的存在,所以位置误差仅针对正样本进行计算。

4.4.2 置信度误差

     对于置信度误差,其采用softmax loss,定义如下:


    从公式中可以看出,置信度的误差包含两个部分:正样本的误差和负样本的误差。

4.5  NMS(非极大值抑制)
       在 SSD 算法中,NMS 至关重要。因为多个 feature map 最后会产生大量的 bounding boxes,即最终检测结果。然而在这些bounding boxes中存在着大量的错误的、重叠的、不准确的样本,这不仅造成了巨大的计算量,如果处理不好会影响算法的性能。仅仅依赖于IOU 是不现实的,IOU值设置的太大,可能就会丢失一部分检测的目标,即会出现大量的漏检情况;IOU值设置的太小,则会出现大量的重叠检测,会大大影响检测器的性能。

       即使在IOU处理掉大部分的bounding boxes之后,仍然会存在大量的错误的、重叠的、不准确的bounding boxes(如图14),这就需要NMS进行迭代优化。


上图中展示了重叠的、IoU无法剔除的bounding boxes
NMS简单原理:  对于Bounding Box的列表B及其对应的置信度S,采用下面的计算方式.选择具有最大 score的检测框M,将其从B集合中移除并加入到最终的检测结果D中.通常将B中剩余检测框中与M的IoU大于阈值的框从B中移除.重复这个过程,直到B为空。
 

五、SSD的预测以及性能评估

5.1 SSD的预测

        预测过程比较简单,对于每个预测框(default boxes),首先根据类别置信度确定其类别(置信度最大者)与置信度值,并过滤掉属于背景的预测框。然后根据置信度阈值(如0.5)过滤掉阈值较低的预测框。对于留下的预测框进行解码,根据先验框得到其真实的位置参数,一般需要根据置信度进行降序排列,然后仅保留top-k(如400)个预测框。最后就是进行

NMS算法,过滤掉那些重叠度较大的预测框。最后剩余的预测框就是检测结果了。


5.2 SSD的性能评估

5.2.1 模块性能

下图是SSD训练过程各模块对性能的影响


观察上图可以得到如下的结论:

(1)数据增强方法在SSD算法中起到了关键性的作用,使得mAP从65.5变化到71.6,主要的原因可能是数据增强增加了样本的个数,使得模型可以获得更重更样的样本,即提高了样本的多样性,使得其具有更好的鲁棒性,从而找到更接近GT的bounding boxes。
(2)[1/2,2]和[1/3, 3]box可以在一定程度上提升算法的性能,主要的原因可能是这两种box可以在一定程度上增加较大和较小的bounding boxes,可以更更加准确的检测到较大和较小的目标,而且VOC数据集上面的目标一般都比较大。当然,更多的比例可以进一步提升算法的性能。
(3)Atrous算法可以轻微提升算法性能,但是其主要的作用是用来提速,论文中表明它可以提速20%。主要的原因可能是虽然该算法可以获得更大的feature map和感受野,但是由于SSD本身利用了多个feature map来获取bounding boxes,bounding boxes的多样性已经足够,由于feature map扩大而多得到的bounding boxes可能是一些重复的,并没有起到提升检测性能的作用。
 

5.2.2 SSD 速度更快的原因的原因
(1)原因 1:首先 SSD 是一个 one-stage 网络,只需要一个阶段就可以输出结果;而 Faster R-CNN是一个two-stage网络。尽管Faster R-CNN的bounding boxes少很多,但是其需要大量的前向和反向推理(训练阶段),而且需要交替的训练两个网络;
(2)原因2:Faster R-CNN中不仅需要训练RPN,而且需要训练Fast R-CNN,而SSD其实相当于一个优化了的RPN网络,不需要进行后面的检测,仅仅前向推理就会花费很多时间;
(3)原因3:YOLO网络虽然比SSD网络看起来简单,但是YOLO网络中含有大量的全连接层。和FC层相比,CONV层具有更少的参数;同时YOLO获得候选bounding boxes的操作比较费时;SSD算法中,调整了VGG网络的架构,将其中的 FC 层替换为 CONV 层,这一点会大大的提升速度。
(4)原因4:使用了Atrous算法,该算法能够提速20%。
(5)原因5:SSD设置了输入图片的大小,它会将不同大小的图片裁剪为300x300,或者512x512,和Faster-rcnn相比,在输入上就会少很多的计算。

5.3 SSD算法的优缺点
优点:
 运行速度超过YOLO,精度超过Faster R-CNN(一定条件下,对于稀疏场景的大目标而言)。

缺点:
(1)需要人工设置default boxes的初始尺度和长宽比的值。网络中default boxes的基础大小和形状不能直接通过学习获得,而是需要手工设置。而网络中每一层 feature使用的default box大小和形状恰好都不一样,导致调试过程非常依赖经验。
(2)对小尺寸的目标识别仍比较差,还达不到 Faster R-CNN 的水准。因为 SSD 使用 conv4_3 低级 feature 去检测小目标,而低级特征卷积层数少,存在特征提取不充分的问题。
 

SSD 检测结果展示:


针对SSD的缺点,又提出了相应的改进措施,即DSSD算法,后面会讨论到。

六、SSD的keras实现(网络结构图)

项目地址为:https://github.com/pierluigiferrari/ssd_keras

keras搭建的SSD的网络结构图(图片较大 ,下载下来查看)

  • 16
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Linux内核是一种开源的操作系统内核,是Linux操作系统的核心组成部分。它提供了操作系统与硬件之间的抽象层,负责管理系统的资源、调度任务、提供驱动程序等功能。 Linux内核采用分层的架构,包括硬件抽象层、系统调用层、进程管理层、文件系统层和网络层等。硬件抽象层负责将不同硬件设备的接口统一起来,使得上层的软件可以方便地与硬件进行通信。系统调用层提供了一组API供用户进程调用,如文件操作、网络通信等。进程管理层负责进程的创建、销毁以及调度等任务。文件系统层负责文件的管理和存储。网络层负责网络协议的实现和网络通信。 Linux内核的工作原理可以简单概括为以下几个关键步骤。首先,当一台计算机启动时,BIOS会加载内核映像到内存中,并执行启动代码。然后,内核初始化各种数据结构、驱动程序和关键服务。接下来,内核创建一个初始的用户空间进程,称为init进程。init进程是所有其他进程的祖先进程。在此之后,内核根据调度算法来决定哪个进程可以使用CPU,并依次执行。同时,内核会提供一个中断机制,以便处理硬件事件的优先级。 内核还提供了许多系统调用供用户进程调用,以实现对各种功能的访问。当用户进程需要操作文件、创建进程或进行网络通信时,会通过系统调用将请求传递给内核,由内核代表用户进程执行相应的操作。内核通过调度算法来分配CPU时间片,并通过虚拟内存管理来管理内存资源的分配和回收。 总而言之,Linux内核是一个高度可配置和模块化的操作系统内核,通过分层架构和系统调用机制实现了对硬件的抽象和对用户进程的管理。了解Linux内核的架构和工作原理,有助于深入理解Linux操作系统以及开发和调试相关应用程序。 ### 回答2: Linux是一种开源的操作系统内核,其设计目标是为了在不同的计算机硬件平台上提供高效的、稳定的和安全的操作系统服务。 Linux内核的架构可以分为三个主要部分:进程管理、内存管理和文件系统管理。 在进程管理方面,Linux内核使用了多任务处理技术,可以同时运行多个进程。每个进程都有独立的地址空间和资源,通过调度算法可以合理分配CPU时间片,优化系统的响应速度和资源利用率。 在内存管理方面,Linux内核使用了虚拟内存技术,将物理内存和逻辑内存进行了映射,使得每个进程都有独立的地址空间。当物理内存不足时,Linux内核会通过页面置换算法将暂时不使用的页写入磁盘交换空间,以释放物理内存供其他进程使用。 在文件系统管理方面,Linux内核支持多种文件系统,包括传统的ext3和ext4文件系统,以及现代的Btrfs和XFS文件系统。它负责文件的读写操作,以及文件的权限控制和磁盘空间的管理。 Linux内核的工作原理可以简单概括为以下几个步骤:首先,启动引导程序将内核加载到内存中,并进行初始化。然后,内核分配一部分内存作为内核空间,用于存放内核代码和数据结构。接着,内核根据系统的硬件配置进行设备的初始化和驱动程序的加载。之后,内核根据系统的启动参数和配置文件进行一系列的初始化工作,包括启动系统服务和加载用户程序。最后,内核进入主循环,不断地处理中断、调度进程、管理内存和文件系统,以提供稳定的操作系统服务。 总之,Linux内核是一个复杂而高效的软件系统,它通过进程管理、内存管理和文件系统管理等功能,实现了操作系统的基本功能。了解Linux内核的架构和工作原理,有助于我们更好地理解和使用这个优秀的开源操作系统。 ### 回答3: Linux内核是一个开放源代码的操作系统内核,由一个核心程序和一组通用的系统工具组成。它是Linux操作系统的核心,负责处理硬件设备、管理系统资源、实现进程管理、文件系统和网络功能等。 Linux内核的架构可以分为两个层次:用户空间和内核空间。用户空间包括用户应用程序,如图形界面、终端程序等,它们通过系统调用接口与内核进行通信。内核空间包括内核核心的数据结构和程序,用于管理和控制硬件资源。 Linux内核的工作原理可以概括为以下几个方面: 1. 进程管理:内核负责创建、调度和终止进程。它使用进程描述符(task_struct)来跟踪进程的状态和资源使用情况,并根据调度算法分配CPU时间片给不同的进程。 2. 内存管理:内核负责管理系统的物理内存和虚拟内存。物理内存管理包括内存分配和释放,虚拟内存管理包括页面置换和页面回写等策略,以优化内存的使用效率。 3. 文件系统:内核提供文件系统接口,管理文件和目录的创建、读写和删除等操作。它通过虚拟文件系统层(VFS)将不同的文件系统统一管理,如ext4、NTFS等。 4. 设备驱动:内核提供了访问硬件设备的接口,通过设备驱动程序与硬件交互。不同的硬件设备需要不同的驱动程序,如网卡、显卡、声卡等。 5. 网络功能:内核提供TCP/IP协议栈和网络设备驱动程序,用于实现网络通信功能。它提供网络连接的建立、数据传输和断开等功能,支持各种网络协议,如HTTP、FTP、SSH等。 总的来说,Linux内核是一个非常复杂且功能强大的软件,它负责管理计算机的各种资源和提供操作系统的各种功能。通过深入理解其架构和工作原理,我们可以更好地理解和使用Linux操作系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值