細粒度圖像分類論文(AAM模型方法)閱讀筆記

細粒度圖像分類論文閱讀筆記

  • 摘要
  • Abstract
  • 1. 用于細粒度圖像分類的聚合注意力模塊
    • 1.1 文獻摘要
    • 1.2 研究背景
    • 1.3 本文創新點
    • 1.4 計算機視覺中的注意力機制
    • 1.5 模型方法
      • 1.5.1 聚合注意力模塊
      • 1.5.2 通道注意力模塊
        • 通道注意力代碼實現
      • 1.5.3 空間注意力模塊
        • 空間注意力代碼實現
      • 1.5.4 CBAM注意力機制
        • CBAM注意力代碼實現
      • 1.5.5 本文模型整體架構
    • 1.6 實驗
      • 1.6.1 數據集
      • 1.6.1 實施細節
      • 1.6.2 實驗結果
    • 1.7 結論
  • 總結

摘要

本周閱讀了SCI二區的文章 Aggregate attention module for fine?grained image classification,該論文解決了以往網絡中的參數過多、計算過多的問題,提出了一種名為聚合注意力模塊的注意力機制,可以用更少的參數對細粒度圖像進行準確分類。所提出的注意力模塊將通道注意力與空間注意力并行結合,有效地學習關鍵特征,并且可以輕松擴展到其他神經模型。本文將詳細介紹該模型。

Abstract

This week I read the SCI Region 2 article Aggregate attention module for fine-grained image classification, which solves the problem of too many parameters and too much computation in the previous network by proposing an attention mechanism called aggregated attention module that can accurately classify fine-grained images with fewer parameters. The proposed attention module combines channel attention and spatial attention in parallel to learn key features efficiently and can be easily extended to other neural models. In this paper, the model is described in detail.

文獻出處:Aggregate attention module for fine?grained image classification

1. 用于細粒度圖像分類的聚合注意力模塊

1.1 文獻摘要

注意力機制對于聚合特征和發現有區別的局部細節非常有用。網絡中參數的增加會導致不必要的計算。本文提出了一種名為聚合注意力模塊的注意力機制,可以用更少的參數對細粒度圖像進行準確分類。 具體來說,為了平衡性能和復雜性之間的權衡,所提出的注意力模塊將通道注意力與空間注意力并行結合,有效地學習關鍵特征,并且可以輕松擴展到其他神經模型。 與最先進的模型相比,實驗表明,作者提出的模型可以使用不同的細粒度圖像基準(CUB-200-2011、FGVC Aircraft 和Stanford Cars)實現卓越的精度。

1.2 研究背景

細粒度圖像分類就是將同一物種進行細分,比如將貓的種類細分,同一類別的圖像之間的差異就比較小,由于特定細粒度子類別之間的類間差異較小,以及類內差異較大,因此它不同于傳統的圖像分析問題。由于細粒度圖像具有標記粒度細的特點,因此直接利用整個圖像級別的所有特征來識別細粒度圖像是很不合理的,如下圖所示:
在這里插入圖片描述
上圖每行的三張圖片屬于同一鳥類。 可以觀察到,同一物種的鳥類受拍攝角度和環境的影響也有很大差異。我們很容易看出,即使屬于同一子類別的圖像本身在形態、姿勢、背景等方面也存在巨大差異,基于這個研究背景,我們需要有效解決類別內差異問題。

針對這個問題,本文作者提出一種 利用注意力機制的細粒度圖像分類 方法。 該方法在提取圖像的細粒度特征的同時,消除了有害特征對分類性能的影響。 訓練時盡量少使用細粒度的標記數據,以提高細粒度圖像分類的效果。

1.3 本文創新點

  1. 提出了聚合注意力模塊來平衡細粒度圖像分類任務的性能和復雜性之間的權衡,該模塊可廣泛應用于神經網絡中。
  2. 設計并在整個網絡中使用跨通道損失函數,以提高深度卷積神經網絡的特征學習和表達能力。
  3. 在四個不同的公共基準數據集上針對細粒度圖像分類任務進行了廣泛的實驗,模型的性能優秀。

1.4 計算機視覺中的注意力機制

