色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AI模型部署邊緣設備的奇妙之旅:如何實現手寫數字識別

福州市凌睿智捷電子有限公司 ? 2024-12-07 01:07 ? 次閱讀

1 簡介

近年來,人工智能AI)技術的突破性進展為嵌入式系統帶來了新的生機。AI技術的融入使得嵌入式系統能夠更加智能地處理復雜任務, 如圖像識別、語音識別、自然語言處理等。這種融合不僅提高了嵌入式系統的智能化水平,還極大地拓展了其應用范圍, 使得嵌入式系統在智能家居、智能交通、智能醫療等領域有了更深層次的運用。AI技術的嵌入,已經成為未來嵌入式系統發展 的一個重要趨勢。踏入邊緣端部署的第一步,我們可以從一個經典的機器學習案例——手寫數字識別開始。手寫數字識別是AI技術與嵌入式系統融合的一個直觀且易于理解的例子。它不僅展示了如何在資源受限的設備上運行復雜的AI算法,而且體現了將智能處理推向數據產生源的重要性,從而減少對云端計算的依賴。

2 基礎知識

2.1 神經網絡模型概覽

神經網絡模型的設計靈感來源于人類大腦的結構。人腦由大量相互連接的神經元組成,這些神經元通過電信號傳遞信息,幫助我們處理和理解周圍的世界。模仿這一過程,人工神經網絡(ANN)利用軟件構建的人工神經元或節點來解決復雜問題。這些節點被組織成層,并通過計算系統執行數學運算以求解問題。一個典型的神經網絡模型包括三個主要部分:

輸入層:負責接收來自外部世界的原始數據,如圖像、聲音或文本等。輸入節點對這些數據進行初步處理后,將它們傳遞給下一層。

隱藏層:位于輸入層與輸出層之間,可以有一層或多層。每一層都會對接收到的數據進行分析和轉換,逐步提取特征直至形成抽象表示。隱藏層的數量和寬度決定了網絡的深度和復雜性。

輸出層:最終產生網絡的預測結果。根據任務的不同,輸出層可能包含單個節點(例如二分類問題中的0或1)或者多個節點(如多類別分類問題)。

9665f9e8-b3f4-11ef-8084-92fbcf53809c.png

為了更直觀地理解神經網絡的工作原理,我們可以使用在線工具A Neural Network Playground

96745d30-b3f4-11ef-8084-92fbcf53809c.png

當神經網絡中包含多個隱藏層時,它就被稱為深度神經網絡(DNN),也即深度學習網絡。這類網絡通常擁有數百萬甚至更多的參數,使得它們能夠捕捉到數據內部非常復雜的非線性關系。在深度神經網絡中,每個節點之間的連接都有一個權重值,用來衡量兩個節點間的關聯強度;正權重表示激勵作用,而負權重則意味著抑制作用。較高的權重意味著該節點對其相鄰節點的影響更大。理論上講,足夠深且寬的神經網絡幾乎可以擬合任意類型的輸入輸出映射。然而,這種能力是以需要大量的訓練數據為代價的——相比起簡單的淺層網絡,深度神經網絡往往需要數百萬級別的樣本才能達到良好的泛化性能。

2.3 常見的神經網絡類型

根據具體應用場景和技術特點,人們開發了多種不同類型的神經網絡架構:

前饋神經網絡(FNN):最基礎的一種形式,其中數據僅沿單一方向流動,從輸入層經過一系列隱藏層到達輸出層,不存在反饋路徑。

卷積神經網絡(CNN):特別擅長于圖像識別任務,因其特殊的濾波器設計能夠有效地捕捉圖像的空間結構信息。

循環神經網絡(RNN):適用于處理序列數據,比如自然語言處理中的句子或是時間序列分析中的股票價格走勢。RNN具備記憶功能,允許當前時刻的狀態依賴于之前時刻的狀態。

長短期記憶網絡(LSTM) 和門控循環單元(GRU):作為RNN的改進版本,旨在克服傳統RNN中存在的梯度消失問題,從而更好地建模長時間跨度上的依賴關系。

生成對抗網絡(GAN):由兩個子網絡構成,一個是生成器用于創造新的數據樣本,另一個是判別器用來判斷這些樣本的真實性。兩者相互競爭,共同進化,最終實現高質量的數據合成。

2.4 模型優化技術

在將深度學習模型部署到資源受限的環境中時,模型優化技術扮演著至關重要的角色。這些技術旨在減少模型的大小、降低計算復雜度,并提高推理速度,同時盡量保持或最小化對模型準確性的負面影響。以下是三種常見的模型優化技術:剪枝、量化和蒸餾。

