日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 電路設(shè)計(jì)項(xiàng)目集錦
[導(dǎo)讀]量化任務(wù)在內(nèi)部使用 AIMET 框架來(lái)對(duì)模型進(jìn)行量化處理。要完成這一量化操作,需要使用訓(xùn)練數(shù)據(jù)集的一部分。所需校準(zhǔn)數(shù)據(jù)的大小通常在數(shù)千個(gè)樣本的量級(jí)。

極速模型

在本項(xiàng)目中,我首先回顧了在部署 MediaPipe 模型時(shí)可能出現(xiàn)的挑戰(zhàn),特別是針對(duì)高通龍翼 QCS6490 芯片而言。

然后,我將逐一解決這些挑戰(zhàn),之后再將模型部署到 QAI Hub 工作平臺(tái)中。

最后,我將進(jìn)行分析以確定我們的加速目標(biāo)是否已經(jīng)達(dá)成。

高通人工智能工作臺(tái)

高通公司提供了一套在線工具,使用戶能夠?qū)⒛P筒渴鸬剿麄兊男酒O(shè)備上。

QAI 中心工作臺(tái)允許用戶自行導(dǎo)入模型(BYOM)和數(shù)據(jù)集(BYOD),以便對(duì)其進(jìn)行編譯、量化,并優(yōu)化以適配在高通設(shè)備上的部署。

量化步驟是可選的,具體取決于所針對(duì)的設(shè)備。

在該項(xiàng)目中,我們將專門針對(duì) QCS6490 設(shè)備的神經(jīng)處理單元進(jìn)行研究,因此將需要進(jìn)行量化處理。

QAI 中心工作臺(tái)支持以下模型格式作為輸入:

?PyTorch

?ONNX(開放神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)換格式)

其他框架則是通過(guò)轉(zhuǎn)換為 ONNX 格式來(lái)間接獲得支持的。在我們的案例中,我們將把 MediaPipe 模型從 TFLite 格式轉(zhuǎn)換為 ONNX 格式,使用 tf2onnx 工具。

此次部署包含以下任務(wù),這些任務(wù)在 QAI Hub 工作臺(tái)中被稱為“作業(yè)”:

?量化

?編譯

?驗(yàn)證;確認(rèn)

?簡(jiǎn)介

量化任務(wù)在內(nèi)部使用 AIMET 框架來(lái)對(duì)模型進(jìn)行量化處理。要完成這一量化操作,需要使用訓(xùn)練數(shù)據(jù)集的一部分。所需校準(zhǔn)數(shù)據(jù)的大小通常在數(shù)千個(gè)樣本的量級(jí)。

編譯任務(wù)可以針對(duì)多個(gè)運(yùn)行時(shí)目標(biāo)進(jìn)行部署:

?TFLite 運(yùn)行時(shí)(量子神經(jīng)網(wǎng)絡(luò)代理)

?ONNX 運(yùn)行時(shí)

?高通人工智能運(yùn)行時(shí)(QAIRT)

在這個(gè)項(xiàng)目中,我對(duì)使用 QNN 代理的 TFLite 運(yùn)行時(shí)與 QAIRT 進(jìn)行了對(duì)比研究并進(jìn)行了探索。

我的理解是,使用 ONNX 運(yùn)行時(shí)進(jìn)行部署僅在 Windows 系統(tǒng)上可行,而在嵌入式 Linux 系統(tǒng)上則無(wú)法實(shí)現(xiàn)。

“驗(yàn)證”和“配置”任務(wù)可用于在實(shí)際的目標(biāo)設(shè)備(在我們的案例中為 QCS6490)上對(duì)模型進(jìn)行推理和/或進(jìn)行性能分析。這些任務(wù)是在云端執(zhí)行的,并且是在實(shí)際設(shè)備上進(jìn)行的。我曾遇到過(guò)一些情況,這些任務(wù)因代理設(shè)備不可用而超時(shí)。

在這個(gè)項(xiàng)目中,我使用了 QAI Hub 工作臺(tái)的 2026.01.05.0 版本,其包含以下內(nèi)容:

?AI 資源中心工作臺(tái):aihub-2026.01.05.0

?QAIRT:2.40.0.251030114326_189385

高通公司的流程和相關(guān)文檔一直在不斷變化,每次改進(jìn)都會(huì)使用戶體驗(yàn)得到提升。

從 Vision AI-KIT 6490 上的 QIRP 1.6 版本圖像開始

該項(xiàng)目是在 Vision AI-KIT 6490 上進(jìn)行測(cè)試的,所使用的圖像為 QIRP 1.6 版本。如果您所使用的板子不同,或者使用的 QIRP 版本不同,那么其他部分中的說(shuō)明可能需要進(jìn)行修改。

請(qǐng)使用以下啟動(dòng)指南將 QIRP 1.6 鏡像程序化到 QCS6490 視覺人工智能套件中:

?Vision AI-KIT 6490 創(chuàng)業(yè)指南 v1.4

這將提供有關(guān)如何對(duì)最新版本的 QIRP 1.6 圖像進(jìn)行編程的說(shuō)明(文件名為 visionai_6490_qirp_1.6_v4.zip):

?visionai_6490_qirp_1.6_v4.zip

在使用 QIRP 1.6 鏡像啟動(dòng) Vision AI-KIT 6490 后,您可以使用出廠即用演示來(lái)進(jìn)行一次完整性檢查:

請(qǐng)注意底部的系統(tǒng)溫度圖和系統(tǒng)使用率圖。在我們的探索過(guò)程中,我們會(huì)利用這些數(shù)據(jù)。

在“視覺 AI-KIT 6490”上安裝 QAI Hub

首先,要確保在 Vision AI-KIT 6490 上所做的更改能夠持久生效:

QAI Hub 客戶端可以通過(guò) pip 進(jìn)行安裝。我們還將安裝對(duì) PyTorch 和 TFLite 的支持:

我嘗試安裝“qai-hub[onnx]”這個(gè)軟件包,但安裝過(guò)程失敗了。這似乎證實(shí)了我的看法,即使用 ONNX 運(yùn)行時(shí)進(jìn)行部署僅在 Windows 系統(tǒng)上可行,而在嵌入式 Linux 系統(tǒng)上則無(wú)法實(shí)現(xiàn)。

我們還可以安裝 QAI 中心模型庫(kù),具體操作如下:

然后按照以下命令輸入您的登錄信息一次:

作為一項(xiàng)驗(yàn)證手段,您可以列出 QAI 中心工作臺(tái)所支持的設(shè)備:

QAI 平臺(tái)上的 MediaPipe 模型

如果您已經(jīng)閱讀過(guò)高通公司的相關(guān)文檔,您就會(huì)發(fā)現(xiàn)他們已經(jīng)在其 QAI 平臺(tái)上部署了 MediaPipe 模型。

那么……我們?yōu)槭裁匆匦掳l(fā)明輪子呢?

這不僅是一個(gè)非常好的問(wèn)題,而且也是一個(gè)非常重要的需要強(qiáng)調(diào)的觀點(diǎn)。

首先,在我撰寫這篇文章之時(shí),以下這些 mediapipe 模型中僅有 1 個(gè)在高通 QCS6490 芯片上得到了支持:

?mediapipe_hand => 在 QCS6490 上不支持

?mediapipe_face => 在 QCS6490 上已支持

?mediapipe_pose => 在 QCS6490 上不支持

其次,高通公司選擇支持較舊版本的 mediapipe 模型(v0.07),而非最新的版本(v0.10)。

這一點(diǎn)非常重要,需要特別強(qiáng)調(diào)一下,因?yàn)樵?v0.7 版本之后,我們對(duì)手掌檢測(cè)和手部特征點(diǎn)模型進(jìn)行了重大更新,這些更新專門用于手勢(shì)和手語(yǔ)識(shí)別:

?SignAll SDK:使用 MediaPipe 構(gòu)建的手語(yǔ)交互界面現(xiàn)已面向開發(fā)者開放 - 谷歌開發(fā)者博客

事實(shí)上,高通公司選擇支持的是由開源社區(qū)將這些模型轉(zhuǎn)換為 PyTorch 版本后的版本:

?[維杜爾·薩蒂賈] 布萊茲帕爾姆:vidursatija/布萊茲帕爾姆

?[馬蒂?!せ衾章筣 布萊澤臉 - PyTorch : hollance/BlazeFace-PyTorch

?[扎克·穆雷茲] MediaPipePyTorch :zmurez/MediaPipePytorch

盡管 zmurez 沒(méi)有透露用于生成 PyTorch 版本模型的轉(zhuǎn)換腳本,但 vidrsatija 和 holland(zmurez 的研究工作基于他們的成果)確實(shí)以 Jupyter 筆記本的形式提供了這些轉(zhuǎn)換腳本。

不幸的是,這些轉(zhuǎn)換腳本/筆記本僅適用于 v0.7 版本,而不適用于后續(xù)版本(相信我,我試過(guò)了……).

當(dāng)我們?cè)?QCS6490 板上運(yùn)行支持的 mediapipe_face 模型時(shí),可以看到對(duì) zmurez/MediaPipePyTorch 倉(cāng)庫(kù)的引用:

選擇這個(gè)過(guò)時(shí)的模型對(duì)我來(lái)說(shuō)毫無(wú)意義,除了可能是在整合的時(shí)候,只有 PyTorch 被 Qualcomm AI 堆棧所支持之外?

當(dāng)我將這些模型部署到 AMD/Xilinx 的 Vitis-AI 平臺(tái)時(shí),我也遇到了同樣的情況。

不管原因如何,我認(rèn)為都有機(jī)會(huì)進(jìn)一步加強(qiáng)對(duì) MediaPipe 的支持。由于我們可以將 TFLite 模型轉(zhuǎn)換為 ONNX 格式,所以我為 QCS6490 上的 MediaPipe 模型提出了以下更新的流程:

在高通平臺(tái)上部署 MediaPipe 所面臨的挑戰(zhàn)

在第一部分中,我遇到的第一個(gè)難題是:在嵌入式平臺(tái)上運(yùn)行 MediaPipe 模型時(shí),其性能會(huì)明顯低于在現(xiàn)代計(jì)算機(jī)上的表現(xiàn)。這就是我試圖通過(guò) QAI Hub Workbench 來(lái)加速這些模型的原因。

第二個(gè)挑戰(zhàn)在于,谷歌并未提供用于訓(xùn)練 MediaPipe 模型的數(shù)據(jù)集。由于量化需要使用其中的一部分訓(xùn)練數(shù)據(jù),這就要求我們自己去收集這些數(shù)據(jù)。

為了應(yīng)對(duì)這些挑戰(zhàn),我們將克隆以下存儲(chǔ)庫(kù)(blaze_tutorial),該存儲(chǔ)庫(kù)將用于在 QAI Hub Workbench 中對(duì)云端的模型進(jìn)行量化、編譯和性能分析:

創(chuàng)建量化校準(zhǔn)數(shù)據(jù)集

正如“QAI Hub 工作臺(tái)概述”部分所描述的那樣,量化階段需要數(shù)百到數(shù)千個(gè)數(shù)據(jù)樣本,理想情況下應(yīng)是從訓(xùn)練數(shù)據(jù)中選取的一部分樣本。由于我們無(wú)法獲取訓(xùn)練數(shù)據(jù)集,所以我們需要自己生成這些數(shù)據(jù)。

我們可以使用修改后的 blaze_app_python.py 腳本生成校準(zhǔn)數(shù)據(jù)集,具體步驟如下:

對(duì)于每一張包含至少一只手的輸入圖像,我們想要生成:

?手掌檢測(cè)輸入圖像:經(jīng)過(guò)調(diào)整大小并填充至模型輸入尺寸的圖像

?手部特征點(diǎn)輸入圖像:每個(gè)手部的裁剪圖像,經(jīng)過(guò)調(diào)整大小處理以適應(yīng)模型的輸入尺寸。

輸入圖像的可能來(lái)源如下:

?Kaggle:存在眾多數(shù)據(jù)集,并且這些數(shù)據(jù)集可以被重復(fù)使用。

