删除或更新信息,请邮件至freekaoyan#163.com(#换成@)

基于改进YOLOv5算法的复杂场景交通目标检测

本站小编 Free考研考试/2024-01-15

顾德英, 罗聿伦, 李文超
东北大学秦皇岛分校 控制工程学院,河北 秦皇岛 066004
收稿日期:2021-08-27
基金项目:河北省自然科学基金资助项目(F2019501044)。
作者简介:顾德英(1964 -),男,辽宁新民人,东北大学秦皇岛分校教授。

摘要:实时的交通场景目标检测是实现电子监控、自动驾驶等功能的先决条件.针对现有的目标检测算法检测效率不高,以及大多数轻量化目标检测算法模型精度较低,容易误检、漏检目标的问题,本文通过改进YOLOv5目标检测算法来进行模型训练,再使用伪标签策略对训练过程进行优化,然后在KITTI交通目标数据集上将标签合并为3类,对训练出的模型进行测试.实验结果表明,改进的YOLOv5最终模型在该所有类别上的mAP达到了92.5%,对比原YOLOv5训练的模型提高了3%.最后将训练的模型部署到Jetson Nano嵌入式平台上进行推理测试,并通过TensorRT加速推理,测得平均每帧图像的推理时间为77 ms,可以实现实时检测的目标.
关键词:深度学习目标检测YOLOv5算法伪标签训练嵌入式平台
Traffic Target Detection in Complex Scenes Based on Improved YOLOv5 Algorithm
GU De-ying, LUO Yu-lun, LI Wen-chao
School of Control Engineering, Northeastern University at Qinhuangdao, Qinhuangdao 066004, China
Corresponding author: LUO Yu-lun, E-mail: 578966624@qq.com.

Abstract: Real-time target detection in traffic scenarios is the prerequisite of electronic monitoring, automatic driving, and other functions. In view of the low detection efficiency of existing target detection algorithms and the low accuracy of most light target detection algorithms, which are easy to obtain wrong or insufficient target detection, this paper adopts the improved YOLOv5 target detection algorithm for model training, and the pseudo-label strategy for training process optimization. Then, the KITTI traffic target dataset tags are merged into three categories for model training and testing. Through the experimental comparison, the improved YOLOv5 model in this paper achieves 92.5% mAP in all categories, which is 3% higher than the original YOLOv5 training model. Finally, the three categories of the trained models are deployed on the Jetson Nano embedded platform for inference testing, and TensorRT is used to accelerate inference. The average inference time per frame of image is 77 ms, which meets the goal of real-time detection.
Key words: deep learningtarget detectionYOLOv5 algorithmpseudo-label trainingembedded platform
近年来,自动驾驶、智能交通等领域的研究飞速发展,成果丰硕.基于深度学习和计算机视觉的交通场景目标检测技术已经拥有了非常丰富的应用领域,正在逐渐取代传统算法.但是,深度学习算法的应用往往需要消耗大量的计算资源,不容易实现实时检测.如果能从算法入手,通过算法的改良来提升模型检测精度和推理速度,进而部署到车载摄像头或电子监控等边缘计算设备中,可以有效降低成本,有利于深度学习目标检测算法在交通领域的大规模部署落地和推广应用.
2006年Hinton等****最早提出深度学习的概念[1],基于深度学习的计算机视觉目标检测算法开始发展.2012年Krizhevsky等提出的AlexNet模型在ImageNet竞赛中实现重大突破[2],深度学习算法又取得了长足的进步.深度学习目标检测算法经历了两个发展阶段,首先是以R-CNN[3]、Faster R-CNN[4]等为代表的两阶段检测算法,需要遍历图片所有区域得到候选框再进行目标分类.Tian等[5]使用改进的Faster R-CNN在相关数据集上对车道线进行检测与标记,获得了比R-CNN更快的结果.然而,此类算法检测精度较低,很难实现实时检测,实际应用效果不佳.其次是以YOLO[6]、SSD[7]等为代表的一阶段检测算法,基于边框回归的端到端目标检测可在单个神经网络内实现目标的分类与定位,它的模型检测精度、速度都比前者提升了一个数量级,是目前主流的目标检测算法.周攀等[8]采用ResNext网络代替原YOLOv3结构中基于ResNet的残差结构,并采用K-means算法聚类分析模型的锚框参数,在KITTI数据集上检测精度达到87.60%.
为了解决传统深度学习模型推理速度慢、部署效率低的问题,人们也曾提出过YOLOv3-tiny[9],YOLOv4-tiny[10-11]等轻量化网络.但是,多个数据集上的测试结果证明,相比于原YOLOv3和YOLOv4网络,这些经过轻量化处理的网络会造成模型精度损失,准确率不高[11].因此,本文采用改进前后的YOLOv5网络进行对比训练,再将得到的模型用于交通目标检测的测试和仿真部署.
1 YOLOv5的介绍与改进1.1 原始YOLOv5的结构作为一阶段检测算法的典型代表,YOLO系列目前已经由Ultralytics公司发展到第五代YOLOv5[12].它可以通过调整网络的深度和宽度自由设定模型结构,兼顾了检测精度与速度,适合作为计算性能有限的设备的部署模型.原始YOLOv5的网络结构拥有输入层、骨干层、颈部层和预测层4个部分,如图 1所示.
图 1(Fig. 1)
图 1 原始YOLOv5的简要结构Fig.1 Simplified structure of original YOLOv5

