第五十七章 乐鑫AI库简介
乐鑫的ESP-WHO库是一个基于乐鑫芯片的图像处理开发平台,其中包括了实际应用中可能出现的开发示例,如人脸检测、人脸识别、猫脸检测和手势识别等。开发者可以根据这些示例衍生出丰富的实际应用。ESP-WHO库的运行基于ESP-IDF,而ESP-DL则为ESP-WHO库提供了丰富的深度学习相关接口,配合各种外设可以实现许多有趣的应用。
本章分为如下几个部分:
57.1 AI处理过程
57.2 乐鑫ESP-WHO库下载
57.3 移植ESP-WHO源码库
57.1 AI处理过程
在乐鑫的ESP-WHO库中,AI处理原理可能还包括其他的技术和方法,如特征提取、分类器设计、模型训练和优化等。这些技术结合在一起,使得ESP-WHO库能够提供高效、准确的人脸检测和识别功能。AI处理过程通常包括三个主要步骤:输入、处理和输出。
①:输入是AI系统的第一步,这一步就是把要处理的图像数据传输到AI库当中处理。
②:处理是AI系统的核心,它包括一系列的计算和推理过程。处理阶段利用各种算法和模型对输入数据进行处理,从中提取有意义的信息或模式。这一步骤可能涉及数据清洗、特征提取、分类、回归分析、聚类等多种数据处理技术。
③:输出是AI系统的最后一步,它根据处理结果得出结论或预测。例如,如果AI系统用于人脸识别,输出可能是识别出的人脸标签或身份信息。
下图是人脸检测处理过程。
图57.1.1 AI处理过程
上图中,我们完成了摄像头的图像数据获取后,将这些数据传递给AI处理库(ESP32-WHO)。该库利用卷积神经网络模型等算法对图像进行深入处理。经过处理,我们获得了AI库处理后的图像数据。
57.2 乐鑫ESP-WHO库下载
ESP-WHO 是乐鑫专为 AIoT 领域推出的软件开发框架,可帮助用户实现嵌入式领域的人脸检测与识别功能,可配合 ESP-EYE 开发板、ESP-WROVER-KIT(亚马逊 AWS 认证设备)及其他搭载 ESP32 芯片的开发板,结合各类摄像头、显示屏等硬件,形成完整应用。我们可在乐鑫官方网站下的方案/人脸检测(ESP-WHO)路径找到ESP-WHO软件库,如下图所示。 图57.2.1 ESP-WHO下载网页
上图中,“Github下载”链接可引导读者进入远程仓库下载ESP-WHO源码库,方便获取相关代码资源。而右侧的“进入BBS”则提供了ESP-WHO中文讨论区的入口。对于在使用ESP-WHO过程中遇到的问题或疑问,读者可以在讨论区发帖寻求帮助。乐鑫官方或经验丰富的博主会定期查看并回复,帮助解决相关问题。
57.3 移植ESP-WHO源码库
在上文中,我们介绍了如何从远程仓库下载乐鑫ESP-WHO源码库。接下来,本文将重点介绍如何将该AI库移植到实际工程中。为了便于说明,我们将以摄像头例程作为移植模板。以下是详细的移植流程:
一、克隆ESP-WHO源码库
首先在本地找到一个合适的位置,利用git命令克隆Github的ESP-WHO源码库,克隆命令如下:
图57.3.1 克隆ESP-WHO源码库
克隆完成后,使用cd命令进入ESP-WHO源码库,命令如下:
图57.3.2 进入ESP-WHO源码库
接着,在此目录下输入更新子模块命令,命令如下:
图57.3.3 更新子模块
到了这里,我们已经把乐鑫AI库下载完成,下面作者来介绍这个源码库的子文件的描述,如下表所示:
文件夹 | 描述 |
components | 存放LCD驱动、二维码解码库、AI解码库、通信总线驱动 |
default_bin | 存放乐鑫开发板esp32-s3-eye和esp32-eye固件 |
docs | 存放学习文档 |
examples | 存放乐鑫提供的AI例程 |
img | 存放图片,用来配置menuconfig菜单 |
tools | 存放处理工具 |
表57.3.1 AI库子文件夹描述
上表,我们需要的文件夹包括components和examples。其中,components文件夹中的文件用于移植到工程中,而examples文件夹中的案例则可以作为参考。
二、移植ESP-WHO到工程当中
首先,把esp-who-master\components路径下的esp-code-scanner、esp-dl、fb_gfx和modules文件夹复制到摄像头例程中的components文件夹目录下,如下图所示。
图57.3.4 AI库移植到工程当中
然后,打开上图modules文件夹,并删除其他文件夹和文件,只保留ai文件夹、CMakeLists.txt和Kconfig文件。删除后的modules文件夹结构如下。
图57.3.5 删除后的modules文件夹结构
接着,打开上图的ai文件夹,删除除了who_ai_utils.cpp/hpp文件之外的文件。删除后的ai文件架构如下: 图57.3.6 删除后的ai文件架构
最后,修改CMakeLists.txt文件,因为刚刚我们已经删除了某些文件夹,所以这个CMakeLists.txt文件的内容也相应修改。修改后的内容如下:
set(src_dirs
ai)
set(include_dirs
ai)
set(requires esp32-camera
esp-dl
fb_gfx)
idf_component_register(SRC_DIRS ${src_dirs}
INCLUDE_DIRS ${include_dirs} REQUIRES ${requires})
component_compile_options(-ffast-math -O3 -Wno-error=format=-Wno-format)
至此,我们已经完成了移植过程。以后的章节,我们将深入探讨如何实现人脸识别和人脸检测等相关应用。