?Pixabay:包含多段有趣視頻,從中可以提取出圖片。

對(duì)于 Kaggle 這個(gè)案例,如果我們采用以下這樣一個(gè)現(xiàn)有的數(shù)據(jù)集:

?[Kaggle] 手勢(shì)數(shù)據(jù)集(由瑞蒂卡·吉里達(dá)爾創(chuàng)作)

我們可以對(duì) blaze_app_python 倉(cāng)庫(kù)中的 blaze_detect_live.py 腳本進(jìn)行修改,從而創(chuàng)建一個(gè)版本,該版本能夠掃描所有圖像,并生成一個(gè)特定于 NumPy 的二進(jìn)制格式文件(*.npy),其中包含我們?cè)诹炕襟E中所需的校準(zhǔn)數(shù)據(jù):

?blaze_app_python/calib_dataset_kaggle/gen_calib_hand_dataset.py

要運(yùn)行此腳本,請(qǐng)前往“blaze_app_python/calib_dataset_kaggle”目錄,將 Kaggle 數(shù)據(jù)集下載到該子目錄中,然后按照以下方式啟動(dòng)腳本:

這將為 0.10 版本的手掌檢測(cè)和手部特征點(diǎn)模型生成以下校準(zhǔn)數(shù)據(jù):

?calib_palm_detection_192_dataset.npy 文件:包含 1871 個(gè) 192x192 像素的 RGB 圖像樣本。

?calib_hand_landmark_224_dataset.npy 文件:包含 1880 個(gè) 224x224 像素的 RGB 圖像樣本。

最終我決定不使用這個(gè)數(shù)據(jù)集,但還是記錄下了整個(gè)過(guò)程以便日后參考,這個(gè)過(guò)程可以適用于任何其他 Kaggle 數(shù)據(jù)集。

再次說(shuō)明,我們可以對(duì) blaze_app_python 倉(cāng)庫(kù)中的 blaze_detect_live.py 腳本進(jìn)行修改,從而生成一個(gè)新的版本。該版本將對(duì)視頻進(jìn)行掃描,并生成一個(gè)包含量化步驟校準(zhǔn)數(shù)據(jù)的 NumPy 特定的二進(jìn)制格式文件(*.npy):

?blaze_app_python/calib_dataset_pixabay/gen_calib_hand_dataset.py

要運(yùn)行此腳本,請(qǐng)前往“blaze_app_python/calib_dataset_pixabay”目錄,將 Pixabay 視頻下載到“videos”子目錄中,然后按照以下方式啟動(dòng)腳本:

這將為 0.10 版本的手掌檢測(cè)和手部特征點(diǎn)模型生成以下校準(zhǔn)數(shù)據(jù):

?calib_palm_detection_192_dataset.npy 文件:包含 1577 個(gè) 192x192 像素的 RGB 圖像樣本。

calib_hand_landmark_224_dataset.npy 文件:包含 2595 個(gè) 224x224 像素的 RGB 圖像樣本。

您可以自由選擇上述所描述的任一數(shù)據(jù)源,或者使用您自己的數(shù)據(jù)源作為量化階段的數(shù)據(jù)。

我已經(jīng)將關(guān)于這個(gè)子主題(為各種版本的模型創(chuàng)建手部/面部/姿勢(shì)數(shù)據(jù)集)的探索成果存入了以下兩個(gè)檔案中:

?Kaggle:calib_dataset_kaggle.zip

?Pixabay:calib_dataset_pixabay.zip

為了此次探索,我準(zhǔn)備了校準(zhǔn)數(shù)據(jù)(來(lái)自 Pixabay),您可以按照以下方式下載并提取這些數(shù)據(jù):

模型轉(zhuǎn)換

使用 QAI Hub Workbench 進(jìn)行部署的第二步是下載 TFLite 模型,并使用 tf2onnx 工具將其轉(zhuǎn)換為 ONNX 格式:

?get_tflite_models.sh:從谷歌下載 TFLite 模型

?convert_models.sh:使用 tf2onnx 工具將模型轉(zhuǎn)換為 ONNX 格式

