win10下yolov5 tensorrt模型部署

news/2024/7/10 1:40:27 标签: YOLO, c++, 人工智能, 深度学习, python, pytorch, 目标检测
  • TensorRT系列之 Win10下yolov8 tensorrt模型加速部署

  • TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署

  • TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署

  • TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署

  • TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署

  • TensorRT系列之 Linux下 yolox tensorrt模型加速部署

  • TensorRT系列之 Linux下 u2net tensorrt模型加速部署

  • 更多(点我进去)…

    文章目录

    • 一、YOLOv5简介
    • 二、Win10 TensorRT环境配置
      • 2.1 安装VS2019
      • 2.2 安装库
        • 2.2.1 安装Nvidia显卡驱动
        • 2.2.2 安装 cuda11.2
        • 2.2.3 安装 cudnn8.2.1
        • 2.2.4 下载 tensorrt8.4.2.4
        • 2.2.5 OpenCV4.5.5安装
      • 2.3 创建属性表
        • 2.3.1 创建OpenCV属性表
        • 2.3.2 创建TensorRT属性表
        • 2.3.3 创建CUDA属性表
        • 2.3.4 新建工程与设置
          • 2.3.4.1 新建vs工程
          • 2.3.4.2 vs2019工程设置
    • 三、从yolov5源码中导出onnx文件
    • 四、利用tensorrt编译onnx模型
    • 五、编译执行yolov5-tensorrt工程
    • 六、结束语

yolov5 tensorrt cuda模型推理加速部署《TensorRT-Alpha》场景:Tokyo

YOLOv5_19">一、YOLOv5简介

  • YOLOv5的创新性:相比于之前的目标检测算法,YOLOv5在多个方面进行了创新和优化。首先,它在网络结构上采用了轻量级的设计,使用了CSPDarknet53作为骨干网络,减少了计算量和参数量,提高了算法的实时性和效率。其次,YOLOv5引入了蒸馏学习策略,使用教师模型指导学生模型进行学习,提高了模型的性能和泛化能力。此外,YOLOv5还采用了多尺度特征融合策略,使得模型能够更好地捕捉到不同尺度的目标特征。另外,YOLOv5还改进了损失函数的设计,采用GIOU和COCO等损失函数,提高了模型的准确性。
  • YOLOv5对工业界的影响:YOLOv5的推出对工业界产生了广泛的影响。首先,它被广泛应用于智能驾驶、安防监控、机器人视觉等场景中,为工业界提供了更准确、高效和可靠的目标检测工具。其次,YOLOv5的推出加速了目标检测技术的发展和应用,促进了计算机视觉领域的进步。此外,YOLOv5的开源也为工业界提供了更多的参考和选择,推动了深度学习算法的发展和完善。
  • YOLOv5的优点:YOLOv5具有多个优点。首先,它具有高效性,能够在短时间内处理大量的图像和视频数据。其次,YOLOv5具有准确性,能够准确地检测到目标物体并对其进行分类和定位。此外,YOLOv5还具有实时性,能够实时地输出检测结果和处理速度,使得它能够适用于各种实际应用场景中。另外,YOLOv5还具有易用性,其简单的接口和易懂的文档使得开发者可以轻松上手并开发出高质量的目标检测程序。

本文提供深度学习CV领域模型加速部署案例,仓库实现的cuda c支持多batch图像预处理、推理、decode、NMS。大部分模型转换流程为:torch->onnx->tensorrt。

有源码!有源码!有源码! 不要慌,哈哈哈。

在这里插入图片描述

二、Win10 TensorRT环境配置

三步解决win环境配置

  • 1、安装vs2019、Nvidia驱动、cuda,cudnn、opencv、tensorrt;
  • 2、创建属性表;
  • 3、工程设置,运行;
  • :一定是先安装vs2019,再安装cuda,顺序不能颠倒,因为cuda会自动给vs2019安装插件。
    问题:windows环境下,为什么使用vs2019属性表,而不用cmake?
    回答:因为属性表可以做到:一次创建,到处使用。

2.1 安装VS2019

