author:Xiaolei Ma 1, Zhuang Dai 1, Zhengbing He 2, Jihui Ma 2,*, Yong Wang 3 and Yunpeng Wang

time:2017

链接:https://www.mdpi.com/1424-8220/17/4/818/html

摘要

本文提出了一种基于卷积神经网络(CNN)的流量学习方法,该方法将流量作为图像来学习,并对大规模、全网范围内的流量速度进行高精度预测。将时空交通动力学转化为二维时空矩阵描述交通流时空关系的图像,将CNN应用到图像中,通过两个连续的步骤:抽象的交通特征提取和网络范围内的交通速度预测。评估了该方法的有效性通过两个真实的交通网络,北京的二环路和东北交通网络,并且和四个比较的方法有四个主流算法,即普通最小二乘法,k近邻法、人工神经网络和随机森林,和三个深度学习架构,即自编码器、递归神经网络和LSTM网络。结果表明,在可接受的执行时间内,该方法的平均准确率比其他算法提高了42.91%。CNN可以在合理的时间内对模型进行训练,适用于大型交通网络。

关键词:交通网络;交通速度预测;深度学习;卷积神经网络;时空特征

一、介绍

预测未来是人类最感兴趣的话题之一,交通管理也是如此。了解整个道路网络而不是单一道路上的交通演化,对于帮助拥有完整交通信息的人们更好地选择道路,以及支持交通管理者对道路网络进行管理和系统地分配资源具有重要意义。

然而,大规模网络流量预测模型预测需要更具有竞争性的能力,如能够处理更高的计算复杂性产生的网络拓扑结构,能够形成一个更聪明和高效的预测来解决交通道路的空间相关性扩大一个二维平面上,并能预测长期特征反映拥堵传播。不幸的是,传统的交通预测模型通常将交通速度视为连续的数据,由于推理和假设、无法处理异常值、噪声或丢失的数据等限制,无法提供这些能力,无法应对高维数据。因此,现有的模型可能无法预测大规模的网络流量演化。

在已有的文献中,交通预测的研究方法主要有两大类:统计方法和神经网络。

统计技术在交通预测中得到了广泛的应用。例如,根据交通演进的周期性,利用非参数模型,如k近邻(KNN)来预测交通速度和流量,当然也可以使用更高级的模型,包括支持向量机(SVM),季节性支持向量机,在线支持向量机,在线顺序极值学习机,通过捕捉交通流的高动态和敏感性来提高预测的准确性。SVM在大规模交通速度预测中的性能可以进一步提高。
交通流量预测采用多变量非参数回归方法,最近,大量的文献利用多种混合模型和时空特征来提高交通预测性能。

考虑到交通变量连续时间序列的相关性,时间序列预测模型在交通预测中得到了广泛的应用,典型的模型之一是自回归综合移动平均(ARIMA)模型,该模型考虑了基本的交通流特征,例如固有的相关性(通过移动平均)及其对短期未来的影响(通过自回归)。到目前为止,该模型及其扩展,如季节性ARIMA模型、KARIMA模型、ARIMAX模型等都得到了广泛的研究和应用。综上所述,统计方法在交通预测中得到了广泛的应用,并取得了良好的效果。然而,这些模型忽略了交通网络的重要时空特征,不能用于大规模网络的总体交通预测。支持向量机在训练时通常需要较长的时间和消耗大量的计算机内存,因此在大型数据相关应用中可能无能为力。

人工神经网络具有处理多维数据的能力、实现的灵活性、通用性和较强的预测能力等优点,也常被应用于交通预测问题。例如,Huang和Ran使用ANN来预测恶劣天气条件下的交通速度。Park等人提出了一种基于神经网络的实时车速预测算法。郑等人将神经网络与贝叶斯定理相结合,对高速公路短期交通流进行了预测。Moretti等人的[23]提出了一个统计和神经网络bagging集成混合模型来预测城市交通流。

