YOLOv5改進(jìn)教程之添加注意力機(jī)制
本文主要給大家講解一下,如何在yolov5中添加注意力機(jī)制,
這里提供SE通道注意力的改進(jìn)方法,其他注意力的添加方法,大同小異
首先找到SE注意力機(jī)制的pytorch代碼
class SELayer(nn.Module): def __init__(self, c1, r=16): super(SELayer, self).__init__() self.avgpool = nn.AdaptiveAvgPool2d(1) self.l1 = nn.Linear(c1, c1 // r, bias=False) self.relu = nn.ReLU(inplace=True) self.l2 = nn.Linear(c1 // r, c1, bias=False) self.sig = nn.Sigmoid() def forward(self, x): b, c, _, _ = x.size() y = self.avgpool(x).view(b, c) y = self.l1(y) y = self.relu(y) y = self.l2(y) y = self.sig(y) y = y.view(b, c, 1, 1) return x * y.expand_as(x)
直接把SE注意力機(jī)制的程序,復(fù)制到models文件夾下面的common.py文件中
然后找到y(tǒng)olo.py,在這個(gè)文件中找到下面這一行
然后把SE添加到這個(gè)注冊表里,
直接在C3Ghost后面加上SELayer
然后是要修改yaml文件,對于SE這種即插即用的注意力機(jī)制,輸入和輸出的通道數(shù)相同,所以不會(huì)影響其他模塊的運(yùn)行
注意力機(jī)制也可以插在其他地方,只要注意把通道數(shù)對應(yīng)好就行
然后head部分也要進(jìn)行相應(yīng)的修改,因?yàn)槲覀兌嗉恿艘粚?,所以需要保持head以及最后的輸出層不變就得稍微改一下head部分,同樣,注意力機(jī)制也可以放在head里面,跟加在backbone里面的方法相同。
這是原始的head部分,需要修改成下面這樣
因?yàn)槲覀儼裇E注意力機(jī)制插在第八層之后,所以原先的14層就變成了15層,同樣的,最后的輸出也需要把層數(shù)加一。
添加這些注意力機(jī)制是yolov5最基礎(chǔ)的改進(jìn),但是說實(shí)話,注意力機(jī)制可以添加在很多的地方,不一定會(huì)有效果,所以插在哪里效果最好就需要大家自行討論了。 注意力機(jī)制也有很多種,se注意力機(jī)制應(yīng)該是屬于最基礎(chǔ)的通道注意力了吧
總結(jié)
到此這篇關(guān)于YOLOv5改進(jìn)教程之添加注意力機(jī)制的文章就介紹到這了,更多相關(guān)YOLOv5添加注意力機(jī)制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python企業(yè)編碼生成系統(tǒng)之主程序模塊設(shè)計(jì)詳解
這篇文章主要介紹了Python企業(yè)編碼生成系統(tǒng)之主程序模塊設(shè)計(jì),包括初始化、界面與邏輯實(shí)現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下2019-07-07python 讀寫、創(chuàng)建 文件的方法(必看)
下面小編就為大家?guī)硪黄猵ython 讀寫、創(chuàng)建 文件的方法(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09Python實(shí)現(xiàn)去除代碼前行號(hào)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)去除代碼前行號(hào)的方法,實(shí)例分析了Python操作字符的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03Pytorch數(shù)據(jù)讀取之Dataset和DataLoader知識(shí)總結(jié)
Dataset和DataLoader都是Pytorch里面讀取數(shù)據(jù)的工具.現(xiàn)在對這兩種工具做一個(gè)概括和總結(jié),對正在學(xué)習(xí)Pytorch的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05Selenium+BeautifulSoup+json獲取Script標(biāo)簽內(nèi)的json數(shù)據(jù)
這篇文章主要介紹了Selenium+BeautifulSoup+json獲取Script標(biāo)簽內(nèi)的json數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12