2.4.1 剪枝(Pruning)

剪枝是一種通過移除神經網絡中不重要或冗余的連接(權重)或節點來壓縮模型的技術。通常,剪枝是基于權重的絕對值大小來進行的,即認為較小的權重對于模型的重要性較低,可以被安全地刪除。

過程

預訓練階段:首先訓練一個大型的初始模型。

剪枝階段:根據設定的標準(如閾值)去除部分權重或整個神經元。

微調階段:對剪枝后的模型進行再訓練,以恢復可能因剪枝而損失的精度。

優點

顯著減少了模型參數的數量,從而降低了存儲需求和計算成本。

對于某些應用,可以通過剪枝實現更高的效率,尤其是在硬件加速器上。

挑戰

剪枝可能會導致模型性能下降,因此需要仔細選擇剪枝策略并進行適當的再訓練。

高度非線性的問題中,簡單地剪枝可能會造成較大的準確率損失。

2.4.2 量化(Quantization)

模型量化是深度學習模型優化的一種關鍵技術,旨在通過減少模型參數和激活值的數值精度來降低模型的存儲需求和計算復雜度。具體來說,量化通常涉及將浮點數(如32位或16位)表示的權重和激活轉換為低精度的數據類型(如8位整數或更低),從而實現模型壓縮和加速推理。

過程

(1)訓練后量化

這是最簡單的方法,直接應用于已經訓練好的模型。過程如下:

統計分析:收集模型中所有層的激活和權重分布信息。

確定范圍:根據統計結果確定量化范圍(例如最小值和最大值),以便將浮點數映射到整數區間。

應用量化:將浮點權重和激活值按照預定規則轉換為低精度整數。

校準(可選):為了最小化量化誤差,可以通過少量數據集進行校準,調整量化參數。

這種方法的優點是不需要重新訓練模型,但可能導致一定程度的精度損失。

(2)量化感知訓練

量化感知訓練在模型訓練階段就引入了量化操作。這意味著在整個訓練過程中,模型會“學習”如何更好地適應量化后的環境。 步驟包括:

模擬量化:在前向傳播時,模擬量化過程,即用低精度數值代替高精度數值來進行計算。

反向傳播與更新:在反向傳播期間,仍然使用原始浮點梯度進行參數更新,確保模型能夠正常收斂。

逐步量化:可以選擇性地先對某些層進行量化,觀察其影響后再決定是否對其他層也實施量化。

最終量化:完成訓練后,將模型完全轉換為量化版本。

這種方法通常能保留更多的模型精度,因為模型已經在訓練中學會了應對量化帶來的變化。

優點

顯著降低模型的存儲需求和計算復雜度。

在特定硬件(如GPU、NPU)上運行時,可以大幅提升推理速度。

挑戰

可能會導致一定的精度損失,盡管這種損失通常是可控的。

不同類型的模型和任務對量化敏感度不同,需謹慎評估。

2.4.3 蒸餾(Knowledge Distillation)

蒸餾,也稱為知識遷移,是一種通過“教師”模型指導“學生”模型學習的方法。“教師”模型通常是更大、更復雜的模型,具有較高的準確性;而“學生”模型則設計得更加緊湊,以便于部署。“教師”的輸出(軟標簽)作為額外信息傳遞給“學生”,幫助其學習。

過程

教師模型訓練:先訓練出一個高性能但可能過于龐大的教師模型。

學生模型訓練:使用教師模型的輸出作為監督信號,訓練一個較小的學生模型,使其模仿教師的行為。

混合損失函數:結合硬標簽(原始目標值)與軟標簽(教師預測),構成最終的損失函數用于訓練學生模型。

優點

可以在幾乎不影響預測質量的情況下大幅減小模型規模。

學生模型繼承了教師的知識,能夠在資源受限的設備上高效運行。

挑戰

設計有效的教學策略以及選擇合適的損失函數是關鍵。

教師模型的質量直接影響到學生的學習效果,因此需要高質量的教師模型。

2.5 ONNX

ONNX(Open Neural Network Exchange)是一種用于在各種深度學習框架之間轉換神經網絡模型的開放格式。它允許用戶將訓練好的模型從深度學習框架轉換為其他框架,或者將模型從一種框架轉換為另一種框架。借助它支持不同的人工智能框架(如 PyTorch、MXNet)采用相同格式存儲模型數據并交互。

968aadf6-b3f4-11ef-8084-92fbcf53809c.png