然而,人工神经网络的数据驱动机制并不能很好地解释道路网络的空间相关性。此外,与深度学习方法相比,由于ANN的体系结构较浅,预测精度较低。近年来,更先进、更强大的深度学习模型被应用于交通预测。例如,Polson和Sokolov[24]使用深度学习架构来预测交通流。黄等人首先引入了深度信念交通网络(DBN)的研究。然后,Tan等人[26]比较了DBNs与两种RBM结构的性能,即RBM与二进制可见和隐藏单元(B-B RBM)和RBM与高斯可见单元和二进制隐藏单元(G-B RBM),发现前者在交通流预测方面优于后者。Ma等人将深度受限波尔兹曼机(deep restricted Boltzmann machines, RBM)与递归神经网络(neural network, RNN)相结合,形成了一个继承了RBM和RNN优点的RBM-RNN模型。Lv等人提出了一种新的基于深度学习的交通预测模型,该模型考虑了时空关系,利用堆栈自编码器(SAE)提取交通特征。Duan等人的[29]使用去噪堆叠自编码器(DSAE)的交通数据输入。Ma等人将长短时记忆神经网络(LSTM NN)引入到流量预测中,并证明了LSTM神经网络在这稳定性和准确性方面都优于其他神经网络的交通速度预测,通过使用远程微波传感器数据收集自北京路网(利用遥感微波传感器从北京道路网采集数据。)

与人工神经网络相比,深度学习方法利用了更深入、更复杂的体系结构,能够取得比传统方法更好的学习效果。然而,这些尝试仍然主要集中在预测一个路段或一个小的网络区域的交通。很少有研究把交通网络作为一个整体来考虑,直接大规模地估计交通演进。更重要的是,这些模型大多只考虑了单个位置的流量演化的时间相关性,而没有从网络的角度考虑其空间相关性。

为了弥补这一不足,本文提出了一种基于图像的方法,将网络流量表示为图像,利用卷积神经网络(CNN)的深度学习结构提取图像所包含的时空流量特征。CNN是一种高效的图像处理算法,在计算机视觉和图像识别领域得到了广泛的应用,取得了显著的效果。与目前流行的人工神经网络相比,CNN在特征提取方面具有以下特点:首先,CNN的卷积层是局部连接的,而不是完全连接的,这意味着输出神经元只连接到其附近的局部输入神经元。

其次,CNN引入了一种新的层构建机制,称为池化层,它仅仅从接收区域选择显著的特征,并极大地减少了模型参数的数量。第三,常规的全连通层只在最后阶段使用,这时输入层的尺寸是可控的。局部连接的卷积层使CNN能够有效地处理空间相关的问题[31,33,34]。
池层使CNNs可推广到大规模问题[35]。本文的贡献总结如下:

利用提出的基于图像的网络流量预测方法和CNNs的深度学习结构,考虑了网络流量的时间演化和空间依赖性,并将其应用于流量预测问题。

利用CNN自动提取网络流量的时空特征,具有较高的预测精度。

该方法可以推广到大规模的交通速度预测问题,同时由于卷积和池化层的实现,保持了可训练性。

二、方法

在预测网络范围内的交通拥堵时,应该考虑具有时空维度的交通信息。设x轴和y轴分别表示一个矩阵的时间和空间。矩阵中的元素是与时间和空间相关的流量变量的值。生成的矩阵可以看作是图像的通道,即图像中的每个像素在矩阵中共享对应的值。因此,图像的宽度为M像素,高度为N像素,其中M和N为矩阵的二维。设计了两步方法,分别将网络流量转换为图像和用CNN进行网络流量预测。

2.1 将交通网络转换为图像

由专用GPS设备记录的车辆轨迹提供了特定时间内车辆速度和位置的具体信息。从轨迹上看,每一个路段上的时空交通信息可以被预测和整合成一个时空矩阵作为一个时空图像。

在时间维度上,时间是一天的起始和末尾;根据GPS的采样频率,时间间隔一般是10s到5Min中。一般来说,时间间隔较小(比如10s)对于交通预测是没有意义的。因此,如果采样频率很高,可以聚合这些数据,得到更宽的采样间隔,比如几分钟。

在空间维度上,我们所选择的轨迹被认为是一个点序列,它有一些内在的状态(如车辆位置,平均速度),将这些点按顺序排列,对应Y轴,但是可能会导致一个更高的维度和一个没有信息的话题,点的序列是冗余的,序列中大量的区域是稳定的,缺乏多样性。因此,为了使y轴既紧凑又能提供信息,这些点被分成若干部分,每个部分代表一个类似的流量状态。然后,参照预先设定的道路起点,在空间上对这些路段进行排序,然后将它们安装到y轴上。

最后,一个时空矩阵就可以被构造出来了,从数学上看,我们得到了如下的矩阵:

上式中:N是时间间隔的长度,Q是路段部分的长度,M矩阵的第i列表示在时间t时交通网络的速度;:在时间j时部分i的交通速度。矩阵M形成了一个图像的通道。图1阐述了平均交通速度(将一个路段分成4部分,这四块的平均速度)、时空矩阵和最后的图片。

2.2 CNN网络流量预测

2.2.1 CNN的特点

CNN以其独特的关键特征提取办法,在图像理解方面表现出了很强的学习能力。和其他深度学习架构比较,CNN的独特性体现在两个显著特征上。即:(a)局部连接层,即各层的输出神经元只连接到其附近的局部输入神经元而不是全连接层的所有神经元。这些层可以有效的从图像中提取特征,因为每一层都试图检索出一个不同的特征。(b)一个池化层,大大减少了训练CNN所需的参数数量,同时保证保留最重要的特征。

基于这两个突出的特点,CNN在以下几个方面进行了修改,以适应交通的环境:首先,模型输入是不同的,即输入的图像只有一个通道,该通道由交通网络中所有道路的交通速度决定,图像的像素值范围从0到网络的最大交通速度或速度限制,而在图像分类问题中,输入图像一般有三个通道,即、RGB和像素值的范围从0到255,虽然存在差异,但为了防止模型权重增加模型训练难度,对模型输入进行了规范化。其次,模型输出是不同的,在交通运输环境中,模型输出是交通网络中所有路段的预测交通速度,而在图像分类问题中,模型输出是图像类标签。第三,抽象特征有不同的含义。在交通运输的背景下,卷积层和汇聚层提取的抽象特征是路段之间关于交通速度的关系,在图像分类问题中,根据训练目标,抽象特征可以是图像的浅边缘和某些对象的深层的形状。所有这些抽象特征对预测问题都有重要意义。第四,训练目标因模型输出的不同而不同。在交通运输方面,由于输出是连续的交通速度,因此应该采用连续的成本函数。在图像分类问题中,通常使用交叉熵代价函数。

2.2.2  CNN的特点

图2展示了CNN在交通环境下的结构,主要有四个部分,分别是模型输入、交通特征提取、预测和模型输出。下面将对每个部分进行解释。

首先,模型输入是由具有时空特征的交通网络生成的图像。设输入时间间隔为F,输出时间间隔为P。模型输入可以写成:

上式中:i是样本索引,N是时间间隔长度,是一个列向量,象征一个时间单元里道路网上所有道路的交通速度。

第二,流量特征的提取是卷积和池化层的结合,是CNN模型的核心部分,池化层用pool表示,L是CNN的深度。第L层的输入、输出和参数分别用来表示。第l层卷积滤波器的数量叫做(如3*3卷积核的参数个数是9),第一个卷积和池化层的输出可以写成如下表达式:

第L层的卷积和激活层的输出表达式是:

流量特征的提取具有以下特点:(a)在二维空间中处理卷积和池化,该部分可以根据模型训练中的预测任务来学习路段的时空关系;(b)与图2中只有四个卷积或池过滤器的层不同,实际上,应用程序中的层数设置为数百个,这意味着CNN可以学到数百个特征;(c) CNN通过这些层将模型输入转换为深度特征。

在模型预测中,通过交通特征提取学习并输出的特征被连接到一个密集的向量中,该向量包含了输入交通网络的最终和最高层的特征。稠密向量可表示为:

最后通过全连通层将矢量转换为模型输出。因此,模型输出可以写成:

2.2.3 CNN的卷积层和池化层

我们从上式注意到,每一层都有一个激活函数。激活函数的好处如下:(a)可以将数据范围转化到可管理的数据范围之内,这有益于模型训练;(b)激活函数的结合可以模拟出非常复杂的非线性函数使得CNN具有更强的能力处理交通网络的复杂度。在这篇文章里,用的是relu激活函数:

卷积层和传统的前向神经网络不同,神经网络的每一个神经元都和下一个输出层相连并且是全连接的。CNN使用卷积核作为输入层,使用局部连接,只有部分输入和输出相连。一个卷积核可以从输入层中提取一个交通特征,然后,成百上千的卷积核就可以提取成百上千的特征。这些被提取的交通特征进一步结合形成一个更高级的更抽象的交通特征。这个过程证明了卷积层的合成性,意味着每一个核是从低等级到高等级的特征的方法核路径。当一个卷积核被用到输入层时,输出如下:

上式中,m和n是核的维度,是输入矩阵在位置e,f的数据值,w是卷积核在位置e,f的参数,y是输出。

池化层的设计目的是向下采样和聚合数据,因为它们只从特定区域提取突出的数字,池化层保证CNN是局部不变的,这意味着CNN总是可以从输入中提取相同的特征,而不管特征的移动、旋转或缩放[36]。基于以上事实,池化层不仅可以减小CNN的网络规模,还可以识别输入层最突出的特征。以最大操作为例,池化层可以表示为:

上式中,p和q分别是池化窗口的大小,d是输入矩阵在位置e,f的值,y是输出。

2.2.4 CNN的优化

CNN的预测是不同路段的交通速度,平均平方误差(MSEs)被用来测量预测和地面真实交通速度之间的距离,因此,将MSEs最小化作为CNN的训练目标。MSE可以写成:

模型参数可以设置为,最优解可以根据标准BP算法得到:

三、实验研究

3.1 数据描述

北京是中国的首都,也是世界上最大的城市之一。目前,北京有四环,即二环至五环,大约有1万辆出租车服务于2100多万人口。这些出租车配备了GPS设备,大约每分钟上传一次数据。上传的数据包含车辆位置、记录时间、行驶方向、车辆行驶速度等信息。数据收集时间为2015年5月1日至2015年6月6日(37天)。这些数据是高质量的探查数据,因为丢失的数据不到2.9%,并且可以使用时空相邻记录进行适当的补救。在这篇论文里,由于数据通常在较短的时间间隔内波动,因此将数据聚合为两分钟间隔,这样的聚合将使数据更加稳定和具有代表性。

本文提出了两种交通运输网络:选取北京市第二环路(1号网)和东北交通网络(2号网)为例,证明本文提出的方法。两种网络在网络大小和拓扑复杂度上存在差异,如图3。网络1包括236个用于聚集GPS数据的路段,所有这些路段都是单行道。网络2由352个路段组成,包括双向和十字路口。所选择的网络代表不同的道路拓扑和结构,因此可以用来更好地评估所提出的CNN交通预测算法的有效性。

我们执行了四个预测任务去测试CNN算法预测全网络流量速度的能力。这些任务在预测时间跨度上是不同的,短期和长期预测和输入信息。利用丰富的信息进行预测,利用有限的信息进行预测。这四个任务如下:

任务一:使用前30分钟的去预测后10分钟的

任务二:使用前40分钟的去预测后10分钟的

任务三:使用前30分钟的去预测后20分钟的

任务四:使用前40分钟的去预测后20分钟的

在这四个任务里,CNN在预测大范围交通网络的速度的能力和有效性可以通过计算和比较CNN的MSE得出来。

3.2 时空图像生成

对于时空矩阵而言,目标是将交通网络中交通的空间关系转化为线性表示。网络1中的矩阵是简单的,因为被连接的路网部分可以很容易的让它变直。对于网络2来说,在保持路段完整空间关系的同时,将路段拉直成直线是不可能的,一种折衷的办法是将网络分割成直线,并在这些直线上按顺序铺设路段。因此,在网络2中,只能捕获直线上的线性空间关系,然而,由于CNN可以从局部连接中学习特征,并将这些特征组合成高级表示,所以网络2中复杂的、网络范围内的流量速度关系仍然可以被学习。对于网络2,CNN从分段路段中学习交通道路的关系,并将这些关系组合成网络范围的关系。

将时空矩阵作为图像的通道,在图像中表示网络每天的流量速度,生成37幅图像,每幅图像对应一天,各自生成网络1和网络2,2015年5月26日网络1和网络2的样本图像如图所示图4。图4的y标签,即、s1、s2、s3、s4和其他的路段如图3所示。
图像显示了丰富的交通信息,如最拥挤的交通区域,红色区域,以及典型的拥堵传播模式。振荡拥挤的交通(OCT)和固定的局部集群(PLC)。在Schonhof和Helbing[37]的研究中可以找到对这些交通模式的更具体的解释。如此丰富的信息不是一个简单的人工智能就能很好地掌握的。因此,需要一种更有效的算法。

3.3 调整CNN参数

在构建卷积网络的时候,两个关键的参数应该被考虑:(a)卷积层和池化层的超参数,卷积核大小,池化层大小,池化的方法;(b)CNN的深度。