需要Microsoft账号,如果您有别的途径下载安装也可以。

  • 进入:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
  • 选择:[2019] -> [下载]
  • 在新页面选择: Visual Studio Community 2019 (version 16.11)
  • 下载完成之后安装过程选择如下图:
    请添加图片描述
  • 重启系统

2.2 安装库

注:Nvidia相关网站需要注册账号。

2.2.1 安装Nvidia显卡驱动

  • 进入: https://www.nvidia.cn/Download/index.aspx?lang=cn#
  • 依据实际情况选择,如下图是我的选择(for RTX3070):
    请添加图片描述
  • 选择:[搜索]->[下载] ->[双击默认安装] -> [重启系统] -> [进入cmd],输入如下指令:
nvidia-smi

看到如下信息表明驱动正常:
请添加图片描述

2.2.2 安装 cuda11.2

  • 进入: https://developer.nvidia.com/cuda-toolkit-archive
  • 选择:CUDA Toolkit 11.2.0 (December 2020)
  • 选择:[Windows] -> [x86_64] -> [10] -> [exe(local)] -> [Download(2.9GB)]
  • 双击安装,重启在cmd窗口输入如下指令:
nvcc -V

CMD窗口打印如下信息表示cuda11.2安装正常

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Nov_30_19:15:10_Pacific_Standard_Time_2020
Cuda compilation tools, release 11.2, V11.2.67
Build cuda_11.2.r11.2/compiler.29373293_0

note:cuda11.2 不需要手动设置环境变量,如下图,环境变量都是自动设置的。
请添加图片描述

2.2.3 安装 cudnn8.2.1

  • 进入网站:https://developer.nvidia.com/rdp/cudnn-archive
  • 选择: Download cuDNN v8.2.1 (June 7th, 2021), for CUDA 11.x
  • 选择: cuDNN Library for Windows (x86)
  • 你将会下载这个压缩包: “cudnn-11.3-windows-x64-v8.2.1.32_2.zip”
  • 解压之后,cudnn的头文件、库文件都要拷贝到cuda安装目录。
  • 如下图,进入cudnn解压所在文件夹中include,拷贝所有头文件,粘贴到CUDA/v11.2/include中
  • lib、bin中的文件也拷贝到对应cuda目录中
  • 重启系统
    请添加图片描述

2.2.4 下载 tensorrt8.4.2.4

  • 进入网站: https://developer.nvidia.cn/nvidia-tensorrt-8x-download
  • 把这个打勾: I Agree To the Terms of the NVIDIA TensorRT License Agreement
  • 选择: TensorRT 8.4 GA Update 1
  • 选择: TensorRT 8.4 GA Update 1 for Windows 10 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6 and 11.7 ZIP Package
  • 你将会下载这个压缩包: “TensorRT-8.4.2.4.Windows10.x86_64.cuda-11.6.cudnn8.4.zip”
  • 解压到F:\ThirdParty,并重命名为:TensorRT-8.4.2.4
  • 并将路径"F:\ThirdParty\TensorRT-8.4.2.4\lib"添加到环境变量,如下图:
  • 重启系统
    请添加图片描述

2.2.5 OpenCV4.5.5安装

  • 进入:https://opencv.org/releases/
  • 选择:[OpenCV – 4.5.5] -> [Windows]
  • 下载完成之后,是一个exe的自解压格式,解压到:D:\ThirdParty
  • 并将路径:“D:\ThirdParty\opencv4.5.5\build\bin” 和 "D:\ThirdParty\opencv4.5.5\build\x64\vc15\bin"添加到环境变量,如下图:
  • 重启系统
    note:我的opencv在D盘,tensorrt在E盘,根据实际情况修改就行了。
    请添加图片描述

2.3 创建属性表

一般地,Visual Studio 2019,一个库对应两个属性表文件,分别对应:vs2019的debug模式和release模式,例如:本文中OpenCV创建了这两种。而TensorRT和CUDA只需要创建一种属性表(适用以上两种模式)。

2.3.1 创建OpenCV属性表