在沒有ONNX之前,每個深度學習框架都有其自己的模型格式,這導致了所謂的“框架鎖定”問題——即一旦選擇了某個框架進行開發,就很難將模型遷移到其他框架中去。ONNX通過定義一種標準化的模型交換格式打破了這種限制,允許模型在PyTorch、TensorFlow、MXNet等流行框架之間自由轉換。這意味著開發者可以根據項目需求靈活選擇最適合的工具鏈,而不必擔心后期遷移的成本。對于那些希望快速迭代并優化模型的企業和個人開發者而言,ONNX極大地簡化了從研究到生產的路徑。例如,研究人員可以在一個框架中設計并訓練模型,而工程師則可以輕松地將該模型轉換為另一種更適合生產環境的框架來部署。此外,許多推理引擎和硬件加速器也支持ONNX格式,從而進一步加快了模型部署的速度。

在凌智視覺模塊中模型轉換就比較簡單,我們只需要點擊運行即可,下面是具體的代碼。

%cd /home/aistudio/PaddleX!pip uninstall -y paddle2onnx!pip install paddle2onnx -i https://pypi.doubanio.com/simple/ --trusted-host pypi.douban.com!paddle2onnx --model_dir ./output/best_model/inference \ --model_filename inference.pdmodel \ --params_filename inference.pdiparams \ --save_file ${MODEL_NAME}.onnx \ --deploy_backend rknn!cp ${MODEL_NAME}.onnx /home/aistudio/output%cd /home/aistudio/LockzhinerVisionModule然后使用 LockzhinerVisionModule 模型轉換工具,將 ONNX 模型轉換為 RKNN 模型。# 將 FP32 ONNX 模型轉換為 RKNN 模型import osdef list_image_files(directory, output_file): with open(output_file, 'w') as f: for root, dirs, files in os.walk(directory): for file in files: if file.lower().endswith(('.png', '.jpg', '.jpeg')): abs_path = os.path.abspath(os.path.join(root, file)) f.write(abs_path + '\n')directory_path = '/home/aistudio/data/Dataset' # 替換為你的目錄路徑output_file_path = 'dataset.txt' # 輸出文件名list_image_files(directory_path, output_file_path)!pip install onnxslim!python utils/export.py \ --config_path=./configs/${MODEL_NAME}.yaml \ --model_load_path=/home/aistudio/output/${MODEL_NAME}.onnx \ --model_save_path=/home/aistudio/output/${MODEL_NAME}.rknn \ --target_platform=RV1106

2.6 邊緣端部署需考慮因素

邊緣計算是一種將數據處理任務盡可能靠近數據源執行的計算模式,其主要目的是減少延遲、節省帶寬,并增強隱私保護。與依賴遠程數據中心進行數據處理和存儲的傳統云計算不同,邊緣計算讓智能處理更貼近用戶或傳感器,帶來了顯著的優勢:

低延遲:由于減少了數據往返云端的時間,邊緣計算可以實現近乎即時的數據處理和響應。

帶寬優化:通過在本地處理數據,邊緣計算減少了需要上傳到云端的數據量,從而降低了通信成本和網絡負載。

隱私與安全:敏感數據可以在本地處理,而不必傳輸到外部服務器,這有助于更好地保護用戶隱私和數據安全。

然而,邊緣計算也帶來了獨特的挑戰,特別是在資源受限的嵌入式系統中部署復雜的AI模型時。為了確保神經網絡模型能夠在邊緣設備上高效運行,必須考慮以下關鍵因素:

(1)硬件性能限制

邊緣設備通常配備有較低功耗的處理器(如CPU或GPU),這意味著它們的計算能力有限。對于深度學習模型而言,這可能是一個瓶頸。因此,選擇合適的硬件加速器變得至關重要,比如神經處理單元(NPU)、數字信號處理器(DSP)等,這些專用硬件可以顯著提高推理速度,同時保持較低的功耗。

(2)內存容量

內存大小直接關系到模型的復雜度和可加載性。大型神經網絡往往需要大量的RAM來存儲權重和其他參數。對于內存有限的小型嵌入式系統來說,這可能意味著無法支持過于復雜的模型。因此,在設計階段就需要權衡模型精度與所需資源之間的關系,必要時簡化模型結構以適應目標平臺。

(3)功耗管理

許多邊緣設備依靠電池供電,這意味著長時間運行高能耗的應用程序會導致電量快速耗盡。為了延長續航時間,開發者應該采用節能算法和技術,例如量化、剪枝等方法來降低模型對計算資源的需求。此外,還可以利用動態電壓頻率調節(DVFS)技術根據實際工作負載調整處理器的工作狀態,進一步節約電力。