注意力思想已被應用于計算機視覺任務,包括圖像標記、目標檢測等,特別是圖像分類。 2019年,注意力網絡模型CBAM被開發出來,其中 Convolutional block attention module 和 Attention-based label consistency for semi-supervised deep learning based image classification 將通道注意力與空間注意力相結合,下周將詳細介紹這兩篇論文。視覺注意機制通過通道或空間尺度操作來探索圖像關鍵部分的特征。 但對于類內差異而言,一般的視覺注意機制并不能表現出突出的效果。

本文作者提出了一種簡單有效的注意力單元,稱為聚合注意力模塊,具有跨通道損失函數。 創新的注意力模塊擅長發現細微差異,并且優于其他注意力機制。

1.5 模型方法

SENet專注于通道維度的注意力計算,對通道之間的相互依賴關系進行建模,并通過網絡的全局損失函數自適應地重新校正通道之間特征的相應強度。 它的目的是有選擇地增強有用的特征并抑制不太有用的特征。 盡管SE塊表現良好,但整個模型的成本增加了,這體現在參數數量以及額外的訓練周期上。

ECA-Net是一種超通道注意力模塊,僅涉及k(k≤9)個參數,但卻帶來了顯著的性能提升,ECA-Net一味追求減少通道注意力中的參數數量,而忽略了空間注意力的有效性,這在一定程度上影響了模型的準確性。

作者提出的模型綜合解決了上述兩個網絡模型的缺陷,將通道注意力和空間注意力的有效使用結合起來。 在保證優異性能的同時最大限度地減少參數數量。 對于細粒度的圖像分類任務,具有出色的學習能力和泛化能力。

1.5.1 聚合注意力模塊

作者將 ResNet 修改為深度神經網絡架構中的骨干網絡。 給定中間生成的特征矩陣 F ∈ R C × H × W R^{C×H×W} RC×H×W 作為模塊輸入,所提出的 AAM 并行生成 1D 通道注意力圖 M c ∈ R C × 1 × 1 M_c ∈ R^{C×1×1} Mc?RC×1×1 和 2D 空間注意力圖 M s ∈ R 1 × H × W M_s ∈ R^{1×H×W} Ms?R1×H×W 。 整個注意力過程表示為:在這里插入圖片描述

1.5.2 通道注意力模塊

為了平衡通道注意力的額外計算成本和提高的模型精度,當我們利用特征通道之間的相關性生成通道注意力特征圖時,本文僅提取k個通道的相關信息。 k 個通道與當前通道相鄰。 此外,全局最大池化可以提取有效的空間特征。輸入特征圖矩陣通過通道全局最大池化進行操作,并通過 sigmoid 函數在 0 和 1 之間生成。

因此,對輸入的原始特征圖進行全局最大池化,提取并學習相鄰k通道信息。 生成的通道注意力張量按元素相加。 通過sigmoid函數并通過復制路徑進行相應的廣播,最終與原始輸入特征圖矩陣逐個相乘。 這是通道注意力模塊的輸出。 圖4展示了通道注意力模塊的結構。 簡而言之,通道注意力表示為:在這里插入圖片描述
下圖為通道注意力模塊的結構。 給定輸入特征圖,該模塊通過大小為 k 的全局最大池化操作生成通道權重,其中 k 由經驗確定
在這里插入圖片描述
通道注意力機制的核心思想是讓模型自動學習每個通道的重要性,并根據通道的貢獻調整輸入數據的表示。通過引入通道注意力機制,模型可以更加有效地利用每個通道的信息,提高模型對輸入數據的表征能力,從而改善模型在各種任務中的性能。

如下圖:先將輸入特征圖分別進行全局最大池化和全局平均池化(是在特征層的高和寬上進行池化),得到兩張不同維度的特征描述。然后池化后的特征圖共用一個多層感知器網絡,先通過一個全連接層進行特征降維,再通過全連接層進行特征升維。將兩張特征圖在通道維度堆疊,經過 sigmoid 激活函數將特征圖的每個通道的權重歸一化到0-1之間。最后,將歸一化后的權重和輸入特征圖相乘,得到處理好的特征圖。
在這里插入圖片描述

