NVIDIA GPU 视频解码能力评估指南

NVIDIA显卡视频编解码能力全解析:从GTX 750到RTX 3090的硬件加速支持对比 本文全面解析了NVIDIA显卡从GTX 750到RTX 3090的硬件视频编解码能力演进,重点对比了不同架构(Maxwell、Pascal、Turing、Ampere)对NVENC和NVDEC的支持差异。文章详细阐述了各代显卡对H.264、HEVC、AV1等关键格式的编解码支持、编码质量提升及并发会话能力,并针对视频剪辑、直播推流和多媒体开发等实际应用场景,提供了精准的显卡选择建议。 阅读详情

用途:根据本指南可独立完成「查格式支持 → 查性能基准 → 计算解码路数 → 实测验证」的完整评估流程。
业务场景:多路解码 + 抽帧送推理(VLM),不含编码/转码,因此本文档只覆盖 NVDEC 解码侧;NVENC 编码内容仅作背景保留。


一、信息来源(官方地址)

文档地址回答什么问题
Video Encode and Decode Support Matrixhttps://developer.nvidia.com/video-encode-decode-support-matrix能不能:每款 GPU 的 NVENC/NVDEC 代际、引擎数量、支持的格式/位深/色度采样;会话上限列仅在编码表中(解码表无此列)
NVDEC Application Note(解码性能)https://docs.nvidia.com/video-technologies/video-codec-sdk/13.0/nvdec-application-note/index.html解多快:各代单引擎 1080p 解码帧率(Table 2),时钟缩放与多引擎聚合规则
NVENC Application Note(编码性能)同站将路径中 nvdec 换成 nvenc编多快:各代单引擎编码帧率(本业务无编码,仅备查)
Video Codec SDK 文档总目录https://docs.nvidia.com/video-technologies/video-codec-sdk/切换 SDK 版本、查历史文档
SDK 本体下载(头文件 + AppDecode/AppEncode 示例)https://developer.nvidia.com/nvidia-video-codec-sdk需 NVIDIA Developer 账号登录
nvidia-smi 工具文档https://developer.nvidia.com/nvidia-system-management-interface查本机视频时钟、解码器利用率

二、怎么查

2.1 查某款 GPU 支持什么格式

页面结构:编码(NVENC)5 张表 + 解码(NVDEC)5 张表,各按产品线分 GeForce / 专业卡 / 数据中心 / DGX / Jetson。注意:解码区块默认折叠,需点 “Click to expand” 展开。

  1. 打开 Support Matrix,按产品线和编/解码定位到对应表
  2. 找到型号所在行,读关键列:
    • NVENC/NVDEC Generation(代际)与 Total # of NVENC/NVDEC(引擎数)
    • Max # of concurrent sessions 只在编码(NVENC)表里(第 7 列)——所有解码表都没有此列,官方未文档化解码会话上限(与实测"解码无硬限制"一致)
  3. 回到页面顶部的代际能力总表,用代际查具体格式:
    • 编码总表:H.264、HEVC 4K/8K/10-bit/4:4:4/无损、AV1、4:2:2
    • 解码总表:MPEG-1/2/4、VC-1、VP8、VP9、H.264、HEVC、AV1 各位深与 4:2:2/4:4:4

关键例外(查表时必看备注):

  • Turing 内部割裂:RTX 20 系是 7 代编码器;GTX 1630/1650 GDDR5/MX550 仍是 6 代(Pascal 水平)
  • Hopper H100、A100/A30:NVDEC 停留在 4th Gen(Turing 水平),无 AV1 解码,且无 NVENC
  • Maxwell 二代高端卡(GTX 970/980/Titan X):NVDEC 仅为 1st Gen,不支持 HEVC/VP9 解码;仅 GM206(GTX 750/950/960)支持
  • Pascal 的 VP8/VP9 10-bit 解码按芯片分裂:GP104 有 VP8 无 VP9 10-bit;GP102/106/107 相反
  • 大量低端型号(MX 系列、GT 1030 编码端等)无媒体引擎

2.2 查单引擎性能基准

