Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于 FPGA 的智能检测系统

FPGA-based Intelligent Detection System — Metal Surface Defect Detection & Auto-Sorting on Cyclone V SoC (AIEP)

License: MIT

面向集创赛(CCIC)「皓耀」企业命题——金属材料表面缺陷检测与自动分拣任务,基于 Intel/Altera Cyclone V SoC FPGA + AIEP 加速平台 构建的端到端缺陷检测系统:从数据集标注、模型训练、QAT 量化部署,到 FPGA 板端实时推理与尺寸标注,全链路闭环可复现。


目录


功能特性

  • 5 类缺陷检测:划痕(ca_shang)、脏污(zang_wu)、褶皱(zhe_zhou)、针孔(zhen_kong)、正常(zheng_chang),基于 SSD-MobileNetV1 检测模型。
  • QAT 量化部署:训练后量化感知训练(Quant-Aware Training)并导出 .nb 板端模型,适配 AIEP 的 Paddle-Lite 推理运行时。
  • FPGA 板端推理:通过 SSH 一键上传图片并在板端执行 ssd_detection 推理,回传类别与置信度。
  • 尺寸标注:推理结果叠加像素尺寸与按像素当量换算的物理尺寸(px + mm),输出可视化结果图。
  • 一键部署与取证脚本deploy_to_aiep.py 支持向目标板卡下发模型、标签与运行环境(含 --bootstrap-runtime 自动解包官方运行时),capture_board_evidence.py 提供逐图板端原始证据采集。

系统架构

graph LR
    A[数据集标注<br/>241 张 / 5 类] --> B[PaddleDetection 训练<br/>SSD-MobileNetV1]
    B --> C[QAT 量化感知训练]
    C --> D[导出推理模型<br/>.pdmodel / .pdiparams]
    D --> E[Paddle-Lite opt 转换<br/>.nb 板端模型]
    E --> F[SSH 部署到 AIEP<br/>Cyclone V SoC FPGA]
    F --> G[板端推理 ssd_detection]
    G --> H[结果回传<br/>类别 + 置信度]
    G --> I[尺寸标注<br/>px + mm 可视化]
Loading

快速开始

环境准备

  • Python 3.8 + PaddlePaddle 2.x(训练侧)
  • PaddleDetection 2.x(training/PaddleDetection/
  • 目标板卡:AIEP 平台(Cyclone V SoC FPGA),可通过 SSH 访问

训练

# 基础训练
python tools/train.py -c configs/myconfig/ssd_mobilenet_v1.yml

# QAT 量化感知训练
python tools/train.py -c configs/myconfig/ssd_mobilenet_v1.yml \
  --slim_config configs/myconfig/ssd_mobilenet_v1_qat.yml

以上命令在 training/PaddleDetection/ 目录下执行。

量化与导出

python tools/export_model.py \
  -c configs/myconfig/ssd_mobilenet_v1.yml \
  --slim_config configs/myconfig/ssd_mobilenet_v1_qat.yml \
  -o weights=output/ssd_mobilenet_v1_qat/model_final

导出后使用 Paddle-Lite opt 工具转换为 .nb 板端模型(.nb 为体积较大的构建产物,按 .gitignore 规则不入库,可按需在本地转换生成;转换入口见 初赛/ 相关脚本与 training/ 导出配置)。

板端部署

python 初赛/deploy_to_aiep.py \
  --host <board_ip> --password <board_password>

如需同时下发官方 Paddle-Lite 运行时(适用于未预置运行时的板卡):

python 初赛/deploy_to_aiep.py \
  --host <board_ip> --password <board_password> --bootstrap-runtime

板端推理

# 上传本地图片并在板端推理
python 初赛/board_infer.py <image_name> \
  --host <board_ip> --password <board_password>

# 或指定本地图片路径(自动上传)
python 初赛/board_infer.py --image-file <local_image_path> \
  --host <board_ip> --password <board_password>

本地尺寸标注推理

python 初赛/infer_with_size.py \
  --model_dir training/PaddleDetection/output_inference/ssd_mobilenet_v1_qat \
  --image_file <image_path> \
  --output_dir output_vis_size/

板端地址与口令请替换为实际板卡信息,脚本同样支持通过环境变量 AIEP_PASS 提供口令。

仓库结构

目录 说明
赛题/ 赛题原文与精简版,含评分项与提交要求
初赛/ 板端推理、模型部署、尺寸标注脚本及结果证据
初赛/提交材料/ 技术文档(Markdown/Word/PDF)、统一图像归集
training/ PaddleDetection 自定义训练配置、数据集与导出模型
preliminary round/v2/ 初赛提交镜像包(文档、结果图、脚本、日志归集)
output_vis/ 批量推理结果可视化图(覆盖 5 类样本)
皓耀_初赛/ 初赛交付组织目录(技术文档、评分结果、官方要求参考)

结果展示

以下为团队自采数据上的推理结果示例(output_vis/):

划痕 脏污 褶皱 针孔 正常
ca_shang zang_wu zhe_zhou zhen_kong zheng_chang

板端推理结果示例(初赛/results/):

划痕 脏污 褶皱 针孔
ca_shang1 zang_wu1 zhe_zhou1 zhen_kong1

核心指标图(初赛/提交材料/初赛全部图片/01_核心成图/):

端侧部署关键指标 训练损失收敛
图1_端侧部署关键指标 图4_训练损失收敛曲线

数据集说明

  • 训练数据:241 张团队自采并标注的金属材料表面图像,覆盖划痕、脏污、褶皱、针孔与正常 5 类,采用 VOC 格式组织。
  • 官方测试集:初赛官方测试集(10 张)及其推理/标注衍生图版权归组委会所有,不随本仓库分发,仅本地保留用于对照。仓库内保留的是团队对测试集的检测结果统计与文档配图。

许可证与致谢

  • 本仓库代码与文档以 MIT License 开源(Copyright © 2026 Techd81)。
  • 感谢组委会「皓耀」企业命题提供的赛题与测试环境;感谢 PaddleDetectionPaddle-Lite 开源框架。

About

基于 Intel/Altera Cyclone V SoC FPGA + AIEP 加速平台的金属表面缺陷检测与自动分拣系统(集创赛 CCIC 命题):SSD-MobileNetV1 + QAT 量化,端到端可复现

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages