65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Intel® System Studio 在第四代 Intel® Core™ 处理器上进行数字安全和监控

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年10月17日

CPOL

12分钟阅读

viewsIcon

18195

本文介绍了使用第四代英特尔®酷睿™处理器配合英特尔®高清显卡,并结合英特尔®系统工作室软件开发套件来开发嵌入式数字视频监控系统的优势。

引言

本文介绍了使用第四代英特尔®酷睿™处理器配合英特尔®高清显卡,并结合英特尔®系统工作室软件开发套件来开发嵌入式数字视频监控系统的优势。虽然英特尔®高清显卡在视频管理软件的众多计算机视觉功能开发中非常有用;而英特尔®系统工作室则是一个嵌入式应用开发套件,可用于开发强大的数字视频监控应用。

数字安全与监控概述

视频监控系统捕捉嵌入式图像或视频,然后对其进行压缩、存储,并通过通信网络传输提取的图像或视频信息。

图 1 – 视频监控系统概述

如今,视频管理软件 (VMS) 有助于对监控视频进行高效监控、传输和存储。视频监控解决方案是安全工具,有助于减少犯罪,保护公众和财产。数字安全和监控 (DSS) 可用于以下类型的应用:

  • 实时车辆位置跟踪
  • 客户购物行为分析
  • 防盗
  • 公共场所的场地监控
  • 远程教育,支持实时课堂视频流
  • 医院和护理机构的患者监护

第四代英特尔®酷睿™处理器家族概述

第四代英特尔®酷睿™处理器(代号为 Haswell)基于 22nm 工艺,并集成了第三代英特尔®酷睿™处理器图形。第四代英特尔酷睿处理器是一款完整的片上系统 (SoC),将系统所有主要构建块集成到单个芯片上。该创新模块化设计将 CPU、图形、内存和连接性集成在一个封装中,为多种外形尺寸提供了一个引人注目的处理器图形解决方案的灵活性。

图 2 – 第四代英特尔®酷睿™处理器架构的优势

该架构支持许多新指令,这些指令专门用于为广泛的应用提供更好的性能,例如:媒体、游戏、数据处理、哈希、加密等。

新功能总结如下:

  • 英特尔®高级矢量扩展 2 (Intel® AVX2) - 整型数据类型扩展到 256 位 SIMD(单指令多数据)。Intel® AVX2 的整型支持对于处理常见的消费类成像和视频处理工作负载中的视觉数据特别有用。借助第四代英特尔酷睿处理器,您既可以使用用于浮点数据类型的英特尔®高级矢量扩展 (Intel® AVX),也可以使用用于整型数据类型的 Intel® AVX2。
  • 位操作新指令 (BMI) - 位操作指令可用于压缩数据库、哈希、大数运算以及各种通用代码。
  • 浮点乘法累加 (FMA) - 英特尔 FMA 显著提高了峰值浮点运算能力,并提供了更高的精度,进一步改进了超越数学运算。FMA 可广泛用于高性能计算、专业级成像和人脸检测。FMA 对标量、128 位和 256 位打包单精度和双精度数据类型进行操作。[有关这些指令的描述,请参见初始的 Intel® AVX 规范]。
  • Gather 指令 – Gather 指令可用于访问非相邻数据元素的矢量化代码。第四代英特尔酷睿处理器的 Gather 操作基于掩码,以确保安全(类似于 Intel® AVX 中引入的条件加载和存储)。Gather 操作有利于裁剪值、限制边界或执行条件操作。
  • 任意排列组合 这些排列组合操作非常有用。第四代英特尔酷睿处理器增加了对 DWORD 和 QWORD 粒度的支持,并允许在整个 256 位寄存器中进行排列组合。
  • 矢量-矢量移位 - 增加了矢量-矢量移位操作,用于移位由矢量控制的向量。这些对于具有可变移位量的矢量化循环至关重要。

有关这些指令的详细信息,请参阅 Intel® 64 and IA-32 Architectures Software Developer ManualsIntel® Advanced Vector Extensions Programming Reference manual

