作者:深大飛槳領(lǐng)航團(tuán)團(tuán)長(zhǎng) 周家杰
一,項(xiàng)目簡(jiǎn)介
本項(xiàng)目采用了一種通用、與框架無關(guān)的方法的范例:通過比較兩種模型輸出的一致性,來判斷一次模型轉(zhuǎn)換是否成功。我們提供了一個(gè)端到端示例,演示如何將 YOLOv5su 模型從 PyTorch (.pt) 轉(zhuǎn)換為 ONNX (.onnx),再編譯為 DeepX 專用的 .dxnn 格式。最后 采用 模型輸出結(jié)果分析腳本,通過對(duì)標(biāo)準(zhǔn)測(cè)試圖片 (test.jpg) 進(jìn)行推理,分析 .dxnn 模型與原始 .pt 模型輸出的結(jié)果是否一致,體現(xiàn)模型在轉(zhuǎn)換過程中是否成功。

二,工作流
1,環(huán)境準(zhǔn)備
首先,確保你已經(jīng)安裝好了 DeepX 完整的 SDK。
具體的安裝可以參考 DeepX 的官方 SDK Repo:
https://github.com/DEEPX-AI/dx-all-suite#
該 SDK 主要包含以下幾個(gè)核心模塊:
DX-Compiler: 模型編譯器,負(fù)責(zé)將標(biāo)準(zhǔn)的 ONNX 模型轉(zhuǎn)換為針對(duì) DeepX 硬件優(yōu)化的 .dxnn 格式。
DX-Runtime: 推理引擎,用于在硬件上高效加載和執(zhí)行 .dxnn 模型。
DX-Profiler: 性能分析工具,可以詳細(xì)分析模型在硬件上運(yùn)行時(shí)的各項(xiàng)性能指標(biāo)。
DX-Model-Zoo: 提供了一系列預(yù)優(yōu)化好的模型,方便用戶快速上手和測(cè)試。
2,模型格式轉(zhuǎn)換
轉(zhuǎn)換過程分為兩個(gè)步驟:
第一步,將 PyTorch (.pt) 格式模型 轉(zhuǎn)換為 ONNX (.onnx) 格式模型我們使用 convert.py 腳本將官方的 yolov5su.pt 模型導(dǎo)出為 ONNX 格式。
python convert.py
該腳本會(huì)自動(dòng)加載模型,并將其保存到 ./model/yolov5su.onnx。注意: 這里我們的 Batch Size 設(shè)置為 1,以確保 DeepX 工具可以正確編譯。

第二步,將 ONNX (.onnx) 格式模型 轉(zhuǎn)換為 DXNN (.dxnn) 格式模型
接下來,使用 DeepX 提供的 DX-Compiler 編譯工具將 ONNX 模型轉(zhuǎn)換為 .dxnn 格式。此步驟會(huì)針對(duì)特定硬件進(jìn)行優(yōu)化。
PATH_TO_DEEPX_COM/dx_com/dx_com -m ./model/yolov5su.onnx -o ./model/yolov5su.dxnn -c ./model/yolov5su.json
編譯完成后,我們得到了最終用于推理的 yolov5su.dxnn 模型。