通道注意力代碼實現
import torch.nn as nn
import torch
import torch.nn.functional as fprint("************************通道注意力機制*********************")# 通道注意力機制
class ChannelAttention(nn.Module):# 初始化,in_planes參數指定了輸入特征圖的通道數,ratio參數用于控制通道注意力機制中特征降維和升維過程中的壓縮比率。默認值為8def __init__(self, in_planes, ratio=8):# 繼承父類初始化方法super().__init__()# 全局最大池化 [b,c,h,w]==>[b,c,1,1]self.avg_pool = nn.AdaptiveAvgPool3d((4, 1, 1)) # C*H*W# 全局平均池化 [b,c,h,w]==>[b,c,1,1]self.max_pool = nn.AdaptiveMaxPool3d((4, 1, 1)) # C*H*W# 使用1x1x1卷積核代替全連接層進行特征降維self.fc1 = nn.Conv3d(in_planes, in_planes // ratio, 1, bias=False)# 激活函數self.relu1 = nn.ReLU()# 使用1x1x1卷積核進行特征升維self.fc2 = nn.Conv3d(in_planes // ratio, in_planes, 1, bias=False)self.sigmoid = nn.Sigmoid()def forward(self, x):# 通過平均池化和最大池化后的特征進行卷積、激活、再卷積操作avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x)))) # 平均池化-->卷積-->RELu激活-->卷積max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x)))) # 最大池化-->卷積-->RELu激活-->卷積# 將兩個輸出相加out = avg_out + max_out# 應用Sigmoid函數return self.sigmoid(out)# 創建ChannelAttention模型的實例,輸入通道數為256
model = ChannelAttention(256)
# 打印模型結構
print(model)
# 創建一個形狀為[2, 256, 4, 8, 8]的輸入張量,所有元素初始化為1
inputs = torch.ones([2, 256, 4, 8, 8]) # 2是批次大小(batch size),256是通道數,4、8、8分別是深度、高度和寬度的維度
# 將輸入張量傳遞給模型,并獲取輸出
outputs = model(inputs)
# 打印輸入張量的形狀
print(inputs.shape) # [2, 256, 4, 8, 8]
# 打印輸出張量的形狀
print(outputs.shape) # [2, 256, 4, 1, 1]

輸出結果
在這里插入圖片描述

1.5.3 空間注意力模塊

與通道注意力不同,空間注意力提供了更有用的信息,重點關注圖像的不同位置。 由于基于空間尺度的全局最大池化操作,可以有效地提取特征圖的關鍵特征。 就全局平均池化操作而言,一方面可以盡可能保存特征圖的整體信息。 另一方面,同一類別差異可能較大,關鍵部位可能會受到光照、遮擋等因素的影響,可能導致學習效果不足。 全局平均池化操作可以在一定程度上緩解這一障礙。

本文將特征圖的空間注意力分布逐個元素地傳遞、復制并與原始輸入特征圖矩陣相乘,即為空間注意力模塊 M s ( F ) ∈ R 1 × H × W M_s(F) ∈ R^{1×H×W} Ms?(F)R1×H×W 的輸出。 空間注意力模塊的結構如下圖所示。我們使用兩次池化計算來合成當前特征矩陣的空間值,獲得兩個2D中間圖 M s a v g ∈ R 1 × H × W M^{avg}_{s} ∈ R^{1×H×W} Msavg?R1×H×W M s m a x ∈ R 1 × H × W M^{max}_{s} ∈ R^{1×H×W} Msmax?R1×H×W。 每個特征圖代表通道中的平均池化特征以及最大池化特征。 該模塊通過標準卷積層將它們連接起來并進行卷積以生成2D空間注意力分布。 簡而言之,空間注意力定義為:在這里插入圖片描述
在這里插入圖片描述

