论文部分内容阅读
随着卷积神经网络的在各个领域的成功应用,在计算力和内存资源有限的移动设备上运行卷积神经网络模型的需求也越来越大,因此需要发展高效模型以及针对移动设备优化的高性能神经网络前向计算框架。本文针对卷积神经网络应用于移动设备存在的问题,结合了软硬件的优化方案,包括通过采用改进的轻量级网络模型以及对部分算子进行手工NEON汇编优化指定向量寄存器运行计算,在低成本嵌入式移动设备上(如树莓派、RK3399和安卓移动设备)实现了实时目标检测、文本检测和文本识别;在硬件层面,采用NCNN前向推理框架运行,对于全连接层算子,手工优化ARM NEON汇编指令,指定向量寄存器进行乘加法计算,多线程运行方案。具体研究内容和结论如下:目标检测采用改进one-stage的SSD(Single Shot MultiBox Detector)算法,将原算法中的VGG16特征提取网络算法替换成轻量级MobileNetV3Large算法。改进的目标检测算法在Caffe和Pytorch深度学习框架平台上训练后,经过NCNN前向推理框架转换后,融合BN,Scale和ReLU算子后的模型参数大小为10M。当输入300×300像素的图片时,在小米9安卓设备上目标检测速度为42ms。文本检测采用改进的AdvancedEAST算法,同样将VGG16特征提取网络算法替换成MobileNetV3Large算法,改进后的文本检测算法在Caffe和Pytorch框架平台上训练后,经过NCNN前向推理框架转换后,融合BN,Scale和ReLU算子后的模型参数大小为8.2M,在小米9安卓设备上单帧运行速度为29ms。文本识别采用改进的CRNN算法,将backbone特征提取网络替换为部分MobileNetV3Large算法,改进后输入维度为32×128像素的图片,输出为4×16的特征图结构。将生成的Caffe模型经过NCNN前向推理框架转换后,带LSTM层的模型参数大小为10M左右,不带LSTM层的模型参数大小仅2.8M。通过手工NEON汇编优化GEMM矩阵算法,指定寄存器进行乘加运算,不带LSTM层的模型在32位系统树莓派3设备上,单帧识别10个字符的速度为37ms,在64位系统RK3399设备上速度为27ms,小米9安卓设备上速度为12ms。通过软硬件的优化后的目标检测、文本检测以及文本识别方面在移动设备上基本达到了实时运行的效果,这样可以极大的节约了成本,并且在保证识别精度下,能够满足实际应用的需求。