SDK 上的 Jetson Nano 图像基准测试
Posted 图为信息科技AI边缘计算运营商
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDK 上的 Jetson Nano 图像基准测试相关的知识,希望对你有一定的参考价值。
NVIDIA Jetson Nano 是一款功能强大的小型计算机,带有嵌入式 GPU,可让您并行运行多个神经网络,用于图像分类、对象检测、分割和语音处理等应用。
我们已经使用 NVIDIA Jetson Nano 开发工具包测试了来自 Fastvideo 的图像和视频处理 SDK,在这里我们展示了我们针对特定于相机应用程序的软件模块的基准测试结果。
NVIDIA Jetson Nano 硬件:四核、4GB RAM、GPU
- 128 核 Maxwell GPU(用于显示和计算)
- 四核 ARM A57 @ 1.43 GHz(主 CPU)
- 4 GB LPDDR4(额定 25.6 GB/s)
- 千兆以太网
- 4x USB 3.0、USB 2.0 Micro-B(Micro USB 端口可用于 5V 电源输入和数据)
- HDMI 2.0 和 eDP 1.4(4K 显示器支持、HDMI 或显示端口)
- 支持 MIPI CSI-2 和 PCIe Gen2 高速 I/O
- 用于 5V 电源输入的 DC Barrel 插孔
- 存储 microSD
- 尺寸:100 mm × 80 mm × 29 mm(含载板)
视频编码和解码选项
- 视频编码 4K @ 30 fps,4x 用于 1080p @ 30 fps,9x 用于 720p @ 30 fps (H.264/H.265)
- 视频解码 4K @ 60 fps, 2x for 4K @ 30 fps, 8x for 1080p @ 30 fps, 18x for 720p @ 30 fps (H.264/H.265)
图. Jetson Nano 开发者套件
用于基准测试的硬件和软件
- CPU/GPU NVIDIA Jetson Nano 开发者套件
- 操作系统 L4T (Ubuntu 18.04)
- JetPack 4.2 与 CUDA CUDA 工具包 10.2
- 快视频 SDK 0.17.1
Jetson Nano 功耗和电源管理
在 Jetson Nano 硬件中,NVIDIA 使用动态电压和频率缩放 (DVFS) 方法。大多数现代计算机硬件都使用该电源管理技术来最大限度地节省电力,其中组件中使用的电压会根据外部条件增加或减少。
Jetson Nano 开发人员套件配置为通过 Micro USB 连接器接受电源。一些 Micro USB 电源设计为输出略高于 5V 的电压,以解决电缆两端的电压损失。关键点是 Jetson Nano 模块至少需要 4.75V 才能运行。建议在 J28 Micro-USB 连接器上使用能够提供 5V 电压的电源。
Jetson Nano 还有其他一些电源选项。如果预计总负载将超过 2A,例如,由于外设连接到载板或由于高性能计算任务,您必须锁定 J48 电源选择引脚通过 Micro USB 禁用电源并通过 J25 启用 5V-4A电源插孔。另一种选择是通过 J41 扩展接头提供 5V-6A(两个 5V 引脚可用于为每个 3A 的开发人员套件供电)。Jetson Nano 开发人员套件配备了一个被动散热器,可以安装一个风扇。如果我们通过 J25 提供超过 5V(例如 12V)的电压,那么 Nano 将无法工作。
图. Jetson Nano 开发者套件的俯视图
一般来说,总功耗包括载板、Jetson Nano 模块和外围设备。它由特定的用例决定。在未连接外围设备的情况下,载板的功耗在 0.5W(2A 时)到 1.25W(4A 时)之间。
Jetson Nano 模块旨在优化电源效率,它支持两种软件定义的电源模式。默认模式为模块提供 10W 的功率预算,另一种为 5W 的预算。这些电源模式通过限制 GPU 和 CPU 频率以及在线 CPU 内核的数量,将模块限制在接近 10W 或 5W 的预算。
根据使用SDK 进行的测试,Jetson Nano 开发套件在 10W 模式下的正常运行需要比 USB 提供的更多功率(5V 和 2A)。USB 供电的 Jetson Nano 无法在默认时钟的繁重工作负载下连续工作(未应用 jetson_clocks)。它在工作量开始后 30-60 秒内挂断。这似乎是由于载板和其他外围设备的功耗。USB 供电的 Jetson Nano 在 5W 模式下完美运行,但性能较差。
据我们了解,通过为 Jetson Nano 提供更多电力可以获得更好的性能。
为了管理 NVIDIA Jetson Nano 的速度和功耗,我们使用nvpmodel -m0和jetson_clocks来获得最佳性能。
适用于相机应用的 Jetson Nano 基准性能
我们测量了每个图像处理模块的 GPU 内核时间,以了解它在 Jetson Nano 上的执行速度。这是评估从SDK 中选择的一组模块的总时间的方法。如果某些模块的性能取决于图像内容,您可以请求适用于 NVIDIA Jetson Nano(或任何其他 NVIDIA GPU)的SDK 进行评估并继续进行您自己的测试。
CUDA 初始化和 GPU 内存缓冲区分配不包括在基准测试中。在测量之前,所以它不会影响 GPU 性能。
为了测试,我们使用了 2K 原始图像(1920×1080,8 位)和 4K 原始图像(3840×2160,8 位),尽管所有计算都是以 16 位精度进行的。在 JPEG 压缩之前,我们已将每通道 16 位数据转换为 8 位以符合 JPEG 标准。JPEG2000 压缩基准是针对具有 4:4:4 子采样的 24 位图像测量的。
我们用灰色标记了表格中的那些行,这些行包含在 2K 和 4K 分辨率的相机应用程序的最简单图像处理管道中。该管道包括主机到设备传输、白平衡、HQLI Debayer、色彩校正、伽玛、JPEG 压缩、设备到主机传输。在每个表的最后一行中,我们显示了以 ms 为单位的总 GPU 内核时间、以 MB/s 为单位的性能以及管道实现的 FPS。
表 1. 2K 原始图像处理(1920×1080,8 位)的 Jetson Nano 性能基准
算法和参数 | 内核时间,毫秒 | 性能,MB/s | 每秒帧数 |
白平衡 | 0.6 | 6,500 | 1,660 |
HQLI 德拜尔 | 1.8 | 2,200 | 550 |
DFPD德拜尔 | 4.7 | 850 | 212 |
MG德拜尔 | 12.7 | 315 | 78 |
使用 3×4 矩阵进行色彩校正 | 1.7 | 7,000 | 588 |
从 2K 调整到 960×540 | 10.0 | 600 | 100 |
将大小从 2K 调整为 1919×1079 | 19.8 | 303 | 50 |
伽玛 (1920×1080) | 1.4 | 8,500 | 710 |
JPEG 编码 (1920×1080, 90%, 4:2:0) | 4.3 | 1,400 | 230 |
JPEG 编码 (1920×1080, 90%, 4:4:4) | 6.8 | 880 | 147 |
JPEG2000 编码(有损,32×32,单模) | 81 | 74 | 12 |
JPEG2000 编码(无损,32×32,单模) | 190 | 31 | 5 |
相机应用总计 | 9.8 | 204 | 102 |
在现实生活中的相机应用中,有可能通过使用Jetson 零拷贝来消除主机到设备的拷贝。在这种情况下,来自相机的图像通过 DMA 直接写入系统内存中的固定缓冲区。CPU 和 GPU 都可以访问固定缓冲区。作为其他选项,可以通过在多线程应用程序中重叠数据传输和计算来隐藏设备到主机的复制。Jetson Nano 可以使用 1 个复制引擎进行并发复制和内核执行。
我们可以看到,对于 NVIDIA Jetson Nano 上最简单的 2K 图像处理管道,我们可以达到 100 fps 的性能。如果我们通过基于硬件的解决方案(而不是基于 CUDA 的 Motion JPEG 编码)对同一管道使用 H.264 编码,由于 H.264 编码器对 2K 分辨率的限制,可能性能会更差。
表 2. Jetson Nano 4K 原始图像处理的性能基准(3840×2160,8 位)
算法和参数 | 内核时间,毫秒 | 性能,MB/s | 每秒帧数 |
白平衡 | 2.2 | 7,200 | 455 |
HQLI 德拜尔 | 7.1 | 2,250 | 141 |
DFPD德拜尔 | 18.2 | 880 | 55 |
MG德拜尔 | 50.3 | 318 | 20 |
使用 3×4 矩阵进行色彩校正 | 6.9 | 7,000 | 145 |
从 4K 调整到 1920×1080 | 39.4 | 610 | 25 |
从 4K 调整到 3839×2159 | 77.9 | 308 | 12 |
伽玛 (3840×2160) | 5.7 | 8,400 | 175 |
JPEG 编码 (3840×2160, 90%, 4:2:0) | 17.1 | 1,400 | 58 |
JPEG 编码 (3840×2160, 90%, 4:4:4) | 27.3 | 880 | 36 |
JPEG2000 编码(有损,32×32,单模) | 309 | 77 | 3 |
JPEG2000 编码(无损,32×32,单模) | 620 | 38 | 1.6 |
相机应用总计 | 32.1 | 248 | 31 |
NVIDIA Jetson Nano 上用于 4K RAW 图像的相同图像处理管道可以为我们带来 30 fps 的性能。如果我们通过基于硬件的解决方案使用 H.264 编码(而不是 GPU 上的JPEG或MJPEG),我们仍然得到不超过 30 fps,这是 H.264 编码器在 4K 分辨率下的最大值,但 GPU 占用率情况会更少。
我们可以看到 Jetson Nano 在相机应用中对图像处理有足够的性能。对于高达 4K 的分辨率,我们可以获得使用 JPEG 或 H.264 压缩将RAW 转换为 RGB的实时性能。
以上是关于SDK 上的 Jetson Nano 图像基准测试的主要内容,如果未能解决你的问题,请参考以下文章