空間注意力代碼實現
import torch.nn as nn
import torch
import torch.nn.functional as fprint("************************空間注意力機制*********************")# 空間注意力機制
class SpatialAttention(nn.Module):def __init__(self, kernel_size=3):super().__init__()# 斷言法:kernel_size必須為3或7assert kernel_size in (3, 7),'kernel size must be 3 or 7'# 三元操作:如果kernel_size的值等于7,則padding被設置為3;否則(即kernel_size的值為3),padding被設置為1。padding = 3 if kernel_size == 7 else 1# 定義一個卷積層,輸入通道數為2,輸出通道數為1self.conv1 = nn.Conv3d(2, 1, kernel_size, padding=padding, bias=False)self.sigmoid = nn.Sigmoid()def forward(self, x):# (N, C, H, W),dim=1沿著通道維度C,計算張量的平均值和最大值avg_out = torch.mean(x, dim=1, keepdim=True)max_out, _ = torch.max(x, dim=1, keepdim=True)# 將平均值和最大值在通道維度上拼接x = torch.cat([avg_out, max_out], dim=1)x = self.conv1(x)return self.sigmoid(x)model = SpatialAttention(kernel_size=7)
print(model)
inputs = torch.ones([2, 256, 4, 8, 8])
outputs = model(inputs)
print(inputs.shape)
print(outputs.shape)

輸出結果
在這里插入圖片描述

空間注意力機制(Spatial Attention Module)是一種用于處理空間信息的注意力機制,主要用于在深度學習模型中動態地調整輸入數據的不同空間位置的重要性,以增強有用信息并抑制無用信息。在圖像處理等領域,空間注意力機制可以幫助模型更好地關注圖像中不同區域的特征,從而提高模型的表征能力和性能。

1.5.4 CBAM注意力機制

CBAM(Convolutional Block Attention Module)模塊是一種結合了通道注意力和空間注意力機制的注意力模塊,旨在提高卷積神經網絡(CNN)對圖像特征的表征能力。CBAM模塊通過同時關注通道維度和空間維度的特征信息,實現了對圖像特征的全局感知和重要性調整。

CBAM模塊通常由兩個子模塊組成:通道注意力模塊(Channel Attention Module)和空間注意力模塊(Spatial Attention Module)。這兩個子模塊分別用于對通道維度和空間維度的特征進行加權調整,從而提高特征表示的表征能力。(兩個Attention進行串聯,Channel 在前,Spatial在后)如下圖:
在這里插入圖片描述
模塊會沿著兩個獨立的維度(通道和空間)依次推斷注意力圖,然后將注意力圖乘以輸入特征圖以進行自適應特征修飾。 由于CBAM是輕量級的通用模塊,因此可以以可忽略的開銷將其無縫集成到任何CNN架構中,并且可以與基礎CNN一起進行端到端訓練。

