yolov9 瑞芯微芯片rknn部署、地平線芯片Horizon部署、TensorRT部署

??特別說明:參考官方開源的yolov9代碼、瑞芯微官方文檔、地平線的官方文檔,如有侵權告知刪,謝謝。

??模型和完整仿真測試代碼,放在github上參考鏈接 模型和代碼。

??之前寫過yolov8檢測、分割、關鍵點模型的部署的多篇博文,yolov8還沒玩溜,這不yolov9又來了。yolov9剛出來兩三天,有朋友就問:yolov9都出來好幾天了,怎么沒有見到你寫一篇部署博客呢。其實yolov9出來兩三天,說實話還是通過朋友告知才知道的。一直想抽時間把yolov9部署給盤一下,奈何一拖就又是好幾天,這兩天抽時間終于把這個yolov9給盤完了。

1 模型和訓練

??訓練代碼參考官方開源的yolov9訓練代碼,考慮到有些板端對SiLU的支持有限,本示例訓練前把激活函數SiLU替換成了ReLU,訓練使用的模型配置文件是yolov9.yaml,輸入分辨率640x640。用 from thop import profile 統計的模型計算量和參數 Flops: 120081612800.0(120G),Params: 55388336.0(55M)

2 導出 yolov9 onnx

??導出onnx時需要修改兩個地方。

??特別說明:只在導出onnx時修改,訓練時無需修改,修改以下代碼后運行會報錯,但是可以生成onnx文件,無需關注報錯。

?? 第一個處:增加以下代碼(紅色框內新增):
在這里插入圖片描述

        reslut = []for i in range(self.nl):reslut.append(self.cv2[i](x[i]))reslut.append(self.cv3[i](x[i]))return reslut

第二處修改:增加以下代碼(紅色框內新增)
在這里插入圖片描述

class CBFuse(nn.Module):def __init__(self, idx):super(CBFuse, self).__init__()self.idx = idxdef forward(self, xs):target_size = xs[-1].shape[2:]if target_size[0] < 10:res = [F.interpolate(x[self.idx[i]], size=target_size, mode='nearest') for i, x in enumerate(xs[:-1])]out = torch.sum(torch.stack(res + xs[-1:]), dim=0)return outj = 0for i, x in enumerate(xs[:-1]):j = iif target_size[0] < 10:continueif i == 0:x0 = F.interpolate(x[self.idx[i]], size=target_size, mode='nearest')if i == 1:x1 = F.interpolate(x[self.idx[i]], size=target_size, mode='nearest')if i == 2:x2 = F.interpolate(x[self.idx[i]], size=target_size, mode='nearest')if j == 2 and target_size[0] > 10:out = x0 + x1 + x2 + xs[-1:][0]return outif j == 1 and target_size[0] > 10:out = x0 + x1 + xs[-1:][0]return outif j == 0 and target_size[0] > 10:out = x0 + xs[-1:][0]return outres = [F.interpolate(x[self.idx[i]], size=target_size, mode='nearest') for i, x in enumerate(xs[:-1])]out = torch.sum(torch.stack(res + xs[-1:]), dim=0)return out

最后:增加保存onnx文件代碼
在這里插入圖片描述

    print(torch.onnx.ir_version)print("===========  onnx =========== ")dummy_input0 = torch.randn(1, 3, 640, 640)input_names = ["data"]output_names = ["output1", "output2", "output3", "output4", "output5", "output6"]torch.onnx.export(model, (dummy_input0), "./test_onnx/yolov9_relu_80class.onnx", verbose=True, input_names=input_names, output_names=output_names, opset_version=12)print("======================== convert onnx Finished! .... ")

3 yolov9 測試效果

pytorhc測試效果
在這里插入圖片描述

onnx測試效果(確保修改CBFuse后導出的onnx測試結果和pytorch是一致的)
在這里插入圖片描述

4 tensorRT 時耗

??模型訓練使用的配置文件是yolov9.yaml,輸入分辨率是640x640,轉trt使用的fp16_mode,顯卡Tesla V100,cuda_11.0。
在這里插入圖片描述

5 rknn 板端C++部署

??模型訓練使用的配置文件是yolov9.yaml,輸入分辨率是640x640,芯片rk3588.

??把在rk3588板子上測試的模特推理時耗,和用C++代碼寫的后處理時耗,都給貼出來供大家參考。【rk3588的C++代碼參考鏈接】。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713971.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713971.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713971.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何安裝VM ware 17 pro 和Ubuntu安裝

下載VM ware軟件 下載地址&#xff1a;Windows VM | Workstation Pro | VMware按步驟安裝&#xff0c;安裝成功后&#xff0c;打開軟件&#xff0c;填寫證書秘鑰 秘鑰&#xff1a;MC60H-DWHD5-H80U9-6V85M-8280D&#xff08;親測有效&#xff09;下載ubuntu 參考博客&#xff1…

軟考中級 軟件設計師備考經驗

考試介紹 軟考中級的軟件設計師需要考兩個部分&#xff0c;選擇題和大題&#xff0c;每科滿分75&#xff0c;需要在同一次考試中兩科同時大于等于45分才算通過。考試的內容包括計算機組成原理、數據結構、數據庫、專業英語、信息安全、計算機網絡等&#xff0c;范圍比較廣但考…

Linux中systemv共享內存

目錄 1.原理 2.接口 1.shmget(share_memory_get獲得共享內存) 2.ftok 3.shmat(share_memory_attaintion掛接到物理內存上) 4.key和shmid的區別 5.ipc 指令 6.shmdt函數&#xff08;share_memory_detach取消掛接&#xff09; 7.shmctl函數&#xff08;share_memory_cont…

C# 數組與集合

C# 數組與集合 Array using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _16._1_Array {internal class Program{static void Main(string[] args){int[] ints1 { 1, 2, 3, 4, 5,6,7,8 };//將…

GenAI助力DevOps,塑造軟件工程的未來

自 2022 年以來&#xff0c;GenAI 無疑已成為一種普遍的技術趨勢。在本文中&#xff0c;我們將探索 DevOps 中令人興奮的 GenAI 領域&#xff0c;討論其潛在優勢、局限性、新興趨勢和最佳實踐&#xff0c;深入了解 AI 支持的 DevOps 前沿世界&#xff0c;并探索這一強大組合如何…

ObjectFactory學習

簡介 在Spring框架中&#xff0c;ObjectFactory是一個功能接口&#xff0c;它定義了一個簡單的方法來獲取對象的實例。ObjectFactory接口通常用于工廠模式和依賴注入中&#xff0c;允許延遲對象創建和配置&#xff0c;以及在運行時動態地決定要返回的對象實例。 源碼 Functi…

Laravel Octane 和 Swoole 協程的使用分析二

又仔細研究了下 Octane 源碼和 Swoole 的文檔&#xff0c;關于前幾天 Laravel Octane 和 Swoole 協程的使用分析中的猜想&#xff0c;得到進一步驗證&#xff1a; Swoole 的 HTTP Server 啟動后會創建一個 master 進程和一個 manager 進程&#xff1b;master 進程又會創建多個…

智能咖啡廳助手:人形機器人 +融合大模型,行為驅動的智能咖啡廳機器人(機器人大模型與具身智能挑戰賽)

智能咖啡廳助手&#xff1a;人形機器人 融合大模型&#xff0c;行為驅動的智能咖啡廳機器人(機器人大模型與具身智能挑戰賽) “機器人大模型與具身智能挑戰賽”的參賽作品。的目標是結合前沿的大模型技術和具身智能技術&#xff0c;開發能在模擬的咖啡廳場景中承擔服務員角色并…

常用備注(記錄中...)

文章目錄 docker測試網絡可達性檢查端口是否開放PgSql docker docker logout IP地址:端口號 docker login IP地址:端口號橋接模式bridge啟動容器 docker run -d -p 外部端口號:內部端口號(配置文件中的端口號) --name 容器名稱 -v /data/docker/conf/application.yml:/app/con…

javaWebssh在線授課輔導系統myeclipse開發mysql數據庫MVC模式java編程計算機網頁設計

一、源碼特點 java ssh在線授課輔導系統是一套完善的web設計系統&#xff08;系統采用ssh框架進行設計開發&#xff09;&#xff0c;對理解JSP java編程開發語言有幫助&#xff0c;系統具有完整的源代碼和數據庫&#xff0c;系統主要采用 B/S模式開發。開發環境為TOMCAT7.…

4.Java---方法+重載

方法 方法的調用是需要開辟內存的,方法調用結束內存就被銷毀了. 下面將介紹一個經典的錯誤標準的0分的示意! 我們日常中寫交換兩個數字的代碼的時候都會用如下的方法進行描述: 你是不是覺得自己寫的特別對!終于可以獨立寫一個小小的函數了? 下面運行一下看看結果 哦莫!怎么…

autoware.universe中所有的多傳感器融合代碼解讀,一看就懂!

目錄 融合的前提條件case1:vision_roi與cluster融合融合過程case2:vision_roi與centerPoint融合融合過程小結:case3:vision_roi與pointcloud融合融合過程總結融合的前提條件 計算視覺ROI話題的時刻T1(時間戳獲得) 計算激光雷達話題的時刻T2,并將T2加上設定的偏差時間間隔in…

C# DataTable 對象操作

實現DataTable按字段進行分類、按列數據匯總、序列化對象數組、所有字段轉小寫、動態對象數組、數據分頁 分類DataTableClassfiy實體&#xff1a; /// <summary>/// 單個分類表/// </summary>public class DataTableClassfiy{/// <summary>/// 分類名稱/// &…

springboot第61集:Jenkins-Boss萬字挑戰,一文讓你走出微服務迷霧架構周刊

名詞 CONTAINER ID&#xff08;容器ID&#xff09; 名詞 IMAGE ID&#xff08;鏡像ID&#xff09;cat /etc/os-release //查看系統信息 pwd //查看當前路徑 ls //查看當前目錄文件 docker -v //查看docker版本 docker-compose up -d //在后臺運行&#xff08;取消-d是在控制臺運…

linux系統Jenkins工具添加自由項目和maven項目

Jenkins添加自由項目 添加自由項目操作流程代碼遠程代碼郵件標題郵件正文 添加maven項目準備環境操作流程 添加自由項目 gitlab配置基本代碼頁面等&#xff0c;拉取代碼&#xff0c;打包&#xff0c;發布操作流程 代碼 遠程代碼 echo ssh root192.168.188.177 "tar cz…

EasyExcel 自適應列寬、隱藏列、動態列、單元格下拉框選擇數據、單元格文本格式

前言 項目中用到EasyExcel讀寫Excel&#xff0c;用到了一下功能&#xff0c;這里做個筆記&#xff1a; 列寬自適應&#xff1a;自適應寬度隱藏列&#xff1a;隱藏某些列動態列&#xff1a;固定列 動態的生成Excel列單元格下拉框選擇數據&#xff1a;設計單元格下拉數據&…

深搜,LeetCode 2368. 受限條件下可到達節點的數目

一、題目 1、題目描述 現有一棵由 n 個節點組成的無向樹&#xff0c;節點編號從 0 到 n - 1 &#xff0c;共有 n - 1 條邊。 給你一個二維整數數組 edges &#xff0c;長度為 n - 1 &#xff0c;其中 edges[i] [ai, bi] 表示樹中節點 ai 和 bi 之間存在一條邊。另給你一個整數…

WPF的DataGrid設置標題頭

要設置DataGrid標題頭的分割線、背景色和前景色等屬性&#xff0c;您可以使用DataGrid的樣式和模板來自定義標題頭的外觀。下面是詳細解釋以及示例代碼&#xff1a; 分割線設置&#xff1a; 您可以使用DataGrid.ColumnHeaderStyle樣式中的BorderThickness和BorderBrush屬性來設…

Java基礎-java開發入門

(創作不易&#xff0c;感謝有你&#xff0c;你的支持&#xff0c;就是我前行的最大動力&#xff0c;如果看完對你有幫助&#xff0c;請留下您的足跡&#xff09; 目錄 一、什么是Java 二、Java語言的特點 三、什么是JDK 四、第一個Java程序 一、什么是Java Java是由Sun …

electron nsis 安裝包 window下任務欄無法正常固定與取消固定

問題 win10系統下&#xff0c;程序任務欄在固定后取消固定&#xff0c;展示的程序內容異常。 排查 1.通過論壇查詢&#xff0c;應該是與app的api setAppUserModelId 相關 https://github.com/electron/electron/issues/3303 2.electron-builder腳本 electron-builder…