基于FPGA机器视觉缺陷检测 实现铝片表面四种缺陷的检测 包含源码和端测文件 使用SSD-Mo...
本系统面向金属板表面缺陷检测任务,基于SoC FPGA平台(AIEP开发环境)构建了一套软硬协同的实时目标检测系统。系统采用SSD-MobileNetV1作为核心检测模型,通过HPS(Hard Processor System)端完成模型推理调度与任务管理,PL(Programmable Logic)端实现图像采集与显示的硬件加速,二者通过共享内存与Linux进程间通信机制实现高效协同。PL端图像
基于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 统一管理。该脚本承担以下关键职责:
- 环境初始化:配置运行环境,复制最新版本的图像传输程序(
transfertest→ssdtransfer); - 共享内存创建:调用
ssdshminit程序,创建具有固定KEY的System V共享内存段,并初始化内部寄存器(用于进程同步与退出控制); - 并发进程启动:以后台方式同时启动
ssdtransfer(图像I/O)与ssddetection(模型推理)两个核心进程; - 安全退出机制:捕获用户输入的
Ctrl+C信号,不直接终止子进程,而是调用ssd_quit程序向共享内存写入“退出标志”,由各子进程主动检测该标志并执行资源释放与优雅退出。
此设计有效避免了僵尸进程的产生,提升了系统鲁棒性。
2.2 图像传输进程:`ssd_transfer`
ssd_transfer 进程负责PL与HPS之间的图像数据流转,其核心功能包括:
- 图像采集:通过PL端的
DVP_DDRIP核,将VCAM输出的图像帧写入HPS可访问的DDR3内存区域; - 图像文件化:将内存中的原始图像数据以24位BMP格式保存为
0_image.bmp,作为推理进程的输入缓冲; - 结果回写:推理完成后,从
0imageresult.bmp读取带检测框的结果图像,并通过DDR_VGAIP核写回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视觉应用提供了一套可复用的软硬协同范式,具备良好的工程实践价值。

更多推荐
所有评论(0)