3,模型輸出相似度分析
最后,運(yùn)行 yolo_analysis.py 腳本,它會(huì)同時(shí)加載 .pt 和 .dxnn 模型,對(duì) test.jpg 圖片進(jìn)行推理,得到 .dxnn模型與原始 .pt 模型輸出的結(jié)果之間的相似度。
python yolo_analysis.py
腳本執(zhí)行后會(huì)輸出詳細(xì)的分析結(jié)果。我們選用了以下幾個(gè)核心指標(biāo)來全方位評(píng)估模型轉(zhuǎn)換的保真度:
關(guān)鍵評(píng)估指標(biāo)詳解
01,余弦相似度 (Cosine Similarity)
代表什么: 衡量?jī)蓚€(gè)向量在方向上的差異,而不關(guān)心它們的絕對(duì)大小。
意義: 結(jié)果越接近 1,表示 .dxnn 模型與 .pt 模型輸出的特征向量在方向上越一致。這說明即使數(shù)值存在整體縮放,但特征模式得到了很好的保留。
它是評(píng)估深度學(xué)習(xí)模型特征相似性的黃金標(biāo)準(zhǔn),能有效忽略編譯優(yōu)化可能帶來的量化尺度變化。
02,皮爾遜相關(guān)系數(shù) (Pearson Correlation)
代表什么: 衡量?jī)蓚€(gè)數(shù)據(jù)集合之間的線性相關(guān)程度。
意義: 結(jié)果越接近 1,表示兩個(gè)模型的輸出值之間存在越強(qiáng)的正向線性關(guān)系。例如,如果原始模型某個(gè)位置的輸出值變大,轉(zhuǎn)換后的模型也應(yīng)該相應(yīng)變大。
用于判斷模型轉(zhuǎn)換后,輸出值的變化趨勢(shì)是否與原始模型保持了高度一致。
03,結(jié)構(gòu)相似性 (SSIM)
代表什么: 一種最初用于衡量圖像相似度的指標(biāo),我們將其思想應(yīng)用于一維特征向量,綜合評(píng)估均值(亮度)、方差(對(duì)比度)和協(xié)方差(結(jié)構(gòu))的相似性。
意義: 結(jié)果越接近 1,表示轉(zhuǎn)換后的模型輸出在統(tǒng)計(jì)特性上與原始模型越相似,結(jié)構(gòu)保持得越好。
它比傳統(tǒng)的誤差指標(biāo)更能從統(tǒng)計(jì)學(xué)角度評(píng)估輸出的保真度,提供了更豐富的比較維度。
04,均方誤差 (MSE) & 平均絕對(duì)誤差 (MAE)
代表什么: 衡量?jī)蓚€(gè)模型輸出值之間絕對(duì)數(shù)值差異的經(jīng)典指標(biāo)。
意義: 結(jié)果越接近 0,表示兩個(gè)模型的輸出在數(shù)值上越接近,精度損失越小。
它們是最直接、最量化的精度評(píng)估方式,直觀反映了模型轉(zhuǎn)換引入的誤差大小。
這些指標(biāo)共同構(gòu)成了一個(gè)全面的評(píng)估體系,確保我們能從多個(gè)角度科學(xué)、客觀地判斷模型轉(zhuǎn)換是否成功。

在AI模型部署到邊緣設(shè)備的過程中,如何確保轉(zhuǎn)換后的模型在保持高性能的同時(shí),又能維持與原始模型輸出的一致性,是一個(gè)至關(guān)重要的問題。我們相信,通過本項(xiàng)目提供的這套標(biāo)準(zhǔn)化、自動(dòng)化的評(píng)估流程,能夠?yàn)锳I工程師提供一個(gè)可靠的工具,快速評(píng)估模型轉(zhuǎn)換是否成功。
項(xiàng)目地址:
https://github.com/Chris-godz/model-conversion-verification
技術(shù)交流:歡迎提交Issue或PR,共同完善這套評(píng)估體系。
聲明:本項(xiàng)目中使用的YOLOv5模型版權(quán)歸屬原作者,DeepX SDK相關(guān)工具版權(quán)歸屬DEEPX公司。
這篇文檔展示了我們?cè)谀P娃D(zhuǎn)換和精度驗(yàn)證方面的一次完整實(shí)踐。如果您有任何問題或建議,歡迎隨時(shí)與我們交流!
如果你有更好的文章,歡迎投稿!
稿件接收郵箱:nami.liu@pasuntech.com
更多精彩內(nèi)容請(qǐng)關(guān)注“算力魔方?”!
審核編輯 黃宇
-
AI
+關(guān)注
關(guān)注
88文章
37213瀏覽量
291940 -
模型
+關(guān)注
關(guān)注
1文章
3618瀏覽量
51543
發(fā)布評(píng)論請(qǐng)先 登錄

三步將AI模型轉(zhuǎn)換為 DeepX 格式并完成精度評(píng)估
評(píng)論