国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA上部署深度學(xué)習(xí)的算法模型的方法以及平臺(tái)

FPGA之家 ? 來(lái)源:阿chai帶你學(xué)AI ? 作者:阿chai ? 2021-06-10 17:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天給大家介紹一下FPGA上部署深度學(xué)習(xí)算法模型的方法以及平臺(tái)。希望通過(guò)介紹,算法工程師在FPGA的落地上能“稍微”緩和一些,小白不再那么迷茫。阿chai最近在肝一個(gè)開(kāi)源的項(xiàng)目,等忙完了會(huì)給大家出幾期FPGA上從零部署的教程,包括一些底層的開(kāi)發(fā)、模型的量化推理等等,因?yàn)樯婕暗臇|西太多了,所以得分開(kāi)寫(xiě)。

FPGA與“迷宮”

深度學(xué)習(xí)這里就不多介紹了,我們接下來(lái)介紹一下FPGA是什么。FPGA是現(xiàn)場(chǎng)可編程邏輯門(mén)陣列,靈活性非常高,現(xiàn)場(chǎng)編程真的香。說(shuō)到這里小伙伴們可能還是不太明白,那么我們和ARM對(duì)比一下,ARM可以理解為比如這有一個(gè)迷宮,迷宮有很多進(jìn)口也有對(duì)應(yīng)的出口,道路中間有很多“暗門(mén)”可以走,對(duì)ARM芯片做編程就是觸發(fā)當(dāng)中一條通路,路是死的,我們不好改變。

FPGA是如果我們想要一個(gè)迷宮,F(xiàn)PGA給提供了一個(gè)大的“盒子”,里面有很多的“隔板”,我們自己搭建一條就可以了,你想要什么樣的路就什么樣子,類(lèi)似玩我的世界,只不過(guò)“礦”是各種邏輯門(mén)。那就意味著,F(xiàn)PGA可以設(shè)計(jì)外圍電路也可以設(shè)計(jì)CPU,是不是很爽。

當(dāng)然,爽的背后開(kāi)發(fā)難度也是相當(dāng)?shù)拇蟮模@種“特定屬性”非常時(shí)候做人工智能的算法加速。由于制作特殊電路,F(xiàn)PGA之前經(jīng)常用做信號(hào)處理中,配合DSP或者ARM使用,后來(lái)也有用FPGA或者CPLD搭建“礦機(jī)”當(dāng)“礦老板”(祝愿”挖礦“的天天礦難)。

小白入門(mén)A:PYNQ

PYNQ是Python + ZYNQ,用Python進(jìn)行FPGA開(kāi)發(fā),首先強(qiáng)調(diào)一點(diǎn),Python近幾年非?;?,雖然很強(qiáng)大,但是他開(kāi)發(fā)硬件不是真的就做硬件,希望大家不要迷。教程:https://github.com/xupsh/Advanced-Embedded-System-Design-Flow-on-Zynq我們類(lèi)比一下很火的MicroPython,使用Python開(kāi)發(fā)硬件是得有特定的電路設(shè)計(jì)的,除非自己是大佬修改底層的固件,但是都修改底層了,是不是可以自己開(kāi)發(fā)就好了。

當(dāng)然這個(gè)是面向小白的,對(duì)應(yīng)的開(kāi)發(fā)板如下圖。這個(gè)板子類(lèi)似我們之前玩MicroPython,也是各種調(diào)包。實(shí)際上ZYNQ是一個(gè)雙核ARM Cortex-A9處理器和一個(gè)FPGA,使用Python的話可以通過(guò)Jupyter進(jìn)行開(kāi)發(fā),是不是很香,所以這個(gè)非常適合小白。FPGA上跑BNN(二值神經(jīng)網(wǎng)絡(luò))是非常不錯(cuò)的。

“PYNQ-Z1不同的機(jī)器學(xué)習(xí)數(shù)據(jù)集(dataset)的測(cè)試結(jié)果顯示:對(duì)于MNIST數(shù)據(jù)集PYNQ-Z1能實(shí)現(xiàn)每秒168000張圖片的分類(lèi),延遲102微妙,準(zhǔn)確率達(dá)98.4%;對(duì)于CIFAR-10、SVHN、GTSRB數(shù)據(jù)集PYN1-Z1能實(shí)現(xiàn)每秒1700張圖片的分類(lèi),延遲2.2毫秒,準(zhǔn)確率分別為80.1%、96.69%和97.66%,系統(tǒng)功耗均保持在2.5W左右。”這個(gè)到底有多方便,我們看一段代碼,首先我們調(diào)用模型:

import bnn hw_classifier = bnn.CnvClassifier(bnn.NETWORK_CNVW1A1,‘cifar10’,bnn.RUNTIME_HW) sw_classifier = bnn.CnvClassifier(bnn.NETWORK_CNVW1A1,‘cifar10’,bnn.RUNTIME_SW)進(jìn)行測(cè)試:

from IPython.display import display im = Image.open(‘car.png’) im.thumbnail((64, 64), Image.ANTIALIAS) display(im) car_class = hw_classifier.classify_image_details(im) print(“{: 》10}{: 》13}”.format(“[CLASS]”,“[RANKING]”)) for i in range(len(car_class)): print(“{: 》10}{: 》10}”.format(hw_classifier.classes[i],car_class[i]))同樣支持matplotlib進(jìn)行數(shù)據(jù)可視化:

%matplotlib inline import matplotlib.pyplot as plt x_pos = np.arange(len(car_class)) fig, ax = plt.subplots() ax.bar(x_pos - 0.25, (car_class/100.0), 0.25) ax.set_xticklabels(hw_classifier.classes, rotation=‘vertical’) ax.set_xticks(x_pos) ax.set plt.show()這不就是Python嘛,真的是非常的方便,而且圖像處理也兼容使用Pillow。文件中給出了一些圖像識(shí)別的例子,大家可以去看看。改天阿chai給大家出一個(gè)從零搭建PYNQ的教程,包括模型的量化推理等等。

小白入門(mén)B:DPU

DPU是一個(gè)用于卷積神經(jīng)網(wǎng)絡(luò)的可編程引擎。該單元包含寄存器配置模塊、數(shù)據(jù)控制器模塊和卷積計(jì)算模塊。當(dāng)然,強(qiáng)大的PYNQ也是支持使用DPU的,如果用這個(gè)直接看Python的API就可以了,開(kāi)發(fā)板可以使用ZCU104。大神很多直接用ZYNQ開(kāi)整的,但是那個(gè)難度真的不適合初學(xué)者去看,等忙完了項(xiàng)目阿chai給小伙伴們整個(gè)這個(gè)的教程。我們首先clone下來(lái)項(xiàng)目并且編譯:

git clone https://github.com/Xilinx/DPU-PYNQ.git cd DPU-PYNQ/upgrade make安裝pynq-dpu:

pip install pynq-dpu啟動(dòng)jupyter-notebook:

pynq get-notebooks pynq-dpu -p 。模型庫(kù)在如下鏈接中。模型庫(kù):https://github.com/Xilinx/Vitis-AI/tree/v1.3對(duì)于DPU的設(shè)計(jì),我們需要在自己的電腦上進(jìn)行,在添加模塊后,我們使用如下命令進(jìn)行編譯:

make BOARD=《Board》對(duì)于ZYNQ+DPU的開(kāi)發(fā)過(guò)程阿chai會(huì)單獨(dú)出一期,因?yàn)樯婕暗臇|西太多了。。。

支持國(guó)產(chǎn)框架:Paddle-Lite

既然python都可以,那肯定Paddle-Lite這種推理框架也是可行的,百度也有專(zhuān)門(mén)的部署開(kāi)發(fā)套件 EdgeBoard。EdgeBoard是基于Xilinx Zynq UltraScale+ MPSoC系列芯片打造的計(jì)算卡,芯片內(nèi)部集成ARM處理器+GPU+FPGA的架構(gòu),既具有多核處理能力、也有視頻流硬解碼處理能力,還具有FPGA的可編程的特點(diǎn)。其實(shí)部署的思路小伙伴們應(yīng)該有一些眉目了,就是將自己訓(xùn)練的深度學(xué)習(xí)模型轉(zhuǎn)換成Paddle Lite模型,然后移植到EdgeBoard開(kāi)發(fā)板上進(jìn)行測(cè)試。接下來(lái)我們簡(jiǎn)單看看是怎樣操作的。EdgeBoard中模型的測(cè)試由json文件做管理:

{ “model”:“測(cè)試的模型”, “combined_model”:true, “input_width”:224, “input_height”:224, “image”:“測(cè)試的路徑”, “mean”:[104,117,124], “scale”:1, “format”:“BGR” “threshold”:0.5 }詳細(xì)的操作請(qǐng)前往Paddle Lite的GitHub,這里只做簡(jiǎn)單的流程介紹。GitHub: https://github.com/PaddlePaddle/Paddle-Lite如果不想編譯,直接在如下網(wǎng)址中下載編譯好的文件即可。編譯后的文件:https://ai.baidu.com/ai-doc/HWCE/Yk3b95s8o

1.安裝測(cè)試

我們首先在有在開(kāi)發(fā)板上編譯Paddle Lite,編譯的時(shí)候需要設(shè)置cmake的參數(shù),設(shè)置LITE_WITH_FPGA=ON和LITE_WITH_ARM=ON,問(wèn)就是我們都用到。對(duì)應(yīng)的FPGA的編譯腳本是lite/tools/build_FPGA.sh,我們執(zhí)行即可。

sh 。/lite/tools/build_fpga.sh make publish_inference -j2接下來(lái)我們編譯示例demo,demo也在剛才的下載鏈接中。板子的使用過(guò)程請(qǐng)參考百度官方的文檔,文檔介紹的非常的清楚,阿chai這里就不花時(shí)間去講解使用過(guò)程了。然后進(jìn)入demo中進(jìn)行編譯:

# classification cd /home/root/workspace/sample/classification/ mkdir build cd build cmake 。。 makebuild目錄下會(huì)出現(xiàn)image_classify和video_classify兩個(gè)可執(zhí)行文件,圖片預(yù)測(cè)運(yùn)行image_classify文件。使用FPGA 進(jìn)行resnet50進(jìn)行測(cè)試:

。/image_classify_fpga_preprocess 。。/configs/resnet50/drink.json 可以看到對(duì)應(yīng)的輸出結(jié)果,同樣detection的模型測(cè)試方式也這樣操作。

2.可調(diào)用的接口

C++

C++的主要包括預(yù)處理以及預(yù)測(cè)庫(kù)的接口。

預(yù)處理接口主要是使用FPGA完成圖片的縮放、顏色空間轉(zhuǎn)換和mean/std操作。

預(yù)測(cè)庫(kù)接口主要完成模型的初始化、輸入?yún)?shù)構(gòu)造、預(yù)測(cè)和結(jié)果獲取。

預(yù)處理接口示例:

/** * 判斷輸入圖像是否是wc 16對(duì)齊 * width 輸入圖像寬度 * channel 輸入圖像高度 **/ bool img_is_align(int width, int channel); /** * 對(duì)齊后的大小 * width 輸入圖像寬度 * channel 輸入圖像高度 **/ int align_size(int width, int channel); /** * 分配存放圖片的內(nèi)存,析構(gòu)函數(shù)會(huì)自動(dòng)釋放 (目前支持BGR-》RGB RGB-》BGR YUV422-》BGR YUV-》RGB) 圖像最大分辨率支持1080p * height 輸入圖像的框 * width 輸入圖像寬度 * in_format 輸入圖像格式 參考image_format * return uint8_t* opencv Mat CV_8UC3 **/ uint8_t* mem_alloc(int img_height, int img_width, image_format in_format);預(yù)測(cè)庫(kù)使用步驟1、模型初始化,構(gòu)建預(yù)測(cè)對(duì)象

std::unique_ptr《paddle_mobile::PaddlePredictor》 g_predictor; PaddleMobileConfig config; std::string model_dir = j[“model”]; config.precision = PaddleMobileConfig::FP32; config.device = PaddleMobileConfig::kFPGA; config.prog_file = model_dir + “/model”; config.param_file = model_dir + “/params”; config.thread_num = 4; g_predictor = CreatePaddlePredictor《PaddleMobileConfig, PaddleEngineKind::kPaddleMobile》(config);2、輸入輸出參數(shù)

std::vector《PaddleTensor》 paddle_tensor_feeds; PaddleTensor tensor; tensor.shape = std::vector《int》({1, 3, input_height, input_width}); tensor.data = PaddleBuf(input, sizeof(input)); tensor.dtype = PaddleDType::FLOAT32; paddle_tensor_feeds.push_back(tensor); PaddleTensor tensor_imageshape; tensor_imageshape.shape = std::vector《int》({1, 2}); tensor_imageshape.data = PaddleBuf(image_shape, 1 * 2 * sizeof(float)); tensor_imageshape.dtype = PaddleDType::FLOAT32; paddle_tensor_feeds.push_back(tensor_imageshape); PaddleTensor tensor_out; tensor_out.shape = std::vector《int》({}); tensor_out.data = PaddleBuf(); tensor_out.dtype = PaddleDType::FLOAT32; std::vector《PaddleTensor》 outputs(1, tensor_out);3、預(yù)測(cè)