打开 NVDEC Application Note → Table 2 “NVDEC decoding performance (indicative)”:

架构H.264VP9VP9 10-bitHEVCHEVC Main10AV1
Pascal694846—810789—
Turing77193292513161158—
Ampere7481075112014151299790
Ada90312901342164115201018
Blackwell217214451498187218181119

单位:帧/秒,1080p YUV 4:2:0,单 NVDEC 引擎,各代最高视频时钟下实测
(基准时钟:Pascal 1544 / Turing 1860 / Ampere 1665 / Ada 2160 / Blackwell 2362 MHz)

2.3 三个工具各管各的(重要,别混淆)

想知道什么用什么说明
视频时钟多少 MHznvidia-smi -q -d CLOCK硬件频率,直接读取;看 Clocks → Video 和 Max Clocks → Video
实际解得多快(fps)ffmpeg ... -f null -跑真实解码,看输出里的 fps= 值
解码时时钟与利用率变化nvidia-smi --query-gpu=index,clocks.video,utilization.decoder --format=csv -l 1(每秒刷新,含 Video Clock)或 nvidia-smi dmon -s uc边解码边实时观察(dec 列 = 解码器利用率 %)。注意 dmon 指标字母须连写,-s u,c 带逗号会报错;dmon 时钟列不含 Video Clock

Clocks → Video 与 Max Clocks → Video 的区别(什么时候用哪个):

字段含义什么时候看
Clocks → Video当前视频时钟,实时动态变化(空闲时自动降频,如 555 MHz)实时监控/排查问题时用
Max Clocks → Video视频时钟的上限,硬件能力天花板(如 1950 MHz)计算吞吐量永远用这个
  • GPU 空闲时视频引擎自动降频省电;一旦开始解码,驱动会在毫秒内 boost 到接近上限,无需人工干预
  • 用空闲时的当前值计算会严重低估能力;解码中当前值升到接近 Max 属正常
  • 排查:解码中当前值卡在低位不升 → 负载太轻未触发 boost,或有功耗/温度墙(用 nvidia-smi -q -d PERFORMANCE 查降频原因)

一句话:计算用上限,监控看现值。

注意:ffmpeg 命令测的是解码速度(fps),不是视频时钟;时钟只能通过 nvidia-smi 读取。

2.4 实测校准(理论值一般打 8~9 折)

# 单路纯解码跑分(测 fps,不测时钟;单趟解码各版本均可,循环用法见下方注意事项)
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -f null -

参数含义:

  • -hwaccel cuda — 用 NVDEC 硬件解码
  • -hwaccel_output_format cuda — 解码帧保留在显存,避免拷回内存成为瓶颈(否则测出的不是 NVDEC 真实速度)
  • -f null - — 输出丢弃,不编码、不写盘,排除干扰

运行后看输出末尾的 fps= 值,即为实测解码帧率。示例(RTX 3090 + 1080p25 H.264 测试片实测):

frame= 4679 fps= 873 q=-0.0 ... time=00:03:07.16 ... speed=34.9x

实测 873 fps ≈ 理论计算 876 fps(3.2 节第二步),误差仅 0.3%——说明时钟缩放公式可靠。你的卡/片源不同,数值会不同,用自己的实测值代入第三章公式即可。

推荐验证姿势(两个窗口同时开,一次验证两件事):

# 窗口 1:跑解码测试
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -f null -

# 窗口 2:实时观察时钟 boost 与解码器利用率
nvidia-smi --query-gpu=index,clocks.video,utilization.decoder --format=csv -l 1

解码开始后可看到:Video Clock 从空闲值 boost 到接近 Max 值,dec 利用率逼近 100%——即时钟拉满 + 单引擎性能到顶,两者同时确认。