CBAM注意力代碼實現
import torch.nn as nn
import torch
import torch.nn.functional as fprint("************************通道注意力機制*********************")# 通道注意力機制
class ChannelAttention(nn.Module):# 初始化,in_planes參數指定了輸入特征圖的通道數,ratio參數用于控制通道注意力機制中特征降維和升維過程中的壓縮比率。默認值為8def __init__(self, in_planes, ratio=8):# 繼承父類初始化方法super().__init__()# 全局最大池化 [b,c,h,w]==>[b,c,1,1]self.avg_pool = nn.AdaptiveAvgPool3d((4, 1, 1)) # C*H*W# 全局平均池化 [b,c,h,w]==>[b,c,1,1]self.max_pool = nn.AdaptiveMaxPool3d((4, 1, 1)) # C*H*W# 使用1x1x1卷積核代替全連接層進行特征降維self.fc1 = nn.Conv3d(in_planes, in_planes // ratio, 1, bias=False)# 激活函數self.relu1 = nn.ReLU()# 使用1x1x1卷積核進行特征升維self.fc2 = nn.Conv3d(in_planes // ratio, in_planes, 1, bias=False)self.sigmoid = nn.Sigmoid()def forward(self, x):# 通過平均池化和最大池化后的特征進行卷積、激活、再卷積操作avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x)))) # 平均池化-->卷積-->RELu激活-->卷積max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x)))) # 最大池化-->卷積-->RELu激活-->卷積# 將兩個輸出相加out = avg_out + max_out# 應用Sigmoid函數return self.sigmoid(out)# 創建ChannelAttention模型的實例,輸入通道數為256
model = ChannelAttention(256)
# 打印模型結構
print(model)
# 創建一個形狀為[2, 256, 4, 8, 8]的輸入張量,所有元素初始化為1
inputs = torch.ones([2, 256, 4, 8, 8]) # 2是批次大小(batch size),256是通道數,4、8、8分別是深度、高度和寬度的維度
# 將輸入張量傳遞給模型,并獲取輸出
outputs = model(inputs)
# 打印輸入張量的形狀
print(inputs.shape) # [2, 256, 4, 8, 8]
# 打印輸出張量的形狀
print(outputs.shape) # [2, 256, 4, 1, 1]print("************************空間注意力機制*********************")# 空間注意力機制
class SpatialAttention(nn.Module):def __init__(self, kernel_size=3):super().__init__()# 斷言法:kernel_size必須為3或7assert kernel_size in (3, 7),'kernel size must be 3 or 7'# 三元操作:如果kernel_size的值等于7,則padding被設置為3;否則(即kernel_size的值為3),padding被設置為1。padding = 3 if kernel_size == 7 else 1# 定義一個卷積層,輸入通道數為2,輸出通道數為1self.conv1 = nn.Conv3d(2, 1, kernel_size, padding=padding, bias=False)self.sigmoid = nn.Sigmoid()def forward(self, x):# (N, C, H, W),dim=1沿著通道維度C,計算張量的平均值和最大值avg_out = torch.mean(x, dim=1, keepdim=True)max_out, _ = torch.max(x, dim=1, keepdim=True)# 將平均值和最大值在通道維度上拼接x = torch.cat([avg_out, max_out], dim=1)x = self.conv1(x)return self.sigmoid(x)model = SpatialAttention(kernel_size=7)
print(model)
inputs = torch.ones([2, 256, 4, 8, 8])
outputs = model(inputs)
print(inputs.shape)
print(outputs.shape)print("************************CBAM模塊*********************")
class CBAM_Block(nn.Module):def __init__(self, channel, ratio=8, kernel_size=3):super().__init__()# 初始化通道注意力模塊self.channelAttention = ChannelAttention(channel, ratio=ratio)# 初始化空間注意力模塊self.SpatialAttention = SpatialAttention(kernel_size=kernel_size)def forward(self, x):# 應用通道注意力和空間注意力x = x * self.channelAttention(x)x = x * self.SpatialAttention(x)return xmodel = CBAM_Block(256)
print(model)
inputs = torch.ones([2, 256, 4, 8, 8])
outputs = model(inputs)
print(inputs.shape)
print(outputs.shape)

輸出結果
在這里插入圖片描述

1.5.5 本文模型整體架構

該方法的架構如下圖所示。給定前面的卷積塊獲得的特征圖,聚合注意力模塊將通道注意力和空間注意力結合起來計算注意力分布。 生成的最終分布被輸入到下一個卷積塊。 網絡的整體損失是通過提出的跨通道損失和交叉熵損失來計算的。
在這里插入圖片描述

1.6 實驗

1.6.1 數據集

作者在四個廣泛采用的細粒度基準上驗證了模型。 實驗期間的基準數據是 Caltech-UCSD-Birds (CUB-200-2011)、FGVC-Aircraft (Maji et al. 2013)、Stanford Cars 和 Stanley Dogs (Khosla et al. 2011)。 數據集的詳細介紹如下表所示。
在這里插入圖片描述

1.6.1 實施細節

采用 PyTorch 框架來實現我們提出的方法。 隨機梯度下降優化器與“poly”的學習率策略一起使用(動量參數設置為0.8,初始學習率設置為1e?4,終止學習率設置為1e?6,并且 權重衰減設置為 2.5e?4)。 我們在并行 Titan XP GPU 上訓練我們提出的模型 200 個時期。 訓練圖像的批量大小設置為 16。所有原始圖像都經過隨機重新縮放、裁剪和翻轉。 然后將輸入訓練圖像的大小調整為 224 × 224,而用于驗證和測試的圖像根本不必改變。 經過實驗驗證,不同的 η 值以及數據集相應的訓練效果如表 2 所示。請注意,我們從頭開始訓練我們的網絡,這意味著除了官方提供的數據集中的標記圖像之外,我們不需要使用任何額外的數據 。 此外,我們將超參數μ設置為0.01。

1.6.2 實驗結果