g_predictor-》Run(paddle_tensor_feeds, &outputs);4、獲取結(jié)果

float *data = static_cast《float *》(outputs[0].data.data()); int size = outputs[0].shape[0];

Python

EdgeBoard系統(tǒng)已經(jīng)安裝了python環(huán)境,用戶可直接使用即可,同時(shí)python接口為用戶提供了paddlemobile的python安裝包以及示例工程。文件名稱(chēng)說(shuō)明

paddlemobile-0.0.1.linux-aarch64-py2.tar.gzpaddlemobile的python2安裝包

edgeboard.py基于python的模型預(yù)測(cè)示例

api.pyedgeboard.py的api示例

configs.classification分類(lèi)模型的配置文件目錄,同C++示例的配置文件

configs.detection檢測(cè)模型的配置文件目錄,同C++示例的配置文件

models.classification分類(lèi)模型的模型文件目錄,同C++示例的模型文件

models.detection檢測(cè)模型的模型文件目錄,同C++示例的模型文件

安裝paddlemobile-python SDK,在根目錄中解壓

tar -xzvf home/root/workspace/paddlemobile-0.0.1.linux-aarch64-py2.tar.gz例如使用分類(lèi)模型的測(cè)試如下:

python api.py -j 你測(cè)試的json文件詳細(xì)的使用說(shuō)明請(qǐng)關(guān)注Paddle-Lite的GitHub。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1646

    文章

    22054

    瀏覽量

    618791
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3689

    瀏覽量

    95287
  • ARM芯片
    +關(guān)注

    關(guān)注

    1

    文章

    128

    瀏覽量

    22099
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1224

    瀏覽量

    25463
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5561

    瀏覽量

    122823