创建opencv库debug属性表:

  • step1:基于VS2019随便新建一个C++项目,如下图,项目设置为Debug、X64模式
    请添加图片描述
  • step2:如下图,选择:[属性窗口] -> [右击Debug|x64] -> [添加新项目属性表]
    请添加图片描述
  • step3:文件命名为:OpenCV4.5.5_DebugX64.props -> [添加]
  • 编辑属性表:[如下图:双击属性表]
    请添加图片描述
  • step4:如下图,选择:[通用属性] -> [VC++目录] -> [包含目录] -> [编辑]
    请添加图片描述
  • step5:如下图,将两个OpenCV两个头文件目录拷贝进去 -> [确认]
    请添加图片描述
  • step6:选择:[通用属性] -> [VC++目录] -> [库目录] -> [编辑] -> 将路径:"D:\ThirdParty\opencv4.5.5\build\x64\vc15\lib"拷贝进去 -> [确认]
  • step7:选择:[通用属性] -> [链接器] -> [输入] -> [附加依赖项] -> 将文件名"opencv_world455d.lib"拷贝进去->[确认]
    小结

    到这里,opencv库debug属性表制作完成,release属性表和上述流程一样,唯一区别在于,如下图,项目切换到Release x64模式,新建OpenCV4.5.5_ReleaseX64属性表,然后在step7中,将文件名修改为:“opencv_world455.lib
    请添加图片描述
    请记住,制作属性表就3个步骤:
  • 拷贝include路径
  • 拷贝lib路径,外加设置dll到系统环境变量
  • 拷贝lib文件名称

2.3.2 创建TensorRT属性表

右击Debug|x64 or 右击Release|x64新建属性表,重命名为:TensorRT8.4.2.4_X64,

# include路径
F:\ThirdParty\TensorRT-8.4.2.4\include
F:\ThirdParty\TensorRT-8.4.2.4\samples\common
# F:\ThirdParty\TensorRT-8.4.2.4\samples\common\windows # 这个路径文件不需要包含
# lib路径
F:\ThirdParty\TensorRT-8.4.2.4\lib
# lib文件名称(for release& debug)
nvinfer.lib
nvinfer_plugin.lib
nvonnxparser.lib
nvparsers.lib

依照上一节3个步骤:

  • step1:选择:[通用属性] -> [VC++目录] -> [包含目录] -> [编辑] -> 把上述3个include路径拷贝进去
  • step2:选择:[通用属性] -> [VC++目录] -> [库目录] -> [编辑] -> 把上述lib路径拷贝进去
  • step3:选择:[通用属性] -> [链接器] -> [输入] -> [附加依赖项] -> [编辑] -> 将上述lib文件名称拷贝进去->[确认]
    最后,修改tensorrt属性表:[通用属性] -> [C/C++] -> [预处理器] -> [预处理器定义] -> 添加指令:_CRT_SECURE_NO_WARNINGS -> [确认]

2.3.3 创建CUDA属性表

CUDA属性表直接白嫖官方,在路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\visual_studio_integration\MSBuildExtensions\CUDA 11.2.props

最后,我们应该有了如下属性表文件:
请添加图片描述
其中,cuda 和tensorrt的属性表同时兼容release x64 和debug x64,你再新建TensorRT-Alpha中yolov8 yolov7 yolov6 等项目后,只需要把上述提前做好的属性表引入到工程就行了,当然项目还需要进行简单设置(设置NVCC,避免tensorrt的坑),在后文提到。属性表做到了一次新建,到处使用。

2.3.4 新建工程与设置

这一节演示如何新建vs工程,如何设置工程,是通用方法。适用于仓库所有模型源码。

2.3.4.1 新建vs工程

如下图,打开vs2019,点击:文件 -> 新建-> 项目。
请添加图片描述
选择:空项目 -> 下一步。
在这里插入图片描述
选择创建。
在这里插入图片描述
如下图,现在将工程设置为:Release X64。
在这里插入图片描述

2.3.4.2 vs2019工程设置