(4)存儲空間

盡管現代邊緣設備擁有一定的內部存儲,但深度學習框架及相關庫可能會占用大量空間。特別是當涉及到預訓練模型時,文件大小可能相當可觀。因此,壓縮模型或者精簡依賴項成為了一個重要的考量點。使用輕量級框架、去除不必要的功能模塊以及應用模型壓縮技術(如量化感知訓練)都是有效的解決方案。

3 部署

3.1 準備工作

在進行模型的部署之前,我們首先需要確認自己手上的模塊的支持哪些算子、支持什么類型的量化(int4/int8/fp16/混合精度)、內存大小等參數,對于手上的板子有一個全面的了解。在進行部署時,我們常常將訓練的模型轉化成onnx中間文件,再根據硬件設備要求的轉化成硬件要求的模型文件。在本次實驗中,我使用的模塊是凌智視覺模塊(Lockzhiner Vision Module) ,這個模塊是福州市凌睿智捷電子有限公司聯合百度飛槳傾力打造的一款高集成度人工智能視覺模塊,專為邊緣端人工智能和機器視覺應用而設計,模塊的參數如下圖所示。

96b54a48-b3f4-11ef-8084-92fbcf53809c.png

這個模塊有著一個很吸引人的特點與飛槳低代碼開發工具 PaddleX 完美適配,配合飛槳星河社區 Al Studio, 可以實現一鍵訓練;配合凌智視覺算法部署庫,用戶可以實現一鍵部署,減少我們在模型部署時遇到的疑難雜癥。如果遇到問題,可以去廠家開源倉庫提交問題。凌智視覺模塊Gitee鏈接

3.2 模型轉換

廢話不多說,試一試這個低代碼平臺是否真的如宣傳所說的那樣容易使用。在 百度飛槳的 AiStudio 中,搜索【PaddleX】在凌智視覺模塊上部署手寫數字分類模型如果說有自己制作數據的話,需要將數據上傳,然后在修改全局配置項,修改數據集地址以及對應的類別數。

96c09c90-b3f4-11ef-8084-92fbcf53809c.png

按照廠家提供的配置直接進行訓練轉換。

96e17d7a-b3f4-11ef-8084-92fbcf53809c.png

模型的訓練時間大概為半個小時,訓練完成后,會自動生成一個rknn模型文件,

3.3 部署結果

模型的推理結果如下圖所示

96f2e092-b3f4-11ef-8084-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3587

    瀏覽量

    129435
  • AI
    AI
    +關注

    關注

    87

    文章

    30728

    瀏覽量

    268886
  • 人工智能
    +關注

    關注

    1791

    文章

    47183

    瀏覽量

    238245
