苹果框架学习(一)Accelerate.framework

文章目录

  • 苹果框架学习(一)Accelerate.framework
  • 1. Accelerate简介
  • 1. 神经网络
    • 1.1 训练神经网络识别数字
    • 1.2 BNNS
  • 2. 目录、文件和数据存档
    • 2.1 压缩一个文件
    • 2.2 解压单文件
    • 2.3 压缩文件系统目录
    • 2.4 解压缩和解压存档目录
    • 2.5 将字符串压缩并保存到文件系统
    • 2.6 解压缩和解析归档字符串
  • 3. 压缩
    • 3.1 使用缓冲区压缩压缩和解压数据
    • 3.2 压缩字符串,将其写入文件系统,然后使用缓冲区压缩解压相同的文件。
    • 3.3 用输入和输出过滤器压缩和解压数据
    • 3.4 压缩和解压文件与Swift流压缩
  • 4. 图像处理要点
    • 4.1 创建一个核心图形图像格式
    • 4.2 从核心图形图像创建和填充缓冲区
    • 4.3 从vImage缓冲区创建一个核心图形图像
    • 4.4 构建一个基本的图像处理工作流
    • 4.5 将vImage操作应用到感兴趣的区域
    • 4.6 优化图像处理性能
    • 4.7 vImage
  • 5. 信号处理要点
    • 5.1 用Stride控制vDSP操作
    • 5.2 使用线性插值来构造新的数据点
    • 5.3 利用vDSP实现基于矢量的算法
    • 5.4 用抽取法重新采样信号
    • 5.5 vDSP
  • 6. 核心视频互操作
    • 6.1 读取和写入核心视频像素缓冲区
    • 6.2 应用vImage操作的视频样本缓冲区
    • 6.3 实时视频效果与vImage
    • 6.4 核心视频互操作性
  • 7. 向量、矩阵和四元数
    • 7.1 使用向量
    • 7.2 使用矩阵
    • 7.3 使用四元数
    • 7.4 通过改变立方体的顶点来旋转它
    • 7.5 simd
  • 8. 傅里叶变换和余弦变换
    • 8.1 求复合正弦波的各分量频率
    • 8.2 使用窗口与离散傅里叶变换
    • 8.3 噪声信号提取
    • 8.4 半色调降噪与二维快速傅里叶变换
    • 8.5 快速傅里叶变换
    • 8.6 离散傅里叶变换
    • 8.7 离散余弦变换
  • 9. 音频处理
    • 9.1 均衡音频与vDSP
    • 9.2 双二次IIR滤波器
    • 9.3 离散余弦变换
  • 10. 图像格式之间的转换
    • 10.1 构建一个基本的转换工作流
    • 10.2 转换彩色图像到灰度
    • 10.3 标准化处理的任意图像格式
    • 10.4 将亮度和色度平面转换为ARGB图像
    • 10.5 转换
  • 11. 图像重采样
    • 11.1 在vImage重采样
    • 11.2 减少再采样图像中的伪影
    • 11.3 图像剪切
  • 12. 卷积和形态
    • 12.1 模糊图像
    • 12.2 增加散景效果
    • 12.3 卷积
    • 12.4 形态
  • 13. 色彩和色调调整
    • 13.1 调整图像的亮度和对比度
    • 13.2.调整饱和度和应用色调映射
    • 13.3 调整图像的色调
    • 13.4 用vImage指定直方图
    • 13.5 变换
  • 13.6 柱状图
  • 14. vImage / vDSP互操作性
    • 14.1 在一系列捕获的图像中找到最清晰的图像
    • 14.2 将声音可视化为声谱图
  • 15. 稀疏矩阵
    • 15.1 创建稀疏矩阵
    • 15.2 实现迭代的方法
    • 15.3 用直接方法解决系统
    • 15.4 用迭代方法求解系统
    • 15.5 创建一个稀疏矩阵从坐标格式数组
    • 15.6 稀疏的解决者
  • 16. 算术和超越函数
  • 17. 线性代数
    • 17.1 用Vandermonde方法求插值多项式
    • 17.2 BLAS
  • 18. 明确的集成
  • 19. 枚举
  • 20. 协议

苹果框架学习(一)Accelerate.framework

1. Accelerate简介