ffmpeg 使用注意事项(实测踩过的坑):

  • 后台批量跑 ffmpeg 必须加 -nostdin:ffmpeg 默认从 stdin 读交互命令,后台进程无终端输入会被 SIGTTIN 挂起(jobs 显示 Stopped,实际没在解码)
  • ffmpeg 4.4 的坑是 -stream_loop × -hwaccel_output_format cuda 组合(不是不支持 cuda 输出格式):单趟解码完全正常(实测 873 fps ≈ 理论 876);但加 -stream_loop -1 循环时,循环重放点重建滤镜链失败(Error reinitializing filters! / Conversion failed!),所有进程启动即退出。循环压测时二选一:去掉 cuda 输出格式(自动下载回内存,1080p 场景 PCIe 带宽足够),或升级 ffmpeg 6.x/7.x
  • 清理后台测试进程用 pkill -9 -f stream_loop(单词匹配,带 -nostdin 的命令行也能匹配到)

Windows 下还可用 DXVAChecker 直接列出每个格式支持的最大分辨率/帧率。


三、怎么计算

3.1 核心公式

单引擎吞吐(fps) = 官方基准 fps × (本卡 Max Video Clock ÷ 基准时钟)
聚合吞吐       = 单引擎吞吐 × NVDEC 引擎数量        ← 仅多路并发时有效
实时路数       = 聚合吞吐 ÷ 目标帧率
最终路数       = min( 实时路数 , 显存允许的路数 )   ← 解码无驱动会话锁,详见第四章

显存允许的路数 = 显存总量 ÷ 每路实占显存。 每路实占多少取决于架构(停车位比喻:解码缓冲是"车位",CUDA 上下文是每进程独占的"门卫室"):

架构每路实占(1080p)24GB 可容纳
进程式(一路一进程)~460MB = 车位 60MB + 门卫室(CUDA 上下文)300~400MB~52 路
单进程多会话(共享 1 个上下文)~60MB(门卫室只盖一间,全局摊销)数百路,瓶颈回到吞吐

分辨率换算:NVDEC 按像素量干活,fps 随像素数反比缩放。以 1080p(约 200 万像素/帧)876 fps 为例:

1080p: 876 fps
4K:    876 ÷ 4  ≈ 219 fps   (4K 一帧 = 1080p 的 4 倍像素)
8K:    876 ÷ 16 ≈ 55 fps    (8K 一帧 = 1080p 的 16 倍像素)

两条铁律(水管比喻:单引擎吞吐 = 一根固定流量的水管,多路只能分着用):

  1. 单路速度 ≤ 单引擎性能——开 1 路最多独享 876 fps;开 35 路每路分 25(刚好实时);开 52 路每路只剩 17(不够实时)。即使卡上有多个 NVDEC,多引擎也只在多路之间分担(驱动自动负载均衡),无法合起来加速单独一路
  2. GeForce 每卡只有 1 个 NVDEC——3090 只有一根水管;部分专业卡/数据中心卡有 2~7 根(如 L4 有 4 根),多路容量直接按引擎数翻倍

一句话:先被显存卡住(52 路)还是被吞吐卡住(35 路实时),取决于架构——这正是第六章容量结论的依据。

3.2 计算示例:RTX 3090(完整计算过程)

已知条件(怎么来的):

条件值来源
架构Ampere(GA102)Support Matrix 查 RTX 3090 所在行
NVDEC 引擎数1 个(GeForce 全系单引擎)Support Matrix Total NVDEC 列
官方基准吞吐(Ampere,H.264)748 fps @ 基准时钟 1665 MHzNVDEC Application Note Table 2
本卡 Max Video Clock1950 MHznvidia-smi -q -d CLOCK → Max Clocks → Video
显存24 GB型号规格

第一步:算时钟缩放比

官方基准是在 1665 MHz 下测的,本卡能跑到 1950 MHz,性能按比例放大:

时钟比 = 1950 ÷ 1665 ≈ 1.171

第二步:算单引擎吞吐(基准 × 时钟比)

H.264:  748 × 1.171 ≈ 876 fps   (实测 873 fps,误差 0.3%,公式验证通过)
HEVC:  1415 × 1.171 ≈ 1657 fps
AV1:    790 × 1.171 ≈ 925 fps

第三步:算实时路数(吞吐 ÷ 目标帧率)

以 H.264 为例:

1080p25:  876 ÷ 25       = 35 路
1080p30:  876 ÷ 30       = 29 路
1080p60:  876 ÷ 60       = 14 路
4K30:    (876 ÷ 4) ÷ 30  = 219 ÷ 30  = 7 路    ← 4K 先按像素 ÷4 换算吞吐
4K60:    (876 ÷ 4) ÷ 60  = 219 ÷ 60  = 3 路
8K30:    (876 ÷ 16) ÷ 30 = 55 ÷ 30   = 1 路    ← 8K 按像素 ÷16

第四步:套显存约束,取较小值

进程式架构:显存允许 = 24GB ÷ 460MB ≈ 52 路
最终路数 = min( 实时路数 , 52 )

完整结果表(H.264 / HEVC / AV1):

场景H.264 计算过程结果HEVCAV1
1080p25876÷25=35,min(35,52)35min(66,52)=52min(37,52)=37
1080p30876÷30=29,min(29,52)2952(显存限)30
1080p60876÷60=14142715
4K30219÷30=77137
4K60219÷60=3363
8K3055÷30=1131

只有 HEVC 1080p 两行撞到显存约束(66/55 > 52),其余场景都是吞吐先成为瓶颈。
若改单进程多会话架构(每路 ~60MB,显存约束≈400 路),所有场景都只看吞吐。


四、会话上限(“撞限”)

核心结论:解码(NVDEC)没有驱动层会话数限制;这个限制只加在编码(NVENC)上。纯解码业务无需关心,此处仅作结论备忘。

产品类别编码(NVENC)解码(NVDEC)
GeForce 全系(RTX 50/40/30/20、GTX 16/10 等)官方标称 12(早年 2~3,逐步放宽)无限制
入门专业卡(T400/P400/RTX A400 等)8无限制
中高端专业卡 / 数据中心(L4/A10 等)/ DGX / Jetson无限制无限制

依据:

  • 官方 Support Matrix 的 Max # of concurrent sessions 列只出现在编码表,所有解码表均无此列
  • 编码限制本质是市场区隔策略(多路转码/云游戏是数据中心卡卖点);一路转码占 2 个会话(解码+编码各 1),本业务纯解码不涉及

提醒:解码没有会话锁 ≠ 能无限开。真实约束有两个:

  1. 显存——每路占用随架构而不同:进程式架构(一路一进程)每路 ~460MB(含每进程独占的 CUDA 上下文),单进程多会话架构每路仅 ~60MB,同一张卡容量差近 8 倍(详见 3.1)
  2. NVDEC 吞吐——多路均分单引擎总吞吐(见 3.2)

且"能开起来的路数"≠"每路实时跑满的路数",最终容量结论见第六章。


五、一页速查:评估流程

① 查 Support Matrix
   → 得 NVDEC 代际、引擎数(解码表无会话上限列;会话锁只在编码侧,本业务不用管)
② 查 NVDEC Application Note Table 2
   → 得该代际单引擎 1080p 基准 fps 和基准时钟
③ nvidia-smi -q -d CLOCK
   → 得本卡 Max Video Clock
④ 套公式
   → 吞吐 = 基准 × 时钟比;实时路数 = 吞吐×引擎数÷帧率;
     最终路数 = min(实时路数, 显存总量÷每路显存)
⑤ ffmpeg + nvidia-smi --query-gpu=... -l 1 实测校准(理论打 8~9 折)

六、本业务容量结论(8× RTX 3090,1080p25 H.264)

口径单卡路数整机(8 卡)约束
能开起来(会话/显存,进程式架构)52~416显存 ~460MB/进程
每路实时跑满 25fps~35~280NVDEC 吞吐 876 fps
全流水线稳定运行(含后处理/推理)20~32160~256工程经验水位
抽帧模式(-skip_frame nokey 只解关键帧)~52~416吞吐约束解除,瓶颈回到显存

扩容路径优先级:① 抽帧降负载 → ② 单进程多会话架构(显存每路 460MB→60MB)→ ③ 加卡/换多 NVDEC 数据中心卡。