如下图,选择:属性管理器 -> Release | x64 -> 添加现有属性表,把上一节生成的三个RleaseX64属性表添加进来。
在这里插入图片描述
添加进来后样子如下图:
在这里插入图片描述
TensorRT项目包含c++和cuda c代码,通俗讲,c++代码文件格式为:

  • .h头文件
  • .cpp文件
  • 由c++编译器编译
    而cuda代码头文件格式为:
  • .h头文件
  • .cu文件
  • 由NVCC编译器编译
    例如:我们添加如下图5个文件,在工程中。
    在这里插入图片描述
    添加CUDA依赖:右击项目 -> 生成依赖项 -> 生成自定义
    在这里插入图片描述
    将如下图CUDA11.2打钩 -> 确认
    在这里插入图片描述
    右击项目 -> 属性,将会打开如下界面,将字符集设置为未设置,点击确认。
    在这里插入图片描述
    最后,在项目中,同时选中所有.cu文件和对应的.h文件,注意是所有。我这里就是a.h 和 a.cu文件了。然后右击 -> 点属性。
    【注】:在tensorrt-alpha开源项目中,例如yolov8,会添加多个.cu .cpp .h格式文件,其中.cu和对应的.h文件都是这样设置,目的就是让NVCC编译器来编译cuda代码。
    在这里插入图片描述
    得到如下界面,我们把项类型设置为CUDA C/C++,点击确认。
    在这里插入图片描述
    然后编译一下:
    在这里插入图片描述
    编译成功如下图:
    在这里插入图片描述

三、从yolov5源码中导出onnx文件

可以直接从网盘下载onnx文件[weiyun]:weiyun or google driver ,你也可以自己下载仓库,然后按照下面指令手动导出onnx文件,下载yolov5源码:

# 下载yolov5源码
git clone https://github.com/ultralytics/yolov5
cd yolov5
git checkout v7.0

安装 yolov5环境

pip install -r requirements.txt

命令行进入yolov5源码根目录,用以下指令导出onnx模型文件,其中–dynamic参数一定要加上。

# 640
python export.py --weights=yolov5n.pt  --dynamic --include=onnx 
python export.py --weights=yolov5s.pt  --dynamic --include=onnx
python export.py --weights=yolov5m.pt  --dynamic --include=onnx
python export.py --weights=yolov5l.pt  --dynamic --include=onnx
python export.py --weights=yolov5x.pt  --dynamic --include=onnx
# 1280
python export.py --weights=yolov5n6.pt  --dynamic --include=onnx
python export.py --weights=yolov5s6.pt  --dynamic --include=onnx
python export.py --weights=yolov5m6.pt  --dynamic --include=onnx
python export.py --weights=yolov5l6.pt  --dynamic --include=onnx
python export.py --weights=yolov5x6.pt  --dynamic --include=onnx

四、利用tensorrt编译onnx模型

将上一个章节中导出onnx模型放到任意路径。进入到tensorrt根目录下bin文件里,里面有个tensorrt官方提供的模型编译工具,即:trtexec.exe 如下图:
在这里插入图片描述
然后使用,以下指令编译onnx模型,需要注意:参数 --onnx 和 --saveEngine 可以设置为自定义路径,例如:

 --onnx=d:/Data/xxx.onnx  --saveEngine=d:/Data/xxx.trt 
# 640
# 640
./trtexec.exe   --onnx=yolov5n.onnx   --saveEngine=yolov5n.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
./trtexec.exe   --onnx=yolov5s.onnx   --saveEngine=yolov5s.trt   --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
./trtexec.exe   --onnx=yolov5m.onnx   --saveEngine=yolov5m.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
./trtexec.exe   --onnx=yolov5l.onnx   --saveEngine=yolov5l.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
./trtexec.exe   --onnx=yolov5x.onnx   --saveEngine=yolov5x.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
# 1280
./trtexec.exe   --onnx=yolov5n6.onnx   --saveEngine=yolov5n6.trt  --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280
./trtexec.exe   --onnx=yolov5s6.onnx   --saveEngine=yolov5s6.trt  --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280