Accelerate框架能做什么?

进行大规模的数学计算和图像计算,优化为高性能和低能耗。

通过利用其向量处理能力,Accelerate在CPU上提供高性能、节能的计算。下面的加速库抽象了这种能力,使为它们编写的代码在运行时执行适当的处理器指令:

  • BNNS. 为训练和推理而构造和运行神经网络的子程序。

  • vImage。广泛的图像处理功能,包括核心图形和核心视频互操作、格式转换和图像处理。

  • vDSP。数字信号处理函数,包括一维和二维快速傅里叶变换、双二次滤波、向量和矩阵运算、卷积和类型转换。

  • vForce。在向量上执行算术和超越函数的函数。

  • Sparse Solvers, BLAS,,和LAPACK。在稀疏和密集矩阵上执行线性代数的库。

虽然不是加速框架的一部分,以下库是密切相关的:

  • 苹果公司存档(Apple Archive. )。对目录、文件和数据执行多线程无损压缩的框架。

  • 压缩(Compression)。支持LZFSE、LZ4、LZMA和ZLIB算法的无损数据压缩算法。

  • simd。一种对小向量和矩阵进行计算的模块。

1. 神经网络

1.1 训练神经网络识别数字

苹果官方训练神经网络识别数字demo:点击这里下载

建立一个简单的神经网络,训练它识别随机产生的数字。

1.2 BNNS

BNNS
实现和运行训练和推理的神经网络。

加速框架的BNNS库是一个函数集合,您可以使用它来构建用于训练和推理的神经网络。macOS、iOS、tvOS和watchOS都支持它。BNNS为这些平台上支持的所有cpu提供了高性能和低能耗优化例程。

2. 目录、文件和数据存档

2.1 压缩一个文件

压缩一个文件
压缩一个文件并将结果存储在文件系统上。

2.2 解压单文件

解压单文件
从压缩文件重新创建单个文件。

2.3 压缩文件系统目录

压缩文件系统目录
压缩整个目录的内容,并将结果存储在文件系统上。

2.4 解压缩和解压存档目录

解压缩和解压存档目录
Recreate an entire file system directory from an archive file.

2.5 将字符串压缩并保存到文件系统

将字符串压缩并保存到文件系统
压缩Unicode字符串的内容并将结果存储在文件系统中。

2.6 解压缩和解析归档字符串

解压缩和解析归档字符串
从存档文件重新创建字符串

3. 压缩

3.1 使用缓冲区压缩压缩和解压数据

使用缓冲区压缩压缩和解压数据
压缩字符串,将其写入文件系统,然后使用缓冲区压缩解压相同的文件。

3.2 压缩字符串,将其写入文件系统,然后使用缓冲区压缩解压相同的文件。

压缩字符串,将其写入文件系统,然后使用缓冲区压缩解压相同的文件。
根据文件的路径扩展名对文件执行压缩或适当的解压。

3.3 用输入和输出过滤器压缩和解压数据

用输入和输出过滤器压缩和解压数据
使用输入和输出过滤器压缩和解压流数据或来自内存的数据。

3.4 压缩和解压文件与Swift流压缩

压缩和解压文件与Swift流压缩
对所有文件执行压缩,对扩展类型支持的文件执行解压缩。

4. 图像处理要点

4.1 创建一个核心图形图像格式

创建一个核心图形图像格式
为vImage之间的转换提供核心图形图像格式的描述。

4.2 从核心图形图像创建和填充缓冲区

从核心图形图像创建和填充缓冲区
从核心图形图像初始化vImage缓冲区。

4.3 从vImage缓冲区创建一个核心图形图像

从vImage缓冲区创建一个核心图形图像
创建vImage缓冲区的可显示表示。

4.4 构建一个基本的图像处理工作流

构建一个基本的图像处理工作流
用vImage调整图像的大小。

4.5 将vImage操作应用到感兴趣的区域

将vImage操作应用到感兴趣的区域
将vImage操作的效果限制在感兴趣的矩形区域。

4.6 优化图像处理性能

优化图像处理性能
改善你的应用程序的性能转换图像缓冲格式从交错到平面。

4.7 vImage

vImage
使用CPU的向量处理器处理大型图像。

5. 信号处理要点

