littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于TensorFlow的微控制器实时计算机视觉应用项目

项目简介

本项目致力于在微型微控制器上构建实时计算机视觉应用。通过该项目,用户能够学习基础计算机视觉应用、工具使用、数据集准备、模型训练、迁移学习以及将模型部署到微型微控制器等技能。项目包含三个子模块,分别为部署预训练的人员检测模型、训练自己的人员检测模型以及利用迁移学习检测人员是否佩戴口罩。

项目的主要特性和功能

  1. 硬件交互:实现ArduCam与Arduino Nano 33 BLE的接口连接,确保相机与微控制器正常通信。
  2. 模型训练:支持从预训练的检查点继续训练人员检测模型,也能在具备强大GPU的机器上从头开始训练,同时提供模型在验证集上的性能测试功能。
  3. 迁移学习:利用迁移学习技术,借助预训练的人员检测模型检测人员是否佩戴口罩,降低对大量训练数据和计算资源的需求。
  4. 模型转换与部署:将训练好的模型导出、冻结、量化为TensorFlow Lite文件,并转换为C++源文件,最终部署到Arduino Nano 33 BLE上。

安装使用步骤

前提条件

  1. 完成Hello world作业。
  2. 能使用Arduino IDE/VSCode + PlatformIO将二进制文件闪存到Nano 33 BLE。
  3. 已安装并配置好Arduino_TensorFlowLite库。
  4. 准备好面包板和连接器。
  5. 若要在本地运行,需设置环境、安装TensorFlow/TF - Slim。
  6. 掌握Google Colab的使用,可使用提供的colab模板。
  7. 了解Windows Batch Script/Linux Shell Script的使用。
  8. 安装Netron图可视化工具。

模块1:测试ArduCam与Arduino Nano 33 BLE的接口连接

  1. 用面包板和连接器连接ArduCam与Arduino Nano 33 BLE。
  2. 下载并安装Arducam库,选择正确配置。
  3. 从Arduino IDE安装JPEGDecoder库并配置。
  4. 编译人员检测源文件,上传二进制文件到Arduino Nano 33 BLE。
  5. 测试应用程序,通过LED灯闪烁判断检测结果。
  6. 若LED无活动,打开串口监视器查看日志信息。

模块2:训练自己的人员检测模型

创建训练数据集

下载coco数据集,转换为TFRecord格式。

从预训练检查点训练模型

  1. 进入训练脚本所在目录。
  2. 复制预训练检查点文件到指定目录。
  3. 运行训练脚本开始训练。

从头开始训练模型

  1. 进入训练脚本所在目录。
  2. 修改训练脚本中的参数。
  3. 运行训练脚本开始训练。
  4. 使用Tensorboard可视化训练进度。

测试模型在验证集上的性能

  1. 进入训练脚本所在目录。
  2. 修改评估脚本中的参数。
  3. 运行评估脚本进行评估。

导出图、冻结模型和量化

  1. 进入训练脚本所在目录。
  2. 运行导出图定义的脚本。
  3. 编辑冻结权重的脚本并运行。
  4. 运行量化权重的脚本。
  5. 将TFLite文件转换为C++源文件。

部署到Arduino Nano 33 BLE

安装Arduino TensorFlowLite 2.1.0 - ALPHA,修改相关文件中的参数,编译并上传项目。

模块3:迁移学习

下载数据集

使用Flickr scraper工具下载“无口罩人员”和“戴口罩人员”两类数据集,按要求组织文件夹结构。

数据集准备

编辑转换脚本,将下载的JPG图像转换为TFRecord文件,生成类标签。

加载预训练模型

  1. 编辑迁移学习脚本,传递正确的参数。
  2. 运行迁移学习脚本开始训练。
  3. 使用TensorBoard查看训练进度。
  4. 按模块2的步骤导出图、冻结权重、转换为TFLite并创建C++源文件,部署到Arduino Nano 33 BLE。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】