POWER: 迈向边缘智能图像识别的框架
1. 硬件组件规格
为了实现边缘智能图像识别,我们需要特定的硬件组件。以下是相关组件的规格:
| 组件 | 类型 | 数量 | 规格 |
| — | — | — | — |
| 处理器 | XC7Z030 - FF676 | 1 | 27 mm × 27 mm |
| DDR3 | MT41J256M16RH - 15E | 2 | 1 GByte, 32 bit, 9 × 10.5 mm |
| Flash | N25Q128A13E1241F | 1 | 128 Mb, 4 bit, 6 × 8 mm |
| SRAM | CY7C1061G30 - 10BVXI | 2 | 4 MByte, 32 bit, 10 ns |
| Micro SD | 1041681620 | 1 | 1 GByte, 13 × 17.8 mm |
| 千兆以太网 | 88E1512 | 1 | RJ45, 8 × 8 mm |
| RJ45 | L829 - 1J1T - 43 | 1 | 17.58 × 24 mm |
| UART 接口 | GPIO | 1 | TTL 电压; 4 × 4 mm |
| 电源 | LTC3374 | 1 | 1.8 V@2 A, 5 × 7 mm + 4 × 4 mm/ch |
| | TPS54618 | 1 | 1 V@6 A, 3 mm × 3 mm |
| | TPS51200 | 1 | 0.75 V, 3 mm × 3 mm |
| | TYPE C: 105450 - 0101 | 1 | 5 V@2 A, 8 mm × 9 mm |
2. 变电站巡检机器人智能目标识别案例背景
变电站巡检机器人的一个重要功能是准确检测和识别变电站内的目标,如关键设备上安装的仪表。传统基于特征的方法在检测和识别仪表时效果不佳,存在识别准确率低、网络带宽有限和实时性能差等问题。
为解决这些问题,基于 POWER 框架的边缘智能固件可以部署在硬件模块上,并嵌入到变电站巡检机器人中,以实现及时的仪表检测和识别,降低带宽需求并提高实时性能。同时,基于深度学习的目标检测算法可以提高检测精度,通过在仪表区域进行关键点匹配进一步提高识别成功率。
3. 用于仪表检测的深度神经网络结构设计与训练
3.1 目标检测方法
目标检测是计算机视觉的一个重要课题,基于 CNN 的目标检测算法可以在同一框架下提取特征和检测目标,通过优化损失函数自动提取特征,大大提高了目标检测的性能。
基于深度 CNN 有两种流行的方法:
-
两阶段方法
:分两个阶段进行,第一阶段使用区域提议网络(RPN)找出可能包含目标的区域,第二阶段准确检测和分类目标。例如 R - CNN 及其变体(如 Fast - RCNN 和 Faster - RCNN)。
-
单阶段方法
:通常被认为是对两阶段方法的改进,省去了第一阶段以加速算法。例如 SSD 和 YOLO。
3.2 算法性能比较
为了选择适合仪表检测的基本网络,我们对 Faster - RCNN 和 SSD 这两种代表性算法进行了实验比较:
| 方法 | 精度 | 召回率 | 时间成本 | 每秒帧数 |
| — | — | — | — | — |
| Faster - RCNN(两阶段) | 93% | 85% | 850 ms | 1.17 |
| SSD(单阶段) | 90% | 90% | 100 ms | 10 |
从表格中可以看出,Faster - RCNN 的精度略高于 SSD,但 SSD 的召回率更高,且速度约为 Faster - RCNN 的 8 倍。因此,两阶段方法不太适合实时目标检测,我们选择调整标准 SSD 网络结构来构建用于仪表检测的神经网络。
3.3 SSD 网络结构优化
为了优化 SSD 网络结构,我们考虑了以下两种方法:
- 调整前馈网络结构:由于许多前馈网络(如 GoogLeNet)不适合在计算资源有限的机器人上运行,我们采用了类似 VGG 的 24 层全卷积网络,由多个 3 × 3 卷积层和最大池化层组成。
- 调整网络分支数量:理论上,更多的分支可以检测更多的目标,召回率更高但精度更低;分支越少则相反。同时,分支和层数越多,计算量越大。我们对不同分支的 SSD 性能进行了实验比较:
| 方法 | 精度 | 召回率 | 时间成本 |
| — | — | — | — |
| 3 分支 | 91% | 81% | 92 ms |
| 5 分支 | 90% | 90% | 100 ms |
| 6 分支 | 86% | 92% | 115 ms |
综合考虑,我们选择 5 分支的 SSD 来训练模型,并对其各层参数进行了调整,具体参数如下:
| 层名称 | 宽度 | 高度 | 输入通道 | 输出通道 | 卷积核 |
| — | — | — | — | — | — |
| conv1 1 | 256 | 256 | 3 | 16 | 3 × 3 |
| conv1 2 | 256 | 256 | 16 | 32 | 3 × 3 |
| conv2 1 | 128 | 128 | 32 | 32 | 3 × 3 |
| conv2 2 | 128 | 128 | 32 | 32 | 3 × 3 |
| conv3 1 | 64 | 64 | 32 | 48 | 3 × 3 |
| conv3 2 | 64 | 64 | 48 | 48 | 3 × 3 |
| conv3 3 | 64 | 64 | 48 | 48 | 3 × 3 |
| conv4 1 | 32 | 32 | 48 | 64 | 3 × 3 |
| conv4 2 | 32 | 32 | 64 | 64 | 3 × 3 |
| conv4 3 | 32 | 32 | 64 | 96 | 3 × 3 |
| conv4 loc | 32 | 32 | 96 | 16 | 3 × 3 |
| conv4 cls | 32 | 32 | 96 | 8 | 3 × 3 |
| conv6 | 32 | 32 | 96 | 128 | 3 × 3 |
| conv7 loc | 16 | 16 | 128 | 24 | 3 × 3 |
| conv7 cls | 16 | 16 | 128 | 12 | 3 × 3 |
| b8/cov3 × 3 | 16 | 16 | 128 | 128 | 3 × 3 |
| b8 loc | 8 | 8 | 128 | 24 | 3 × 3 |
| b8 cls | 8 | 8 | 128 | 12 | 3 × 3 |
| b9/cov3 × 3 | 8 | 8 | 128 | 128 | 3 × 3 |
| b9 loc | 4 | 4 | 128 | 24 | 3 × 3 |
| b9 cls | 4 | 4 | 128 | 12 | 3 × 3 |
| b10/conv1 × 1 | 4 | 4 | 128 | 128 | 3 × 3 |
| b10 loc | 2 | 2 | 128 | 16 | 3 × 3 |
| b10 cls | 2 | 2 | 128 | 8 | 3 × 3 |
4. 固件设计与性能优化
4.1 模型固化优化
为了在边缘实现高效的仪表检测,训练好的 5 分支 SSD 模型需要固化为固件并嵌入到变电站巡检机器人中。在模型固化过程中,考虑了以下两种优化方法:
-
并行优化方法
:通过优化卷积核的并行度,提高固件性能,满足边缘实时计算的要求。
-
数据流计算框架
:在使用并行优化对资源有限的硬件模块进行优化时,需要额外的芯片资源。采用数据流计算框架可以突破性能瓶颈。
4.2 固件模块化设计
为确保固件的可靠性和可重用性,根据网络层的特点进行模块化设计。对于卷积层和全连接层,分别设计相应的计算模块,在此基础上添加缓存和寄存器等功能单元,构建整个固件架构。
固件架构由 ARM 处理器、内存控制器、多个卷积层和全连接层组成。卷积模块和全连接模块通过片上连接资源相连,输入/输出数据通过内存控制器的 DMA 与片外 DDR3 SDRAM 进行传输。
4.3 卷积模块工作原理
卷积模块以特征图为输入,通过与卷积核卷积得到临时输出,最终输出是所有临时输出加上偏移量。一般来说,卷积层后面会附加非线性激活函数,如 AlexNet 使用 ReLU 作为激活函数。
单个卷积模块由输入缓冲区、行缓存、寄存器矩阵、卷积核和输出缓冲区组成。以 3 × 3 卷积核为例,其基本处理单元由九个乘法器和八个加法器组成。处理过程如下:
1. 使用“行缓冲区”连接输入数据,将第一行输入数据依次放入 fifo1。
2. 接收完第一行所有数据后,fifo1 将数据放入 fifo2,同时将第二行输入数据放入 fifo1。
3. 第二行数据全部放入 fifo1 后,第一行数据全部放入 fifo2,此时读取第三行数据并与前两行数据组成 3 × 3 矩阵。
4. 获取相应参数与矩阵中的数据相乘,并累加结果。
5. 最终结果输出到输出缓冲区,输出缓冲区由 fifo 和加法器组成,依次将各通道的数据累加得到最终输出结果。
4.4 性能调优
我们可以根据并行度来调整硬件架构的性能。基本思想是在 FPGA 平台上实例化多个卷积核,以最大化资源利用率。在一个时钟周期内,多个卷积核可以并行累加多个向量,节省计算时间。
总并行度 Pt 的计算公式为:
[Pt = Pv × Pf]
其中,Pv 是数据并行度,Pf 是输出通道并行度。
通过这种优化,架构可以支持 32 位宽的并行计算,卷积模块的并行度取决于可用硬件资源能支持的卷积核模块数量,全连接模块的并行度取决于硬件资源支持的矩阵 - 向量乘法器数量。
同时,在设计基于 FPGA 的卷积神经网络加速器时,通常使用定点类型以实现高性能和低功耗优化。低精度计算可以提高频率并减少计算资源,支持更高的并行度,降低芯片功耗。
固件的峰值性能 Pp 计算公式为:
[Pp = clk × Pt × (Kr × Kc)]
其中,clk 是时钟频率,Pt 是最大并行度,Kr 和 Kc 分别是卷积核的行数和列数。
5. 实验结果与分析
5.1 数据集准备
使用变电站巡检机器人的 PTZ 相机拍摄的 2678 张 1080p 图像作为数据集。根据数量和质量,剔除某些类别中数量少于 200 的图像以减少噪声。剩余图像经过去噪和变换等预处理后,形成用于模型训练和测试的最终样本集。训练样本和测试样本按 9:1 的比例随机选取,确保两者不相交。
| 编号 | 类别 | 数量 |
|---|---|---|
| 1 | SF6 气压表(单指针,警告阈值:0.4) | 1123 |
| 2 | 变压器油温表(双指针) | 194 |
| 3 | 变压器油位表 | 41 |
| 4 | 避雷器放电计数器带电流表(范围:0 - 3.0mA) | 91 |
| 5 | 避雷器放电计数器带电流表(范围:0 - 5mA) | 95 |
| 6 | 避雷器放电计数器 | 86 |
| 7 | SF6 气压表(单指针,警告阈值:0.55) | 174 |
| 8 | SF6 气压表(三指针) | 392 |
5.2 模型训练
使用基于 GPU 的深度学习服务器训练 SSD 模型,服务器配置为:Intel Xeon Processor E5 - 2680 v2@2.80 GHz,GeForce GTX 1080Ti×4 显卡,32 GB 内存。在部署了 TensorFlow 的服务器上,使用表 4 中的参数对 SSD 模型进行多轮训练,最终将学习到的模型固化到硬件模块中。
5.3 性能评估
固件的性能优化取决于并行度和时钟频率。在我们的固件中,受 DSP 资源限制,全连接模块的并行度为 4(16 位宽),卷积模块的并行度达到 128。总并行度 Pt = 8 × 16 = 128。
当通过流水线操作最大化时钟频率时,固件可以在 200 MHz 下高效运行。根据公式计算,使用 3 × 3 卷积核时,固件的峰值性能达到 0.2 × 128 × 9 = 230.4 Gflops。
在测试集上,仪表检测固件原型达到了以下性能:
- 检测速度达到 10 帧/秒。
- 单张图像中可检测的最大目标数量(即仪表)为 3。
- 在召回率为 90% 的情况下,精度超过 90%。
- 平均功耗小于 5 瓦。
这些性能指标满足了变电站巡检机器人的实际需求。同时,与传统基于特征的方法相比,基于 SSD 的方法识别成功率提高了约 30%,达到了约 80%,并且机器人上仪表检测的延迟不超过 200 ms。
6. 总结与展望
基于深度学习的智能图像识别方法通过在强大的云或数据中心上使用大量图像样本训练模型,在某些应用中取得了显著进展。然而,随着对智能边缘设备需求的增加,设计可嵌入的硬件模块并在其上实现模型固化以进行智能图像识别是一个巨大的挑战。
POWER 框架以 FPGA 卡为硬件模块,支持为不同场景下的各种边缘设备设计和实现固件模块,具有良好的扩展性和灵活的定制能力。通过针对性的固件设计和并行优化,实验验证了我们的固件原型的性能,间接证明了 POWER 框架在设计边缘智能固件方面的有效性。
未来的工作包括探索更多可能的改进,如针对其他参数(如能耗)设计更好、更准确的模型,并基于这些模型对固件进行进一步的优化设计。
7. 关键技术点分析
7.1 SSD 网络优势
SSD 网络在仪表检测中展现出显著优势,主要体现在以下几个方面:
-
速度快
:相比两阶段的 Faster - RCNN,SSD 省去了区域提议网络这一阶段,直接进行目标检测和分类,大大缩短了检测时间,每秒帧数可达 10 帧,满足实时检测需求。
-
召回率高
:通过多尺度分支的设计,SSD 能够在不同尺度上检测目标,提高了召回率,达到 90%,可以更全面地检测到仪表目标。
-
资源利用率高
:在资源有限的硬件模块上,SSD 网络结构相对简单,更易于实现和优化,能够充分利用硬件资源,实现高效的计算。
7.2 并行优化与数据流计算框架协同
并行优化和数据流计算框架在固件性能提升中起到了协同作用:
-
并行优化提升计算速度
:通过优化卷积核的并行度,让多个卷积核在一个时钟周期内并行工作,大大提高了计算速度,满足边缘实时计算的要求。
-
数据流计算框架突破瓶颈
:在资源有限的硬件模块中,并行优化可能会受到芯片资源的限制。数据流计算框架通过合理组织数据流动,使得计算能够更高效地进行,突破了性能瓶颈。
7.3 定点类型在 FPGA 中的应用
在基于 FPGA 的卷积神经网络加速器设计中,使用定点类型具有重要意义:
-
降低功耗
:低精度的定点计算减少了芯片的功耗,使得硬件模块在运行时更加节能,平均功耗小于 5 瓦,符合边缘设备的低功耗要求。
-
提高频率
:定点计算可以提高计算频率,使得硬件能够在更高的时钟频率下运行,从而提升整体性能,如固件可以在 200 MHz 下高效运行。
-
减少资源占用
:相比浮点计算,定点计算所需的计算资源更少,能够在有限的 FPGA 资源上实现更复杂的网络结构,提高资源利用率。
8. 实际应用中的操作步骤
8.1 硬件模块搭建
- 准备所需的硬件组件,包括处理器(XC7Z030 - FF676)、DDR3(MT41J256M16RH - 15E)、Flash(N25Q128A13E1241F)等,确保组件的规格和数量符合要求。
- 将各个硬件组件按照设计要求进行连接和安装,注意电源、信号传输等线路的连接正确性。
- 对硬件模块进行初步的调试和测试,检查硬件是否正常工作,确保硬件平台的稳定性。
8.2 模型训练与固化
- 收集变电站巡检机器人拍摄的图像数据,进行预处理,如去噪、变换等,形成训练和测试样本集。
- 使用基于 GPU 的深度学习服务器,配置好硬件环境(如 Intel Xeon Processor E5 - 2680 v2@2.80 GHz,GeForce GTX 1080Ti×4 显卡,32 GB 内存)和软件环境(如 TensorFlow)。
- 根据实验比较选择合适的网络结构(如 5 分支 SSD),设置好网络参数,在服务器上对模型进行多轮训练。
- 将训练好的模型固化到硬件模块中,形成可运行的固件。
8.3 固件性能优化与部署
- 在模型固化过程中,采用并行优化方法和数据流计算框架对固件进行优化,提高固件的性能。
- 根据硬件资源和实际需求,调整卷积核的并行度和时钟频率,使固件达到最佳性能。
- 将优化后的固件部署到变电站巡检机器人中,进行实际测试和验证,确保机器人能够准确、实时地检测和识别仪表目标。
9. 总结
本文围绕边缘智能图像识别展开,以变电站巡检机器人的仪表检测为例,详细介绍了 POWER 框架的应用和实现过程。通过对不同目标检测算法的比较,选择了适合边缘设备的 SSD 网络结构,并对其进行优化和训练。在固件设计方面,采用了并行优化和数据流计算框架,提高了固件的性能和资源利用率。实验结果表明,基于 POWER 框架的固件在检测速度、精度、召回率和功耗等方面都满足了实际需求,相比传统方法具有显著优势。
9.1 优势总结
- 实时性强 :检测速度达到 10 帧/秒,能够及时响应和处理图像数据,满足实时检测的要求。
- 精度高 :在召回率为 90% 的情况下,精度超过 90%,可以准确地检测和识别仪表目标。
- 低功耗 :平均功耗小于 5 瓦,符合边缘设备的低功耗要求,延长了设备的续航时间。
- 扩展性好 :POWER 框架以 FPGA 卡为硬件模块,支持为不同场景下的各种边缘设备设计和实现固件模块,具有良好的扩展性和灵活的定制能力。
9.2 未来展望
虽然本文的方法取得了较好的效果,但仍有一些方面可以进一步改进和优化。未来可以从以下几个方向进行探索:
-
模型优化
:研究更先进的深度学习模型,结合更多的特征信息,提高检测精度和召回率,同时降低模型复杂度和计算量。
-
能耗优化
:进一步优化硬件架构和算法,降低能耗,提高能源利用效率,满足边缘设备长时间运行的需求。
-
多目标检测
:扩展应用场景,实现对多种目标的同时检测和识别,提高机器人的综合感知能力。
-
边缘计算协同
:探索边缘设备与云平台的协同计算模式,充分发挥边缘计算和云计算的优势,提高系统的整体性能和智能水平。
通过不断的研究和改进,边缘智能图像识别技术将在更多领域得到广泛应用,为智能设备的发展提供更强大的支持。
以下是一个 mermaid 格式流程图,展示整个系统的工作流程:
graph TD;
A[图像数据采集] --> B[数据预处理];
B --> C[模型训练];
C --> D[模型固化];
D --> E[固件部署到边缘设备];
E --> F[实时图像检测];
F --> G[结果输出];
同时,为了更清晰地展示各部分性能指标,我们再次列出关键性能对比表格:
| 指标 | 基于 SSD 方法 | 传统基于特征方法 |
| — | — | — |
| 识别成功率 | 约 80% | 约 50% |
| 检测延迟 | 不超过 200 ms | 较长 |
| 检测速度 | 10 帧/秒 | 较低 |
| 功耗 | 小于 5 瓦 | 较高 |
通过以上表格对比,可以更直观地看到基于 SSD 方法在性能上的优势。
POWER框架边缘智能图像识别
超级会员免费看
5569

被折叠的 条评论
为什么被折叠?