5.1 用Stride控制vDSP操作

用Stride控制vDSP操作
定期选择性地对向量的元素进行操作。

5.2 使用线性插值来构造新的数据点

使用线性插值来构造新的数据点
使用线性插值来填补数值数据数组中的空白。

5.3 利用vDSP实现基于矢量的算法

利用vDSP实现基于矢量的算法
用vDSP矢量-矢量和矢量-标量运算提高了常见数学任务的性能。

5.4 用抽取法重新采样信号

用抽取法重新采样信号
通过指定抽取因子和应用自定义抗混叠滤波器来降低信号的采样率。

5.5 vDSP

vDSP
在大矢量上进行基本的算术运算和常用的数字信号处理程序。

6. 核心视频互操作

6.1 读取和写入核心视频像素缓冲区

读取和写入核心视频像素缓冲区
在核心视频像素缓冲器和vImage缓冲器之间传输图像数据,以集成vImage操作到核心图像工作流

6.2 应用vImage操作的视频样本缓冲区

应用vImage操作的视频样本缓冲区
使用vImage的any-to-any功能来对从设备摄像头流出的视频帧进行实时图像处理。

6.3 实时视频效果与vImage

实时视频效果与vImage
使用vImage应用效果的视频馈送实时。

6.4 核心视频互操作性

核心视频互操作性
在Core Video和vImage之间传递图像数据。

7. 向量、矩阵和四元数

7.1 使用向量

使用向量
使用向量来计算几何值,计算点积和叉积,以及在值之间进行插值。

7.2 使用矩阵

使用矩阵
解联立方程,在空间中变换点。

7.3 使用四元数

使用四元数
旋转球体表面上的点,并在它们之间插入。

7.4 通过改变立方体的顶点来旋转它

通过改变立方体的顶点来旋转它
使用四元数插值将立方体旋转到一系列关键帧之间进行转换。

7.5 simd

simd
对小向量和矩阵进行计算。

8. 傅里叶变换和余弦变换

8.1 求复合正弦波的各分量频率

求复合正弦波的各分量频率
使用一维快速傅里叶变换计算信号的频率成分。

8.2 使用窗口与离散傅里叶变换

使用窗口与离散傅里叶变换
将信号数据与窗序列值相乘以减少频谱泄漏。

8.3 噪声信号提取

噪声信号提取
使用加速的离散余弦变换去噪信号。

8.4 半色调降噪与二维快速傅里叶变换

半色调降噪与二维快速傅里叶变换
减少或删除图像中的周期性工件。

8.5 快速傅里叶变换

快速傅里叶变换
将时域和空域复数值的向量和矩阵变换到频域,反之亦然。

8.6 离散傅里叶变换

离散傅里叶变换
将时域和空域复数值的向量变换到频域,反之亦然。

8.7 离散余弦变换

离散余弦变换
将时域和空域的实值向量变换到频域,反之亦然。

9. 音频处理

9.1 均衡音频与vDSP

均衡音频与vDSP
形状音频输出使用离散余弦变换和双二次滤波器。

9.2 双二次IIR滤波器

双二次IIR滤波器
对单通道和多通道数据应用双二次滤波器。

9.3 离散余弦变换

离散余弦变换
将时域和空域的实值向量变换到频域,反之亦然。

10. 图像格式之间的转换

10.1 构建一个基本的转换工作流

构建一个基本的转换工作流
通过将CMYK图像转换为RGB图像,学习转换任意到任意函数的基本原理。

10.2 转换彩色图像到灰度

转换彩色图像到灰度
转换彩色图像到灰度使用矩阵乘法。

10.3 标准化处理的任意图像格式

标准化处理的任意图像格式
转换资产与不同的颜色空间和位深度到一个标准的工作格式应用vImage操作。

10.4 将亮度和色度平面转换为ARGB图像

将亮度和色度平面转换为ARGB图像
从设备的摄像头提供的亮度和色度信息创建一个可显示的ARGB图像。

10.5 转换

转换
将图像转换为不同的格式。

11. 图像重采样

11.1 在vImage重采样

在vImage重采样
了解vImage如何在几何操作期间对图像数据重新采样。

11.2 减少再采样图像中的伪影