收藏 人收藏

    評論

    相關推薦

    邊緣AI應用越來越普遍,AI模型邊緣端如何部署

    模型在端側的部署也成了業界關注的焦點。 ? 如何把AI 模型邊緣部署 ? 首先得軟硬件適配
    的頭像 發表于 07-04 00:11 ?2634次閱讀
    <b class='flag-5'>邊緣</b><b class='flag-5'>AI</b>應用越來越普遍,<b class='flag-5'>AI</b><b class='flag-5'>模型</b>在<b class='flag-5'>邊緣</b>端如何<b class='flag-5'>部署</b>?

    邊緣部署模型優勢多!模型量化解決邊緣設備資源限制問題

    電子發燒友網報道(文/李彎彎)大模型邊緣部署是將大模型部署邊緣
    的頭像 發表于 01-05 00:06 ?3514次閱讀

    AI模型部署邊緣設備奇妙之旅:如何實現手寫數字識別

    ,我們可以從一個經典的機器學習案例——手寫數字識別開始。手寫數字識別
    發表于 12-06 17:20

    AI模型部署邊緣設備奇妙之旅:如何在邊緣部署OpenCV

    識別、分類、跟蹤、場景重建等。這可能涉及到機器學習和深度學習模型的應用。 簡而言之,圖像處理是計算機視覺的基礎,提供了必要的工具和技術來預處理和優化圖像數據;而計算機視覺則是在此基礎之上,通過更加復雜
    發表于 12-14 09:31

    AI模型部署邊緣設備奇妙之旅:目標檢測模型

    以及邊緣計算能力的增強,越來越多的目標檢測應用開始直接在靠近數據源的邊緣設備上運行。這不僅減少了數據傳輸延遲,保護了用戶隱私,同時也減輕了云端服務器的壓力。然而,在邊緣
    發表于 12-19 14:33

    基于RBM實現手寫數字識別高準確率

    DL之RBM:基于RBM實現手寫數字識別高準確率
    發表于 12-28 10:19

    MNIST數據集訓練手寫數字識別模型的優化

    TensorFlow筆記(4)——優化手寫數字識別模型之代價函數和擬合
    發表于 10-21 10:39

    EdgeBoard FZ5 邊緣AI計算盒及計算卡

    實現模型的訓練、部署、推理等一站式服務,降低AI開發門檻。5 卓越品質與可靠性設計,直面工業場景高效開發寬溫設計,適應-40度到+70度環境溫度;整體式無風扇被動散熱,適應工業場景的
    發表于 08-31 14:12

    【HarmonyOS HiSpark AI Camera】基于圖像的手語識別機器人系統

    和圖像,再把數字特征進行分類器模型預測,將預測結果以文本和語音形式展現出來。②把訓練模型進行裁剪量化部署到IOT設備上,
    發表于 09-25 10:11

    如何將AI模型部署到嵌入式系統中

    本期我們分享主題是如何將 AI 模型部署到嵌入式系統中,下一期將介紹如何在 RT-Thread 操作系統上運行 Mnist Demo(手寫數字
    發表于 12-14 07:55

    介紹在STM32cubeIDE上部署AI模型的系列教程

    介紹在STM32cubeIDE上部署AI模型的系列教程,開發板型號STM32H747I-disco,值得一看。MCUAI原文鏈接:【嵌入式AI開發】篇四|
    發表于 12-14 09:05

    如何去實現基于K210的MNIST手寫數字識別

    基于K210的MNIST手寫數字識別硬件平臺采用Maixduino開發板在sipeed官方有售軟件平臺使用MaixPy環境進行單片機的編程 官方資源可在這里下載 鏈接: [link]http
    發表于 02-17 07:35

    嵌入式邊緣AI應用開發指南

    保駕護航。下面讓我們來了解如何不借助手動工具或手動編程來選擇模型、隨時隨地訓練模型并將其無縫部署到TI處理器上,從而實現硬件加速推理。圖1: 邊緣
    發表于 11-03 06:53

    Pytorch實現MNIST手寫數字識別

    Pytorch 實現MNIST手寫數字識別
    發表于 06-16 14:47 ?7次下載

    AI模型部署邊緣設備奇妙之旅:目標檢測模型

    的重要特征進行分類和提取,并有效排除無用的多余特征,進而實現圖像識別。一般而言,圖像識別有四大類任務:(1)分類-Classification:解決“是什么?”的問
    的頭像 發表于 12-19 14:12 ?209次閱讀
    <b class='flag-5'>AI</b><b class='flag-5'>模型</b><b class='flag-5'>部署</b><b class='flag-5'>邊緣</b><b class='flag-5'>設備</b>的<b class='flag-5'>奇妙</b><b class='flag-5'>之旅</b>:目標檢測<b class='flag-5'>模型</b>
    主站蜘蛛池模板: 国产精品大陆在线视频| 亚洲一卡久久4卡5卡6卡7卡| 暖暖视频免费观看视频| 久久精品电影网| 精品午夜国产福利观看| 韩国女人高潮嗷嗷叫视频| 国产亚洲国际精品福利| 国产亚洲精品久久无亚洲| 国产精品资源在线观看网站 | 男女夜晚在爽视频免费观看| 久久999视频| 久久国产露脸老熟女熟69| 久久99re6国产在线播放| 久久国产精品永久网站| 久久精品视频16| 老头xxx| 么公在浴室了我的奶| 美女pk精子4| 啪啪做羞羞事小黄文| 日韩亚洲国产欧美免费观看| 双性h浪荡受bl| 亚洲 成人网| 一本色道久久88综合日韩精品| 一级做a爰片久久毛片免费| 在教室轮流被澡高H林萌| 佐山爱巨大肥臀在线| 99RE6国产精品视频播放| 被老师按在办公桌吸奶头| 成人国内精品久久久久影院| 菲律宾毛片| 国产综合在线视频| 久久视频在线视频观品15| 男人J进女人P| 色欲AV精品一区二区入口 | 久久热国产在线视频| 免费果冻传媒2021视频| 欧美最猛黑人XXXXWWW| 无码人妻精品一区二区蜜桃色| 亚洲va精品中文字幕| 中文在线日韩亚洲制服| CHINESE老阿姨免费视频|