使用以下命令來(lái)下載并轉(zhuǎn)換 mediapipe 模型為 ONNX 格式:

模型部署

既然我們有了校準(zhǔn)數(shù)據(jù),并且我們的模型已轉(zhuǎn)換為 ONNX 格式,那么就可以使用 AI Hub 工作臺(tái)來(lái)執(zhí)行模型量化、性能分析和編譯操作了。

為此我準(zhǔn)備了一份腳本:

?qai_hub_workbench_flow.py

此腳本在被調(diào)用時(shí)會(huì)接受三個(gè)(3)參數(shù):

?名稱:型號(hào)名稱(例如:palm_detection_lite)

?模型:模型文件(例如:models/palm_detection_lite.onnx)

?說(shuō)明:輸入尺寸(例如:256)

“名稱參數(shù)”用于指明我們所部署的模型類型,例如對(duì)于手掌檢測(cè)器而言,可以是“palm_detection_lite”或“palm_detection_full”;而對(duì)于手部特征點(diǎn)模型,則可以是“hand_landmark_lite”或“hand_landmark_full”。而“分辨率”則表示模型的輸入尺寸。

這兩項(xiàng)參數(shù)將決定用于量化操作的校準(zhǔn)數(shù)據(jù)集是哪一個(gè)。例如:

?名稱:palm_detection_lite,大?。?92 => 文件名:calib_palm_detection_192_dataset.npy

?名稱=hand_landmark_lite,大小=224 => calib_hand_landmark_224_dataset.npy

該腳本將為以下目標(biāo)運(yùn)行環(huán)境生成輸出文件:

?TFLite(*.tflite)

?onnx(*.onnx.zip)

?qnn_dlc (*.dlc)

?qnn_context_binary (*.bin)

?預(yù)編譯的 QNN ONNX 文件(*.onnx.zip)

我將僅使用以下兩個(gè)目標(biāo)運(yùn)行時(shí)環(huán)境來(lái)進(jìn)行推理測(cè)試:

?TFLite (*.tflite) => 使用 TFLite(搭配 QNN 代理)

?qnn_context_binary (*.bin) => 使用 QAIRT

我已提供了另一份腳本,該腳本將調(diào)用 qai_hub_workbench_flow.py 腳本來(lái)對(duì)模型進(jìn)行量化、編譯和性能分析:

?deploy_models_qai_hub_workbench.sh

在執(zhí)行之前,您需要對(duì)以下列表進(jìn)行修改:

?模型列表:請(qǐng)指定您想要部署的模型(或多個(gè)模型)

以下是修改后的腳本版本,它將部署 0.10 版本的掌部檢測(cè)和手部特征點(diǎn)模型。

此腳本的執(zhí)行方式如下:

完成之后,以下編譯好的模型將位于當(dāng)前目錄中:

?palm_detection_full.tflite、palm_detection_full.bin……

?hand_landmarks_full.tflite、hand_landmarks_full.bin……

?palm_detection_lite.tflite、palm_detection_lite.bin……

?hand_landmarks_lite.tflite、hand_landmarks_lite.bin 等……

為了方便起見,我已將 QCS6490 的編譯模型存入以下檔案中:

?TFLite 模型(*.tflite):blaze_tflite_qnn_models_qcs6490.zip

?QAIRT 模型(*.bin):blaze_qairt_models_qcs6490.zip

在 QAI 資源中心工作臺(tái)中分析結(jié)果

在“職位”頁(yè)面中,如果我們點(diǎn)擊“個(gè)人資料”選項(xiàng)卡,就能看到針對(duì)每個(gè)模型的個(gè)人資料生成結(jié)果:

如果我們將運(yùn)行在 CPU 上的未量化 ONNX 模型與運(yùn)行在 NPU 上的量化模型進(jìn)行比較:

?“手掌檢測(cè)(基于 QAIRT 版本)”:66.4 毫秒 => 1.3 毫秒

?hand_landmarks_full(QAIRT 版本):47.4 毫秒 => 1 毫秒