五、编译执行yolov5-tensorrt工程

下载源码并编译

git clone https://github.com/FeiYull/tensorrt-alpha

仿造 2.3.4 新建工程与设置 中新建、设置vs2019工程;其中,yolov5需要将如下图多个文件添加到工程中:

  • 红色框内文件来自TensorRT-Alpha/utils/
  • 蓝色框内文件来自TensorRT-Alpha/yolov5/
  • 绿色框内文件来自TensorrRT安装路径下:TensorRT-8.4.2.4.Windows10.x86_64.cuda-11.6.cudnn8.4\TensorRT-8.4.2.4\samples\common\logger.cpp

在这里插入图片描述

如下图,yolov5项目编译成功,从下面编译信息可以看到,exe文件所在路径为:

  • D:\VS2019_Project\TensorRT-Alpha\x64\Release\yolov5.exe
已启动生成…
1>------ 已启动生成: 项目: yolov5, 配置: Release x64 ------
1>yolov5.vcxproj -> D:\VS2019_Project\TensorRT-Alpha\x64\Release\yolov5.exe
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0==========

以下是命令行执行指令,需要说明的是执行推理任务,支持图片、视频、摄像头

# 640
# infer an image
./app_yolov5  --version=v570 --model=../../data/yolov5/yolov5n.trt   --size=640  --batch_size=1  --img=../../data/6406401.jpg   --show --savePath=../
# infer video
./app_yolov5  --version=v570 --model=../../data/yolov5/yolov5n.trt   --size=640  --batch_size=2  --video=../../data/people.mp4  --show 
# infer web camera
./app_yolov5  --version=v570 --model=../../data/yolov5/yolov5n.trt   --size=640  --batch_size=2  --show  --cam_id=0
# 1280
./app_yolov5  --version=v570 --model=../../data/yolov5/yolov5s6.trt  --size=1280 --batch_size=1 --img=../../data/6406401.jpg   --show --savePath

这里给个示范,例如我要在命令行使用yolov5推理一张图:

.\yolov5.exe  --model=D:\ThirdParty\TensorRT-8.4.2.4\bin\yolov5n.trt     --size=640 --batch_size=1  --img=d:/Data/1.jpg  --show --savePath=d:/

效果如下图:
在这里插入图片描述

下面是yolov5推理视频效果,可以自己玩一玩:

.\yolov5.exe  --model=D:\ThirdParty\TensorRT-8.4.2.4\bin\yolov5n.trt     --size=640 --batch_size=1  --video=E:\VideoAlpha\source_video\football.mp4  --show

yolov5 tensorrt cuda模型推理加速部署《TensorRT-Alpha》场景:Tokyo

以下是bash窗口打印的推理时间,注意,例如batch_size设置为2,每一行表示表示处理两张图的平均时间。

[10/22/2023-08:20:02] [I] preprocess time = 0.783168; infer time = 3.58605; postprocess time = 0.082752
[10/22/2023-08:20:02] [I] preprocess time = 0.646848; infer time = 4.24038; postprocess time = 0.082688
[10/22/2023-08:20:02] [I] preprocess time = 0.616544; infer time = 2.89075; postprocess time = 0.07968
[10/22/2023-08:20:02] [I] preprocess time = 2.53853; infer time = 2.80883; postprocess time = 0.046496
[10/22/2023-08:20:02] [I] preprocess time = 0.99216; infer time = 2.41869; postprocess time = 0.064448
[10/22/2023-08:20:02] [I] preprocess time = 0.879072; infer time = 2.42074; postprocess time = 0.064704
[10/22/2023-08:20:02] [I] preprocess time = 0.988768; infer time = 2.4105; postprocess time = 0.069312
[10/22/2023-08:20:02] [I] preprocess time = 0.797376; infer time = 3.5328; postprocess time = 0.089024
[10/22/2023-08:20:02] [I] preprocess time = 0.698368; infer time = 4.05299; postprocess time = 0.100928
[10/22/2023-08:20:02] [I] preprocess time = 0.747136; infer time = 2.87949; postprocess time = 0.087008
[10/22/2023-08:20:02] [I] preprocess time = 0.7568; infer time = 2.46784; postprocess time = 0.087456
[10/22/2023-08:20:02] [I] preprocess time = 0.73088; infer time = 2.39514; postprocess time = 0.097824
[10/22/2023-08:20:02] [I] preprocess time = 1.00698; infer time = 2.9583; postprocess time = 0.101824
[10/22/2023-08:20:02] [I] preprocess time = 3.27907; infer time = 2.4361; postprocess time = 0.099104
[10/22/2023-08:20:02] [I] preprocess time = 0.74784; infer time = 2.94502; postprocess time = 0.09872
[10/22/2023-08:20:02] [I] preprocess time = 0.75568; infer time = 2.43712; postprocess time = 0.09744
[10/22/2023-08:20:02] [I] preprocess time = 1.63821; infer time = 2.44134; postprocess time = 0.104608
[10/22/2023-08:20:02] [I] preprocess time = 0.718368; infer time = 2.44019; postprocess time = 0.105568
[10/22/2023-08:20:02] [I] preprocess time = 1.08122; infer time = 2.54874; postprocess time = 0.104608