首先,超参数的选择依赖于专家的经验。一般规则不能直接应用。可以参考两个著名的例子。一个是LeNet,它标志着CNN[38]的发展开始,另一个是AlexNet,它赢得了2010年的图像分类比赛ImageNet[31]。根据LeNet和AlexNet的参数设置,我们选择size(3,3)的convolutional filters和size(2,2)的max poolings作为示例网络。

第二,CNN的深度不能太大也不能太小。因而,CNN有能力学习更复杂的关系使得模型收敛。从小到大设置不同的值去测试模型,直到增益减少,直到收敛性 难以确定一个适当的值作为模型的深度。CNN的不同深度的结构如表1,每一个卷积层后面都有一个池化层,这些数字代表了该层中卷积层的数量。显然,深度-1网络是一个完全连接的层,它将输入转换为预测,而其他三个网络首先使用卷积和池化层从输入图像中提取时空交通特征,然后基于这些特征进行预测。

在实验中,40分钟的历史交通速度被用来预测接下来的10分钟交通速度。在模型训练中,前30天使用21,600个样本,在模型验证中,后7天使用5040个样本。结果如图5所示,可以看出在CNN模型中增加深度可以显著降低测试数据的MSEs。因此,深度-4 CNN模型在训练和测试数据上的MSEs最低,分别为21.3和35.5。因此,本文采用深度-4模型进行实验。

深度-4 CNN的细节如表2所示。模型输入有三维(1,236,20),第一个数字暗示着输入图像有一个通道,第二个数字表示着网络1中路段的数量,第三个数字是时间跨度,有20个时间单元。卷积层将通道数分别转换成256,128和64.同时,池化层将输入窗口从(118,10),(59,5)再到(30,3)。第六层的输出维度是(64,30,3)然后将一个向量扁平化得到5760个数字。最后通过全连通层将矢量转换为尺寸为1180的模型输出,应用早期停止准则防止模型过拟合。模型过拟合是指模型训练虽然提高了CNN对测试数据的预测精度,但并没有提高CNN对验证数据的预测精度。当模型开始过度拟合时,应该停止训练。早期停止是最常见和有效的程序,以避免过拟合问题。该方法在模型训练阶段有效,在验证数据集上提前停止发生记录模型的损失。在每个epoch进行模型训练后,它检查损失是否增加或保持不变。最后,如果在特定的几个epoch内观察到真实且没有改进的迹象,则模型训练将终止。

3.4 结果和比较

为了测试该算法的性能,我们选择了四种常用的统计算法和三种基于深度学习的算法进行比较。OLS是基本的回归算法,作为基准。KNN使用最近的点进行回归。随机森林(RF)根据决策树的分支进行预测。ANN代表了传统的神经网络,试图通过隐藏层来学习特征。SAE是一个由多层自编码器组成的神经网络,其中模型输入被编码成稠密或稀疏表示,然后被输入到下一层[28]。RNN通过对时间序列进行展开,通过共享参数和每一步[27]的隐藏状态捕获模式,从而学习特征。LSTM神经网络是RNN的一种扩展,它能处理长时记忆,避免了传统神经网络存在的[30]梯度消失的问题。

这些算法在预测网络中多个路段的交通速度方面有所不同。OLS、KNN和RF一次只能输出每个链路上的流量预测。因此,为了预测整个网络的交通速度,必须开发大量的模型。相比之下,ANN, SAE,
在一个具有多步输出的网络模型中,RNN和LSTM神经网络可以产生全网络的流量速度。
在考虑空间关系的能力上,所有的算法都将不同路段的交通速度作为独立的序列处理,不能学习路段之间的空间关系。此外,KNN被配置为使用10个最近的点。将RF设置为生成10个决策树。神经网络、RNN和LSTM神经网络被优化为包含三个隐藏层,每层包含1000个隐藏单元。
SAE被调整为形成三个自动编码器层与3000,2500和2000小时

四、结论