Tesla T4显卡多路视频编解码性能瓶颈分析与优化策略 本文深入分析了NVIDIA Tesla T4显卡在多路视频编解码应用中的真实性能瓶颈。针对其硬件编解码引擎能力与通用计算单元负载不匹配的问题,核心揭示了颜色空间转换(CSC)带来的巨大CUDA计算开销是主要瓶颈,并提供了从规避转换、批处理优化、精细化显存管理到编解码参数调优等一系列实战策略,旨在帮助用户充分释放Tesla T4在高密度视频处理场景下的潜力。 阅读详情

相关推荐

关于NVIDIA显卡编解码能力

无论是使用N卡硬编还是硬解,首先最好了解手里这个显卡的编解码能力,它是否能符合你的要求?

性情中的小完熊 6452

显卡解码能力查询;GPU 视频参数详解:4K 和 8K 视频播放能力、AI 生成视频能力;分辨率标准:FHD、4K 和 8K 的区别

画质效果适用范围FHD:常见标准,适合日常使用。4K:更适合大屏幕和对画质有较高要求的用户。8K:未来高端显示设备的发展方向,适合需要极高分辨率的专业场景。

郝开的博客 1万+

显卡性能天梯图

显卡简介和性能了解,不同显卡对比与挑选显卡攻略

FFmpeg 在Windows环境下 Intel ,Nvidia ,AMD 硬件加速编解码支持列表

在FFmpeg编译好支持 h264和h265,并且支持 Intel,Nvidia,AMD 硬件加速之后,可能依然会出现硬件加速无法使用的问题,这是因为有些显卡不支持h264或h265的编解码,也有可能是因为 Nvidia 驱动版本过低,而编译好的 FFmpeg 需求比较高,需要更新驱动才能实现硬件加速。所以,在查阅了 Intel,Nvidia 和 AMD 的官方编解码硬件支持列表后,整理如下。

XIE971793909的博客 1万+

苍穹外卖项目面试总结话术

美食速递这个项目最初是我参与制作的大创项目,是一款为中南学生提供校园外卖送至宿舍服务的软件,包含系统管理后台和小程序端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对食堂各个窗口、员工、订单、菜品等进行维护管理;小程序端可以在线浏览菜品、添加购物车、下单等,由学生兼职做跑腿送餐上门服务。这是个前后端分离的项目,我主要是负责后端的用户登录、员工管理,菜品管理,订单管理模块的编码实现。

qq_45195447的博客 1万+

测站坐标系、地心非惯性系、经纬高互转

目录 一、经纬高转直角坐标系互转 1.1 python代码 二、wgs84转cgcs2000的转换矩阵如下 虽然cgcs2000与wgs84差别很小,但是我比较较真,还是做了两个坐标系的转换。 一、经纬高转直角坐标系互转 此处可参考链接(百度文库用手机浏览器可以打开看全部的): (1)第四章地球椭球及其数学详解 (2)第四章椭球数学变换16节 (3)大地测量学基础[1](7)(控制) 转换公式如下: LBH转XYZ: a为半长轴,e为偏心率 XYZ转LBH: a为半长轴

${王小贱}的博客 2万+

Nvidia显卡硬件编解码能力表 官方链接

记录用,便于快速查找,从表中得知,1070支持 H265 10bit 硬件编码,似乎不错 官方链接:https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new

ONE_SIX_MIX的专栏 1万+

王爽《汇编语言》课程设计2(不涉及软盘版本)

assume cs:code,ds:data,ss:stack stack segment db 128 dup (0) stack ends data segment db 256 dup (0) data ends code segment start: mov ax,stack mov ss,ax mov sp,128 ...

weixin_41944412的博客 1171

NVIDIA各显卡编解码信息列表

完整Excel下载:https://download.csdn.net/download/weixin_40464436/18587182

weixin_40464436的博客 6028