英特尔®系统工作室概述

英特尔®系统工作室是一款全面集成的工具套件,为开发人员提供了先进的系统工具和技术,以帮助加速下一代节能、高性能、可靠的嵌入式和移动设备的交付。

图 4 – 英特尔®系统工作室概述

英特尔系统工作室包含以下组件:

  • 英特尔® VTune Amplifier for Systems:用于电源和性能分析及调优的先进 CPU 和片上系统 (SoC) 分析工具。
  • 英特尔® Inspector for Systems:用于识别难以查找的内存和线程错误的动态和静态分析工具。
  • 英特尔® C++ 编译器:业界领先的 C/C++ 编译器,包括英特尔® Cilk Plus 并行模型,可实现优化性能。
  • 英特尔®集成性能原语 (Intel® IPP):用于信号、数据和多媒体处理的高性能软件构建块的广泛库。
  • 英特尔®数学核心库 (Intel® MKL):包含高度优化的线性代数、快速傅里叶变换 (FFT)、矢量数学和统计函数的库。
  • GDB 调试器:应用程序调试器,用于快速的应用程序级缺陷分析,以提高系统稳定性,并检测应用程序级指令跟踪和数据争用情况。
  • 英特尔® JTAG 调试器:用于 SoC 的系统调试器,可实现低开销事件跟踪、日志记录以及 UEFI 固件、引导加载程序、操作系统内核和驱动程序的源代码级调试。

将英特尔®酷睿™处理器与英特尔®系统工作室结合用于视频监控应用

将最新的英特尔®架构处理器和英特尔®系统工作室用于视频监控应用的好处如下:

  • 可移植性:在英特尔®架构上使用英特尔®系统工作室开发的视频监控应用程序可以轻松移植到不同的硬件平台——从大核心(英特尔®至强®)到小核心(英特尔®凌动™)。
  • 优化:英特尔®系统工作室中的性能库已针对各种 SIMD 指令集进行了优化。自动“分派”功能可以检测运行处理器上可用的 SIMD 指令集,并为该处理器选择最佳的 SIMD 指令。
  • 可扩展性:分析工具可提高多核系统的性能,并提高具有更多核心的系统的可扩展性。
  • 可靠性:英特尔®系统工作室的动态和静态分析工具增强了监控应用程序的可靠性。
  • 安全性:第四代英特尔酷睿处理器提高了英特尔高级加密标准 (AES) 的性能特性。无论是密码块链接 (CBC) 还是伽罗瓦计数器模式 (GCM),在新架构上都能获得更好的性能。此外,Intel® IPP 库还提供支持 AES-NI 标准的函数。

使用英特尔® IPP 的视频/音频转码器

视频监控系统的基本组成部分是:

  • 用于捕获视频/音频数据的摄像机
  • 带编码器的视频/音频录像机/数据存储设备
  • 通过互联网网络传输
  • 带分析功能的视频/音频解码器
  • 视频管理软件 (VMS)

图 5 – 视频监控软件的基本组成部分

英特尔®集成性能原语 (Intel® IPP) 软件构建块通过利用第四代英特尔®酷睿™处理器平台上的英特尔®高级矢量扩展 2 (Intel® AVX2) 等高级指令集进行了高度优化。Intel® AVX2 在 Intel® IPP 库中的优化包括“手工优化”和“编译器调优”函数——这些代码已针对 Intel® AVX2 指令集进行了直接优化。要获取第四代英特尔酷睿处理器手工优化函数的完整列表,请参阅文章——Intel IPP 支持 Intel® AVX2

例如,ippInit() 是内置于库中的指令集“分派器”,可以说是 Intel® IPP 库最有价值的功能之一。此分派器会在运行时自动执行每个 Intel® IPP 函数的最佳版本,以匹配您的特定处理器类型和指令集。您必须调用“ippInit()”函数才能自动初始化最适合当前正在运行的处理器的静态或动态库。

转码器