Learning Traffic as Images: A Deep Convolutional Neural Network for Large-Scale Transportation Netwo相关推荐

  1. 【论文阅读】Learning Traffic as Images: A Deep Convolutional ... [将交通作为图像学习: 用于大规模交通网络速度预测的深度卷积神经网络](2)

    [论文阅读]Learning Traffic as Images: A Deep Convolutional Neural Network for Large-Scale Transportation ...

  2. 【论文阅读】Learning Traffic as Images: A Deep Convolutional ... [将交通作为图像学习: 用于大规模交通网络速度预测的深度卷积神经网络](1)

    [论文阅读]Learning Traffic as Images: A Deep Convolutional Neural Network for Large-Scale Transportation ...

  3. PRN(20200816):A Hierarchical Deep Convolutional Neural Network for Incremental Learning [Tree-CNN]

    Roy D , Panda P , Roy K . Tree-CNN: A Hierarchical Deep Convolutional Neural Network for Incremental ...

  4. CVPR:Weakly-supervised Deep Convolutional Neural Network Learning for Facial Action Intensity Estima

    Weakly-supervised Deep Convolutional Neural Network Learning for Facial Action Intensity Estimation ...

  5. 【农业害虫识别论文一】Crop pest classification based on deep convolutional neural network and transfer learning

    本论文发布于2019年,主要基于三个数据集进行农业害虫的识别.文章不是简单的翻译,而是类似自己的读书笔记,基本记录了下,做后续回顾所用.望各位看官不要吐槽 哈哈! 论文题目 Crop pest cla ...

  6. [Paper]Application of deep convolutional neural network for automated detection of myocardial...

    *侵删 *限于博主英语水平,若翻译不当之处恳请批评指正~3Q Application of deep convolutional neural network for automated detect ...

  7. A Deep Convolutional Neural Network for segmenting and classifying epithelial and stromal regions

      文章全名:<A Deep Convolutional Neural Network for segmenting and classifying epithelial and stromal ...

  8. 3D Human Pose Estimation from Monocular Images with Deep Convolutional Neural Network(2014)

    Deep network for 3D pose estimation(2014) 本文提出两种策略去训练deep convolutional neural network以进行3D pose est ...

  9. 二值网络--Optimize Deep Convolutional Neural Network with Ternarized Weights and High Accuracy

    Optimize Deep Convolutional Neural Network with Ternarized Weights and High Accuracy IEEE Winter Con ...

最新文章

  1. 剑指offer:输入一棵二叉树,判断该二叉树是否是平衡二叉树。
  2. php serialize mysql_php 序列化(serialize)格式详解
  3. 台阶问题(洛谷P1192题题解,Java语言描述)
  4. linux网络配置出现E325,Linux CentOS E325错误,如何解决?VI如何使用?
  5. 【JAVA笔记】线程(1):多线程的介绍和实现
  6. 使用cocoapods install友盟时报错Error installing UMengAnalytics
  7. Linux 杀死进程方法大全(kill,killall)
  8. sort( )函数--R语言
  9. 信号完整性分析学习--15--传输线
  10. LPDDR4X与LPDDR4 区别 <转>
  11. css中url用法,css cursor url用法格式详解
  12. Linux系统里压缩PDF文件大小
  13. 浩辰cad2019破解补丁|浩辰cad2019无限试用破解补丁下载(附浩辰cad2019激活工具/无需激活码)
  14. 【第一个Vue上手小项目Day4】史上最简单的Element-table表格+Pagination 分页(前后端结合)
  15. Jquery实现大于等于且小于等于-遁地龙卷风
  16. apk多开制作方法 试用ApkEditor 1.8 旗舰版轻松制作apk多开双开
  17. stm32毕设 stm32人体健康状态检测系统(项目开源)
  18. mysql where in形式存储过程如何传递带有单引号的入参
  19. 如何有效实现软件的需求管理 - 8 (全文完)
  20. 杰理之独立音量控制【篇】

热门文章

  1. cmatrix秀一波骚操作
  2. 佛祖保佑,永无bug——springboot项目启动图案的修改方法
  3. 云鲸扫拖一体机器人说明书_让做家务变的更简单:云鲸智能扫拖一体机器人测评...
  4. 看大族电机如何用机器人带领我们进入工业4.0时代|镁客网M-TECH AI助力中国智造产业论坛...
  5. 将Vue项目部署在Nginx,解决前端路由、反向代理和静态资源问题
  6. Android开发系列全套课程(视频教程50G)
  7. linux 编译缓存,Linux磁盘缓存(disk cache)详解
  8. 打印1-200之间5的倍数
  9. Windows下 YOLOv5配置、部署、及遇到的问题
  10. 贴片式T卡可以解决传统T卡的那些问题?