减少再采样图像中的伪影
当使用自定义重采样过滤器缩放图像时,避免由默认的Lanczos算法引入的振铃效应。

11.3 图像剪切

图像剪切
水平和垂直剪切图像。

12. 卷积和形态

12.1 模糊图像

模糊图像
过滤器图像与自定义和高速内核卷积。

12.2 增加散景效果

增加散景效果
应用膨胀模拟散景效应。

12.3 卷积

卷积
对图像应用卷积核。

12.4 形态

形态
膨胀和侵蚀图像。

13. 色彩和色调调整

13.1 调整图像的亮度和对比度

调整图像的亮度和对比度

使用函数来应用线性或指数曲线。

13.2.调整饱和度和应用色调映射

调整饱和度和应用色调映射

将RGB图像转换为离散亮度和色度通道,并应用颜色和对比度处理。

13.3 调整图像的色调

调整图像的色调

转换一个RGB图像到Lab*色彩空间和应用色调调整。

13.4 用vImage指定直方图

用vImage指定直方图

计算一幅图像的直方图,并将其应用于另一幅图像。

13.5 变换

变换

对图像应用颜色转换。

13.6 柱状图

柱状图

计算和或操作图像的直方图。

14. vImage / vDSP互操作性

14.1 在一系列捕获的图像中找到最清晰的图像

在一系列捕获的图像中找到最清晰的图像
共享图像数据之间的vDSP和vImage计算最锐的图像从括号照片序列。

14.2 将声音可视化为声谱图

将声音可视化为声谱图
在vDSP和vImage之间共享图像数据,使设备麦克风捕获的音频可视化。

15. 稀疏矩阵

15.1 创建稀疏矩阵

创建稀疏矩阵
为分解和求解系统创建稀疏矩阵。

15.2 实现迭代的方法

实现迭代的方法
使用迭代方法比直接方法更快地解决大问题,并以更低的内存开销。

15.3 用直接方法解决系统

用直接方法解决系统
使用直接方法来解决系数矩阵是稀疏的方程组。

15.4 用迭代方法求解系统

用迭代方法求解系统
使用迭代方法来求解系数矩阵是稀疏的方程组。

15.5 创建一个稀疏矩阵从坐标格式数组

创建一个稀疏矩阵从坐标格式数组
使用单独的坐标格式数组来创建稀疏矩阵。

15.6 稀疏的解决者

稀疏的解决者
解系数矩阵是稀疏的方程组。

16. 算术和超越函数

vecLib
在大向量上执行计算。

17. 线性代数

17.1 用Vandermonde方法求插值多项式

用Vandermonde方法求插值多项式
利用LAPACK求解一个线性系统,并找到一个插值多项式在一系列已知数据点之间构造新的点。

17.2 BLAS

BLAS
苹果实现的基本线性代数子程序(BLAS)。

18. 明确的集成

Quadrature
在有限或无限区间上近似函数的定积分。

19. 枚举

BNNS
充当到BNNS的Swift覆盖的命名空间的枚举。

Base Classes

  • class BNNS.Layer
    The base class for layer objects that wrap filters and manage deinitialization.
  • class BNNS.UnaryLayer
    The base class for layers that accept a single input.
  • class BNNS.BinaryLayer
    The base class for layers that accept two inputs.

Type Methods

  • static func applyActivation(activation: BNNS.ActivationFunction, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, batchSize: Int, filterParameters: BNNSFilterParameters?)
    Applies the specified activation function.
  • static func applyInTopK(k: Int, input: BNNSNDArrayDescriptor, testIndices: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axis: Int, batchSize: Int, filterParameters: BNNSFilterParameters?)
    Applies an in-top-k filter directly to an input.
  • static func applyReduction(BNNS.ReductionFunction, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, weights: BNNSNDArrayDescriptor?, filterParameters: BNNSFilterParameters?)
    Applies the specified reduction function.
  • static func applyTopK(k: Int, input: BNNSNDArrayDescriptor, bestValues: BNNSNDArrayDescriptor, bestIndices: BNNSNDArrayDescriptor, axis: Int, batchSize: Int, filterParameters: BNNSFilterParameters?)
    Applies a top-k filter directly to an input.
  • static func compare(BNNSNDArrayDescriptor, BNNSNDArrayDescriptor, using: BNNS.RelationalOperator, output: BNNSNDArrayDescriptor)
    Performs an elementwise comparison of two array descriptors using the specified relational operator.
  • static func copy(BNNSNDArrayDescriptor, to: BNNSNDArrayDescriptor, filterParameters: BNNSFilterParameters?)
  • static func transpose(input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, firstTransposeAxis: Int, secondTransposeAxis: Int, filterParameters: BNNSFilterParameters?)