本文所采用的输入图像像素尺寸为640×640和通道数为3,YOLOv5算法首先在输入层对输入图像进行预处理,包括基于遗传算法迭代的K-means聚类自动计算最佳anchor(锚框)尺寸,以及对训练集中4张随机图像进行四合一自适应拼接缩放的Mosaic数据增强.前者有利于预设的anchor更加贴近真实框,提升模型的拟合能力,后者能够提升模型训练速度和学习小目标特征的能力,学习到比单张图片更为丰富的特征信息.Mosaic数据增强在本文数据集上的效果如图 2所示.
图 2(Fig. 2)
图 2 Mosaic数据增强的效果Fig.2 Effects of Mosaic data enhancement

原始版本的YOLOv5骨干层包含Focus模块、SPP(spatial pyramid pooling,空间金字塔池化)模块和BottleneckCSP网络.Focus模块对预处理后的640×640×3图像采用切片和卷积操作,最终变成320×320×32的特征图.BottleneckCSP将输入特征图一分为二,分别进行卷积运算再通过局部跨层合并,即类似ResNet[13]的跳跃连接,目的是加快网络的计算,丰富网络提取到的特征.随后SPP模块的最大池化和张量拼接,则提升了模型的感受野.另外,骨干层3×3的卷积模块步长为2,与CSP(cross stage partial,跨阶段局部融合)模块交替排布对图像进行下采样,最后网络输出80×80,40×40,20×20三种像素尺寸的特征图进入颈部层.
颈部层的主要组成部分是由FPN(feature pyramid networks,特征金字塔网络)改进而来的PANet(path aggregation network, 路径聚合网络)[14].PANet增加了卷积下采样部分,得到三种不同尺寸的特征图输入预测层.预测层特征图深度为3×(5+K),K是检测目标的类别个数.
在损失函数方面,YOLOv5预测层的损失函数分为cls,obj,box三部分,分别对应物体分类、置信度和检测框的损失,前两者采用BCE with Logit Loss,而算法本身为box提供了GIOU_Loss损失函数[15],相较于普通的IOU_Loss更能准确地描绘检测框的偏差程度,如式(1)和式(2)所示.式中AB分别代表真实框和预测框,C为包含AB的最小外接矩形.分别计算出三部分损失函数后求和即得到最终的总损失函数.
(1)
(2)
1.2 YOLOv5的改进自YOLOv5的原始版本问世后,算法本身也在随着时间的推移不断发展,本文基于其v5.0版本作出了改进,主要集中在网络结构和损失函数两方面.首先是将原始的网络结构替换为更复杂的P6网络结构[16],如图 3所示.
图 3(Fig. 3)
图 3 改进后的YOLOv5网络结构Fig.3 Improved YOLOv5 network structure

具体来看,网络中骨干层的BottleneckCSP模块已经被C3模块所取代,SPP模块中的5×5,9×9,13×13卷积核调整为3×3,5×5和7×7,卷积模块的激活函数由LeakyReLU(式(3))变成SiLU,后者借鉴了ReLU系列函数的思想,但更为平滑,如式(4)和式(5)所示.
(3)
(4)
(5)
SPP模块前增加了一个卷积下采样模块,获得尺寸更小的10×10特征图,因此对应的颈部层中也需要增加一次上采样.最后,PANet自下而上的下采样部分增加1个10×10的特征图送入预测层,能够输出4种不同尺寸的特征图.特征图的种类越多,将图像划分的网格与预测的锚框数量也就越多,容易检测出尺寸较小或互相重叠的目标,在推理速度稍微降低的同时提升检测能力.另外,本文在计算损失函数的box部分中引入理论效果更好的CIOU_Loss来替换原有的GIOU_Loss,提升模型检测效果和鲁棒性,CIOU_Loss如式(6)~(8)所示.
(6)
(7)
(8)
式中:ρ(Actr, Bctr)是预测框和真实框的中心点欧氏距离;c为包含AB的最小外接矩形的对角线长度;wAhA代表真实框A的长和高;wBhB代表预测框B的长和高.原有的GIOU_Loss在目标框完全包含相同大小的预测框时,无论预测框的位置如何变化,函数值不变.鉴于这一缺陷,CIOU_Loss增加影响因子v,考虑到2个框的相对位置、中心点距离、宽高比三种因素,能更为精确地反映模型训练时的损失情况.
2 实验的设置2.1 数据集的准备本文采用交通目标数据集KITTI作为算法测试的数据来源,该数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,通过车载摄像头和传感器,采集城市道路、高速公路、校园等多个复杂交通场景的真实交通图像,适合目标检测、光流、3D跟踪等计算机视觉任务的使用[17].数据集的标签细分为Car,Van,Truck,Pedestrian,Person_sitting,Cyclist,Tram,Misc以及Dontcare等若干类.本文选择的是其中的2D目标检测数据集,包含7 481张有标注的图像和7 518张无标注图像.由于交通环境下移动目标多为车辆和行人,为了降低轻量化模型的检测难度,不再细分车辆的种类和行人的姿态,将原数据集标签重新整理,“Van”“Truck”“Tram”标签合并到“Car”类,“Person_sitting”标签合并到“Pedestrian”类,忽略“Misc”和“Dontcare”两类.最终得到需要检测的“Pedestrian”“Cyclist”“Car”三类标签.然后重新划分KITTI数据集有标注的图像,得到训练集5 440张,验证集1 280张,测试集761张.
2.2 训练策略的改进KITTI数据集除了7 481张有标注的图像之外,还有7 518张无标注的图像,为了进一步提升检测的准确性,可以将这部分图像进行充分利用,采用伪标签的形式加入划分好的训练集中.伪标签是机器学习中一种常见的半监督学习方法,其核心思想是使用大量无标注的数据使模型能够在监督学习之外学习到一定的额外信息,当预测的置信度超过一定的阈值(本文为50%)时,可以认为这一伪标签的标注结果正确,再与有标注的数据相结合,以提高模型在有标注的测试集上的表现.将原标签数据和预测正确的伪标签数据结合起来作为新的训练数据集再进行训练得到最终的检测模型.
2.3 训练方法与评价指标本次实验采用AP(average precision,每一类目标的精度均值)和mAP(mean average precision,所有类别目标的平均精度均值)作为模型评价指标.每个模型的改进策略如表 1所示,实验分别采用原始YOLOv5算法预训练权重YOLOv5s,以及改进后的预训练权重YOLOv5s6在KITTI数据集上进行训练,得到原始模型A和改进后的模型B.然后改变训练策略,使用伪标签策略以模型B为基础再次进行训练,得到最终训练模型C.最后划分好的测试集对3个模型进行对比测试,得到它们的评价指标和推理速度.为了验证改进YOLOv5算法损失函数的有效性,额外增加一组训练模型A1,该模型与原始模型相同,仅将损失函数的box部分替换为CIOU_Loss.
表 1(Table 1)
表 1 每个模型的改进策略Table 1 Improvement strategies for each model
模型 改进策略
改进损失函数 改进网络结构 采用伪标签训练策略
A
A1
B
C


