YOLOv5結合華為諾亞VanillaNet Block模塊

在這里插入圖片描述

???YOLOv5實戰寶典--星級指南:從入門到精通,您不可錯過的技巧

??-- 聚焦于YOLO的 最新版本對頸部網絡改進、添加局部注意力、增加檢測頭部,實測漲點

?? 深入淺出YOLOv5:我的專業筆記與技術總結

??-- YOLOv5輕松上手, 適用技術小白,文章代碼齊全,僅需 一鍵train,解決 YOLOv5的技術突破和創新潛能

?? YOLOv5創新攻略:突破技術瓶頸,激發AI新潛能"

?? -- 指導獨特且專業的分析, 也支持對YOLOv3、YOLOv4、YOLOv8等網絡的修改

?? 改進YOLOv5?? ,改進點包括: ?? 替換多種骨干網絡/輕量化網絡, 添加多種注意力包含自注意力/上下文注意力/自頂向下注意力機制/空間通道注意力/,設計不同的網絡結構,助力漲點!!!

在這里插入圖片描述

YOLOv5結合華為諾亞VanillaNet Block模塊

  • 介紹
  • 核心代碼
  • 加入YOLOv5
  • yaml文件:
  • 運行結果

論文: VanillaNet: the Power of Minimalism in
Deep Learning
代碼: https://link.zhihu.com/?target=https%3A//github.com/huawei-noah/VanillaNet
在這里插入圖片描述

介紹

??基礎模型的設計哲學往往遵循“更多即更好”的原則,在計算機視覺和自然語言處理領域取得的顯著成就中得到了驗證。盡管如此,對于Transformer模型而言,隨之而來的優化挑戰和固有的復雜性也促使了向更簡潔設計的轉變。

??本研究引入了VanillaNet,一種在設計上追求簡潔性的神經網絡架構。VanillaNet避免了復雜的構建如高深度網絡結構、捷徑連接和自注意力機制,呈現出一種令人耳目一新的簡明強大。它的每一層都經過精心設計,簡潔且直接,訓練后的非線性激活函數被精簡,以還原至最初的簡潔結構。

??VanillaNet以其對復雜性的挑戰克服,成為資源受限環境下的理想選擇,其易于理解和簡化的構架開啟了高效部署的新可能。廣泛的實驗結果驗證了VanillaNet在圖像分類、目標檢測和語義分割等多項任務中可與知名的深度網絡和視覺Transformer相媲美的性能,彰顯了極簡主義在深度學習中的潛力。VanillaNet的創新之路預示著重新定義行業格局和挑戰傳統模型的巨大潛力,為簡潔而有效的模型設計鋪開了全新的道路。

在這里插入圖片描述
在這里插入圖片描述
??為了解決多頭自注意力(MHSA)在可擴展性方面的問題,先前的研究提出了各種稀疏注意力機制,其中查詢只關注有限的鍵值對,而非全部。通常依賴于靜態的手工設計模式或在所有查詢之間共享鍵值對的采樣子集,缺乏自適應性和獨立性。

??本研究提出了VanillaNet,一種簡單而高效的神經網絡架構,它采用了幾層卷積層,去除了所有分支,甚至包括捷徑連接。通過調整VanillaNets中的層數來構建一系列網絡。VanillaNet-9在保持79.87%準確率的同時,將推理速度降至2.91ms,遠超ResNet-50和ConvNextV2-P。

??令人驚訝的成果突顯了VanillaNet在實時處理任務中的潛力。進一步擴展了通道數量和池化大小,從而得到了VanillaNet-13-1.5×?,在ImageNet上達到了83.11%的Top-1準確率。這表明,通過簡單的擴展,VanillaNets可以實現與深層網絡相當的性能。不同架構的深度與推理速度的對比顯示,網絡的深度而非參數數量與推理速度緊密相關,強調了簡單和淺層網絡在實時處理任務中的巨大潛力。VanillaNet在所有考察的架構中實現了最優的速度與準確度的平衡,特別是在GPU延遲較低的情況下,表明了在充分計算能力支持下VanillaNet的卓越性??。

核心代碼

