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

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

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

基于國產(chǎn)AI編譯器ICRAFT部署YOLOv5邊緣端計(jì)算的實(shí)戰(zhàn)案例

國產(chǎn)FPGA之家 ? 來源:國產(chǎn)FPGA之家 ? 2024-01-03 10:17 ? 次閱讀

1)背景介紹

1.1 邊緣端部署

人工智能領(lǐng)域中各種算法模型的不斷研究和改進(jìn)。隨著深度學(xué)習(xí)的興起,包括卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、生成對(duì)抗網(wǎng)絡(luò)(GAN)、transformer等在內(nèi)的各種深度學(xué)習(xí)算法被廣泛應(yīng)用于圖像識(shí)別、自然語言處理、語音識(shí)別等任務(wù)中。AI算法的作用是通過訓(xùn)練模型來實(shí)現(xiàn)自動(dòng)化的數(shù)據(jù)分析、決策和預(yù)測,幫助人類解決復(fù)雜的問題。

為了將AI算法賦能社會(huì)生產(chǎn)生活的各個(gè)領(lǐng)域中,AI加速芯片和配套使用的AI算法編譯器也逐漸發(fā)展成熟。本篇主要介紹在邊緣設(shè)備部署AI算法的經(jīng)驗(yàn)。邊緣設(shè)備一般指智能手機(jī)、汽車電子、智能工業(yè)、農(nóng)業(yè)物聯(lián)網(wǎng)設(shè)備等。部署到邊緣設(shè)備上的AI模型能夠?qū)崟r(shí)地對(duì)數(shù)據(jù)進(jìn)行處理,可以在不需要云端服務(wù)器的情況下,提供快速的響應(yīng)和處理能力。邊緣端AI部署的優(yōu)勢主要體現(xiàn)在以下幾個(gè)方面:

1. 實(shí)時(shí)性:邊緣設(shè)備上部署的AI模型可以實(shí)時(shí)地對(duì)數(shù)據(jù)進(jìn)行處理,不需要傳輸數(shù)據(jù)到云端服務(wù)器進(jìn)行處理,能夠大大減少數(shù)據(jù)傳輸和處理延遲。

2. 隱私保護(hù):由于邊緣設(shè)備上處理數(shù)據(jù)時(shí)不需要將數(shù)據(jù)傳輸?shù)皆贫朔?wù)器,因此能夠更好地保護(hù)用戶隱私,減少因數(shù)據(jù)傳輸而帶來的潛在安全風(fēng)險(xiǎn)。

3. 節(jié)約成本:邊緣設(shè)備上的AI模型可以避免云端服務(wù)器的成本,能夠有效地節(jié)約部署成本,尤其是在大規(guī)模部署時(shí)效果更為明顯。

4. 靈活性:邊緣設(shè)備上的AI模型可以與其他不同類型的設(shè)備相結(jié)合,構(gòu)建出更為靈活、智能化的系統(tǒng),例如智能家居、互聯(lián)網(wǎng)醫(yī)療等。

1.2 AI加速芯片

為了在邊緣端設(shè)備部署AI算法,往往需要專用AI加速芯片來加速算法計(jì)算。相比于通用的圖形處理單元(GPU),用于邊緣端的專用AI加速芯片具有以下優(yōu)勢:

- 高效性能:AI專用加速芯片采用了專門優(yōu)化的計(jì)算架構(gòu),能夠更高效地執(zhí)行深度學(xué)習(xí)計(jì)算,提供更快的推理速度和更低的能耗。

- 低功耗:AI專用加速芯片在設(shè)計(jì)上注重節(jié)能,能夠在相同計(jì)算能力下?lián)碛懈偷墓?,適合移動(dòng)設(shè)備和嵌入式系統(tǒng)等對(duì)能耗要求較高的場景。

- 支持量化計(jì)算:AI專用加速芯片通常支持低精度的量化計(jì)算,能夠在保持模型精度的同時(shí)減少模型的內(nèi)存占用和計(jì)算量。

- 專注深度學(xué)習(xí):由于AI專用芯片是專門為深度學(xué)習(xí)任務(wù)設(shè)計(jì)的,因此在深度學(xué)習(xí)計(jì)算方面有著更好的優(yōu)化和支持,能夠提供更好的用戶體驗(yàn)和性能表現(xiàn)。

