# ESP32-CAM_Edge_Impulse **Repository Path**: flyinglab/ESP32-CAM_Edge_Impulse ## Basic Information - **Project Name**: ESP32-CAM_Edge_Impulse - **Description**: Edge Impulse 教程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-18 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用 Edge Impulse 训练人脸识别模型再部署模型到 ESP32-CAM 设备 ### 1. 打开 [Edge Impulse](https://edgeimpulse.com/),注册账号 ### 2. 点击`创建新工程(Creat new project)`,再`输入你的新工程名字(Enter the name for your new project)`,建议输入英文工程名 ![Creat new project](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/creatproj.png) ### 3. 点击`项目信息(Project info)`,因为我们训练得是分类模型,所以选择`每个数据一个标签(One label per data item)`,第二个选项是为目标检测模型 ![project infomation](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/projinfo.png) ### 4. 点击`收集新的数据(Collect new data)`,这里有几个方式可以收集数据,通过手机、电脑、设备的摄像头拍照来收集数据,也可以通过从电脑本地或者云端上传数据,我选择从本地`上传数据(Upload data)`,这里有两个上传模式分别是`选择单个文件(Select individual files)`或`选择一个文件夹(Select a folder)`,选择完成后点击`选择文件(Select files)`,数据上传完成后选择`自动划分为训练集和测试集(Automatically split between training and testing)`,然后在`输入标签(Enter label)`中输入所上传得数据的标签, 最后点击右下角的`上传数据(Upload data)`,完成后点击`返回(Back)` ![Collect data](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/uploaddata.png) ### 5. 上传后每个数据都拥有一个标签(LABEL) ![label](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/lable.png) ### 6. 点击左侧的`Creat impulse`,再点击`Add a processing block`选择`Image`, 即对数据做预处理 ![processing](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/creatimpulse.png) ### 7. 点击`Add a learning block`选择`Transfer Learning(Images)`,即使用刚上传得数据来微调一个已预训练的分类模型 ![learning](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/learningblock.png) ### 8. 点击`Save Impulse`,即保存了模型的训练结构 ![save impulse](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/saveimpulese.png) ### 9. 点击左侧的`Image`选项,然后点击`保存参数(Save parameters)`,接着点击`生成特征(Generate features)`,则右侧生成特征分布图 ![parameters](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/savepara.png) ![features](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/featuremap.png) ### 10. 点击左侧的`Transfer learning`,根据自己收集得数据的特点和设备的硬件配置来`选择一个不同的模型(Choose a different model)`和`训练设置(Training settings)`,然后点击最下面的`保存&训练(Save & train)`来开始训练分类模型,训练结束后在右侧会生成训练结果,可根据结果再次选择不同的模型或修改训练设置来重新训练模型以达到想要的分类准确性 ![training1](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/modeltrain.png) ### 11. 点击左侧的`模型测试(Model testing)`, 再点击`分类所有(Classify all)`,则在右侧会生成分类模型的测试结果,这是模型的真实分类准确性 ![testing](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/modeltest.png) ### 12. 点击左侧的`部署(Deploymnent)`,选择`Arduino library`,再选择`量化为整型[ Quantized(int8) ]`来压缩模型以便设备在进行人脸识别时能作出更快的响应,再点击底部的`Build`则生成并自动下载一个.zip的库 ![deployment](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/deployment.png) ![library](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/zip.png) ### 13. 打开Arduino IDE`菜单`>`文件`>`首选项`,在`附加开发板管理器网址`后面输入以下网址: `https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json` ### 14. 打开 Arduino IDE,点击`开发板管理器`搜`esp32`再点击安装`2.0.9`及以上的版本 ![esp32](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/esp32.png) ### 15. 点击`选择其他开发板和端口` ![borad](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/boardselect.png) ### 16. 点击`项目`>`导入库`>`添加.zip库`,把从 edge impulse 下载得`.zip`库添加进去 ![add](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/importlib.png) ### 17. 点击 `文件`>`示例`>`human_face_recognition_inferencing`>`esp32`>`esp32_camera` ![example](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/openexam.png) ### 18. 注释第35行代码,再去掉第36行代码的注释,然后点击上传代码 ![code](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/code.png) ### 19. 打开串口监视器,设置波特率为115200,按下ESP32-CAM板的RES键,可以看到识别结果 ![result](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/result.png) ### 20. 基于 `esp32_camera` DEMO代码, 我修改了它的`loop()`函数并添加了一行代码 `HardwareSerial dataSerial(2); // 定义 UART2,用于数据传输 (TX=GPIO2, RX=GPIO5)` 来获取`人脸结果(facial result)`方便以后的项目调用串口信息或传输人脸识别结果到指定的GPIO口,已提供修改好的 [代码](https://gitee.com/jiexinjx/ESP32-CAM/blob/master/esp32_camera_classification.ino) ,可根据这个代码文件来修改自己的 `esp32_camera` DEMO代码,修改完成后上传代码到ESP32-CAM设备,然后打开串口监视器 ![result](https://gitee.com/jiexinjx/ESP32-CAM/raw/master/Images/classify.png)