#Copyright (C) 2023. Huawei Technologies Co., Ltd. All rights reserved.#This program is free software; you can redistribute it and/or modify it under the terms of the MIT License.#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MIT License for more details.import torch
import torch.nn as nn
import torch.nn.functional as F
from timm.models.layers import weight_init, DropPath
from timm.models.registry import register_modelclass activation(nn.ReLU):def __init__(self, dim, act_num=3, deploy=False):super(activation, self).__init__()self.deploy = deployself.weight = torch.nn.Parameter(torch.randn(dim, 1, act_num*2 + 1, act_num*2 + 1))self.bias = Noneself.bn = nn.BatchNorm2d(dim, eps=1e-6)self.dim = dimself.act_num = act_numweight_init.trunc_normal_(self.weight, std=.02)def forward(self, x):if self.deploy:return torch.nn.functional.conv2d(super(activation, self).forward(x), self.weight, self.bias, padding=(self.act_num*2 + 1)//2, groups=self.dim)else:return self.bn(torch.nn.functional.conv2d(super(activation, self).forward(x),self.weight, padding=(self.act_num*2 + 1)//2, groups=self.dim))def _fuse_bn_tensor(self, weight, bn):kernel = weightrunning_mean = bn.running_meanrunning_var = bn.running_vargamma = bn.weightbeta = bn.biaseps = bn.epsstd = (running_var + eps).sqrt()t = (gamma / std).reshape(-1, 1, 1, 1)return kernel * t, beta + (0 - running_mean) * gamma / stddef switch_to_deploy(self):kernel, bias = self._fuse_bn_tensor(self.weight, self.bn)self.weight.data = kernelself.bias = torch.nn.Parameter(torch.zeros(self.dim))self.bias.data = biasself.__delattr__('bn')self.deploy = Trueclass Block(nn.Module):def __init__(self, dim, dim_out, act_num=3, stride=2, deploy=False, ada_pool=None):super().__init__()self.act_learn = 1self.deploy = deployif self.deploy:self.conv = nn.Conv2d(dim, dim_out, kernel_size=1)else:self.conv1 = nn.Sequential(nn.Conv2d(dim, dim, kernel_size=1),nn.BatchNorm2d(dim, eps=1e-6),)self.conv2 = nn.Sequential(nn.Conv2d(dim, dim_out, kernel_size=1),nn.BatchNorm2d(dim_out, eps=1e-6))if not ada_pool:self.pool = nn.Identity() if stride == 1 else nn.MaxPool2d(stride)else:self.pool = nn.Identity() if stride == 1 else nn.AdaptiveMaxPool2d((ada_pool, ada_pool))self.act = activation(dim_out, act_num)def forward(self, x):if self.deploy:x = self.conv(x)else:x = self.conv1(x)x = torch.nn.functional.leaky_relu(x,self.act_learn)x = self.conv2(x)x = self.pool(x)x = self.act(x)return xdef _fuse_bn_tensor(self, conv, bn):kernel = conv.weightbias = conv.biasrunning_mean = bn.running_meanrunning_var = bn.running_vargamma = bn.weightbeta = bn.biaseps = bn.epsstd = (running_var + eps).sqrt()t = (gamma 

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

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

相關文章

力扣labuladong一刷day19天花式遍歷

力扣labuladong一刷day19天花式遍歷 文章目錄 力扣labuladong一刷day19天花式遍歷一、48. 旋轉圖像二、54. 螺旋矩陣三、59. 螺旋矩陣 II 一、48. 旋轉圖像 題目鏈接:https://leetcode.cn/problems/rotate-image/ 思路:把矩陣向右旋轉90度,要…

完美解決AttributeError: ‘NoneType‘ object has no attribute ‘append‘

文章目錄 一、原始代碼二、修改后的代碼--最后一行代碼append進行了修改總結 一、原始代碼 logits_list [] # 創建一個空列表來存儲每個logitslabels_list []for i, batch in enumerate(test_tasks):with torch.no_grad():logits, labels, loss, acc self.fast_adapt(batc…

斯坦福大學引入FlashFFTConv來優化機器學習中長序列的FFT卷積

斯坦福大學的FlashFFTConv優化了擴展序列的快速傅里葉變換(FFT)卷積。該方法引入Monarch分解,在FLOP和I/O成本之間取得平衡,提高模型質量和效率。并且優于PyTorch和FlashAttention-v2。它可以處理更長的序列,并在人工智能應用程序中打開新的可…

【Python百寶箱】Python中的音視頻處理: 探索多樣化的庫和工具

Python中的音視頻處理: 探索多樣化的庫和工具 前言 在數字化時代,音視頻處理不僅僅是娛樂產業的需求,還滲透到了教育、醫療、安防等多個領域。Python作為一門強大而靈活的編程語言,為開發人員提供了豐富的資源來處理和分析音視頻數據。本文…

SQL Server Profiler基礎使用

文章目錄 SQL Server Profiler基礎使用簡介如何打開直接打開Microsoft SQL Server Management Studio工具欄打開 配置跟蹤新建跟蹤跟蹤屬性配置常規配置事件選擇 啟動跟蹤跟蹤時執行腳本跟蹤記錄 暫停跟蹤停止跟蹤 SQL Server Profiler基礎使用 簡介 一個圖形界面工具&#x…

逆矩陣相關性質與例題

1.方陣的行列式:就是將方陣中的每一個元素轉換至行列式中。 1.性質一:轉置方陣的行列式等于轉置前的行列式。(對標性質:行列式與它的轉置行列式相等) 2.性質二:|ka||a|*k的n次方,n為方陣階數。 …

芯片設計—低功耗isolation cell

(一)低功耗isolation cell的目的 低功耗架構設計需要前后端拉通規劃,前端設計有PMU功耗管理單元,比如A模塊電壓常開,B模塊電壓可關斷,那么請思考,當B模塊關斷電壓后,B模塊輸出到A模…

PDF控件Spire.PDF for .NET【轉換】演示:將在 C#/VB.NET 中將 PDF 轉換為 PCL

本文我們將演示如何通過調用 Spire.PDF 提供的方法 PdfDocument.SaveToStream() 將 PDF 頁面轉換為 HTML、Word、SVG、XPS、PDF 并將它們保存到流中。并且從Spire.PDF版本4.3開始,它新支持轉換定義范圍的PDF頁面并將其保存到流中。 Spire.Doc 是一款專門對 Word 文…

精益制造中的周轉箱和工具柜優勢

制造業(Manufacturing industry)是指機械工業時代利用某種資源(物料、能源、設備、工具、資金、技術、信息和人力等),按照市場要求,通過制造過程,轉化為可供人們使用和利用的大型工具、工業品與…

大語言模型概述(二):基于亞馬遜云科技的研究分析與實踐

上期介紹了大語言模型的定義和發展歷史,本期將分析基于亞馬遜云科技的大語言模型相關研究方向,以及大語言模型的訓練和構建優化。 大語言模型研究方向分析 Amazon Titan 2023 年 4 月,亞馬遜云科技宣布推出 Amazon Titan 大語言模型。根據…

redis運維(十七)事務

一 redis事務 事務核心參考 ① 基礎概念 1、場景引入核心:通過現象思考原因? 2、事務的概念 3、事務四大特性說明: redis只具備部分特性 重點1: 原子性和一致性 重點2: 隔離性和持久性 ② redis的事務 1、基礎鋪墊備注&…

runapi的學習記錄

安裝地址 git clone https://github.com/star7th/showdoc.git 默認賬號與密碼 showdoc 123456 首頁 訪問地址:http://192.168.51.2:4042/web/#/ 進入ShowDoc首頁 登錄showdoc文檔系統 http://192.168.51.2:4042/web/#/user/login 默認賬號密碼showdoc/12345…

unity Terrain 性能問題

在實踐過程中unity發生進入場景GPU爆顯存的情況,經過調查發現是使用Terrain造成的問題,這個問題在使用一個Terrain的時候并不會發生,但是在使用多個時會發生。 似乎在使用過程中Terrain會直接把Terrain的整個地圖加載,造成移動設…

? 一文帶你了解多文件混淆加密

?🔒 一文帶你了解多文件混淆加密 目錄 🔒 一文帶你了解 JavaScript 多文件混淆加密 ipaguard加密前 ipaguard加密后 ? 🔒 一文帶你了解 JavaScript 多文件混淆加密 JavaScript 代碼多文件混淆加密可以有效保護源代碼不被他人輕易盜取。…

關閉vscode打開的本地服務器端口

vscode開了本地的一個端口“8443”當本地服務器端口,然后隨手把VScode一關,后來繼續做發現8443端口已經被占用了。 ??原來,即便關閉了編譯器VScode,服務器依然是被node.exe運行著的。那這個端口怎么才能關掉呢? ??…

Kotlin基礎——Lambda和函數式編程

Lambda 使用 { } 定義Lamba,調用run運行 run { println(1) }更常用的為 { 參數 -> 操作 },還可以存儲到變量中,把變量作為普通函數對待 val sum { x: Int, y: Int -> x y } println(sum(1, 2))maxBy()接收一個Lambda,傳…

EXIT外部中斷 HAL庫+cubeMX

一.cubeMX外部中斷配置 1.系統內核 2.中斷管理 3.選擇搶占優先級和響應優先級,共有5個等級,在這里就使用庫函數編寫代碼時最常用的2位搶占優先級2位響應優先級。 4.勾選使能選項,后面的兩個零,第一個代表搶占優先級的等級&#xf…

用于計算機屏幕安全攝像頭系統:Screen Anytime Crack

Screen Anytime 是一款軟件,旨在自動將整個用戶會話或 PC/服務器/VM/Kiosk 的 /RDP/Citrix/RemoteApp 會話的屏幕活動記錄到視頻日志文件中,以用于記錄、審核和監控目的。通過重播其高度壓縮的視頻,您可以輕松回顧單臺計算機或一組服務器/PC …

基于C#實現并查集

一、場景 有時候我們會遇到這樣的場景,比如:M{1,4,6,8},N{2,4,5,7},我的需求就是判斷{1,2}是否屬于同一個集合,當然實現方法有很多,一般情況下,普通青年會做出 O(MN)的復雜度,那么有沒有更輕量級的復雜度呢…

Vatee萬騰科技的獨特力量:Vatee數字時代創新的新視野

在數字化時代的浪潮中,Vatee萬騰科技以其獨特而強大的創新力量,為整個行業描繪了一幅嶄新的視野。這不僅是一場科技創新的冒險,更是對未來數字時代發展方向的領先探索。 Vatee萬騰將創新視為數字時代發展的引擎,成為推動行業向前的…