基于FPGA机器视觉缺陷检测 实现铝片表面四种缺陷的检测 包含源码和端测文件 使用SSD-MobileNetV1模型,识别精度达到85%以上。

1. 系统整体架构概述

本系统面向金属板表面缺陷检测任务,基于SoC FPGA平台(AIEP开发环境)构建了一套软硬协同的实时目标检测系统。系统采用SSD-MobileNetV1作为核心检测模型,通过HPS(Hard Processor System)端完成模型推理调度与任务管理,PL(Programmable Logic)端实现图像采集与显示的硬件加速,二者通过共享内存与Linux进程间通信机制实现高效协同。

系统整体划分为三大功能模块:

  • PL端图像通路:负责从虚拟摄像头(VCAM)采集图像并写入DDR3内存,以及将推理结果从内存读出并通过虚拟HDMI输出;
  • HPS端推理引擎:基于PaddleLite框架加载量化后的SSD-MobileNetV1模型,对图像进行目标检测;
  • 顶层控制与生命周期管理:通过Shell脚本统一调度各组件,确保系统稳定启动、运行与安全退出。

2. 软件功能模块详解

2.1 顶层控制脚本:`ssd_start.sh`

系统启动与退出由顶层Shell脚本 ssd_start.sh 统一管理。该脚本承担以下关键职责:

  • 环境初始化:配置运行环境,复制最新版本的图像传输程序(transfertestssdtransfer);
  • 共享内存创建:调用 ssdshminit 程序,创建具有固定KEY的System V共享内存段,并初始化内部寄存器(用于进程同步与退出控制);
  • 并发进程启动:以后台方式同时启动 ssdtransfer(图像I/O)与 ssddetection(模型推理)两个核心进程;
  • 安全退出机制:捕获用户输入的 Ctrl+C 信号,不直接终止子进程,而是调用 ssd_quit 程序向共享内存写入“退出标志”,由各子进程主动检测该标志并执行资源释放与优雅退出。

此设计有效避免了僵尸进程的产生,提升了系统鲁棒性。

2.2 图像传输进程:`ssd_transfer`

ssd_transfer 进程负责PL与HPS之间的图像数据流转,其核心功能包括:

  • 图像采集:通过PL端的 DVP_DDR IP核,将VCAM输出的图像帧写入HPS可访问的DDR3内存区域;
  • 图像文件化:将内存中的原始图像数据以24位BMP格式保存为 0_image.bmp,作为推理进程的输入缓冲;
  • 结果回写:推理完成后,从 0imageresult.bmp 读取带检测框的结果图像,并通过 DDR_VGA IP核写回DDR指定地址,供PL端输出至虚拟HDMI;
  • 状态同步:通过读写共享内存中的寄存器(如 shmset1)通知推理进程“新图像已就绪”,并轮询退出标志以响应系统终止请求。

该进程采用循环结构持续运行,仅在接收到退出信号后才终止,确保低延迟图像通路。

2.3 模型推理进程:`ssd_detection`

ssd_detection 是系统的核心智能模块,基于PaddleLite推理引擎实现,其关键设计如下:

  • 模型加载优化:在进程初始化阶段一次性加载量化后的 .nb 模型文件,避免重复IO开销;
  • 推理循环:主循环中持续监听共享内存状态。当检测到“图像就绪”信号后,读取 0image.bmp,执行前处理 → 模型推理 → 后处理全流程,并将结果图像写入 0image_result.bmp
  • 退出仲裁机制:在每次推理前后均检查共享内存中的退出标志,一旦触发即跳转至资源清理流程(如释放模型内存、关闭文件句柄等),确保无内存泄漏;
  • 双线程结构:内部采用双线程设计(如htop监控所示),可能用于分离I/O与计算任务,提升吞吐效率。

该进程针对嵌入式平台进行了深度优化,采用8-bit量化模型,在保持85.52% mAP精度的同时显著降低计算负载。

3. 进程间协同机制

系统通过 共享内存 + 文件缓冲 的混合通信模式实现高效协同:

  • 控制信号:使用System V共享内存中的整型寄存器作为状态标志(如0=空闲,1=图像就绪,2=请求退出),实现低开销的进程同步;
  • 数据交换:图像数据通过临时BMP文件(0image.bmp / 0image_result.bmp)在进程间传递,避免复杂序列化,且BMP无压缩特性保障了读写速度;
  • 时序保障ssdtransfer 写入图像后置位寄存器,ssddetection 轮询该寄存器触发推理,推理完成后再由 ssd_transfer 读取结果,形成闭环流水线。

根据实测数据,单帧处理总耗时约750ms,其中推理占92%(~691ms),图像I/O与文件操作合计仅占8%,表明系统瓶颈集中于模型计算,符合预期。

4. 安全退出与资源管理

系统特别强调运行时的稳定性与资源完整性:

  • 所有子进程均内置“退出仲裁”逻辑,主动响应顶层脚本发出的终止指令;
  • 退出流程包含:关闭文件、释放共享内存、销毁模型上下文等;
  • 顶层脚本在调用 ssd_quit 后会等待所有子进程结束,再自身退出,确保无残留进程。

htop监控验证表明,系统在 Ctrl+C 触发后能完全清理所有 ssd_* 相关进程,证明该机制有效。

5. 总结

本系统通过精心设计的软件架构,在资源受限的SoC FPGA平台上实现了高精度、可稳定运行的缺陷检测功能。其核心优势在于:

  • 清晰的职责划分:HPS专注智能推理,PL专注高速I/O;
  • 高效的进程协同:共享内存+文件缓冲兼顾控制与数据传输;
  • 健壮的生命周期管理:从启动到退出全程可控,杜绝资源泄漏。

该设计为嵌入式AI视觉应用提供了一套可复用的软硬协同范式,具备良好的工程实践价值。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