原文標(biāo)題:深度學(xué)習(xí)模型在FPGA上的部署

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】3、開(kāi)源大語(yǔ)言模型部署

    1、ollama平臺(tái)搭建 ollama可以快速地部署開(kāi)源大模型,網(wǎng)址為https://ollama.com, 試用該平臺(tái),可以在多平臺(tái)上部署
    發(fā)表于 07-19 15:45

    模型推理顯存和計(jì)算量估計(jì)方法研究

    GPU、FPGA等硬件加速。通過(guò)分析硬件加速器的性能參數(shù),可以估算模型在硬件加速下的計(jì)算量。 四、實(shí)驗(yàn)與分析 為了驗(yàn)證上述估計(jì)方法的有效性,我們選取了幾個(gè)具有代表性的深度
    發(fā)表于 07-03 19:43

    stm32N657上部署cubeAI生成代碼,編譯出錯(cuò)的原因?怎么解決?

    你好,要怎么在stm32N657上部署cubeAI生成代碼呢,編譯出錯(cuò),我使用cubeAI生成的手寫(xiě)數(shù)字模型的代碼,編譯報(bào)錯(cuò) 要怎么配置呢,我看其他AI demo都是分了兩個(gè)文件,這里要怎么燒錄進(jìn)去使用呢?
    發(fā)表于 06-20 06:31

    在V2板子上部署豆包模型調(diào)試指南

    在V2板子上部署豆包模型調(diào)試指南 準(zhǔn)備階段 首先,可以觀看大模型實(shí)戰(zhàn)(SC171開(kāi)發(fā)套件V3)并下載工程源碼,之后我們需要在板子上安裝這個(gè)代碼所要用到的一些庫(kù)。 pip3 install
    發(fā)表于 05-25 10:17

    如何使用Docker部署模型

    隨著深度學(xué)習(xí)和大模型的快速發(fā)展,如何高效地部署這些模型成為了一個(gè)重要的挑戰(zhàn)。Docker 作為一種輕量級(jí)的容器化技術(shù),能夠?qū)?/div>
    的頭像 發(fā)表于 05-24 16:39 ?359次閱讀

    基于stm32h743IIK在cubeai上部署keras模型,模型輸出結(jié)果都是同一組概率數(shù)組,為什么?

    基于stm32h743IIK,在cubeai上部署keras模型,模型輸出結(jié)果都是同一組概率數(shù)組,一點(diǎn)也搞不明白,看社區(qū)也有相同的問(wèn)題,但沒(méi)有解決方案
    發(fā)表于 03-10 06:42

    添越智創(chuàng)基于 RK3588 開(kāi)發(fā)板部署測(cè)試 DeepSeek 模型全攻略

    實(shí)踐筑牢了硬件根基。 DeepSeek 模型部署:兩種路徑,各顯神通 在 RK3588 開(kāi)發(fā)板上部署 DeepSeek 模型,目前主要有兩種實(shí)用且特色鮮明的
    發(fā)表于 02-14 17:42

    【ELF 2學(xué)習(xí)板試用】ELF2開(kāi)發(fā)板(飛凌嵌入式)搭建深度學(xué)習(xí)環(huán)境部署(RKNN環(huán)境部署

    是 Rockchip 為其輕量級(jí)神經(jīng)網(wǎng)絡(luò)處理單元(NPU)提供的一款工具包。它專(zhuān)注于簡(jiǎn)化和加速深度學(xué)習(xí)模型在 Rockchip 硬件平臺(tái)上的部署
    發(fā)表于 02-04 14:15

    Flexus X 實(shí)例 ultralytics 模型 yolov10 深度學(xué)習(xí) AI 部署與應(yīng)用

    模型迭代,讓 AI 智能觸手可及。把握此刻,讓創(chuàng)新不再受限! ???本實(shí)驗(yàn)演示從 0 到 1 部署 YOLOv10 深度學(xué)習(xí) AI 大模型
    的頭像 發(fā)表于 12-24 12:24 ?797次閱讀
    Flexus X 實(shí)例 ultralytics <b class='flag-5'>模型</b> yolov10 <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b> AI <b class='flag-5'>部署</b>與應(yīng)用

    AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測(cè)模型

    并非易事,它涉及到從選擇合適的算法架構(gòu)到針對(duì)特定硬件平臺(tái)進(jìn)行優(yōu)化等一系列復(fù)雜的工作。 接下來(lái),我們將詳細(xì)介紹如何在資源受限的邊緣設(shè)備上成功部署目標(biāo)檢測(cè)模型,探索其背后的原理和技術(shù),并討
    發(fā)表于 12-19 14:33

    AI模型部署邊緣設(shè)備的奇妙之旅:如何實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

    新的數(shù)據(jù)樣本,另一個(gè)是判別器用來(lái)判斷這些樣本的真實(shí)性。兩者相互競(jìng)爭(zhēng),共同進(jìn)化,最終實(shí)現(xiàn)高質(zhì)量的數(shù)據(jù)合成。 2.4 模型優(yōu)化技術(shù) 在將深度學(xué)習(xí)模型部署
    發(fā)表于 12-06 17:20

    深度學(xué)習(xí)模型的魯棒性優(yōu)化

    深度學(xué)習(xí)模型的魯棒性優(yōu)化是一個(gè)復(fù)雜但至關(guān)重要的任務(wù),它涉及多個(gè)方面的技術(shù)和策略。以下是一些關(guān)鍵的優(yōu)化方法: 一、數(shù)據(jù)預(yù)處理與增強(qiáng) 數(shù)據(jù)清洗 :去除數(shù)據(jù)中的噪聲和異常值,這是提高
    的頭像 發(fā)表于 11-11 10:25 ?1212次閱讀

    FPGA加速深度學(xué)習(xí)模型的案例

    FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)加速深度學(xué)習(xí)模型是當(dāng)前硬件加速領(lǐng)域的一個(gè)熱門(mén)研究方向。以下是一些FPGA加速
    的頭像 發(fā)表于 10-25 09:22 ?1242次閱讀

    AI大模型深度學(xué)習(xí)的關(guān)系

    AI大模型深度學(xué)習(xí)之間存在著密不可分的關(guān)系,它們互為促進(jìn),相輔相成。以下是對(duì)兩者關(guān)系的介紹: 一、深度學(xué)習(xí)是AI大
    的頭像 發(fā)表于 10-23 15:25 ?2906次閱讀

    FPGA深度學(xué)習(xí)能走多遠(yuǎn)?

    ,FPGA 也需要不斷適應(yīng)和改進(jìn)。研究人員和開(kāi)發(fā)者將致力于針對(duì) FPGA 的特點(diǎn)對(duì)深度學(xué)習(xí)算法進(jìn)行優(yōu)化,例如探索更高效的
    發(fā)表于 09-27 20:53