项目简介
本项目致力于在微型微控制器上构建实时计算机视觉应用。通过该项目,用户能够学习基础计算机视觉应用、工具使用、数据集准备、模型训练、迁移学习以及将模型部署到微型微控制器等技能。项目包含三个子模块,分别为部署预训练的人员检测模型、训练自己的人员检测模型以及利用迁移学习检测人员是否佩戴口罩。
项目的主要特性和功能
- 硬件交互:实现ArduCam与Arduino Nano 33 BLE的接口连接,确保相机与微控制器正常通信。
- 模型训练:支持从预训练的检查点继续训练人员检测模型,也能在具备强大GPU的机器上从头开始训练,同时提供模型在验证集上的性能测试功能。
- 迁移学习:利用迁移学习技术,借助预训练的人员检测模型检测人员是否佩戴口罩,降低对大量训练数据和计算资源的需求。
- 模型转换与部署:将训练好的模型导出、冻结、量化为TensorFlow Lite文件,并转换为C++源文件,最终部署到Arduino Nano 33 BLE上。
安装使用步骤
前提条件
- 完成Hello world作业。
- 能使用Arduino IDE/VSCode + PlatformIO将二进制文件闪存到Nano 33 BLE。
- 已安装并配置好Arduino_TensorFlowLite库。
- 准备好面包板和连接器。
- 若要在本地运行,需设置环境、安装TensorFlow/TF - Slim。
- 掌握Google Colab的使用,可使用提供的colab模板。
- 了解Windows Batch Script/Linux Shell Script的使用。
- 安装Netron图可视化工具。
模块1:测试ArduCam与Arduino Nano 33 BLE的接口连接
- 用面包板和连接器连接ArduCam与Arduino Nano 33 BLE。
- 下载并安装Arducam库,选择正确配置。
- 从Arduino IDE安装JPEGDecoder库并配置。
- 编译人员检测源文件,上传二进制文件到Arduino Nano 33 BLE。
- 测试应用程序,通过LED灯闪烁判断检测结果。
- 若LED无活动,打开串口监视器查看日志信息。
模块2:训练自己的人员检测模型
创建训练数据集
下载coco数据集,转换为TFRecord格式。
从预训练检查点训练模型
- 进入训练脚本所在目录。
- 复制预训练检查点文件到指定目录。
- 运行训练脚本开始训练。
从头开始训练模型
- 进入训练脚本所在目录。
- 修改训练脚本中的参数。
- 运行训练脚本开始训练。
- 使用Tensorboard可视化训练进度。
测试模型在验证集上的性能
- 进入训练脚本所在目录。
- 修改评估脚本中的参数。
- 运行评估脚本进行评估。
导出图、冻结模型和量化
- 进入训练脚本所在目录。
- 运行导出图定义的脚本。
- 编辑冻结权重的脚本并运行。
- 运行量化权重的脚本。
- 将TFLite文件转换为C++源文件。
部署到Arduino Nano 33 BLE
安装Arduino TensorFlowLite 2.1.0 - ALPHA,修改相关文件中的参数,编译并上传项目。
模块3:迁移学习
下载数据集
使用Flickr scraper工具下载“无口罩人员”和“戴口罩人员”两类数据集,按要求组织文件夹结构。
数据集准备
编辑转换脚本,将下载的JPG图像转换为TFRecord文件,生成类标签。
加载预训练模型
- 编辑迁移学习脚本,传递正确的参数。
- 运行迁移学习脚本开始训练。
- 使用TensorBoard查看训练进度。
- 按模块2的步骤导出图、冻结权重、转换为TFLite并创建C++源文件,部署到Arduino Nano 33 BLE。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】