表 1 每个模型的改进策略 Table 1 Improvement strategies for each model

每次模型训练均采用SGD优化器,其余参数如下:图像batchsize(每批次训练量)为32张;迭代次数为400;动量因子为0.937;权重衰减系数为0.001.采用余弦退火策略动态调整学习率,初始学习率为0.1,IOU阈值设为0.5.
3 实验结果分析本次实验的A,B,C三个模型训练过程的损失函数和mAP变化曲线如图 4所示.
图 4(Fig. 4)
图 4 模型训练过程中mAP和损失函数的变化Fig.4 Change of mAP & loss functions during model training (a)—模型A;(b)—模型B;(c)—模型C.

训练过程显示,迭代次数为400时,3个模型的训练集和验证集损失函数均达到最低,mAP达到最高且在一段连续过程中都不再有太大变化,可以视为完成了收敛.对训练后的模型测试每一类的检测精度均值AP和所有类的平均精度均值mAP,结果如表 2所示.
表 2(Table 2)
表 2 模型测试结果对比Table 2 Comparison of model test results
模型 迭代次数 mAP/% AP/%
Pedestrian Cyclist Car
A 400 89.5 81.4 89.8 97.3
A1 400 90.1 82.9 90.5 97.3
B 400 92.0 85.6 92.8 97.4
C 400+400 92.5 86.8 93.3 97.3


表 2 模型测试结果对比 Table 2 Comparison of model test results

表 2的结果说明,在本文划分的KITTI交通目标测试集上,改进后YOLOv5模型B对比原始YOLOv5模型A的mAP提升了2.5%,在模型C采用伪标签训练策略后又提升了0.5%,两次共计提升3%.对行人和骑车人这两类较小的目标,检测精度的总提升分别达到了5.4%和3.5%,本文训练的YOLOv5检测模型在交通目标的检测上做到了平均精度和小目标检测精度的提升,证明算法和训练策略的改进是成功的.而YOLOv5算法本身对车辆等中大型目标检测效果较好,原始模型已经取得不错的检测效果,3个训练模型对车辆的检测精度大体相当的结果是可以接受的.改进损失函数的模型A1的mAP和行人、骑车人的检测精度等指标也比原始模型有所提升,说明算法网络结构和损失函数的改进都能使检测效果得到增益.
本文的目标检测算法与其他经典的目标检测算法在KITTI数据集上的对比结果如表 3所示,实验结果表明,相比Faster R-CNN,SSD和YOLOv3系列算法,本文采用的改进YOLOv5算法检测精度达到了一个更高的水平.
表 3(Table 3)
表 3 改进YOLOv5与其他算法的测试结果对比Table 3 Comparison of test results between improved YOLOv5 and other algorithms
算法名称 mAP/%
SSD512 63.0
Faster R-CNN 82.74
YOLOv3-Tiny[9] 84.78
改进YOLOv3[8] 87.60
本文方法 92.5


表 3 改进YOLOv5与其他算法的测试结果对比 Table 3 Comparison of test results between improved YOLOv5 and other algorithms

图 5a显示模型在光照强度反差较大场景的检测结果,图中亮部的目标较小的车辆和骑车人,暗部的车辆都能被模型识别和定位.图 5b是光照较弱的遮挡场景,模型检测出了互相遮挡的车辆、骑车人和被车辆遮挡的行人等目标,对于此类目标较多的场景没有发生漏检和误检.图 5c存在被图像边缘遮挡的行人和车辆,还有互相遮挡的行人和骑车人,行人和骑车人目标特征有相似之处,模型能将它们准确定位且互相区分体现了其良好的检测性能,仅仅漏检远处1个极小的车辆目标.
图 5(Fig. 5)
图 5 不同条件下的检测结果Fig.5 Test results under different conditions (a)—光照强度反差较大的场景;(b)—光照较弱的遮挡场景;(c)—目标容易混淆的遮挡场景.

