哪個公司網(wǎng)站做的好阿拉善盟seo
FasterNet 類參數(shù)初始化


將圖像切分為非重疊的圖像塊

PatchEmbed 類

將圖像分解為非重疊的圖像塊有以下幾個好處:
1. 縮小計算量:對于大尺寸的圖像,直接對整個圖像進行處理可能會導(dǎo)致計算和內(nèi)存消耗過大。將圖像切分為小塊可以降低計算量,使得處理更加高效。
2. 提取局部特征:圖像塊相對于整個圖像來說更加局部化,每個圖像塊中的特征更加集中于該塊所對應(yīng)的局部區(qū)域。這有助于模型更好地捕捉圖像中的局部信息和細節(jié)。
3. 支持變尺寸輸入:通過將圖像切分為塊,并對每個塊進行嵌入,可以處理不同尺寸的輸入圖像,而不需要對整個圖像進行大小調(diào)整。
4. 支持并行處理:將圖像分割為塊后,可以并行地對每個塊進行處理,從而加速計算過程。這對于在硬件加速器(如GPU )上進行高效推斷和訓(xùn)練非常有用。
總之,將圖像分解為非重疊的圖像塊并進行特征嵌入是為了提高計算效率、捕捉局部特征、支持變尺寸輸入和實現(xiàn)并行處理,從而更好地應(yīng)對圖像分析任務(wù)的需求。
dpr

這個列表中的每個值代表了在不同層級的網(wǎng)絡(luò)中應(yīng)用 DropPath 操作的概率。 DropPath 是一種正則化技術(shù),用于在訓(xùn)練過程中隨機丟棄網(wǎng)絡(luò)中的一些連接,以減少過擬合。通過在不同層級使用不同的DropPath 概率,可以在訓(xùn)練過程中控制不同層級的模型復(fù)雜度,從而增強模型的魯棒性和泛化能力。 需要注意的是, torch.linspace 函數(shù)生成的數(shù)列是一個包含浮點數(shù)的張量,通過 x.item() 將每個張量元素轉(zhuǎn)換為 Python 標量值
構(gòu)建 FasterNet 的多個階段

BasicStage 類
class BasicStage(nn.Module):
def __init__(self,
dim,
depth,
n_div,
mlp_ratio,
drop_path,
layer_scale_init_value,
norm_layer,
act_layer,
pconv_fw_type
):
super().__init__()
# 包含多個 MLPBlock 的序列組成的 blocks 層
blocks_list = [
MLPBlock(
dim=dim,
n_div=n_div,
mlp_ratio=mlp_ratio,
drop_path=drop_path[i],
layer_scale_init_value=layer_scale_init_value,
norm_layer=norm_layer,
act_layer=act_layer,
pconv_fw_type=pconv_fw_type
)
for i in range(depth)
]
self.blocks = nn.Sequential(*blocks_list)
def forward(self, x: Tensor) -> Tensor:
x = self.blocks(x)
return x
作用
將多個 MLPBlock 組成一個階段,每個 MLPBlock 通過前向傳播對輸入數(shù)據(jù)進行處理,并將處理結(jié)果作為下一個 MLPBlock 的輸入。通過堆疊多個 MLPBlock ,可以形成深度的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),用于特征提取和信息傳遞.
MLPBlock 類


MLPBlock 中先將輸入特征的維度縮放到 MLP 層的隱藏維度,然后再將隱藏維度縮放回原始維度的操作,有以下幾個原因:
1. 提高模型的表達能力:通過將輸入特征的維度縮放到較高的隱藏維度,可以增加 MLP 層的參數(shù)量和非線性變換的能力,從而提高模型的表達能力。這種縮放操作允許 MLP 層對輸入特征進行更復(fù)雜的非線性變換,以捕捉更多的特征信息。
2. 引入多尺度特征信息:通過縮放到不同的維度,可以在 MLP 層中引入多尺度的特征信息。輸入特征經(jīng)過縮放到隱藏維度后,隱藏維度的特征在不同尺度上進行了變換。隨后再將隱藏維度的特征縮放回原始維度,將不同尺度的特征信息與原始特征進行融合,從而獲得更豐富的特征表示。
x = self . blocks ( x ) return x 3. 控制模型復(fù)雜度:縮放到隱藏維度后, MLP 層的參數(shù)量相對于輸入特征維度會增加。然后,再將隱藏維度的特征縮放回原始維度,可以控制 MLP 層的參數(shù)量,避免模型過于復(fù)雜。這種參數(shù)量的控制可以通過調(diào)節(jié) MLP 比例 mlp_ratio 來實現(xiàn),從而靈活地平衡模型的復(fù)雜性和性能??偠灾?#xff0c;通過先縮放維度到隱藏層,再縮放回原維度,可以提高模型的表達能力、引入多尺度特征信息,并靈活控制模型復(fù)雜度。這種設(shè)計可以幫助網(wǎng)絡(luò)更好地學(xué)習(xí)和表示輸入特征的相關(guān)信息。
定義部分卷積模塊

Partial_conv3 類

對每一塊進行 patch 操作

PatchMerging 類

PatchMerging 類用于將輸入特征的補丁進行合并,以減小特征圖的空間尺寸,并可選地對合并后的特 征進行歸一化處理。這個操作通常在多層級特征提取過程中使用,以控制特征的維度和空間尺寸,適應(yīng)不同的任務(wù)和模型結(jié)構(gòu)。