导语: OCR 在通用文字识别等场景下有广泛应用, 基于 FPGA 异构加速的 OCR 识别相比 CPU/GPU 实现具有延时小成本低的优势我们设计了多 FPGA 芯片协同的异构加速架构, 能快速适配业务 OCR 模型变化, 检测识别整体性能为 GPU P4 130%, 处理延时仅为 P4 的 1/10,CPU 的 1/30
1. 文字识别技术 - OCR
OCR 技术, 通俗来讲就是从图像中检测并识别字符的一种方法, 在证通用文字识别书籍电子化自动信息采集证照类识别等应用场景中得到了广泛应用通用场景的 OCR 因此通用场景下的 OCR 技术一直都是人工智能领域挑战性极强的研究领域, 不需要针对特殊场景进行定制, 可以识别任意场景图片中的文字
通用 OCR 技术包含两大关键技术: 文本检测和文字识别检测模型的作用简单来说就是确定图片中哪里有字, 并把有字的区域框出来文字识别是将文本检测 box 作为输入, 识别出其中的字符
近年来深度学习逐渐被应用到音频视频以及自然语言理解等时序数据建模的领域通过深度学习的端到端学习提升 Sequence Learning 的效果已经成为当前研究的热点基本思路是 CNN 与 RNN 结合: CNN 被用于提取有表征能力的图像特征, 将 RNN 的序列化特性引入到文本检测, 增加了文本检测候选区域的上下文信息, 可以有效地提升文本检测任务的性能 CNN+RNN 的混合网络将文本串识别领域的效果推到了一个新的高度
图 1:CRNN 网络结构
* 上图引用自 An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
我们以目前应用十分广泛的 CRNN 模型为例, 它是 DCNN 和 RNN 的组合, 可以直接从序列标签学习, 不需要详细的标注; 比标准 DCNN 模型包含的参数要少很多同时 CRNN 在图像特征和识别内容序列之间严格保序, 擅长识别字分割比较困难的文字序列
架构包括三部分:
1) 卷积层, 从输入图像中提取特征序列, 将图像进行空间上的保序压缩, 相当于沿水平方向形成若干切片, 每个切片对应一个特征向量;
2) 循环层, 预测每一帧的标签分布; 采用双层双向的 LSTM, 进一步学习上下文特征, 据此得到切片对应的字符类别
3) Transcription 层, 利用 CTC 和前向后向算法求解最优的 label 序列
2. OCR 加速架构
依赖于 FPGA 的可编程性高性能以及高通信带宽, 我们设计了一个多 FPGA 芯片协同的异构加速架构单一芯片针对一种类型的模型进行深度定制优化, 不同芯片之间通过负载均衡以及流水化来完成整个混合模型的加速过程
图 2:OCR 加速硬件架构
FPGA 0 配置为通用的 CNN 加速架构
FPGA 1 配置为通用的 LSTM 加速架构
对于计算量较小的 FC 使用 CPU 进行计算, 保持模型灵活性
FPGA 与服务器 CPU 通过 PCIe Gen3 进行数据通信, 负载均衡由 CPU 进行控制
FPGA 间通过 AURORA 轻量级协议进行数据交换, 数据交换延时 ns 级, 类似不同板卡间内存共享
平台后续升级可支持服务器间的多任务并行 / 流水调度
为特定的深度学习模型进行底层深度架构优化, 通过架构层面上的优化来充分发挥异构加速器件的性能, 达到最大的计算收益
3. 通用加速器引擎
针对 CNN 以及 LSTM 这两类最常用的深度学习算法, 我们设计了两种加速架构; 每种架构能够通过指令集 + 基本算子的形式, 能够较为灵活的支持各类模型变种
3.1 CNN 计算引擎
CNN 模型的核心计算是 Kernel 在 input feature map 滑窗进行 3D 卷积计算, Kernel 数据复用率高, 整体计算密度大
CNN 加速器当前版本基于 Xilinx Ku115 芯片设计, PE 计算单元由 4096 个工作在 500MHz 的 MAC dsp 核心构成 KU115 芯片由两个 DIE 对堆叠而成, 加速器平行放置了两组处理单元 PE 每个 PE 由 4 组 32x16=512 的 MAC 计算 DSP 核心组成的 XBAR 构成
计算架构设计的关键在于提高数据复用率来提升 DSP 计算效率, 实现模型权重复用和各 layer feature map 的复用
其基本组织框架如下图所示:
图 3:CNN 计算引擎架构
3.2 LSTM 计算引擎
LSTM 模型的核心是向量 * 矩阵及对应各 gate 的激活函数权重矩阵数据量大, 同时时间序列上数据存在前后依赖关系, 模型中可挖掘的的计算并行度小
LSTM 加速器当前版本基于 Xilinx Ku115 芯片设计, PE 计算单元由 4096 个工作在 300MHz 的 MAC dsp 核心构成对于核心 PE 单元, 我们将其细分为 64 个 bank, 每一个 bank 由 64 个级联的 DSP 组成, 利用 DSP 特性完成向量乘法过程中的乘累加过程
计算架构设计的关键在于降低访存消耗在控制部分, 需要控制好 ROW A 和 Col B 的数据 pipeline 输入, 保证计算数据之间的匹配; 在 PE 输出端需要把控好激活函数的并行性, 保证模型计算流水线的高效性
其基本组织框架如下图所示:
图 4:LSTM 计算引擎架构
4. 性能对比
对于使用者而言, FPGA 平台性能开发周期以及易用性究竟如何呢?
性能
CNN 加速平台, 峰值计算性能为 4Tops, 模型 inference latency 为 GPU P4 的 1/10
LSTM 模型中, 峰值计算性能为 2.4Tops,FPGA 2us 内可以完成一次核心矩阵为 1024*512 的计算过程 (8 次 1*1024 与 1024*512 向量乘矩阵及相关的激活函数)
易用性
FPGA 加速器对底层加速过程进行封装, 向上对加速平台的业务方提供易用 SDK 业务方调用简单的 API 函数即可完成加速操作, 对业务自身逻辑几乎无任何改动
如果线上模型需要改动, 只需调用模型初始化函数, 将对应的模型指令集初始化 FPGA 即可, 加速业务可以在几秒内进行切换
硬件加速开发周期
底层 CNN 加速平台以及 LSTM 加速平台, 架构通过模型映射指令集的方式进行加速
对于经典模型及标准 layer 自研的算法变种, 现有加速架构已经可以支持, 可以在一天内通过编译器实现模型对应指令集, 实现部署上线;
对于自研的特殊模型, 例如不对称卷积算子或 LSTM 特殊结构, 需要根据实际模型结构在本平台上进行相关算子迭代开发, 开发周期可缩短在一到两周之内进行支持
5. 结语
目前 OCR 技术在证件识别快递单扫描信息安全审核等领域有着广泛的应用架构平台部 FPGA 团队研发的 OCR 硬件加速解决方案, 提供低成本实时性 AI 计算加速, 将持续助力公司内各业务发展
在云端, 2017 年初, 我们在腾讯云首发了国内第一台 FPGA 公有云服务器, 我们将会逐步把基础 AI 加速能力推出到公有云上
AI 异构加速的战场很大很精彩, 为公司内及云上业务提供最优的解决方案是架平 FPGA 团队持续努力的方向
来源: https://cloud.tencent.com/developer/article/1006804