从以上结果可以看出,经过改进的YOLOv5模型实际检测图像时不容易受不良条件影响,具有较好的鲁棒性.但是,仅仅训练出精准的模型是不够的,还需要将其移植到实际应用的嵌入式平台并且做到实时检测,方能体现出它的实用性.
4 模型的嵌入式移植与推理加速4.1 Jetson Nano嵌入式平台介绍训练模型的嵌入式设备采用NVIDIA Jetson Nano,相较于其他同类设备,其价格优势明显,并且体积更小,设备的布置更为便利.它配备了四核Cortex-A57 CPU、128核Maxwell GPU和4GB内存,使用集成CUDA、OpenCV、TensorRT等环境的NVIDIA JetPack开发组件,支持TensorFlow和Pytorch等常见的人工智能框架,支持CSI、USB等摄像头图像输入.本次模型部署采用10 W高性能运行模式.设备实物图如图 6所示.
图 6(Fig. 6)
图 6 Jetson Nano实物图Fig.6 Image of Jetson Nano

4.2 TensorRT的原理TensorRT是NVIDIA公司推出的推理加速引擎,内部使用CUDA和C语言进行编程,适合应用于驾驶辅助等推理速度比较重要的目标检测场景.
TensorRT通过GPU对网络层进行水平和垂直整合来达到优化和加速的效果,优化过程没有改变模型参数量和网络底层的计算,只需要对计算图进行重构,就可以让模型高效运行.例如本文图 1图 2的YOLOv5网络包含大量的卷积模块和张量合并,TensorRT可以将前者的卷积、BN正规化和激活三个步骤一次性融合完成计算,而张量合并的Concat层输入可以直接进入网络下一层,不再单独进行合并计算,减少了计算步骤和数据传输的时间.TensorRT的过程首先把Pytorch框架下训练的交通目标检测模型的.pt权重文件转化为.wts中间文件,再使用.wts文件构建用于推理的引擎(.engine)文件,使用推理引擎推理即可获得加速.
4.3 结果分析本文从KITTI的原始数据集中选择了100张未经标注的连续图像进行复杂交通场景模型推理测试,在Jetson Nano平台模拟从摄像头逐帧读取需要检测的视频,结果如表 4所示.
表 4(Table 4)
表 4 TensorRT加速前后推理时间对比Table 4 Comparison of inference time before and after TensorRT acceleration ms
模型 加速前平均推理时间 加速后平均推理时间
A 163 77
B/C 195 77


表 4 TensorRT加速前后推理时间对比 Table 4 Comparison of inference time before and after TensorRT acceleration ms

表 4可以看出,原始YOLOv5网络的模型A平均每张图像推理时间为163 ms,改进网络结构的模型B和C这一推理时间为195 ms,二者的推理速度相当于5~6帧/s,速度较慢.经过TensorRT加速,3个模型每张图像的推理时间在73 ms到83 ms不等,平均每张图像推理时间均为77 ms,约合13帧/s,图像推理速度大幅提高,能够满足检测实时性要求.另外,网络改进后的模型加速效果更明显,推理速度与体积更小的原始网络模型A相当,此前未经加速时推理速度会因为改进模型而下降的问题得到了解决.图 7图 5a为例展示了原模型和改进后的模型经过推理加速后检测的画面效果,TensorRT加速使得目标种类的编号取代了名称和置信度,编号0,1,2分别代表Pedestrian,Cyclist和Car,画面更为简洁.二者推理生成的检测框几乎没有差异,不会造成检测精度损失.由此,本文在嵌入式平台仿真实现了实时的复杂场景交通目标检测,YOLOv5模型出色的检测能力也得到验证.
图 7(Fig. 7)
图 7 TensorRT加速后模型的检测效果Fig.7 Model detection effect after TensorRT acceleration