Solidworks二次开发(C# .NET API):从零构建装配体与虚拟零件

本文详细介绍了使用C#进行Solidworks二次开发,从零构建装配体与虚拟零件的完整流程。通过.NET API实现设计自动化,涵盖环境搭建、核心对象模型、虚拟零件创建与外部化保存等关键技术,帮助工程师将重复性建模工作程序化,大幅提升设计效率与标准化水平。

alice7model的博客 598

ROS Noetic下Gazebo仿真:从零搭建两轮差速机器人(含ros_control配置避坑指南)

本文详细介绍了在ROS Noetic环境下,使用Gazebo从零搭建两轮差速机器人并进行仿真的完整流程。核心内容包括利用Xacro进行模块化建模,并重点解析了通过ros_control框架配置机器人运动控制的详细步骤与常见避坑指南,帮助开发者成功实现机器人在仿真环境中的差速驱动与运动控制。

game4的博客 616

VulKan视频编解码: NVIDIA

Vulkan 是新一代图形和计算 API,能够跨平台高效访问 GPU。Vulkan 作为业内一款开放标准式现代 GPU API,在帮助开发者编写可移植到多个不同平台的应用程序方面,具有独特作用.

weixin_42519113的博客 2895

《物联网技术》课程笔记——第二章 物联网技术架构

文章目录第二章:物联网技术架构1 物联网技术体系(C3SD)2 系统体系结构的基本概念3 物联网体系结构——信息传递视角3.1物联网感知层3.1.1 感知层要解决的问题3.1.2 感知层的形态3.1.3 节点的感知能力与控制能力3.1.4 感知层实例3.2 物联网网络层3.2.1 网络相关概念3.2.2 IPV6与IPV4相比互联网协议的升级3.2.3 计算机网络的逻辑层次3.2.4 传输网的拓扑结构3.2.4.1 举例:智能小区的三表采集系统3.2.4.2 接入层3.2.4.2 汇聚层3.2.4.2 核心

南京大学软件工程硕士在读 2495

nvidia-vaapi-driver性能测试:如何用nvidia-smi监控视频解码效率

nvidia-vaapi-driver是一个基于NVIDIA NVDEC技术的VA-API实现,它能够让Linux系统上的应用程序利用NVIDIA显卡的硬件加速能力进行视频解码。本文将详细介绍如何通过nvidia-smi工具监控该驱动的视频解码效率,帮助用户直观了解硬件加速性能表现。 ## 📊 为什么需要监控视频解码效率? 在使用nvidia-vaapi-driver进行视频播放或处理时,实

gitblog_00332的博客 1102

Arduino DHT11 ESP8266 在OneNet云平台上读取 温湿度

#include "ESP8266.h" #include "dht11.h" #include "SoftwareSerial.h" #define SSID "540ND" #define PASSWORD "" #define HOST_NAME "api.heclouds.com" #define DEVICE_ID "" #define HOST_PORT (80) String APIKey = " "; #define INTER

weixin_45852947的博客 2428

库存优化技术提升电商效率

第一部分:库存优化技术基础 第1章:库存优化的基本概念 库存优化是现代电商运营中至关重要的一个环节。简单来说,库存优化指的是通过一系列的策略和技术手段,使得库存管理更加高效、准确,从而降低运营成本,提高销售额。 1.1 库存优化的定义与重要性

AI天才研究院 1244

Nvidia官方视频编解码性能

详细的参见官方的链接地址,对于GPU的解码fps能力,可以作为评估参照!

百鸣的专栏 3951

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

FFmpeg GPU解码实战:如何降低摄像头视频流的解码延迟

本文深入探讨了如何利用FFmpeg进行GPU硬件解码,以显著降低摄像头视频流的解码延迟。通过硬件选型、驱动配置、FFmpeg编译优化、解码参数调优以及构建零拷贝渲染管线等实战技巧,将端到端延迟从300毫秒以上稳定压至150毫秒以内,为实时监控等低延迟应用提供了系统性的解决方案。

3c4x5z6v7b的博客 910

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

RTX4090 云显卡的 NVENC/NVDEC 视频编解码性能

RTX 4090集成第四代NVENC与第二代NVDEC,支持AV1编解码,在8K60、4K120等高分辨率场景表现卓越,适用于云游戏、视频转码与AI视觉分析。通过性能评测与调优策略,可实现低延迟、高并发的云端视频处理。

weixin_42402664的博客 2379

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

nvidia GPU 性能查看

想测试M4000 GPU的转码吞吐能力,需要知道GPU的关系性能指标 查看gpu 使用 nvidia-smi 命令 $ nvidia-smi1 但是这个命令只能显示一次,如果要实时显示,配合watch命令, 让一秒刷新一次 $ watch -n 1 nvidia-smi 详细 nvidia-smi -a // Utilization Encoder Dec

嘿,逮到一只大码农 6958

Jellium Desktop硬件加速测试工具:评估解码性能的终极指南

Jellium Desktop作为一款非官方的Jellyfin桌面客户端,提供了强大的媒体播放功能,其中硬件加速解码是提升视频播放体验的关键。本文将详细介绍如何使用Jellium Desktop内置的硬件加速测试工具,帮助你快速评估设备的解码性能,优化媒体播放设置。 ## 为什么硬件加速解码至关重要? 在流媒体播放中,视频解码需要大量计算资源。硬件加速技术通过将解码任务交给GPU处理,不仅能显

gitblog_01126的博客 1104

Hap QuickTime编解码器:GPU零拷贝架构如何重塑实时视频处理性能基准

在实时视频处理领域,CPU与GPU之间的数据传输瓶颈一直是制约性能的关键因素。传统视频编解码器需要将压缩数据通过CPU解码为RGB格式,再通过PCIe总线传输到GPU显存,这个过程在4K@60fps场景下产生20-30ms的延迟,严重限制了实时应用的可行性。Hap QuickTime编解码器通过创新的GPU零拷贝架构,将视频帧直接编码为GPU原生支持的DXT纹理格式,实现了压缩数据到显存的直接传输

gitblog_00330的博客 660

如何实现GPU加速视频编解码:Hap QuickTime编解码器架构深度解析 [特殊字符]

你是否曾经遇到过在实时视频处理中CPU不堪重负的困境?或者在高分辨率视频播放时遇到卡顿和延迟的问题?今天我们要探讨的Hap QuickTime编解码器,正是为解决这些挑战而生的GPU加速视频处理解决方案。这款开源编解码器通过创新的架构设计,将视频解码任务从CPU转移到GPU,实现了真正意义上的硬件加速,为实时视频处理、专业视觉应用和多媒体创作带来了革命性的性能提升。 ## 传统视频编解码的瓶颈与

gitblog_00984的博客 545

深度解析Hap QuickTime编解码器架构:GPU加速视频处理的5大技术突破

Hap QuickTime编解码器代表了现代视频处理架构的重要演进方向,通过创新的GPU加速纹理压缩技术,为实时多媒体应用提供了颠覆性的性能解决方案。基于S3TC纹理压缩和零拷贝数据传输机制,Hap实现了传统软件解码器无法企及的实时解码性能,为专业视频投影、虚拟制作和交互式媒体应用奠定了坚实的技术基础。这一架构突破不仅重新定义了视频编解码的性能基准,更为实时视频处理领域带来了革命性的变化。 ##

gitblog_00186的博客 868

GPU加速视频编解码:重新定义实时媒体处理性能边界

在实时视频处理领域,传统CPU为中心的编解码架构已触及性能天花板。Hap QuickTime编解码器通过GPU加速架构和零拷贝技术革命,为专业级视频应用提供了突破性的解决方案。本文将从技术范式转变、架构创新、性能量化、商业价值四个维度,深度解析这一颠覆性技术的核心优势。 ## 技术范式转变:从计算密集型到数据流优化 传统视频编解码器的核心瓶颈在于数据搬运而非计算本身。当处理4K@60fps视频

gitblog_00060的博客 322
上一篇: 智能体工程全景:从提示词到图的演进与落地
下一篇: 强化学习-训练好了没有?—— 兼谈强化学习里的过拟合
洪流之源
博客等级 码龄14年 822粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪流之源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值