Classes
class BNNS.ActivationLayer
A layer object that wraps an activation filter and manages its deinitialization.
class BNNS.BinaryArithmeticLayer
A layer object that wraps a binary arithmetic filter and manages its deinitialization.
class BNNS.BroadcastMatrixMultiplyLayer
A layer object that wraps a broadcast matrix multiply filter and manages its deinitialization.
class BNNS.ConvolutionLayer
A layer object that wraps a convolution filter and manages its deinitialization.
class BNNS.DropoutLayer
A layer object that wraps a dropout filter and manages its deinitialization.
class BNNS.FullyConnectedLayer
A layer object that wraps a fully connected filter and manages its deinitialization.
class BNNS.FusedConvolutionNormalizationLayer
A layer object that wraps a fused, convolution normalization layer and manages its deinitialization.
class BNNS.FusedFullyConnectedNormalizationLayer
A layer object that wraps a fused, fully connected normalization layer and manages its deinitialization.
class BNNS.FusedLayer
The base class for fused convolution-normalization and fully connected-normalization layers.
class BNNS.GramLayer
A layer object that wraps a Gram matrix filter and manages its deinitialization.
class BNNS.LossLayer
A layer object that wraps a loss filter and manages its deinitialization.
class BNNS.NormalizationLayer
A layer object that wraps a normalization filter and manages its deinitialization.
class BNNS.PaddingLayer
A layer object that wraps a padding filter and manages its deinitialization.
class BNNS.PermuteLayer
A layer object that wraps a permute filter and manages its deinitialization.
class BNNS.PoolingLayer
A layer object that wraps a pooling filter and manages its deinitialization.
class BNNS.ReductionLayer
A layer object that wraps a reduction filter and manages its deinitialization.
class BNNS.ResizeLayer
A layer object that wraps a resize filter and manages its deinitialization.
class BNNS.UnaryArithmeticLayer
A layer object that wraps a unary arithmetic filter and manages its deinitialization.

Structures
struct BNNS.AdamOptimizer
An optimizer that uses the Adam optimization algorithm.
struct BNNS.RMSPropOptimizer
An optimizer that uses the root-mean-square prop (RMSProp) optimization method.
struct BNNS.RelationalOperator
Constants that describe relational operations.
struct BNNS.SGDMomentumOptimizer
An optimizer that uses the stochastic gradient descent (SGD) with the momentum optimization method.

Enumerations
enum BNNS.ActivationFunction
Constants that describe activation functions.
enum BNNS.ArithmeticBinaryFunction
Constants that describe binary arithmetic functions.
enum BNNS.ArithmeticUnaryFunction
Constants that describe unary arithmetic functions.
enum BNNS.ConvolutionPadding
Constants that describe convolution padding modes.
enum BNNS.ConvolutionType
Constants that describe convolution types.
enum BNNS.DataLayout
Constants that describe the data layout of an n-dimensional array descriptor shape.
enum BNNS.DescriptorType
Constants that describe the input and output types of an arithmetic operation.
enum BNNS.Error
enum BNNS.InterpolationMethod
enum BNNS.LearningPhase
Constants that describe the learning phase of a normalization operation.
enum BNNS.LossFunction
Constants that describe loss functions.
enum BNNS.LossReduction
An enumeration that describes loss reduction functions.
enum BNNS.NormalizationType
Constants that describe normalization types.
enum BNNS.PaddingMode
Constants that define padding modes.
enum BNNS.PoolingType
Constants that describe pooling types.
enum BNNS.ReductionFunction
Constants that describe reduction functions.
enum BNNS.Shape
Constants that describe the size and data layout of an n-dimensional array descriptor.

20. 协议

protocol BNNSOptimizer

protocol BNNSScalar

你可能感兴趣的:(Apple,文档)