如下表所示,AAM 方法比其他 SOTA 模型表現更好。 具體來說,我們提出的方法顯示,CUB-200-2011 上的結果明顯改善了 0.7%,FGVC-Aircraft 上改善了 1.5%,Stanford Cars 上改善了 0.2%,Stanford Dogs 上改善了 2.7%。 這項工作提供了圖 7,將所提出的 CC-Loss 與中心損失(Wen et al. 2016)和交叉熵損失(CE 損失)進行比較。 在這個實驗中,模型都是從頭開始訓練的。
在這里插入圖片描述

1.7 結論

在本文中,作者提出了用于細粒度圖像分類任務的 AAM。 在這個注意力模塊中,作者并行地將通道注意力和空間注意力結合起來。 此外,作者還開發了 CC-Loss 來最大化細粒度圖像類別之間的差異。 大量實驗表明,無論骨干網絡如何,所提出的 AAM 的性能都比其他最近使用的模型好得多。

總結

本周學習了AAM模型,聚合注意力模塊、通道注意力、空間注意力模塊,同時也進行了代碼實踐,下周將繼續學習細粒度圖像相關的文獻模型。加油~

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

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

相關文章

Git命令之江湖百曉生

Git 命令大全 第一章:Git 簡介 Git 是一個開源的分布式版本控制系統,由 Linus Torvalds 于 2005 年創建,用于有效、高速地處理從小到大的項目。它是一個命令行工具,用于跟蹤和管理源代碼歷史記錄。 第二章:Git 的 1…

【軟件設計師】面向對象技術

1.面向對象基礎 1.1 基本概念 方法重載是函數名字相同,參數列表不同 組成 即組合,指整體與部分的關系,整體與部分生命周期相同 聚合 關聯關系的一個特例,是體現整體與部分,即使has-a的關系,此時整體與部分…

C++語言學習(六)—— 類與對象(二)

目錄 一、對象數組 二、對象指針 三、this 指針 四、類類型作為參數類型的三種形式 4.1 對象本身作為參數 4.2 對象指針作為參數 4.3 對象引用作為參數 五、靜態成員 5.1 靜態數據成員 5.2 靜態成員函數 六、友元機制 6.1 友元函數 6.2 友元類 七、類的組合 八、…

【LakeHouse】Apache Iceberg + Amoro 助力網易構建云原生湖倉

Apache Iceberg Amoro 助力網易構建云原生湖倉 1.云原生湖倉背景與挑戰2.Apache Iceberg 、Amoro 與云原生2.1 Apache Iceberg2.2 Amoro 簡介 3.Apache Iceberg Amoro 云原生實踐3.1 云上湖倉案例一3.2 云上湖倉案例二3.3 云上湖倉案例三 4.Amoro 未來發展規劃 出品社區&…

【代碼隨想錄——回溯算法二周目】