1.3 AI編譯器

AI編譯器是一種用于優(yōu)化深度學(xué)習(xí)模型的工具,其主要功能是將高級(jí)的深度學(xué)習(xí)模型轉(zhuǎn)化為底層硬件能夠執(zhí)行的低級(jí)指令序列,以提高模型的推理速度和效率。AI編譯器可以針對(duì)特定的硬件平臺(tái)進(jìn)行優(yōu)化,充分發(fā)揮硬件資源的性能潛力。 AI編譯器的主要工作流程包括模型解析、優(yōu)化、代碼生成等過程。在模型解析階段,AI編譯器會(huì)解析深度學(xué)習(xí)模型的結(jié)構(gòu)和參數(shù),以便后續(xù)的優(yōu)化工作。在優(yōu)化階段,AI編譯器會(huì)進(jìn)行各種優(yōu)化技術(shù),如張量融合、內(nèi)存優(yōu)化、量化計(jì)算等,以提高模型的性能和效率。最后,在代碼生成階段,AI編譯器會(huì)將優(yōu)化后的模型轉(zhuǎn)化為特定硬件平臺(tái)上的可執(zhí)行指令序列,以實(shí)現(xiàn)高效的模型推理。

2)YOLOv5介紹

b5528d0e-a959-11ee-8b88-92fbcf53809c.png

YOLOv5是一種目標(biāo)檢測算法,它是YOLO(You Only Look Once)系列模型的經(jīng)典版本。YOLOv5通過使用深度卷積神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)實(shí)時(shí)、準(zhǔn)確地檢測圖像或視頻中的多個(gè)對(duì)象。

1. 高精度:YOLOv5在目標(biāo)檢測任務(wù)上取得了很好的性能,相較于之前版本的YOLO,YOLOv5在速度和準(zhǔn)確率方面都有所提升。

2. 輕量級(jí):YOLOv5采用了輕量級(jí)的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì),具有較少的參數(shù)量和計(jì)算量,適合在資源受限的環(huán)境下部署和應(yīng)用。

3. 多尺度檢測:YOLOv5引入了多尺度檢測機(jī)制,可以在不同尺度下對(duì)目標(biāo)進(jìn)行檢測,提高了對(duì)小目標(biāo)和遠(yuǎn)距離目標(biāo)的檢測效果。

4. 強(qiáng)大的數(shù)據(jù)增強(qiáng):YOLOv5采用了大量的數(shù)據(jù)增強(qiáng)技術(shù),如隨機(jī)縮放、隨機(jī)扭曲等,來擴(kuò)充訓(xùn)練集,提高模型的泛化能力和魯棒性。

5. 簡單易用:YOLOv5提供了簡潔的代碼和易于使用的接口,用戶可以方便地進(jìn)行訓(xùn)練、測試和部署。

3)ICRAFT編譯器介紹 ICRAFT是一款輕量易用的純國產(chǎn)自主研發(fā)AI編譯器,其優(yōu)勢有:

- 易用性:安裝環(huán)境簡單,使用方便

- 擴(kuò)展性強(qiáng):支持用戶自定義算子,以及算子后端

- 性能優(yōu)秀:在同類產(chǎn)品中(相同算力后端芯片),推力性能以及模型精度處于上游水平

目前支持pytorch,tensorflow,paddle-paddle,darknet,caffe等主流框架所保存的模型轉(zhuǎn)換。編譯器將各環(huán)節(jié)組件打包成可執(zhí)行程序,通過命令行調(diào)用,配合外部ini配置文件執(zhí)行各個(gè)組件。如圖所示,目前ICRAFT按功能層次劃分了5個(gè)組件,分別是:

- 解析:將模型解析并用ICRAFT IR重新表達(dá)、序列化成新模型

- 優(yōu)化:做圖優(yōu)化,減少計(jì)算量

- 量化:將模型參數(shù)量化

- 硬件適配:根據(jù)硬件情況進(jìn)行計(jì)算圖優(yōu)化

- 指令生成:生成硬件指令

每個(gè)環(huán)節(jié)產(chǎn)生的中間模型都會(huì)被保存用于仿真驗(yàn)證。

b5987c7e-a959-11ee-8b88-92fbcf53809c.png

此外,ICRAFT還提供了c/c++(未來還會(huì)提供python)的device和runtime庫用于在硬件上部署編譯后的模型。 下面我們就以yolov5為例,為大家介紹模型的編譯部署流程。

4)基于ICRAFT部署YOLOv5的流程 部署流程分為3步:

1. 框架模型導(dǎo)出

2. 使用ICRAFT編譯模型

3. 運(yùn)行時(shí)工程搭建

下面結(jié)合pytorch框架下的yolov5分別介紹每一步操作:

3.1 框架模型導(dǎo)出

框架模型導(dǎo)出目的:導(dǎo)出能夠被ICRAFT編譯的模型 框架模型導(dǎo)出背景:

1. pytorch保存的模型文件為.pt或.pth等格式。不同的保存方式會(huì)導(dǎo)致模型里面的內(nèi)容不同。目前ICRAFT能夠編譯的pytorch模型需要是帶有計(jì)算圖的靜態(tài)模型,因此需要用pytorch的`torch.jit.trace`保存出torchscript模型。

2. 由于ICRAFT的目標(biāo)硬件是異構(gòu)融合的芯片,包括npu、cpufpga等硬件資源,一個(gè)模型算法的不同計(jì)算部分由不同的后端執(zhí)行。在ICRAFT2.x版本中,ICRAFT編譯的部分是在npu上執(zhí)行的部分,而模型的前后處理是在其他后端進(jìn)行的,因此在導(dǎo)出模型時(shí),需要把前后處理部分去掉。

了解以上背景后,我們來看看在yolov5這個(gè)算法。此算法導(dǎo)出模型時(shí)需要處理的有兩點(diǎn):

1)`export.py`已經(jīng)提供了導(dǎo)出torchscript模型的方法,但是我們需要把`yolo.py`中的 `Detect`類中的一部分處理bbox的算子從模型中移出,處理方法就是,在導(dǎo)出模型時(shí),修改detect類的forward函數(shù):

   class Detect(nn.Module):
       stride = None  # strides computed during build
       onnx_dynamic = False  # ONNX export parameter
       export = False  # export mode
       trace = False
       ...
       def forward(self, x):
           z = []  # inference output
           for i in range(self.nl):
               x[i] = self.m[i](x[i])  # conv
               if not self.trace:
                   ...
           if self.trace:
returnx
在detetct類中加入trace的判斷條件,在導(dǎo)出模型時(shí)設(shè)置為true,使這部分的計(jì)算流停止到最后一層卷積算子的計(jì)算,即`x[i] = self.m[i](x[i]) # conv`,之后立刻返回結(jié)果。當(dāng)然,這只是一種操作辦法,能達(dá)到相同的效果的方法都可以使用。

2)在yolov5早期版本中,算法起始部分使用了`focus`(有些算法里叫`reorg`)模塊,這種操作在硬件上支持起來并不劃算,為此我們可以用一個(gè)卷積來等效該操作: 為了方便理解,我們把weights用數(shù)字的方式展現(xiàn):
   class Focus(nn.Module):
       device = torch.device("cpu")
       weights = torch.tensor([[[[1,0],[0,0]],[[0,0],[0,0]],[[0,0],[0,0]]],
                                 [[[0,0],[0,0]],[[1,0],[0,0]],[[0,0],[0,0]]],
                                 [[[0,0],[0,0]],[[0,0],[0,0]],[[1,0],[0,0]]],
   
                                 [[[0,0],[1,0]],[[0,0],[0,0]],[[0,0],[0,0]]],
                                 [[[0,0],[0,0]],[[0,0],[1,0]],[[0,0],[0,0]]],
                                 [[[0,0],[0,0]],[[0,0],[0,0]],[[0,0],[1,0]]],
   
                                 [[[0,1],[0,0]],[[0,0],[0,0]],[[0,0],[0,0]]],
                                 [[[0,0],[0,0]],[[0,1],[0,0]],[[0,0],[0,0]]],
                                 [[[0,0],[0,0]],[[0,0],[0,0]],[[0,1],[0,0]]],
       
                                 [[[0,0],[0,1]],[[0,0],[0,0]],[[0,0],[0,0]]],  
                                 [[[0,0],[0,0]],[[0,0],[0,1]],[[0,0],[0,0]]],
                                 [[[0,0],[0,0]],[[0,0],[0,0]],[[0,0],[0,1]]]],
                              dtype=torch.float32).to(device)
   
       def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):  # ch_in, ch_out, kernel, stride, padding, groups
           super(Focus, self).__init__()
           self.conv = Conv(c1 * 4, c2, k, s, p, g, act)   
   
       def forward(self, x):  
           x = nn.functional.conv2d(x,self.weights,bias=None,stride=2)
           x = self.conv(x)
           return x
這個(gè)后加入的`nn.functional.conv2d`與`focus`中的若干`slice` ,`concat`計(jì)算等效,可以不用重訓(xùn)模型。

3.2 ICRAFT編譯

使用icraft編譯模型十分方便,只需要準(zhǔn)備好編譯模型所需的若干文件后,在命令行執(zhí)行:`icraft compile [配置文件路徑]`即可一鍵編譯。 需要準(zhǔn)備的文件有3方面:

1. 第一步導(dǎo)出的模型

2. 配置文件

3. 量化校準(zhǔn)集

配置文件說明: icraft2.x及之前版本,需要一份`.ini`格式的配置文件,下面以icraft2.2版本的yolov5配置文件為例展開說明:(涉及到具體某個(gè)組件的所有配置參數(shù)與說明,可以參考隨ICRAFT外發(fā)的用戶手冊(cè)說明)
# 在icraft的使用中,此文件以“#”作為注釋符,而不是默認(rèn)的“;”


# config用來配置使用哪些內(nèi)置的FPGA算子(后面簡稱硬算子)用于加速
# ImageMake的作用是加速輸入圖片的傳入速率
# IcorePost的作用是為目標(biāo)檢測網(wǎng)絡(luò)做閾值篩選,將合格的目標(biāo)信息傳出,加速輸出速率
# customop_config是硬算子的配置文件,后面介紹
[config]
customop_on = ImageMake, IcorePost
customop_config = configs/customop/yolov5.ini


# parse section 用于配置解析組件的參數(shù)
[parse]
name = YoloV5s            # 編譯成的json/raw模型名字
framework = pytorch          # 使用的框架
frame_version = 1.9          # pytorch的版本
input = 1, 640, 640, 3        # 輸入的dims,4維輸入要按照NHWC的順序;其他維度與框架一致
input_format = NHWC          # 輸入的layout,4維:NHWC;其他:FD
pre_method = resize          # 前處理方法,默認(rèn)寫resize即可
pre_scale = 255, 255, 255      # 輸出歸一化參數(shù)
pre_mean = 0, 0, 0          # 輸出歸一化參數(shù)
chann_swap = 2, 1, 0        # 圖像輸入,按照opencv讀入可能需要做bgr轉(zhuǎn)rgb
network = models/YoloV5/YoloV5s_640x640_traced.pt  # 第一步導(dǎo)出的模型地址
jr_path = json&raw/YoloV5s_BY/    # 編譯后產(chǎn)生的中間模型保存路徑
        
# optimize section 用于配置優(yōu)化組件的參數(shù)
# 該組件只有少數(shù)情況需要特別配置,例如在某些圖優(yōu)化導(dǎo)致bug時(shí),關(guān)閉某些優(yōu)化pass
[optimize]
target = BUYI                    # 目標(biāo)硬件
json = json&raw/YoloV5s_BY/YoloV5s_parsed.json    # 上一個(gè)組件產(chǎn)生的中間模型
raw = json&raw/YoloV5s_BY/YoloV5s_parsed.raw    # 上一個(gè)組件產(chǎn)生的中間模型
jr_path = json&raw/YoloV5s_BY/            # 編譯后產(chǎn)生的中間模型保存路徑
debug = false


# quantize section 用于配置量化組件的參數(shù)
[quantize]
forward_mode = image                 # 圖片輸入的方式
saturation = kld                  # 量化飽和點(diǎn)選取方式
per = tensor                    # 按層/通道的量化方式
forward_dir = images/coco              # 量化校準(zhǔn)集圖片文件夾路徑
forward_list = images/coco.txt             # 量化校準(zhǔn)集選取哪些圖片的txt配置
batch = 1                      # 量化前向每次推理的圖片數(shù)
bits = 8                      # 量化到多少bit
json = json&raw/YoloV5s_BY/YoloV5s_optimized.json   # 上一個(gè)組件產(chǎn)生的中間模型
raw = json&raw/YoloV5s_BY/YoloV5s_optimized.raw   # 上一個(gè)組件產(chǎn)生的中間模型
jr_path = json&raw/YoloV5s_BY/            # 編譯后產(chǎn)生的中間模型保存路徑  


# adapt section 用于配置硬件適配組件的參數(shù)
# 該組件與optmize組件類似都是會(huì)做一些圖結(jié)構(gòu)的等效修改
[adapt]  
target = BUYI                    
json = json&raw/YoloV5s_BY/YoloV5s_quantized.json 
raw = json&raw/YoloV5s_BY/YoloV5s_quantized.raw 
jr_path = json&raw/YoloV5s_BY/
debug = false


# generate section 用于配置指令生成組件的參數(shù)
[generate]
json = json&raw/YoloV5s_BY/YoloV5s_adapted.json
raw = json&raw/YoloV5s_BY/YoloV5s_adapted.raw
jr_path = json&raw/YoloV5s_BY/
log_path = ./logs/
qbits = 8                      # 與量化bit數(shù)保持一致  
rows = 4                      # 使用MPE核心數(shù),默認(rèn)即可
cols = 4                      # 使用MPE核心數(shù),默認(rèn)即可


# simulate section 用于配置仿真組件的參數(shù)
[simulate]  
target = BUYI                # 目標(biāo)硬件
log_time = true
log_io = true
dump_ftmp = SFB                # 保存網(wǎng)絡(luò)每個(gè)算子計(jì)算結(jié)果;SFB:浮點(diǎn);SQB:定點(diǎn)
show = true                  # 少數(shù)分類網(wǎng)絡(luò)可以直接查看結(jié)果
names = names/coco.names
json = json&raw/YoloV5s_BY/YoloV5s_BY.json  # 待仿真的中間模型路徑
raw = json&raw/YoloV5s_BY/YoloV5s_BY.raw  # 待仿真的中間模型路徑
image = images/coco/test_640x640.jpg    # 輸入圖片路徑
硬算子配置文件:
[IcorePost]
forward_dll = C:Icraft-CLIcustomopIcorePostIcorePost.dll
forward_so = /home/fmsh/ModelZoo/Deps/so/libcustom_IcorePost.so
quantized = true
# 需要修改之處
cmp_en = 1      # 是否做閾值比較
thr_f = 0.1     # 閾值 測精度時(shí)改為0.001
groups = 3      # 有幾個(gè)輸出head
anchor_num = 3    # 每個(gè)cell對(duì)應(yīng)幾個(gè)anchor;anchor free的情況配1
position = 5    # socre所在的位置;如果沒有score,則配all,通過所有類別prob選??;


[ImageMake]
forward_dll = C:Icraft-CLIcustomopImageMakeImageMake.dll
forward_so = /home/fmsh/ModelZoo/Deps/so/libcustom_ImageMake.so
no_imkpad = 0
#mode = 1
quantized = true
準(zhǔn)備好以上文件后,執(zhí)行編譯命令,得到最終的`yolov5_BY.json`,`yolov5_BY.raw`,即可進(jìn)行下一步。

3.3 運(yùn)行時(shí)工程

icraft提供了device 和運(yùn)行時(shí)庫,只需要新建一個(gè)c++工程依賴這些api,即可調(diào)用專用的AI硬件執(zhí)行模型推理。

主要運(yùn)行時(shí)api介紹:
# 打開設(shè)備
auto device = icraft::open(url.data());
# 傳入json和raw文件,構(gòu)造網(wǎng)絡(luò)
auto network_ptr = std::make_shared(jsonPath.data(), rawPath.data());
# 構(gòu)造runtime
icraft::Runtime runtime(network_ptr, device);
# 前處理
...
# 執(zhí)行前向
# 輸入需要是RutimeTensor的數(shù)據(jù)結(jié)構(gòu),只需要了解其構(gòu)造方式即可自行做好前處理后傳入
auto result_tensor = runtime_view->forward({ img_tensor });
# 得到的result_tensor也是RutimeTensor的數(shù)據(jù)結(jié)構(gòu),繼續(xù)做后處理即可
# 后處理
完成運(yùn)行時(shí)工程的編寫后,即可在片上系統(tǒng)或交叉編譯環(huán)境編譯出可執(zhí)行程序。然后在片上執(zhí)行,即可得到推理結(jié)果。

b5ab923c-a959-11ee-8b88-92fbcf53809c.png






審核編輯:劉清

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

    關(guān)注

    28

    文章

    4740

    瀏覽量

    128953
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2909

    文章

    44640

    瀏覽量

    373439
  • 人工智能
    +關(guān)注

    關(guān)注

    1791

    文章

    47282

    瀏覽量

    238534
  • AI芯片
    +關(guān)注

    關(guān)注

    17

    文章

    1887

    瀏覽量

    35028
  • 卷積神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    4

    文章

    367

    瀏覽量

    11865

原文標(biāo)題:ICRAFT部署實(shí)戰(zhàn)之YOLOv5邊緣端部署詳細(xì)流程

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    YOLOv5】LabVIEW+YOLOv5快速實(shí)現(xiàn)實(shí)時(shí)物體識(shí)別(Object Detection)含源碼

    前面我們給大家介紹了基于LabVIEW+YOLOv3/YOLOv4的物體識(shí)別(對(duì)象檢測),今天接著上次的內(nèi)容再來看看YOLOv5。本次主要是和大家分享使用LabVIEW快速實(shí)現(xiàn)yolov5
    的頭像 發(fā)表于 03-13 16:01 ?2178次閱讀

    Yolov5算法解讀

    ,這幾個(gè)模型的結(jié)構(gòu)基本一樣,不同的是depth_multiple模型深度和width_multiple模型寬度這兩個(gè)參數(shù)。 yolov5主要分為輸入,backbone,Neck,和head
    的頭像 發(fā)表于 05-17 16:38 ?9136次閱讀
    <b class='flag-5'>Yolov5</b>算法解讀

    YOLOv5】LabVIEW+TensorRT的yolov5部署實(shí)戰(zhàn)(含源碼)

    今天主要和大家分享在LabVIEW中使用純TensoRT工具包快速部署并實(shí)現(xiàn)yolov5的物體識(shí)別
    的頭像 發(fā)表于 08-21 22:20 ?1321次閱讀
    【<b class='flag-5'>YOLOv5</b>】LabVIEW+TensorRT的<b class='flag-5'>yolov5</b><b class='flag-5'>部署</b><b class='flag-5'>實(shí)戰(zhàn)</b>(含源碼)

    yolov5轉(zhuǎn)onnx在cubeAI上部署失敗的原因?

    第一個(gè)我是轉(zhuǎn)onnx時(shí) 想把權(quán)重文件變小點(diǎn) 就用了半精度 --half,則說17版本不支持半精度 后面則是沒有縮小的單精度 但是顯示哪里溢出了···· 也不說是哪里、、。。。 到底能不能部署yolov5這種東西???? 也沒看見幾個(gè)部署
    發(fā)表于 03-14 06:23

    基于迅為RK3588【RKNPU2項(xiàng)目實(shí)戰(zhàn)1】:YOLOV5實(shí)時(shí)目標(biāo)分類

    [/url] 【RKNPU2 人工智能開發(fā)】 【AI深度學(xué)習(xí)推理加速】——RKNPU2 從入門到實(shí)踐(基于RK3588和RK3568) 【RKNPU2項(xiàng)目實(shí)戰(zhàn)1】:YOLOV5實(shí)時(shí)目
    發(fā)表于 08-15 10:51

    如何YOLOv5測試代碼?

    使用文檔“使用 YOLOv5 進(jìn)行對(duì)象檢測”我試圖從文檔第 10 頁訪問以下鏈接(在 i.MX8MP 上部署 yolov5s 的步驟 - NXP 社區(qū)) ...但是這樣做時(shí)會(huì)被拒絕訪問。該文檔沒有說明需要特殊許可才能下載 tes
    發(fā)表于 05-18 06:08

    yolov5轉(zhuǎn)onnx在cubeAI進(jìn)行部署的時(shí)候失敗了是什么原因造成的?

    第一個(gè)我是轉(zhuǎn)onnx時(shí) 想把權(quán)重文件變小點(diǎn) 就用了半精度 --half,則說17版本不支持半精度 后面則是沒有縮小的單精度 但是顯示哪里溢出了···· 也不說是哪里、 到底能不能部署yolov5這種東西啊?? 也沒看見幾個(gè)部署
    發(fā)表于 08-08 07:55

    【愛芯派 Pro 開發(fā)板試用體驗(yàn)】部署愛芯派官方YOLOV5模型

    繼上文開箱后,本文主要依托愛芯元智官方的實(shí)例,進(jìn)行官方YOLOV5模型的部署和測試。 一、環(huán)境搭建 由于8核A55的SoC,加上目前Debian OS的工具齊全,所以決定直接在板上編譯
    發(fā)表于 12-12 22:58

    YOLOv5 7.0版本下載與運(yùn)行測試

    支持實(shí)例分割了,從此YOLOv5實(shí)現(xiàn)了圖像分類、對(duì)象檢測、實(shí)例分割三個(gè)支持,從訓(xùn)練到部署。
    的頭像 發(fā)表于 11-30 15:55 ?3811次閱讀

    yolov5訓(xùn)練部署全鏈路教程

    本教程針對(duì)目標(biāo)檢測算法yolov5的訓(xùn)練和部署到EASY-EAI-Nano(RV1126)進(jìn)行說明。
    的頭像 發(fā)表于 01-05 18:00 ?3223次閱讀
    <b class='flag-5'>yolov5</b>訓(xùn)練<b class='flag-5'>部署</b>全鏈路教程

    在C++中使用OpenVINO工具包部署YOLOv5模型

    下載并轉(zhuǎn)換YOLOv5預(yù)訓(xùn)練模型的詳細(xì)步驟,請(qǐng)參考:《基于OpenVINO?2022.2和蝰蛇峽谷優(yōu)化并部署YOLOv5模型》,本文所使用的OpenVINO是2022.3 LTS版。
    的頭像 發(fā)表于 02-15 16:53 ?4673次閱讀

    使用旭日X3派的BPU部署Yolov5

    本次主要介紹在旭日x3的BPU中部署yolov5。首先在ubuntu20.04安裝yolov5,并運(yùn)行yolov5并使用pytoch的pt模型文件轉(zhuǎn)ONNX。
    的頭像 發(fā)表于 04-26 14:20 ?910次閱讀
    使用旭日X3派的BPU<b class='flag-5'>部署</b><b class='flag-5'>Yolov5</b>

    【教程】yolov5訓(xùn)練部署全鏈路教程

    本教程針對(duì)目標(biāo)檢測算法yolov5的訓(xùn)練和部署到EASY-EAI-Nano(RV1126)進(jìn)行說明,而數(shù)據(jù)標(biāo)注方法可以參考我們往期的文章《Labelimg的安裝與使用》。
    的頭像 發(fā)表于 01-29 15:25 ?3443次閱讀
    【教程】<b class='flag-5'>yolov5</b>訓(xùn)練<b class='flag-5'>部署</b>全鏈路教程

    yolov5和YOLOX正負(fù)樣本分配策略

    整體上在正負(fù)樣本分配中,yolov7的策略算是yolov5和YOLOX的結(jié)合。因此本文先從yolov5和YOLOX正負(fù)樣本分配策略分析入手,后引入到YOLOv7的解析中。
    發(fā)表于 08-14 11:45 ?2289次閱讀
    <b class='flag-5'>yolov5</b>和YOLOX正負(fù)樣本分配策略

    在樹莓派上部署YOLOv5進(jìn)行動(dòng)物目標(biāo)檢測的完整流程

    卓越的性能。本文將詳細(xì)介紹如何在性能更強(qiáng)的計(jì)算機(jī)上訓(xùn)練YOLOv5模型,并將訓(xùn)練好的模型部署到樹莓派4B上,通過樹莓派的攝像頭進(jìn)行實(shí)時(shí)動(dòng)物目標(biāo)檢測。 一、在電腦上訓(xùn)練YOLOv5
    的頭像 發(fā)表于 11-11 10:38 ?1008次閱讀
    在樹莓派上<b class='flag-5'>部署</b><b class='flag-5'>YOLOv5</b>進(jìn)行動(dòng)物目標(biāo)檢測的完整流程