转码器是 Intel® IPP 函数的一个子集,专为数字媒体应用而设计。它是一个函数库,用于根据 MPEG-1、MPEG-2、MPEG-4、DV 和 H.261、H.263、H.264、AVS 和 VC-1 标准对视频数据进行编码和解码。这些函数具有便捷的接口,为编码和解码管道提供了合适的解决方案,并且与 Intel® IPP 的所有其他部分一样,旨在用于开发高性能的跨平台代码。

在视频监控行业,H.264 是最流行的编解码器,广泛用于对高帧率、高分辨率和低带宽有要求的应用。

下图说明了 H.264 解码器/编码器的基本组成部分。

图 6 – H.264 转码器基本组成部分

Intel® IPP 实现的 H.264 解码器函数很多。

Intel® IPP 函数 描述
ippiQuantLuma8x8_H264_16s_C1 对 8x8 亮度块系数执行量化,包括 8x8 变换归一化。
ippiQuantLuma8x8Inv_H264_16s_C1I 对 8x8 亮度块系数执行逆量化,包括后续 8x8 逆变换的归一化。
ippiDecodeCAVLCCoeffs_H264_1u16s 解码任何非色度 DC 系数 CAVLC 编码。
ippiDecodeCAVLCCoeffsIdxs_H264_1u16s 解码 CAVLC 编码的系数。ippiTransformDequantLumaDC_H264_16s_C1I 对 4x4 亮度 DC 系数执行整数逆变换和去量化。
ippiTransformDequantChromaDC_H264_16s_C1I 对 2x2 色度 DC 系数执行整数逆变换和去量化。
ippiPredictIntra_4x4_H264_8u_C1IR 对 4x4 亮度分量执行帧内预测。
ippiPredictIntra_16x16_H264_8u_C1IR 对 16x16 亮度分量执行帧内预测。
IppiMBReconstructHigh_32s16u 宏块重建。
IppiFilterDeblock_16u 去块滤波器。

H.264 编码器使用 H.264 解码器函数来计算帧间和帧内预测块、宏块重建以及去块滤波。正向变换和量化以及 CAVLC 编码由编码器函数执行。

有关这些函数的更多信息,请参阅 Intel® IPP 架构参考手册第二卷。有关 Intel® IPP 库中为第四代英特尔®酷睿™处理器(代号“Haswell”)优化的 Intel® IPP 函数列表的更多信息,请访问:http://software.intel.com/en-us/articles/haswell-support-in-intel-ipp

数据传输

多输入多输出 (MIMO) 是一种智能天线技术,用于无线电通信的收发设备。MIMO 使用多个天线发送多个并行信号。英特尔®系统工作室支持长期演进 (LTE) 无线传输中使用的多输入多输出算法。该算法接收接收器 (RX) 信号并返回估计的发送 (TX) 信号,以实现最小均方误差。在视频监控应用中使用 LTE MIMO 的优势包括提高数据速率、效率和输入摄像机的数量。

视频管理软件

将第四代英特尔酷睿处理器和英特尔®系统工作室与高度先进的视频管理软件 (VMS) 相结合,将为您带来优势。多线程和多处理等处理器特性可以与复杂的视频管理软件提供的先进视频压缩相结合,为您带来处理时间缩短、处理器资源优化和存储空间压缩等好处。

图 7 – 视频管理软件 (VMS) 功能模块

该框图显示了视频管理软件的通用功能。您可以使用 Intel® IPP 函数来增强这些功能中的任何一个。

Intel® IPP 的分割函数允许提取可以与实际对象匹配的图像部分。分水岭和梯度分割函数是基于区域的方法,用于将图像分割成不同的区域。背景/前景分割函数允许区分移动对象和背景的稳定区域。可以使用以下分割函数:

  • ippiLabelMarkers - 使用不同的值标记图像中的标记。
  • ippiSegmentWatershed - 使用标记执行分水岭图像分割

Intel® IPP 实现以下执行图像形态学运算的图像处理函数:

  • MorphologyInit - 为腐蚀或膨胀操作初始化形态学状态结构。
  • MorphologyGetSize - 为腐蚀或膨胀操作计算形态学状态结构的大小。

对象检测器基于 Haar 分类器。每个分类器使用 Haar 特征来决定图像区域是否看起来像预定义图像。以下 Intel® IPP 函数可用于在对象检测器中实现 Haar 特征:

  • HaarClassifierInitAlloc - 分配内存并为标准 Haar 分类器初始化结构。
  • ApplyHaarClassifier - 将 Haar 分类器应用于图像。

运动检测在任何视频监控应用中都起着基本作用,可以使用 Intel® IPP 的运动估计算法来计算以下内容:

  • 残差块 –(源块与预测块之间的差异)
  • 残差块的一些特征
  • 块的一些特征。这些特征可用于块的比较。

使用英特尔® C++ 编译器优化转码器和视频管理软件

英特尔® C++ 编译器是英特尔®系统工作室套件的一部分,它是一款高度优化的编译器,适用于英特尔®架构和兼容处理器技术。它可以为支持特定功能的处理器生成代码。使用英特尔编译器编译代码时,您可以使用的三种主要处理器特定优化选项是 march、x 和 ax 选项。下表说明了为支持 Intel® AVX2 指令的处理器生成代码的这些选项:

选项 描述
–march=core-avx2
(在 Linux* 上)
使用此选项会使编译器为支持 Intel® Advanced Vector Extensions 2 (Intel® AVX2)、Intel® AVX、SSE4.2、SSE4.1、SSE3、SSE2、SSE 和 SSSE3 指令的处理器生成代码。生成的可执行文件可以在指定的或更高版本的支持该指令集的英特尔®和其他兼容的非英特尔®处理器上运行。
–xCORE-AVX2
(在 Linux* 上)
从此处理器特定选项生成的执行文件只能在指定的或更高版本的英特尔®处理器上运行,因为它们包含特定于这些处理器的优化,并使用特定版本的流式 SIMD 扩展 (SSE) 指令集和/或英特尔®高级矢量扩展 (AVX) 指令集。使用此开关可以启用一些未在先前选项(-march=core-avx2)中启用的优化。
-axCORE-AVX2
(在 Linux* 上)
编译时使用此选项会在有性能优势的情况下为英特尔®处理器生成特定于功能的自动分派代码路径。处理器分派技术在执行时进行检查,以确定哪个处理器

使用英特尔® Vtune Amplifier 分析性能

英特尔 Vtune Amplifier 是英特尔系统工作室套件的一部分,非常适合识别代码中的性能瓶颈。它可以帮助检测算法或架构瓶颈。英特尔®系统工作室支持许多英特尔架构,包括第四代英特尔®酷睿™处理器架构。

要了解有关识别在第四代英特尔®酷睿™处理器上运行的软件的性能问题的更多信息,请参阅本文——在第四代英特尔®酷睿™处理器系列上使用英特尔® VTune™ Amplifier XE 调优软件

图 8 – 使用英特尔® Vtune Amplifier 分析应用程序

参考文献

优化声明修订版 #20110804

英特尔的编译器可能对非英特尔微处理器进行相同程度的优化,也可能不会。这些优化包括 SSE2、SSE3 和 SSSE3 指令集以及其他优化。英特尔不保证在非英特尔制造的微处理器上进行任何优化的可用性、功能或有效性。本产品中的微处理器相关优化仅供英特尔微处理器使用。某些非英特尔微体系结构特有的优化保留给英特尔微处理器。有关本声明涵盖的具体指令集的更多信息,请参阅适用的产品用户和参考指南。

© 2014,英特尔公司。保留所有权利。Intel、Intel 徽标、VTune、Cilk、Atom、Core 和 Xeon 是英特尔公司在美国和其他国家/地区的商标。*其他名称和品牌可能被声明为他人财产。

使用英特尔®系统工作室在第四代英特尔®酷睿™处理器上构建数字安全与监控 - CodeProject - 代码之家
© . All rights reserved.