5 结语为了实现复杂场景下的交通目标实时检测,本文提出一种基于改进YOLOv5的交通目标检测算法,采用更复杂的网络结构和更精确的损失函数,对训练过程采用伪标签的形式进行优化.在KITTI数据集上的训练和测试结果表明,经过本文方法改进的训练模型检测性能指标优于原始YOLOv5训练的模型,用于实际的交通目标检测任务中效果较好.鉴于将模型移植到Jetson Nano嵌入式平台后推理速度较慢,本文使用TensorRT对模型推理进行加速,不仅实现了复杂场景交通目标检测,检测速度也能满足实时性要求.后续工作可以尝试将摄像头与嵌入式平台连接并在真实交通环境下实时采集并处理图像或视频数据,以验证模型的泛化能力,还可以对宽度和深度更高的YOLOv5网络进行轻量化处理,将得到的模型与现有的YOLOv5s系列模型进行对比,发掘检测效果和速度更好的方案.
参考文献
[1] Hinton G E, Salakhutdinov R. Reducing the dimensionality of data with neural networks[J]. Science, 2006, 313(5786): 504-507. DOI:10.1126/science.1127647
[2] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]//Proceedings of the 25th International Conference on Neural Information Processing Systems. New York: ACM, 2012: 1097-1105.
[3] Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014: 580-587.
[4] Ren S, He K, Girshick R, et al. Faster R-CNN: towards real time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 39(6): 1137-1149.
[5] Tian Y, Gelernter J, Wang X, et al. Lane marking detection via deep convolutional neural network[J]. Neurocomputing, 2018, 280: 46-55.
[6] Redmon J, Divvala S, Girshick R, et al. You only look once: unified, real-time object detection[C]//IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2016: 779-788.
[7] Liu W, Anguelov D, Erhan D, et al. SSD: single shot multi-box detector[M]. Berlin: Springer, 2016.
[8] 周攀, 徐向荣, 朱永飞, 等. 基于改进YOLOv3的道路目标检测[J]. 龙岩学院学报, 2021, 39(2): 21-30.
(Zhou Pan, Xu Xiang-rong, Zhu Yong-fei, et al. Road target detection based on improved YOLOv3[J]. Journal of Longyan University, 2021, 39(2): 21-30.)
[9] 刘力冉, 曹杰, 杨磊, 等. 一种改进YOLOv3-Tiny的行车检测算法[J]. 计算机与现代化, 2020(3): 108-114.
(Liu Li-ran, Cao Jie, Yang Lei, et al. An improved YOLOv3-Tiny traffic detection algorithm[J]. Computer and Modernization, 2020(3): 108-114.)
[10] Ma L Z, Chen Y, Zhang J L. Vehicle and pedestrian detection based on improved YOLOv4-Tiny model[J]. Journal of Physics: Conference Series, 2021, 1920(1): 012034. DOI:10.1088/1742-6596/1920/1/012034
[11] 秦丹峰, 尹相辉, 龚学余. 基于改进YOLOv4-Tiny算法的移动端实时司机违章行为检测[J]. 计算机科学与应用, 2021, 11(5): 1291-1300.
(Qin Dan-feng, Yin Xiang-hui, Gong Xue-yu. Real-time drivers' violation detection on mobile terminal based on improved YOLOv4-Tiny[J]. Computer Science and Applications, 2021, 11(5): 1291-1300.)
[12] Jocher G, Nishimura K, Mineeva T, et al. YOLOv5[EB/OL]. (2020-06-26)[2021-06-02]. https://github.com/ultralytics/yolov5.
[13] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[EB/OL]. (2015-12-10)[2021-06-02]. https://arxiv.org/abs/1512.03385.
[14] Trinh H C, Lee D H, Kwon Y K. PANET: a GPU based tool for fast parallel analysis of robustness dynamics and feed-forward/feedback loop structures in large-scale biological networks[J]. PLoS ONE, 2014, 9(7): e103010.
[15] Rezztofighi H, Tsoi N, Gwak J Y, et al. Generalized intersection over union: a metric and a loss for bounding box regression[EB/OL]. (2019-04-15)[2021-06-02]. https://arxiv.org/pdf/1902.09630.
[16] Jocher G, Nishimura K, Mineeva T, et al. v5.0-YOLOv5-P6.1280 models, AWS, supervise. ly and YouTube integrations[EB/OL]. (2021-04-12)[2021-06-02]. http://github.com/ultralytics/yolov5releases/tag/v5.0.
[17] Geiger A, Lenz P, Urtasun R, et al. Are we ready for autonomous driving? The KITTI vision benchmark suite[C]//IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2012: 3354-3361.

相关话题/

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19