如果我們將運(yùn)行在 CPU 上的未量化 ONNX 模型與運(yùn)行在 NPU 上的量化模型進(jìn)行比較:

?“palm_detection_lite(基于QAIRT的版本):54.7 毫秒 => 1.2 毫秒”

?hand_landmarks_lite(基于 QAIRT 的版本):29.9 毫秒 => 0.7 毫秒

這是顯著的加速(幅度在 30 倍到 60 倍之間)!

在量化模型的性能分析結(jié)果中存在一個(gè)異常情況:

?palm_detection_full(TFlite 版本):66.4 毫秒 => 31.0 毫秒

如果我們點(diǎn)擊該任務(wù)以了解其運(yùn)行情況,就會(huì)發(fā)現(xiàn)該模型在 NPU 上的加速程度并不完全,仍有 150 層運(yùn)算是在 CPU 上進(jìn)行的。

所有其他的工作都采用了干凈的 NPU 實(shí)現(xiàn)方式,包括 palm_detection_full 模型的 QAIRT 版本:

如果我們向下滾動(dòng)并選擇“運(yùn)行時(shí)層分析”部分,然后點(diǎn)擊“查看操作跟蹤”按鈕,就能獲得逐層的詳細(xì)分析報(bào)告:

如果我們查看每個(gè)模型的層數(shù)(中央處理器、神經(jīng)處理單元、圖形處理器等),則在性能測(cè)試報(bào)告中可得到以下所報(bào)告的層數(shù):

“ONNX 層”指的是我們作為 QAI Hub 工作臺(tái)輸入所使用的浮點(diǎn)型 ONNX 模型。

“TFLite 層”指的是經(jīng)過(guò)量化處理的模型,專為 TFLite 運(yùn)行時(shí)環(huán)境設(shè)計(jì)。

“QAIRT 層”對(duì)應(yīng)的是經(jīng)過(guò)量化處理的模型,其目標(biāo)是“qnn_compiled_binary”,并且可以與高通 AI 運(yùn)行時(shí)配合使用。

模型準(zhǔn)確率

如果我們查看模型的準(zhǔn)確率,那么在量化任務(wù)中我們得到的結(jié)果如下:

我們可以看到,模型的準(zhǔn)確度仍有待提高。這可能與校準(zhǔn)數(shù)據(jù)有關(guān),但我尚未進(jìn)一步進(jìn)行調(diào)查。

使用 0.07 版本的手掌檢測(cè)模型時(shí),能達(dá)到最佳的準(zhǔn)確度。

在“手部特征點(diǎn)模型”0.07 版本中,達(dá)到了最差的準(zhǔn)確度。這一點(diǎn)可以從 0.07 版本的流程中看出,即手部能夠被正確檢測(cè)出來(lái),但特征點(diǎn)的準(zhǔn)確性卻不高。

不幸的是,手部特征點(diǎn)模型 v0.10 版本的 PSNR 計(jì)算出現(xiàn)了錯(cuò)誤,所以我不清楚具體的指標(biāo)數(shù)值是什么,但它們看起來(lái)肯定是準(zhǔn)確的,所以我推測(cè)其數(shù)值肯定高于 30 分貝。

除了方向判斷有誤(總是錯(cuò)誤地報(bào)告為“左手”)之外。

模型執(zhí)行

為了支持 QCS6490 型號(hào),對(duì)“blaze_app_python”應(yīng)用程序進(jìn)行了以下增強(qiáng),添加了相應(yīng)的推理目標(biāo):

如圖所示,我已經(jīng)為原始的 TFLite 模型以及這些模型的 PyTorch 版本(v0.07)提供了支持。

我們也可以運(yùn)行未量化化的 ONNX 模型,但更重要的是,通過(guò)以下兩個(gè)運(yùn)行時(shí)目標(biāo)實(shí)現(xiàn)了在 NPU 上的執(zhí)行支持:

?TFLite(采用 QNN 代理)

?QAIRT

我針對(duì) TFLite(并使用了 QNN 代理)編寫的最終推理代碼,實(shí)際上采用了 EdgeAI Lite-RT(即谷歌最新版的 TFLite),該代碼可在“blaze_app_python”存儲(chǔ)庫(kù)中的“blaze_tflite_qnn”子目錄中找到:

?blaze_app_python/blaze_tflite_qnn/blazedetector.py

?blaze_app_python/blaze_tflite_qnn/blazelandmark.py

我們需要確保我們的電路板上具備所需的庫(kù)文件,而實(shí)際上它確實(shí)具備:

我為 QAIRT 編寫的最終推理代碼可以在“blaze_app_python”存儲(chǔ)庫(kù)中的“blaze_qairt”子目錄下找到:

?blaze_app_python/blaze_qairt/blazedetector.py

?blaze_app_python/blaze_qairt/blazelandmark.py

我們需要在我們的板子上安裝 QAIRT SDK,這可以通過(guò)以下步驟來(lái)完成。

首先,我們下載并安裝了 QAIRT SDK 的 2.40 版本:

然后,我們(可選地)會(huì)克隆、構(gòu)建并安裝 QAI 應(yīng)用程序構(gòu)建器:

在“視覺 AI-KIT 6490”設(shè)備上安裝 Python 應(yīng)用程序

首先,我們要確保我們的更改能夠持久生效:

該 Python 演示應(yīng)用程序需要一些特定的包,這些包可以通過(guò)以下方式安裝:

該 Python 應(yīng)用程序可通過(guò)以下 GitHub 倉(cāng)庫(kù)進(jìn)行訪問(wèn):

若要成功使用帶有原始 TFLite 模型的 Python 示例程序,需從谷歌網(wǎng)站下載這些模型:

若要成功使用與 QCS6490 型號(hào)配套的 Python 示例程序,需按照以下步驟進(jìn)行下載:

你們都準(zhǔn)備好了!

在 Vision AI-KIT 6490 上啟動(dòng) Python 應(yīng)用程序

正如我們?cè)诘?1 部分中所看到的,Python 應(yīng)用程序能夠啟動(dòng)多種雙推理流程的變體,這些變體可以通過(guò)以下參數(shù)進(jìn)行篩選:

——布萊茲:手部動(dòng)作 | 面部表情 | 姿態(tài)動(dòng)作

--目標(biāo):blaze_tflite | ... | blaze_tflite_qnn | blaze_qairt

--pipeline:管道的特定名稱(可通過(guò) --list 參數(shù)進(jìn)行查詢)

為了顯示所有支持的管道列表,請(qǐng)按照以下方式運(yùn)行 Python 腳本:

為了啟動(dòng)用于手部檢測(cè)和關(guān)鍵點(diǎn)識(shí)別的 v0.10 便攜版管道,以及帶有 QNN 代理的 TFLite 運(yùn)行時(shí),請(qǐng)按照以下方式使用 Python 腳本:

這將啟動(dòng)針對(duì) QCS6490 系統(tǒng)編譯的 0.10(精簡(jiǎn)版)版本的模型,如圖所示:

之前的視頻并未進(jìn)行加速處理。該視頻顯示,在未檢測(cè)到手部時(shí)(運(yùn)行一種模型:手掌檢測(cè)),幀率為約 30 幀每秒;在檢測(cè)到一只手時(shí)(運(yùn)行兩種模型:手掌檢測(cè)和手部特征點(diǎn)檢測(cè)),幀率為約 20 幀每秒;在檢測(cè)到兩只手時(shí)(運(yùn)行三種模型:手掌檢測(cè)和兩只手特征點(diǎn)檢測(cè)),幀率為約 15 幀每秒。

這比在 CPU 上運(yùn)行的原始 TFLite 模型要差一些,所以對(duì)于這種情況,我不得不考慮放棄使用 TFLite 并采用 QNN 代理的做法。

為了啟動(dòng)用于手部檢測(cè)和關(guān)鍵點(diǎn)識(shí)別的 v0.10 便攜版管道以及高通 AI 運(yùn)行時(shí),請(qǐng)按照以下方式使用 Python 腳本:

這將啟動(dòng)針對(duì) QCS6490 系統(tǒng)編譯的 0.10(精簡(jiǎn)版)版本的模型,如圖所示:

之前的視頻并未進(jìn)行加速處理。該視頻顯示,在未檢測(cè)到手部時(shí)(運(yùn)行一種模型:手掌檢測(cè)),幀率為 30 幀每秒;當(dāng)檢測(cè)到一只手時(shí)(運(yùn)行兩種模型:手掌檢測(cè)和手部特征點(diǎn)檢測(cè)),幀率為 30 幀每秒;當(dāng)檢測(cè)到兩只手時(shí)(運(yùn)行三種模型:手掌檢測(cè)和兩個(gè)手的特征點(diǎn)檢測(cè)),幀率為 30 幀每秒。

與使用 QNN 代理的 TFLite 運(yùn)行時(shí)相比,高通 AI 運(yùn)行時(shí)實(shí)現(xiàn)了顯著的加速!

為了了解使用 QAIRT 運(yùn)行的模型的實(shí)際表現(xiàn),我們需要暫時(shí)斷開 USB 攝像頭(該攝像頭決定了 30 幀每秒的幀率)。我們將在下一節(jié)中進(jìn)行此項(xiàng)操作。

在“視覺 AI-KIT 6490”平臺(tái)上對(duì)模型進(jìn)行基準(zhǔn)測(cè)試

為了獲得穩(wěn)定的輪廓結(jié)果,我們使用了一張測(cè)試圖片(包含雙手),該圖片可以從谷歌上下載,具體操作如下:

我們可以使用以下命令來(lái)直觀地比較原始的 TFLite 模型與 QAIRT 加速模型的性能分析結(jié)果:

以下圖表將會(huì)出現(xiàn):

您可能已經(jīng)注意到圖表中的柱狀圖存在一些抖動(dòng)現(xiàn)象,因此我們將把一系列數(shù)據(jù)保存到 CSV 文件中,然后對(duì)結(jié)果進(jìn)行平均處理,以便更清晰地了解其性能情況。

我沒(méi)有這種自動(dòng)化的流程,所以這是一個(gè)需要人工操作的流程,包括采集、處理和呈現(xiàn)等環(huán)節(jié)……

以下命令可用于使用 QCS6490 模型和測(cè)試圖像為 qairt_hand_v0_10_lite 流水線生成性能報(bào)告結(jié)果:

以下命令可用于使用 TFLite 模型及測(cè)試圖像為 tfl_hand_v0_10_lite 流水線生成性能報(bào)告結(jié)果:

對(duì)于 qairt_hand_v0_10_full 和 tfl_hand_v0_10_full 這兩個(gè)模型,也采用了同樣的操作。

所有.csv 文件中的數(shù)據(jù)均進(jìn)行了平均處理,然后使用 Excel 進(jìn)行了繪圖。

以下是使用 QAIRT 部署的模型的性能分析結(jié)果,與參考的 TFLite 模型進(jìn)行了對(duì)比:

同樣,需要指出的是,這些基準(zhǔn)測(cè)試是通過(guò)單線程的 Python 腳本完成的。如果采用多線程實(shí)現(xiàn)方式,還有進(jìn)一步加速的空間。在圖形運(yùn)行器等待從一個(gè)模型的子圖中獲取數(shù)據(jù)的同時(shí),可以同時(shí)啟動(dòng)另一個(gè)(或多個(gè)其他)模型……

此外,還有機(jī)會(huì)通過(guò)使用 C++ 代碼來(lái)加快整個(gè)開發(fā)流程的進(jìn)度……

已知問(wèn)題

盡管我已經(jīng)對(duì) palm_detection 和 hand_landmarks 這兩個(gè)模型的 v0.07 版本進(jìn)行了量化和部署,但 hand_landmarks 模型的準(zhǔn)確性已經(jīng)下降了,所以在您的應(yīng)用中請(qǐng)不要再使用這個(gè)模型。

對(duì)于 0.10 版本的手部特征點(diǎn)數(shù)據(jù),手的朝向似乎沒(méi)有得到正確處理。這些模型總是返回約 1.0 的數(shù)值,這對(duì)應(yīng)于“左手”。

本文編譯自hackster.io

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