概述
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点,图像属性中的显著变化通常反映了属性的重要事件和变化,包括深度上的不连续、表面方向的不连续、物质属性变化和场景照明变化。边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域,下图给出了边缘检测的例子,从左往右分别是原始图像、人工标注的边缘和本文预测的边缘。
图1 边缘检测示例
案例简介
本章案例属于边缘检测应用,旨在华为 Atlas 200 开发平台(Atlas 200 Developer Kit,以下简称 Atlas 200DK)上实现基于RCF的图像边缘检测,流程如下:
其中各个模块的主要功能点如下所示:
1) 运行管理资源申请:用于初始化系统内部资源,固定的调用流程。
2) 加载模型文件并构建输出内存:从文件加载离线模型rcf.om数据,需要由用户自行管理模型运行的内存,根据内存中加载的模型获取模型的基本信息包含模型输入、输出数据的数据buffer大小;由模型的基本信息构建模型输出内存,为接下来的模型推理做好准备。
3) 数据预处理:对读入的图像数据进行预处理,然后构建模型的输入数据。
4) 模型推理:根据构建好的模型输入数据进行模型推理。
5) 解析推理结果:根据模型输出,解析模型的推理结果,保存边缘检测后图像。
模型介绍
边缘检测采用 RCF 模型,它以 VGG16 作为骨架网络。RCF 模型移除了 VGG16 网络的最后一个池化层和之后的全连接层,剩下的13个卷积层被4个池化层分隔成五个卷积阶段,分别包含 2、2、3、3、3 个卷积层。RCF 模型的原理即是融合每个卷积阶段的所有卷积层生成的特征来进行边缘检测,然后将五个阶段的结果融合起来。RCF 模型详细结构如下图所示。其中,k x k – c 表示一个卷积核大小为 k x k、通道数为 c 的卷积层;deconv 表示反卷积 层,参数固定为双线性核,用来实现特征图的上采样;concat 表示将多个特征图在通道维度 上叠加起来。