六、结束语

都看到这里了,觉得可以请点赞收藏,有条件的去仓库点个star,仓库:https://github.com/FeiYull/tensorrt-alpha
在这里插入图片描述


http://www.niftyadmin.cn/n/5111490.html

相关文章

并发编程-线程池ThreadPoolExecutor底层原理分析(一)

问题: 线程池的核心线程数、最大线程数该如何设置? 线程池执行任务的具体流程是怎样的? 线程池的五种状态是如何流转的? 线程池中的线程是如何关闭的? 线程池为什么一定得是阻塞队列? 线程发生异常&…

基于孔雀优化的BP神经网络(分类应用) - 附代码

基于孔雀优化的BP神经网络(分类应用) - 附代码 文章目录 基于孔雀优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.孔雀优化BP神经网络3.1 BP神经网络参数设置3.2 孔雀算法应用 4.测试结果:5.M…

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章四: 文件管理

目录 文件管理 文件的逻辑结构 无结构文件 有结构文件 顺序文件 索引文件 索引顺序文件 文件目录 文件控制块(FCB) 目录结构分类 单级目录结构 两级目录结构 多级目录结构 (树形目录结构) 无环图目录结构 索引节点 文件的物理结构…

Origami Studio for Mac:塑造未来,掌握原型设计之巅

在当今高度竞争的设计领域,原型设计的重要性不言而喻。它不仅是沟通想法,也是测试和改进设计的关键环节。而现在,一款强大的原型设计工具——Origami Studio for Mac,正在席卷设计界,以其独特的功能和卓越的性能&#…

计算一个Series序列元素的标准差Series.sem()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算Series序列中各元素的标准差 Series.sem() [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd a pd.Series([1,2,3]) print("【显示】a:\n",a) print(【执行】…

超全全国所有城市人力资本测算数据集(1990-2021年)

参考《管理世界》中詹新宇(2020)的做法,本文对地级市的人力资本水平进行测算,其中人力资本水平用地级市的普通高等学校在校学生数占该地区总人口比重来反映 一、数据介绍 数据名称:地级市-人力资本测算 数据年份&…

网络编程的学习初篇

网络原理初始 网络原理和网络编程[重要] 网络能够跨主机通信! 我们未来工作,很可能是成为后端开发工程师,写服务器,和客户端通信,肯定会涉及到网络. 网络初始 计算机网络的由来 ~~ 计算机网络这是计科相关专业最核心的专业课!!! 计算机是咋来的??最初是用来计算弹道导弹的轨…

【编解码格式】MPEG系列

MPEG-1 MPEG-1是MPEG组织制定的第一个视频和音频有损压缩标准,也是最早推出及应用在市场上的MPEG技术,其原来主要目标是在CD光盘上记录影像,后来被广泛应用在VCD光盘。视频压缩算法于1990年定义完成。1992年底,MPEG-1正式被批准成…