第五十七章 樂鑫AI庫簡介
1)實驗平台:正點原子DNESP32S3開發板
2)章節摘自【正點原子】ESP32-S3使用指南—IDF版 V1.6
3)購買鏈接:https://detail.tmall.com/item.htm?&id=768499342659
4)全套實驗源碼+手冊+視頻下載地址:http://www.openedv.com/docs/boards/esp32/ATK-DNESP32S3.html
5)正點原子官方B站:https://space.bilibili.com/394620890
6)正點原子DNESP32S3開發板技術交流羣:132780729


樂鑫的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庫下載完成,下面作者來介紹這個源碼庫的子文件的描述,如下表所示:

表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)
至此,我們已經完成了移植過程。以後的章節,我們將深入探討如何實現人臉識別和人臉檢測等相關應用。