1. 組合總和 var (path []intres [][]int )func combinationSum(candidates []int, target int) [][]int {path make([]int, 0)res make([][]int, 0)dfs(candidates,target,0,0)return res }func dfs(candidates []int, target int,tempTarget int,start int) {if tempTarg…

Django-auth組件

Django-auth組件 1 表結構 我們從python manage.py migrate為我們創建的auth組件內置的表開始看 auth_user:用戶表存儲用戶信息(登錄admin后臺) 里面的字段分兩類:用戶基本信息(用戶名,郵箱,密…

華為OD機試【找出通過車輛最多顏色】(java)(100分)

1、題目描述 在一個狹小的路口,每秒只能通過一輛車,假設車輛的顏色只有 3 種,找出 N 秒內經過的最多顏色的車輛數量。 三種顏色編號為0 ,1 ,2。 2、輸入描述 第一行輸入的是通過的車輛顏色信息[0,1,1,2] &#xff0…

嵌入式0基礎開始學習 ⅠC語言(4)循環結構

0.問題引入 求0~100數據之和: int sum 0; sum 1234....100; 廢手,那么有沒有一種好的方法取操作呢? int sum 0; int i 1; sum sum i; // sum 01; …

GB28181協議中常用SDP信息的含義

u字段:u行應填寫視音頻文件的URI。該URI取值有兩種方式:簡捷方式和普通方式。簡捷方式直接采用產生該歷史媒體的媒體源(如某個攝像頭)的設備ID(應符合6.1.2的規定)以及相關參數(如回放類型、下載…

Three.js——二維平面、二維圓、自定義二維圖形、立方體、球體、圓柱體、圓環、扭結、多面體、文字

個人簡介 👀個人主頁: 前端雜貨鋪 ?開源項目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋?♂?學習方向: 主攻前端方向,正逐漸往全干發展 &#x1…

在Mac電腦下怎么部署QAnything?

在Mac電腦下部署QAnything,可以選擇使用純Python環境進行部署,這種方式不依賴GPU,適合在Mac等筆記本電腦上運行。以下是基于QAnything的純Python環境安裝教程的步驟[18]: 安裝要求 Python 3.10(建議使用Anaconda3來管…

RabbitMQ-默認讀、寫方式介紹

1、RabbitMQ簡介 rabbitmq是一個開源的消息中間件,主要有以下用途,分別是: 應用解耦:通過使用RabbitMQ,不同的應用程序之間可以通過消息進行通信,從而降低應用程序之間的直接依賴性,提高系統的…

功率電感的設計步驟

文章目錄 1:高導磁氣隙(鐵氧體)1.1設計原理1.2 設計步驟 2 鐵粉芯2.1:設計原理2.2:設計步驟 TI電感設計 學習視頻原鏈接 截圖 1 截圖1 截圖1 截圖 2 截圖2 截圖2 1:高導磁氣隙(鐵氧體&#…

基于機器學習判斷面部微表情發現哪些人更容易診有帕金森病

1. 概述 帕金森病(Parkinson’s disease,PD)是一種慢性、進展性的神經退行性疾病,主要影響運動系統。該病癥以大腦中黑質致密部多巴胺能神經元的逐漸喪失為特征,導致多巴胺(一種重要的神經遞質&#xff09…

【Qt】深入探索Qt窗口與對話框:從創建到管理:QDockWidget(浮動窗口)、QDialog(對話框)

文章目錄 前言:1. 浮動窗口2. 對話框介紹2.1. 示例:主窗口中,通過點擊按鈕,彈出一個新的對話框。2.2. 創建自定義對話框2.2.1. 純代碼的方式2.2.2. 圖形化界面的方式 3. 模態對話框 和 非模態對話框4. Qt 內置對話框4.1. 消息對話…

Nginx R31 doc-12-NGINX SSL Termination 安全加密

前言 大家好,我是老馬。很高興遇到你。 我們為 java 開發者實現了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何處理的,可以參考我的另一個項目: 手寫從零實現簡易版 tomcat minicat nginx 系列 從零手…

Git Submodules:深入理解與應用

在大型項目或跨多個獨立項目的開發中,代碼管理往往變得復雜。Git Submodules 是 Git 提供的一個強大功能,允許你在一個 Git 倉庫(稱為父倉庫)中嵌套另一個 Git 倉庫(稱為子模塊倉庫)。本文將詳細介紹 Git S…

Linux/Windows下如何同時運行服務端和客戶端

假設服務端和客戶端程序分別為server.c和client.c注意順序! 先運行服務端,后運行客戶端先結束客戶端,后結束客戶端 編譯 gcc -o server server.cgcc -o server client.c運行 # 先運行服務器 ./server# 再運行客戶端 ./client./表示當前目錄…

Hybrid Block Storage for Efficient Cloud Volume Service——論文泛讀

TOS 2023 Paper 論文閱讀筆記整理 問題 傳統桌面和服務器應用程序向云的遷移給底層云存儲帶來了高性能、高可靠性和低成本的挑戰。由于這些傳統應用程序的I/O模式和一致性要求,與采用特定編程模型和范式(如MapReduce[22]和RDD[52])的云原生…

香橙派AIpro(OrangePi AIPro)開發板初測評

開發板簡介 最近,我拿到手一款Orange Pi AI Pro 開發板,它是香橙派聯合華為精心打造的高性能AI 開發板,最早發布于2023年12月,其搭載了昇騰AI 處理器,可提供8TOPS INT8 的計算能力,內存提供了8GB 和16GB兩…