計算機視覺準備八股中

一邊記錄一邊看,這段實習跑路之前運行完3DGAN,弄完潤了,現在開始記憶八股

1.CLIP模型的主要創新點:

? ?圖像和文本兩種不同模態數據之間的深度融合、對比學習、自監督學習

2.等效步長是每一步操作步長的乘積

3.卷積層計算輸入輸出的公式:

?4.a=np.random.randn(3,3) b=np.random.randn(3,1) ,那么c=a*b的維度應該是,*是元素乘法,? ? ? ? 會觸發廣播機制,b會變為形狀(3,3),最終c的形狀是(3,3)

5.帶寬?(Bandwidth)是指在單位時間內,網絡或通信系統能夠傳輸的數據量,通常以比特每秒(bps)為單位表示。它是衡量數據傳輸能力的重要指標,帶寬越大,傳輸數據的速度越快

? ?減少模型層數據和縮小輸入尺寸可以有效降低深度學習推理的帶寬需求

6.解決樣本不均衡的方法有Focal Loss、數據增強、多樣本欠采樣

7.Dice損失常用于圖像分割、目標檢測、自然語言處理

8.某個矩陣的某個特征值為0,則為奇異矩陣,不滿秩;行列式為0的方陣稱為奇異矩陣

? ?矩陣的奇異值是矩陣A乘A轉置的特征值的平方根。如果矩陣有特征值為0,則其對應的奇異值也? ? ?為0。因此,特征值為0的矩陣至少有一個奇異值為0
? 奇異矩陣的定義要求矩陣必須是方陣?(即行數和列數相等)。如果矩陣不是方陣,則無法討論其? ? 是否為奇異矩陣

9.不是任意矩陣都能特征分解;并不是所有方陣的特征值都是實數;奇異矩陣至少有一個特征值為? ? ?0;矩陣B可以分解為A和A轉置,若A為行滿秩,則B的特征向量一定正交

10.同一臺電腦兩次運算一個浮點運算的值可能不同;浮點數不滿足結合律;浮點數不能批量填充? 0? ?比特;正常浮點數乘除法仍是正常浮點數

11.手寫kmeans聚類

import numpy as np
import matplotlib.pyplot as pltdef initialize_centroids(X, k):"""隨機初始化k個質心"""indices = np.random.choice(X.shape[0], k, replace=False)return X[indices]def assign_clusters(X, centroids):"""將每個樣本分配到最近的質心"""distances = np.linalg.norm(X[:, np.newaxis] - centroids, axis=2)return np.argmin(distances, axis=1)def update_centroids(X, labels, k):"""根據分配更新質心位置"""return np.array([X[labels == i].mean(axis=0) for i in range(k)])def k_means(X, k, max_iters=100, tol=1e-4):"""K-means算法實現"""# 初始化質心centroids = initialize_centroids(X, k)for _ in range(max_iters):# 保存舊質心old_centroids = centroids# 分配樣本到最近質心labels = assign_clusters(X, centroids)# 更新質心centroids = update_centroids(X, labels, k)# 檢查質心移動是否小于容差if np.all(np.linalg.norm(centroids - old_centroids, axis=1) < tol):breakreturn centroids, labels# 示例:生成測試數據
np.random.seed(42)
X = np.random.rand(300, 2)  # 300個二維數據點# 運行K-means算法
k = 3
centroids, labels = k_means(X, k)# 可視化結果
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=200, alpha=0.75, marker='X')
plt.title("K-means Clustering")
plt.show()

12.因為做了醫學圖像的實習,得看一下論文,主要是下面這幾篇,同事的功勞也是我的功勞,發? ? ? ?動功勞轉移

? ? ?Breaking the Dilemma of Medical Image-to-image Translation

? ? ?Wasserstein GAN

? ? ?Improved Training of Wasserstein GANs

13.SVM,看下面的四個鏈接,講的挺詳細,組會當時是我同門講的,哥們劃水

? ? ?機器學習:深入解析SVM的核心概念【一、間隔與支持向量】_svm核心-CSDN博客文章瀏覽閱讀1.5k次,點贊11次,收藏32次。在數學和物理中,一個平面或超平面的法向量是一個垂直于該平面的向量。在SVM的上下文中,超平面是決策邊界,用來劃分不同類別的數據點。SVM 的目標是構建一個具有最大間隔的決策邊界,而間隔邊界的設定≥1\geq +1≥1和≤?1\leq -1≤?1為了確保數學模型的一致性,并簡化優化過程。這種方式定義的間隔是所有支持向量到超平面的最小距離,最大化這個距離幫助SVM提高分類器的泛化能力。_svm核心 https://leo-la.blog.csdn.net/article/details/138164031

? ? ?機器學習:深入解析SVM的核心概念【二、對偶問題】_svm對偶問題-CSDN博客文章瀏覽閱讀1.7k次,點贊46次,收藏32次。這個優化問題是凸二次規劃問題,因為它具備了凸規劃問題所需的兩個主要特性:一個凸的和凸的。目標函數 12∣∣ω∣∣2\frac{1}{2} ||\omega||^221?∣∣ω∣∣2 是凸的:因為這個函數的二階導數相對于 ω\omegaω 為正值,這保證了該函數是凸的,也就是說,它在任意方向上都是。約束條件是凸的:對于 SVM 的約束 yi(ωTxi+b)≥1y_i(\omega^T x_i + b) \geq 1yi?(ωTxi?+b)≥1,它們定義了一個。為了形成凸優化問題,約束條件本身也必須形成一個凸集_svm對偶問題 https://leo-la.blog.csdn.net/article/details/138254287

? ? ?機器學習:深入解析SVM的核心概念【三、核函數】_核函數機器學習-CSDN博客文章瀏覽閱讀1.1k次,點贊24次,收藏28次。在實踐中,選擇合適的核函數對于構建有效的SVM模型至關重要。它不僅影響模型對數據的理解和分界線的構建,也影響模型的泛化能力。通過使用核函數,SVM可以在復雜的數據集上找到簡潔的決策規則,即便在原始特征空間中數據是高度非線性的。問題四:半正定性理解半正定性是高維空間中的一個重要概念,我們可以用一個簡化的類比來幫助理解。想象你有一座山,山頂是最高點。如果這座山的形狀是凸的(像一個碗),那么無論你在山腰的哪個位置開始,都可以直接走最陡峭的路線到達山頂。在這座“凸山”上,無論你選擇哪條路徑,你總能達到山頂。_核函數機器學習 https://leo-la.blog.csdn.net/article/details/138323547

? ? ?機器學習:深入解析SVM的核心概念【四、軟間隔與正則化】_軟間隔svm原理-CSDN博客文章瀏覽閱讀1.4k次,點贊12次,收藏23次。軟間隔SVM是對傳統的硬間隔SVM的擴展,它允許某些數據點違反最初的分類邊界。這樣做的目的是提高模型對噪聲和異常值的,從而獲得更好的泛化能力。在這個設置中,優化目標函數的推導過程是這樣的:軟間隔引入:為了應對現實世界數據中的噪聲和不完全線性可分的情況,引入軟間隔的概念。在硬間隔SVM中,所有數據點都嚴格滿足 yi(wTxi+b)≥1y_i (w^T x_i + b) \geq 1yi?(wTxi?+b)≥1 的約束。在軟間隔SVM中,我們允許某些點不滿足這個條件,引入松弛變量 ξi\xi_iξi? 來衡量每_軟間隔svm原理 https://leo-la.blog.csdn.net/article/details/138325130

14.bn層與卷積層參數融合

在cnn中,如果卷積層之后接Bn層,那么一般設置bias為0,因為bias會在下一層BN歸一化時減去均值消掉,徒增計算,這也是為什么我們看到很多時候卷積層設置bias,有時候又不設置。

這里是model1

import numpy as np
import math
import torch
import torch.nn as nn
import torch.nn.functional as Fclass ConvWithBn(nn.Module):def __init__(self, ):super(ConvWithBn, self).__init__()self.conv1 = nn.Conv2d(3, 8, kernel_size=3, stride=1, padding=1, bias=False) self.bn1 = nn.BatchNorm2d(8)self._initialize_weights()def forward(self, x):x = self.bn1(self.conv1(x))return xdef _initialize_weights(self):for m in self.modules():if isinstance(m, nn.Conv2d):n = m.kernel_size[0] * m.kernel_size[1] * m.out_channelsm.weight.data.normal_(0, math.sqrt(2. / n))if m.bias is not None:m.bias.data.zero_()elif isinstance(m, nn.BatchNorm2d):m.weight.data.normal_(0, 1)m.bias.data.normal_(0, 1)m.running_mean.data.normal_(0, 1)m.running_var.data.uniform_(1, 2)

后面直接用模型1的權重加到模型3上面

這個是model3

class ConvWithBias(nn.Module):def __init__(self, ):super(ConvWithBias, self).__init__()self.conv1 = nn.Conv2d(3, 8, kernel_size=3, stride=1, padding=1, bias=True) def forward(self, x):x = self.conv1(x)return x

合并的代碼如下

Model3 = ConvWithBias()
# 提取模型1每一層參數
conv1w = model1_cpkt['conv1.weight']
bnw = model1_cpkt['bn1.weight']
bnb = model1_cpkt['bn1.bias']
bnmean = model1_cpkt['bn1.running_mean']
bnvar = model1_cpkt['bn1.running_var']
# 維度擴展
bnwexp = bnw.unsqueeze(1).unsqueeze(2).unsqueeze(3)
bnvarexp = bnvar.unsqueeze(1).unsqueeze(2).unsqueeze(3)
# 合并卷積BN層
new_conv1w = (bnwexp*conv1w)/(torch.sqrt(bnvarexp+1e-5))
new_conv2b = (bnb - bnw*bnmean/(torch.sqrt(bnvar+1e-5)))
merge_state_dict = {}
merge_state_dict['conv1.weight'] = new_conv1w
merge_state_dict['conv1.bias'] = new_conv2bModel3.load_state_dict(merge_state_dict)
Model3.eval()
out3 = Model3(input)
print("Bias of merged ConvBn : ",torch.sum(out3 - out1))

15.FCN(全卷積神經網絡),ATSS,可形變transformer和可形變卷積,找論文看看

? ? ?還有就是SSD,Yolo,FasterRCNN,deeplab,repvgg,yolof

16.手寫batchnormal

import torchclass BatchNorm:def __init__(self, num_features, eps=1e-5, momentum=0.1):self.num_features = num_featuresself.eps = epsself.momentum = momentum# 可學習參數self.gamma = torch.ones(num_features)self.beta = torch.zeros(num_features)# 運行時的均值和方差self.running_mean = torch.zeros(num_features)self.running_var = torch.ones(num_features)def forward(self, x, training=True):if x.dim() != 4:raise ValueError("輸入數據必須是4D張量:[batch_size, channels, height, width]")batch_size, channels, height, width = x.shapeif training:# 計算均值和方差mean = x.mean(dim=(0, 2, 3), keepdim=True)  # [1, channels, 1, 1]var = x.var(dim=(0, 2, 3), keepdim=True)    # [1, channels, 1, 1]# 更新運行時的均值和方差self.running_mean = (1 - self.momentum) * self.running_mean + self.momentum * mean.squeeze()self.running_var = (1 - self.momentum) * self.running_var + self.momentum * var.squeeze()else:mean = self.running_mean.view(1, channels, 1, 1)var = self.running_var.view(1, channels, 1, 1)# 歸一化x_hat = (x - mean) / torch.sqrt(var + self.eps)# 縮放和平移y = self.gamma.view(1, channels, 1, 1) * x_hat + self.beta.view(1, channels, 1, 1)return y

17.手寫layernormal

18.Max Pooling:反向傳播時,梯度僅通過前向傳播時記錄的最大值位置傳遞,其他位置的梯度? ? ? ? ?為 0

? ? ??Avg Pooling:反向傳播時,梯度被均勻分配到池化窗口中的每個位置

19.進程和線程的區別

? ??進程:進程是程序的一次執行實例,是操作系統進行資源分配和調度的基本單位。每個進程擁? ? ? ?有獨立的內存空間、代碼、數據和系統資源,一個進程的崩潰不會直接影響其他進程,進程是操作? ? ?系統調度的基本單位,進程間的切換開銷較大,創建和銷毀進程的開銷較大

? ?線程:線程是進程中的一個執行單元,是程序執行流的最小單位。一個進程可以包含多個線程,? ? ?這些線程共享進程的資源,線程間的切換開銷較小,創建和銷毀線程的開銷較小,若某個線程出錯(如死鎖、崩潰等),可能會影響到整個進程

20.深度可分離卷積的原理、參數量的計算

? ??深度可分離卷積核心思想是將標準卷積分解為兩個獨立的步驟:?深度卷積(Depthwise? ? ? ? ? ? ? ? ? Convolution)?逐點卷積(Pointwise Convolution)?

? ??標準卷積的參數量:Paramsstandard?=k×k×Cin?×Cout?*H×W

? ??深度可分離卷積的參數量:Paramsseparable?=(k×k×Cin?+Cin?×Cout?)*H×W

21.手寫layernormal

import torch
import torch.nn as nnclass LayerNorm(nn.Module):def __init__(self, d_model, eps=1e-6):super(LayerNorm, self).__init__()# 可學習參數self.gamma = nn.Parameter(torch.ones(d_model))  # 縮放參數self.beta = nn.Parameter(torch.zeros(d_model))  # 平移參數self.eps = eps  # 防止分母為零的小常數def forward(self, x):# 計算均值和方差mean = x.mean(-1, keepdim=True)  # 在最后一個維度上計算均值std = x.std(-1, unbiased=False, keepdim=True)  # 在最后一個維度上計算標準差# 歸一化并應用仿射變換return self.gamma * (x - mean) / (std + self.eps) + self.beta

22.Adam優化器的優勢

? ? ?自適應學習率:Adam通過計算每個參數的一階矩(均值)和二階矩(方差)來動態調整學習? ? ? ? ?率,避免了手動調整學習率的復雜性

? ? ?SGD優化器的優勢

? ? ?SGD的超參數較少,調參相對簡單,計算量較小,內存占用少

? ? ?Adam在某些情況下更容易發散,而SGD的發散風險較低,但需要仔細調整學習率

23.softmax手寫

import torch
import torch.nn as nn
class softmax(nn.Module):def __init__(self,dim=None):super(softmax,self).__init__()self.dim=dimdef forward(self,x):x=x-torch.max(x,dim=self.dim,keepdim=True).valuesexp=torch.exp(x)torch_sum=torch.sum(exp,dim=self.dim,keepdim=True)return exp/torch_sum
input_tensor = torch.tensor([[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]])
softmax_layer = softmax(dim=1)
output_tensor = softmax_layer(input_tensor)
print(output_tensor)

24.??ROC曲線

? ? ?ROC曲線是一種圖形化工具,用于展示分類模型在不同閾值下的性能。它通過繪制以下兩個指? ? ? ?標的關系來生成:

? ? ?真正例率(True Positive Rate, TPR)?:表示實際為正類的樣本中被正確預測為正類的比例

? ? ?假正例率(False Positive Rate, FPR)?:表示實際為負類的樣本中被錯誤預測為正類的比例

? ? ?AUC

? ? ?AUC是ROC曲線下的面積,用于量化模型的分類能力。AUC的取值范圍在0到1之間

25.深拷貝和淺拷貝的區別

? ? ?淺拷貝創建一個新對象,并將原對象的字段值復制到新對象中。對于基本數據類型,直接復制? ? ? ?其值;對于引用類型字段,僅復制其引用(內存地址),而不是引用指向的實際對象。

? ? ?深拷貝創建一個新對象,并遞歸地復制原對象的所有字段,包括引用類型字段指向的實際對? ? ? ? ? ?象。新對象和原對象完全獨立,不共享任何內存地址。

26.統計文件個數

ls -l | grep "^-" | wc -l

27.Inception結構詳解(從V1到V4,再到xcpetion)

? ??Inception結構詳解(從V1到V4,再到xcpetion)_inception模型-CSDN博客文章瀏覽閱讀1.2w次,點贊17次,收藏133次。詳細講了關于Inception結構的內容和原理(從Inception V1到Inception V4,再到xcpetion),都做了詳細的介紹_inception模型 https://blog.csdn.net/ximu__l/article/details/129495171?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522a39039c32dddf6e6cfd00bac631e6d86%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=a39039c32dddf6e6cfd00bac631e6d86&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-129495171-null-null.142^v102^pc_search_result_base6&utm_term=Inception&spm=1018.2226.3001.4187

28.Pytorch 怎么實現多卡的Batch Normalization的同步

? ? ?在 PyTorch 中,實現多卡訓練時的 Batch Normalization(BN)同步可以通過 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SyncBatchNorm?(同步批量歸一化)來實現。SyncBatchNorm 會跨多個 GPU 同步均值和方? ? ? ?差,確保所有 GPU 使用相同的統計量進行歸一化,從而提升模型訓練的穩定性和效果。

29.手寫MSA

import torch
import torch.nn as nn
import torch.nn.functional as F
class Multinalhead(nn.Module):def __init__(self,embed_dim,head):super(Multinalhead,self).__init__()self.embed_dim=embed_dimself.head=headself.head_dim=self.embed_dim//self.headself.query=nn.Linear(self.embed_dim,self.embed_dim)self.key=nn.Linear(self.embed_dim,self.embed_dim)self.value=nn.Linear(self.embed_dim,self.embed_dim)self.out=nn.Linear(self.embed_dim,self.embed_dim)def forward(self,q,k,v,mask=None):batch_size=q.size(0)Q = self.query(q)K = self.key(k)V = self.value(v)Q = Q.view(batch_size,-1,self.head,self.head_dim).transpose(1,2)K = K.view(batch_size, -1, self.head, self.head_dim).transpose(1, 2)V = V.view(batch_size, -1, self.head, self.head_dim).transpose(1, 2)score=torch.matmul(Q,K.transpose(-2,-1))/torch.sqrt(torch.tensor(self.head_dim,dtype=torch.float32))if mask:score=score.masked_fill(mask==0,-1e9)weight=F.softmax(score,dim=-1)context=torch.matmul(weight,V)context=context.transpose(1,2).contiguous().view(batch_size,-1,self.embed_dim)result=self.out(context)return result
import torch# 定義模型參數
embed_dim = 64  # 輸入和輸出的維度
num_heads = 8   # 注意力頭的數量# 創建多頭注意力層
multihead_attn = Multinalhead(embed_dim, num_heads)# 創建模擬輸入數據 (batch_size, sequence_length, embed_dim)
batch_size = 10
seq_length = 20
query = torch.randn(batch_size, seq_length, embed_dim)
key = torch.randn(batch_size, seq_length, embed_dim)
value = torch.randn(batch_size, seq_length, embed_dim)# 計算多頭注意力輸出
output = multihead_attn(query, key, value)print(output.shape)

30.手寫FFN

import torch
import torch.nn as nn
class FeedForward(nn.Module):def __init__(self, embed_dim, ff_dim):super(FeedForward, self).__init__()self.net = nn.Sequential(nn.Linear(embed_dim, ff_dim),nn.ReLU(),nn.Linear(ff_dim, embed_dim))def forward(self, x):return self.net(x)
# 定義參數
embed_dim = 512  # 輸入和輸出的維度
ff_dim = 2048    # 中間層的維度# 創建 FeedForward 實例
ffn = FeedForward(embed_dim, ff_dim)# 創建模擬輸入數據 (batch_size, seq_length, embed_dim)
batch_size = 10
seq_length = 20
x = torch.randn(batch_size, seq_length, embed_dim)# 前向傳播
output = ffn(x)print(output.shape)

31.基礎知識,深度學習之pytorch物體檢測實戰,講的挺詳細,董洪義那本,這兩天看一下

? ? ?還有opencv的那本,都得看

32.歸一化方法:BN/LN/IN/GN/FN_instancenormalization bn-CSDN博客文章瀏覽閱讀2.3w次,點贊52次,收藏188次。本文詳細介紹了批量標準化(BN)、實例標準化(IN)、特征標準化(FN)及它們之間的區別。探討了BN如何解決內部協變量偏移問題,以及BN、IN、LN、GN各自的應用場景。 https://blog.csdn.net/mzpmzk/article/details/80043076?ops_request_misc=&request_id=&biz_id=102&utm_term=BN%E3%80%81LN%E3%80%81IN%E3%80%81GN&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-80043076.142^v102^pc_search_result_base6&spm=1018.2226.3001.4187

33.Dropout前傳和后傳的差異

? ? ?在前向傳播中,Dropout 會以概率?p?隨機丟棄一部分神經元,并將保留的神經元的輸出值縮放? ? ? ?為?1/(1?p),以保持期望值不變。

? ? ?在反向傳播中,Dropout 只對前向傳播中保留的神經元進行梯度更新,被丟棄的神經元的梯度? ? ? ? ? 為 0。

? ? ??訓練階段:在訓練時,Dropout 會隨機丟棄神經元,并對保留的神經元進行縮放。

? ? ??測試階段:在測試時,Dropout 會被關閉,所有神經元都參與計算,且不需要進行縮放。

? ? ??當 BN(Batch Normalization)和 Dropout 一起使用時,可能會出現 ?方差偏移(Variance? ? ? ? ? ? ?Shift)??的問題,導致模型性能下降,

  • Dropout 會通過保留率?p?縮放響應,改變神經元的方差。
  • BN 仍然使用訓練時累計的滑動方差,導致測試時的方差與訓練時的方差不匹配。
  • 這種 ?方差不匹配?會導致數值不穩定,隨著網絡加深,預測偏差會累積,從而降低模型性能

34.attention機制的優勢和劣勢分別在哪里?

優點:Attention 機制能夠同時捕捉全局和局部信息,避免了 RNN 對長期依賴的捕捉受序列長度限制的問題,與 RNN 不同,Attention 的每一步計算不依賴于上一步的結果,因此可以并行處理

缺點:Attention 機制本身無法直接捕捉序列中的位置信息,需要通過額外的手段(如位置編碼)來補充,處理長序列時,Attention 的計算復雜度會顯著增加,Attention 機制的效果依賴于大量數據,如果數據量不足,可能無法充分發揮其優勢

35.1*1卷積核作用

1、實現跨通道的交互和信息整合

2、進行卷積核通道數的降維和升維

36.各種IOU【深度學習實戰(49)】目標檢測損失函數:IoU、GIoU、DIoU、CIoU、EIoU、alpha IoU、SIoU、WIoU原理及Pytorch實現_深度學習wiou-CSDN博客文章瀏覽閱讀1.1k次,點贊17次,收藏24次。目標檢測損失函數:IoU、GIoU、DIoU、CIoU、EIoU、alpha IoU、SIoU、WIoU原理及Pytorch實現_深度學習wiou https://blog.csdn.net/m0_51579041/article/details/140837130?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%90%84%E7%A7%8DIOU&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-140837130.142^v102^pc_search_result_base6&spm=1018.2226.3001.4187

37.Average Precision,是單個類別平均精確度,而mAP是所有類別的平均精確度

  • mAP@0.5:在 IoU 閾值為 0.5 時計算得到的 mAP,適用于評估模型能否大致定位目標。
  • mAP@0.5:0.95:在多個 IoU 閾值(從 0.5 到 0.95,步長為 0.05)下計算得到的平均 mAP,提供了更全面和嚴格的評估標準。

38.可變形卷積,看下面這個,挺詳細

結合可變形注意力的視覺Transformer-CSDN博客文章瀏覽閱讀5.1k次,點贊4次,收藏39次。首先要理解Q,K,VQ,K,VQ,K,V:Softmax(QKT)VSoftmax(QK^{T})VSoftmax(QKT)V假設window內的patch總數為3,則有:可以想象,對于3×33\times 33×3注意力分布,即QKTQK^{T}QKT,行代表query,列代表key,QKT[i,j]QK^{T}[i,j]QKT[i,j]為patch iii (query)和patch jjj (key)的相似度。對于SwinT中的相對位置偏置信息:Softmax(QKT+B)VSoftmax(QK^{_視覺transformer https://blog.csdn.net/qq_40943760/article/details/125091334?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522203c82e1708c6a7cbd6cbf8dfaab2d8b%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=203c82e1708c6a7cbd6cbf8dfaab2d8b&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-125091334-null-null.142^v102^pc_search_result_base6&utm_term=%E5%8F%AF%E5%8F%98%E5%BD%A2%E6%B3%A8%E6%84%8F%E5%8A%9BTransformer&spm=1018.2226.3001.4187

可變形transformer,看這個

可變形注意力DAttention-CSDN博客文章瀏覽閱讀787次,點贊26次,收藏21次。論文題目:Vision Transformer with Deformable Attention現有的分層Vision Transformer,特別是PVT [36]和Swin Transformer [26],試圖解決過度關注的挑戰。前者的下采樣技術導致嚴重的信息丟失,而后者的shiftwindow注意力導致感受野的增長要慢得多,這限制了對大型物體建模的潛力。因此,需要數據相關的稀疏注意力來靈活地對相關特征進行建模,從而導致在DCN中首次提出的變形機制[9]。 https://blog.csdn.net/2301_80086153/article/details/145657007?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%8F%AF%E5%8F%98%E5%BD%A2%E6%B3%A8%E6%84%8F%E5%8A%9BTransformer&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-145657007.142^v102^pc_search_result_base6&spm=1018.2226.3001.4187

39.IOU手寫

def IoU(box1, box2):b1_x1, b1_y1, b1_x2, b1_y2 = box1b2_x1, b2_y1, b2_x2, b2_y2 = box2xx1 = np.maximum(b1_x1, b2_x1)yy1 = np.maximum(b1_y1, b2_y1)xx2 = np.minimum(b1_x2, b2_x2)yy2 = np.minimum(b1_y2, b2_y2)w = np.maximum(0.0, yy2 - yy1)h = np.maximum(0.0, xx2 - xx1)inter = w * hIoU = inter/((b1_x2-b1_x1)*(b1_y2-b1_y1) + (b2_x2-b2_x1)*(b2_y2-b2_y1) - inter)print("IoU: ", IoU)if __name__ == "__main__":box1 = np.array([100, 100, 210, 210])box2 = np.array([150, 150, 230, 220])IoU(box1, box2)

40.Transformer的相關問題(小紅書看看)

收藏!關于Transformer的20個常見面試問題,你知道多少?_transformer面試-CSDN博客文章瀏覽閱讀1k次,點贊17次,收藏22次。此前,介紹了很多關于Transformer的內容,但都非常長,今天,就用簡短的語言總結Transformer的20個常見面試問題,看看你了解多少?Transformer為何使用多頭注意力機制?(為什么不使用一個頭)使用單個注意力頭的模型在處理復雜的輸入時可能會受到限制,因為它只能關注輸入序列中的某一方面信息。而多頭注意力機制通過將輸入特征分成多個子空間,使得每個頭可以獨立學習不同的特征表示。例如,在處理句子時,一個頭可能專注于語法結構,而另一個頭則可能關注語義關系。_transformer面試 https://blog.csdn.net/m0_70486148/article/details/144715335?ops_request_misc=&request_id=&biz_id=102&utm_term=.Transformer%E7%9A%84%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-144715335.142^v102^pc_search_result_base6&spm=1018.2226.3001.4187

41.空洞卷積輸出大小

42.deeplab系列總結(感覺可以不用看,我同事做分割的沒聽過)

43.NMS手寫

import numpy as npdef nms(boxes, scores, iou_threshold=0.5):"""非極大值抑制(NMS)實現:param boxes: (N,4)格式的檢測框,格式為[x1,y1,x2,y2]:param scores: (N,)對應的置信度分數:param iou_threshold: IOU重疊閾值:return: 保留的檢測框索引"""# 1. 獲取按分數降序排列的索引order = scores.argsort()[::-1]keep = []  # 保留的結果索引while order.size > 0:# 2. 選取當前分數最高的框i = order[0]keep.append(i)# 3. 計算當前框與其他所有框的IOUxx1 = np.maximum(boxes[i, 0], boxes[order[1:], 0])yy1 = np.maximum(boxes[i, 1], boxes[order[1:], 1])xx2 = np.minimum(boxes[i, 2], boxes[order[1:], 2])yy2 = np.minimum(boxes[i, 3], boxes[order[1:], 3])w = np.maximum(0.0, xx2 - xx1)h = np.maximum(0.0, yy2 - yy1)intersection = w * harea_i = (boxes[i, 2] - boxes[i, 0]) * (boxes[i, 3] - boxes[i, 1])area_j = (boxes[order[1:], 2] - boxes[order[1:], 0]) * (boxes[order[1:], 3] - boxes[order[1:], 1])union = area_i + area_j - intersectioniou = intersection / union# 4. 保留IOU小于閾值的框索引inds = np.where(iou <= iou_threshold)[0]order = order[inds + 1]  # 因為計算時跳過了第一個元素return keep# 測試示例
if __name__ == "__main__":# 示例數據:每個框格式[x1,y1,x2,y2]boxes = np.array([[100, 100, 210, 210],[150, 150, 230, 220],[120, 80, 215, 205],[200, 200, 300, 300],[90, 90, 190, 190]])# 對應的置信度分數scores = np.array([0.95, 0.9, 0.85, 0.7, 0.6])# 應用NMSkeep = nms(boxes, scores, iou_threshold=0.5)print("保留的框索引:", keep)print("對應的框坐標:")print(boxes[keep])print("對應的分數:")print(scores[keep])

44.卷積層手寫

import numpy as npdef conv2d(inputs, kernels, bias=None, stride=1, padding=0):"""2D卷積操作:param inputs: 輸入數據 [H, W, C_in]:param kernels: 卷積核 [K, K, C_in, C_out]:param bias: 偏置 [C_out]:param stride: 步長:param padding: 填充量:return: 輸出特征圖 [H_out, W_out, C_out]"""# 添加paddingif padding > 0:inputs = np.pad(inputs, ((padding, padding), (padding, padding), (0, 0)), mode='constant')H, W, C_in = inputs.shapeK, _, C_in, C_out = kernels.shape# 計算輸出尺寸H_out = (H - K) // stride + 1W_out = (W - K) // stride + 1output = np.zeros((H_out, W_out, C_out))# 滑動窗口卷積計算for i in range(H_out):for j in range(W_out):h_start = i * strideh_end = h_start + Kw_start = j * stridew_end = w_start + K# 獲取當前窗口 [K,K,C_in]window = inputs[h_start:h_end, w_start:w_end, :]# 與所有卷積核做點積 [K,K,C_in] x [K,K,C_in,C_out] -> [C_out]for c in range(C_out):output[i,j,c] = np.sum(window * kernels[:,:,:,c])# 添加偏置if bias is not None:output += biasreturn output

45.池化層手寫

import numpy as npdef max_pool2d(inputs, pool_size=2, stride=2):"""2D最大池化:param inputs: 輸入數據 [H, W, C]:param pool_size: 池化窗口大小:param stride: 步長:return: 池化后的特征圖"""H, W, C = inputs.shape# 計算輸出尺寸H_out = (H - pool_size) // stride + 1W_out = (W - pool_size) // stride + 1output = np.zeros((H_out, W_out, C))for i in range(H_out):for j in range(W_out):h_start = i * strideh_end = h_start + pool_sizew_start = j * stridew_end = w_start + pool_size# 獲取當前窗口并沿空間維度取最大值window = inputs[h_start:h_end, w_start:w_end, :]output[i, j, :] = np.max(window, axis=(0, 1))return output

46.激活函數優缺點

深度學習中的激活函數:理解與應用-CSDN博客文章瀏覽閱讀2.9k次,點贊3次,收藏14次。激活函數對于人工神經網絡模型去學習、理解非常復雜和非線性的函數來說具有十分重要的作用。它們將非線性特性引入到我們的網絡中。_激活函數的優缺點 https://blog.csdn.net/hollyprince/article/details/125900023?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522b6bb4f8382803d82a792aafd6d9ed400%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=b6bb4f8382803d82a792aafd6d9ed400&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-125900023-null-null.142^v102^pc_search_result_base6&utm_term=%E6%BF%80%E6%B4%BB%E5%87%BD%E6%95%B0%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F%E4%BC%98%E7%BC%BA%E7%82%B9&spm=1018.2226.3001.4187

47.手寫均值濾波

import numpy as np
def mean_filter(image, kernel_size=3):pad = kernel_size // 2padded = np.pad(image, ((pad, pad), (pad, pad)), mode='constant')output = np.zeros_like(image)for x in range(image.shape[0]):for y in range(image.shape[1]):window = padded[x:x + kernel_size, y:y + kernel_size]output[x, y] = np.mean(window)return output.astype(np.uint8)

48.手寫高斯濾波

import numpy as np
def gaussian_kernel(kernel_size=3, sigma=1.0):m = (kernel_size - 1) // 2x = np.arange(-m, m + 1).reshape(kernel_size, 1)y = np.arange(-m, m + 1).reshape(1, kernel_size)kernel = np.exp(-(x ** 2 + y ** 2) / (2 * sigma ** 2))return kernel / kernel.sum()
def gaussian_filter(image, kernel_size=3, sigma=1.0):kernel = gaussian_kernel(kernel_size, sigma)pad = kernel_size // 2padded = np.pad(image, ((pad, pad), (pad, pad)), mode='reflect')output = np.zeros_like(image, dtype=np.float32)for x in range(image.shape[0]):for y in range(image.shape[1]):window = padded[x:x + kernel_size, y:y + kernel_size]output[x, y] = np.sum(window * kernel)return output.astype(np.uint8)

49.手寫中值濾波

import numpy as np
def median_filter(image, kernel_size=3):pad = kernel_size // 2padded = np.pad(image, ((pad, pad), (pad, pad)), mode='reflect')output = np.zeros_like(image)for x in range(image.shape[0]):for y in range(image.shape[1]):window = padded[x:x + kernel_size, y:y + kernel_size]output[x, y] = np.median(window)return output.astype(np.uint8)

50.ATSS網絡

https://arxiv.org/pdf/1912.02424https://arxiv.org/pdf/1912.0242451.RepVgg

https://arxiv.org/pdf/2101.03697https://arxiv.org/pdf/2101.0369752.ssd,yolo,fcos, atss等assign形式

?SSD(Anchor-Based)?

    • ?分配方式:基于固定IoU閾值(如0.5)的靜態分配。
      • 每個GT(Ground Truth)與所有預設的Anchor計算IoU,IoU大于閾值的Anchor作為正樣本。
      • 負樣本通過難例挖掘(Hard Negative Mining)篩選。

YOLO系列(Anchor-Based/Free混合)?

  • ?YOLOv1(Anchor-Free)?
    • 將圖像劃分為網格,每個網格預測2個邊界框,直接回歸中心點和寬高。
  • ?YOLOv2/v3(Anchor-Based)?
    • 引入Anchor機制,通過k-means聚類預設Anchor尺寸。
    • 正樣本分配:GT中心點所在的網格及其對應IoU最大的Anchor
  • ?YOLOv5改進
    • 動態擴展正樣本:GT中心點附近的多個網格(最多3個)的Anchor均可能被分配為正樣本,提升召回率
  • ?YOLOv7
    • 結合YOLOv5的擴展策略和YOLOX的SimOTA動態分配,通過Loss感知篩選高質量正樣本

?FCOS(Anchor-Free)?

  • ?分配方式
    • 空間約束:GT框內的所有點均為正樣本。
    • 尺度約束:通過FPN層級限制,不同尺度的GT分配到不同特征層。
    • 引入Centerness分支抑制低質量預測
  • ?特點
    • 無需Anchor,簡化設計,但對密集目標易產生歧義(同一位置可能對應多個GT)

ATSS(自適應分配)?

  • ?核心改進
    1. ?候選集生成:對每個GT,在FPN各層選擇中心距離最近的k個Anchor(默認k=9)。
    2. ?動態閾值:計算候選Anchor的IoU均值μ和標準差σ,閾值T=μ+σ。
    3. ?篩選:保留IoU >?T且中心在GT內的Anchor作為正樣本

53.VIT

Visual Transformer (ViT)模型詳解-CSDN博客文章瀏覽閱讀5.8w次,點贊141次,收藏469次。ViT是2020年Google團隊提出的將Transformer應用在圖像分類的模型,雖然不是第一篇將transformer應用在視覺任務的論文,但是因為其模型“簡單”且效果好,可擴展性強(scalable,模型越大效果越好),成為了transformer在CV領域應用的里程碑著作,也引爆了后續相關研究。_vit https://blog.csdn.net/lsb2002/article/details/135320751?ops_request_misc=%257B%2522request%255Fid%2522%253A%25222c8ec18e70e66b25595e2e7a3bdd8e8b%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=2c8ec18e70e66b25595e2e7a3bdd8e8b&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-135320751-null-null.142^v102^pc_search_result_base6&utm_term=VIT&spm=1018.2226.3001.418754.手寫Dice

import torch
import torch.nn as nnclass DiceLoss(nn.Module):def __init__(self, smooth=1e-5):super(DiceLoss, self).__init__()self.smooth = smooth  # 防止分母為0def forward(self, pred, target):# 輸入形狀: pred [N, H, W], target [N, H, W](需為浮點型)pred = pred.view(-1)  # 展平target = target.view(-1)intersection = (pred * target).sum()union = pred.sum() + target.sum()dice = (2. * intersection + self.smooth) / (union + self.smooth)return 1 - dice

55.PCA,經典的機器學習算法,包括SVM、決策樹優缺點

PCA降維技術詳解-CSDN博客文章瀏覽閱讀9.1w次,點贊154次,收藏614次。本文主要介紹一種降維方法,PCA(Principal Component Analysis,主成分分析)。降維致力于解決三類問題。1. 降維可以緩解維度災難問題;2. 降維可以在壓縮數據的同時讓信息損失最小化;3. 理解幾百個維度的數據結構很困難,兩三個維度的數據通過可視化更容易理解。。_pca降維 https://blog.csdn.net/HLBoy_happy/article/details/77146012?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522d09fbe397af38a2bce86b837d3f0a962%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=d09fbe397af38a2bce86b837d3f0a962&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-77146012-null-null.142^v102^pc_search_result_base6&utm_term=PCA&spm=1018.2226.3001.4187集成學習算法:AdaBoost原理詳解以及基于adaboost的圖像二分類代碼實現-CSDN博客文章瀏覽閱讀1.1w次,點贊61次,收藏185次。本文從機器學習小白視角出發,介紹了AdaBoost算法。先闡述集成學習和AdaBoost概念,接著說明算法流程,包括初始化權值、迭代選弱分類器、更新權值等。還給出實例,分析優缺點。最后展示Python的scikit - learn庫實現、手寫算法、圖像二分類及用樸素貝葉斯作弱分類器的代碼。 https://blog.csdn.net/Yaoyao2024/article/details/138467790?ops_request_misc=%257B%2522request%255Fid%2522%253A%252220d1982aaa17c13d98086d346b68f89f%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=20d1982aaa17c13d98086d346b68f89f&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-138467790-null-null.142^v102^pc_search_result_base6&utm_term=adaboost&spm=1018.2226.3001.4187機器學習之KNN最鄰近分類算法_knn分類-CSDN博客文章瀏覽閱讀10w+次,點贊647次,收藏4.2k次。KNN算法簡介KNN(K-Nearest Neighbor)最鄰近分類算法是數據挖掘分類(classification)技術中最簡單的算法之一,其指導思想是”近朱者赤,近墨者黑“,即由你的鄰居來推斷出你的類別。KNN最鄰近分類算法的實現原理:為了判斷未知樣本的類別,以所有已知類別的樣本作為參照,計算未知樣本與所有已知樣本的距離,從中選取與未知樣本距離最近的K個已知樣本,根據少數服從多數..._knn分類 https://blog.csdn.net/pengjunlee/article/details/82713047?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522276256550bbeedef862476fdccb65359%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=276256550bbeedef862476fdccb65359&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-82713047-null-null.142^v102^pc_search_result_base6&utm_term=KNN&spm=1018.2226.3001.4187機器學習算法系列(十八)-隨機森林算法(Random Forest Algorithm)_隨機森林算法流程圖-CSDN博客文章瀏覽閱讀10w+次,點贊567次,收藏3.2k次。機器學習算法系列(十八)-隨機森林算法(Random Forest Algorithm)_隨機森林算法流程圖 https://blog.csdn.net/sai_simon/article/details/123082619?ops_request_misc=%257B%2522request%255Fid%2522%253A%252289c8f4f66140b925cc2d299511a7edab%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=89c8f4f66140b925cc2d299511a7edab&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123082619-null-null.142^v102^pc_search_result_base6&utm_term=%E9%9A%8F%E6%9C%BA%E6%A3%AE%E6%9E%97&spm=1018.2226.3001.4187【機器學習】決策樹(理論)-CSDN博客文章瀏覽閱讀4.5w次,點贊316次,收藏1.7k次。本文詳細介紹了決策樹的構建原理,包括熵的作用、信息增益、條件熵、信息增益率和基尼系數等關鍵概念,以及在實際應用中如何選擇最優特征。此外,還討論了決策樹的預剪枝處理,如限制樹的深度、葉子結點個數和信息增益,以防止過擬合。 https://blog.csdn.net/the_ZED/article/details/129290733?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%86%B3%E7%AD%96%E6%A0%91&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-8-129290733.nonecase&spm=1018.2226.3001.418756.手推BP

57.RPN哪里也可以提升小目標檢出率,為什么resnet101不適用于目標檢測

  1. ?調整Anchor尺寸

    • 小目標需要更小的Anchor尺寸(如8×8或16×16),確保小目標能被匹配到足夠的正樣本Anchor
    • 過大的Anchor會導致小目標的IoU過低,無法被正確分類為前景。
  2. ?動態采樣與增強
  3. FPN(特征金字塔網絡)?

? ? ?下采樣導致小目標信息丟失

? ? ?計算冗余與效率問題

58.視覺注意力機制

視覺 注意力機制——通道注意力、空間注意力、自注意力-CSDN博客文章瀏覽閱讀10w+次,點贊231次,收藏1.5k次。本文深入探討了計算機視覺中注意力機制的應用,包括通道注意力、空間注意力和自注意力。通道注意力通過學習通道的重要性來突出關鍵特征;空間注意力則通過捕捉圖像中的重要區域;自注意力機制則用于獲取全局上下文信息,增強模型的理解能力。文章以SENet、STN、CBAM等模型為例,闡述了這些機制的工作原理和計算過程。 https://blog.csdn.net/qq_41204464/article/details/126881984?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522311cd8ee54c5171e460a2f666df83ce1%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=311cd8ee54c5171e460a2f666df83ce1&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-126881984-null-null.142^v102^pc_search_result_base6&utm_term=%E7%A9%BA%E9%97%B4%E6%B3%A8%E6%84%8F%E5%8A%9B%E5%92%8C%E9%80%9A%E9%81%93%E6%B3%A8%E6%84%8F%E5%8A%9B&spm=1018.2226.3001.4187SE、CBAM、ECA注意力機制(網絡結構詳解+詳細注釋代碼+核心思想講解+注意力機制優化神經網絡方法)——pytorch實現_se注意力機制-CSDN博客文章瀏覽閱讀4.9w次,點贊143次,收藏764次。這期博客我們來學習一下神秘已久的注意力機制,剛開始接觸注意力機制的時候,感覺很有意思,事實上學會之后會發現比想象中的要簡單,復雜的注意力機制后續會講解,這期博客先講解最常見的三種SE、CBAM、ECA注意力機制。_se注意力機制 https://blog.csdn.net/qq_43215597/article/details/130634953?ops_request_misc=%257B%2522request%255Fid%2522%253A%25225384afef3761d46941580f7b0b7d268d%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=5384afef3761d46941580f7b0b7d268d&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-130634953-null-null.142^v102^pc_search_result_base6&utm_term=CBAM&spm=1018.2226.3001.418759.DetNet詳解(很詳細!!!一看就懂系列!!!!!!)-CSDN博客文章瀏覽閱讀7.6k次,點贊4次,收藏26次。DetNet詳解DetNet由曠視科技發表在ECCV2018的論文,出發點為現有的檢測任務的backbone網絡都是由分類任務衍生而來,因此作者想針對檢測專用的backbone網絡做一些討論和研究而設計的DetNet。1.很多backbone網絡在ImageNet大賽上做分類表現不錯,才被人當作檢測的主干特征提取網絡(backbone),鮮有單獨針對檢測任務提出的backbone。檢測和分類有明顯的區別:(1)不僅需要分類,還需要精確的定位。(2)檢測器都是類似FPN結構,在分類網絡基礎上額外多尺度特_detnet https://blog.csdn.net/weixin_45074568/article/details/114596493?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522553790e26944b3933db3aa4f461cad8e%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=553790e26944b3933db3aa4f461cad8e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-5-114596493-null-null.142^v102^pc_search_result_base6&utm_term=Detnet&spm=1018.2226.3001.4187

60.DETR

61.激活函數補充

常用的激活函數合集(詳細版)-CSDN博客文章瀏覽閱讀4.9w次,點贊286次,收藏2k次。從激活函數的公式及導函數、圖像、優缺點或特點來描述了激活函數,以及總結了激活函數之間的優勢,并且提供了pytorch的代碼案例,以便于大家快速上手。_激活函數 https://blog.csdn.net/caip12999203000/article/details/127067360?spm=1001.2014.3001.550662.貝葉斯估計與最大似然估計的區別

最大似然估計
認為參數θ是固定但未知的常數,通過最大化似然函數L(θ∣D)尋找最優參數值,輸出單一最優參數值θMLE?,直接用于預測P(Xnew?∣θMLE?)

?貝葉斯估計
將參數θ視為隨機變量,并假設其服從某個先驗分布P(θ)。通過貝葉斯定理計算后驗分布,輸出參數的后驗分布P(θ∣D),預測時對所有可能的θ加權平均

63.F1分數(F1-Score)的貝塔值

  • β>1:更重視召回率(如醫療診斷,避免漏診)。
  • β<1:更重視精確率(如垃圾郵件過濾,減少誤判)。

64.SIFT

全網最詳細SIFT算法原理實現-CSDN博客文章瀏覽閱讀5.4w次,點贊250次,收藏1.3k次。本文深入探討SIFT(尺度不變特征轉換)算法,包括其原理、步驟和實際應用。SIFT算法由David G. Lowe提出,用于圖像處理和計算機視覺中的特征匹配,具有尺度、旋轉、亮度不變性。主要流程包括圖像金字塔構建、關鍵點檢測與定位、方向分配、描述子生成和關鍵點匹配。SIFT算法在全景拍攝等場景中發揮重要作用,其穩定性和高效性使其成為經典特征檢測方法。 https://blog.csdn.net/weixin_48167570/article/details/123704075?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522901f89d53ff0794cad3848a767c14c34%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=901f89d53ff0794cad3848a767c14c34&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123704075-null-null.142^v102^pc_search_result_base8&utm_term=SIFT&spm=1018.2226.3001.4187

65.手寫交叉自注意力

import torch
import torch.nn as nn
import torch.nn.functional as Fclass CrossAttention(nn.Module):def __init__(self, dim_q, dim_kv, dim_out=None, num_heads=1):super().__init__()dim_out = dim_out or dim_qself.num_heads = num_headsself.scale = (dim_q // num_heads) ?** -0.5# 投影層self.to_q = nn.Linear(dim_q, dim_q, bias=False)self.to_k = nn.Linear(dim_kv, dim_q, bias=False)self.to_v = nn.Linear(dim_kv, dim_out, bias=False)def forward(self, x_A, x_B):"""x_A: (batch_size, len_A, dim_q)   → 生成Qx_B: (batch_size, len_B, dim_kv)  → 生成K, V"""batch_size, len_A, len_B = x_A.shape[0], x_A.shape[1], x_B.shape[1]# 1. 投影到Q, K, VQ = self.to_q(x_A)  # (batch, len_A, dim_q)K = self.to_k(x_B)  # (batch, len_B, dim_q)V = self.to_v(x_B)  # (batch, len_B, dim_out)# 2. 多頭拆分(可選)if self.num_heads > 1:dim_head_q = dim_q // self.num_headsdim_head_out = dim_out // self.num_headsQ = Q.view(batch_size, len_A, self.num_heads, dim_head_q).transpose(1, 2)K = K.view(batch_size, len_B, self.num_heads, dim_head_q).transpose(1, 2)V = V.view(batch_size, len_B, self.num_heads, dim_head_out).transpose(1, 2)# 3. 計算注意力分數scores = torch.matmul(Q, K.transpose(-2, -1)) * self.scale  # (batch, num_heads, len_A, len_B)attn_weights = F.softmax(scores, dim=-1)# 4. 加權求和output = torch.matmul(attn_weights, V)  # (batch, num_heads, len_A, dim_head_out)# 5. 合并多頭(如果有多頭)if self.num_heads > 1:output = output.transpose(1, 2).contiguous()output = output.view(batch_size, len_A, -1)  # (batch, len_A, dim_out)return output# 測試
dim_q, dim_kv = 64, 128
model = CrossAttention(dim_q, dim_kv)
x_A = torch.randn(2, 10, dim_q)  # 序列A
x_B = torch.randn(2, 20, dim_kv) # 序列B
output = model(x_A, x_B)
print(output.shape)  # torch.Size([2, 10, 64])

66.ReLU函數在0處不可導,為什么還能用?
反饋神經網絡正常工作需要的條件就是每一個點提供一個方向,即導數;0值不可微,本質上來說是因為這個地方可畫多條切線,但我們需要的只是一條;由于這出現的0值的概率極低,任意選擇一個子梯度就OK了,在0處的次微分集合是【0,1】;即選擇其中一個就OK了;一般默認是0

67.為什么max pooling 要更常用?什么場景下 average pooling 比 max pooling 更合適?
作用:對輸入的特征圖進行壓縮,一方面使特征圖變小,簡化網絡計算復雜度;一方面進行特征壓縮,提取主要特征。
通常來講,max-pooling的效果更好,雖然max-pooling和average-pooling都對數據做了下采樣,但是max-pooling感覺更像是做了特征選擇,選出了分類辨識度更好的特征,提供了非線性。 pooling的主要作用一方面是去掉冗余信息,一方面要保留feature map的特征信息,在分類問題中,我們需要知道的是這張圖像有什么object,而不大關心這個object位置在哪,在這種情況下顯然max pooling比average pooling更合適。在網絡比較深的地方,特征已經稀疏了,從一塊區域里選出最大的,比起這片區域的平均值來,更能把稀疏的特征傳遞下去。
average-pooling更強調對整體特征信息進行一層下采樣,在減少參數維度的貢獻上更大一點,更多的體現在信息的完整傳遞這個維度上,在一個很大很有代表性的模型中,比如說- DenseNet中的模塊之間的連接大多采用average-pooling,在減少維度的同時,更有利信息傳遞到下一個模塊進行特征提取。
average-pooling在全局平均池化操作中應用也比較廣,在ResNet和Inception結構中最后一層都使用了平均池化。有的時候在模型接近分類器的末端使用全局平均池化還可以代替Flatten操作,使輸入數據變成一維向量

68.為什么在模型訓練開始會有warm up?
warm up, 在剛剛開始訓練時以很小的學習率進行訓練,使得網絡熟悉數據,隨著訓練的進行學習率慢慢變大,到了一定程度,以設置的初始學習率進行訓練,接著過了一些inter后,學習率再慢慢變小;學習率變化:上升——平穩——下降。

有助于減緩模型在初始階段對mini-batch的提前過擬合現象,保持分布的平穩;
有助于保持模型深層的穩定性

69.yolo5,6,8,9.10.11.12(這四個我覺得面試壓根不會問,這才隔多久,12都出來了)

這些書上沒看到額外補充,書推薦楊建華的yolo目標檢測

YOLOv5網絡模型的結構原理講解(全)_yolov5網絡結構詳解-CSDN博客文章瀏覽閱讀7.9w次,點贊215次,收藏1.5k次。YOLOv5有幾種不同的架構,各網絡模型算法性能分別如下:YOLOv5是一種目標檢測算法,其模型結構主要包括以下組成部分:輸入端:YOLOv5的Head網絡由3個不同的輸出層組成,分別負責檢測大中小尺度的目標。Backbone網絡:YOLOv5使用CSPDarknet53作為其主干網絡,其具有較強的特征提取能力和計算效率。Neck網絡:YOLOv5使用的是FPN(FPN網絡能夠在不同的特征圖層次上進行檢測,可以提高目標檢測的性能)網絡,可以融合來自不同特征圖層次的信息。輸出端:損失函數,YOLOv5使用的_yolov5網絡結構詳解 https://blog.csdn.net/weixin_47872288/article/details/130368368?ops_request_misc=%257B%2522request%255Fid%2522%253A%252216382d7cb3ca340726fe306a4160e7f3%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=16382d7cb3ca340726fe306a4160e7f3&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-5-130368368-null-null.142^v102^pc_search_result_base8&utm_term=Yolov5&spm=1018.2226.3001.4187yolov6算法及其改進-CSDN博客文章瀏覽閱讀1.3k次,點贊23次,收藏23次。網絡架構設計:對于Backbone和Neck,延續了YOLOv4和YOLOv5的PAN架構思想并使用了重參思想進行了改進;關于Head部分,作者Decoupled Head進行了簡化并將其命名為Efficient Decouple Head;標簽匹配:對TaskAlign、SimOTA、ObjectBox以及ATSS等進行了評估,最終確認TaskAlign更為有效且訓練友好;損失函數:損失函數一般包含cls loss、box-regression loss以及object loss。_yolov6 https://blog.csdn.net/m0_38113054/article/details/144781934?ops_request_misc=&request_id=&biz_id=102&utm_term=Yolov6&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-144781934.142^v102^pc_search_result_base8&spm=1018.2226.3001.4187

目標檢測算法——YOLOV8——算法詳解-CSDN博客文章瀏覽閱讀8.2w次,點贊259次,收藏1.4k次。本文梳理Yolo v8 的改進點,并針對一些較難理解的點進行重點闡述,主要有如下幾方面:backbone 使用C2f模塊,檢測頭使用了anchor-free + Decoupled-head,損失函數使用了分類BCE、回歸CIOU + VFL(新增項目)的組合,框匹配策略由靜態匹配改為了Task-Aligned Assigner匹配方式、最后 10 個 epoch 關閉 Mosaic 的操作、訓練總 epoch 數從 300 提升到了 500。_yolov8 https://blog.csdn.net/u012863603/article/details/128816715?ops_request_misc=&request_id=&biz_id=102&utm_term=Yolov8&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-128816715.142^v102^pc_search_result_base8&spm=1018.2226.3001.4187

70.C++八股完全沒準備,看人要不要為難我吧

71.smooth L1損失函數

smooth L1完美的避開了L1和L2損失的缺點:

在[-1,1]之間就是L2損失,解決L1在0處有折點
在[-1, 1]區間以外就是L1損失,解決離群點梯度爆炸問題
當預測值與真實值誤差過大時,梯度值不至于過大
當預測值與真實值誤差很小時,梯度值足夠小

72.訓練過程中類別不平衡怎么辦?怎么解決的?

1. 從采樣的策略上: 通過采樣方法將不平衡的數據集變為平衡的數據集,優點是簡單方便。具體分為過采樣和欠采樣。
過采樣 :將小份的樣本復制多份。
這樣可能會造成訓練出的模型有一定過擬合。

欠采樣:將大份的樣本中篩選一部分作為數據集,等于丟棄部分訓練集的數據,也可能會造成過擬合。
可以采用3個方法減少欠采樣帶來的損失。
1.1 EasyEnsemble :利用模型融合的方法,多次欠采樣產生多個數據集,從而訓練多個模型,綜合多個模型的結果作為最終的結果
1.2 BalanceCascade: 利用增量訓練的思想,先利用欠采樣產生的訓練集訓練一個分類器,然后對分類正確的樣本從總訓練集中篩除,再次在剩余的數據集利用欠采樣訓練第二個分類器,最終結合所有的分類器結果作為最終結果。
1.3 NearMiss:利用KNN試圖挑選那些最具代表性的大眾樣本。

2. 圖像增強:通過某種手段,利用已有的樣本人工合成少數類樣本,從而達到類別平衡的目的。

常規的圖像增強方法有: 縮放,旋轉,翻轉,偏移等。
還有根據場景化定制的一些圖像增強方法:增加噪聲,濾波操作(模糊),調節亮度/對比度

3. 加權操作:通過加權的方式解決數據不平衡的問題,在設計損失函數時,為少數類樣本賦予更大的權值,為多數類樣本賦予更小的權值。
例如: focal loss

4. 調整輸出閾值:當類別不平衡時,采用默認的分類閾值可能會導致輸出全部為反例,產生虛高的準確度,導致分類失敗。因此,可以選擇調整閾值,使得模型對于較少的類別更為敏感。

73.手寫一維卷積

import numpy as np
def conv1d_manual(input_signal, kernel, stride=1, padding=0):batch_size, in_channels, input_length = input_signal.shapeout_channels, _, kernel_size = kernel.shape# 計算輸出長度output_length = ((input_length + 2 * padding - kernel_size) // stride) + 1# 添加paddingif padding > 0:padded_input = np.zeros((batch_size, in_channels, input_length + 2 * padding))padded_input[:, :, padding:-padding] = input_signalelse:padded_input = input_signal# 初始化輸出output = np.zeros((batch_size, out_channels, output_length))# 執行卷積運算for b in range(batch_size):for oc in range(out_channels):for i in range(0, output_length):start = i * strideend = start + kernel_size# 提取當前窗口window = padded_input[b, :, start:end]# 計算點積output[b, oc, i] = np.sum(window * kernel[oc, :, :])return output

74.周一跟老板提離職

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

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

相關文章

基于大語言模型的智能音樂創作系統——從推薦到生成

一、引言&#xff1a;當AI成為音樂創作伙伴 2023年&#xff0c;一款由大語言模型&#xff08;LLM&#xff09;生成的鋼琴曲《量子交響曲》在Spotify沖上熱搜&#xff0c;引發音樂界震動。傳統音樂創作需要數年專業訓練&#xff0c;而現代AI技術正在打破這一壁壘。本文提出一種…

Mysql---鎖篇

1&#xff1a;MySQL 有哪些鎖&#xff1f; 全局鎖 flush tables with read lock 整個數據庫就處于只讀狀態了 unlock tables 釋放全局鎖 全局鎖主要應用于做全庫邏輯備份&#xff0c;這樣在備份數據庫期間&#xff0c;不會因為數據或表結構的更新&#xff0c;而出現備份文件的數…

VLAN綜合實驗二

一.實驗拓撲&#xff1a; 二.實驗需求&#xff1a; 1.內網Ip地址使用172.16.0.0/分配 2.sw1和SW2之間互為備份 3.VRRP/STP/VLAN/Eth-trunk均使用 4.所有Pc均通過DHCP獲取IP地址 5.ISP只能配置IP地址 6.所有…

GEO(生成引擎優化)實施策略全解析:從用戶意圖到效果追蹤

——基于行業實證的AI信源占位方法論 ?一、理解用戶查詢&#xff1a;構建AI語料的核心起點 生成式AI的內容推薦邏輯以用戶意圖為核心&#xff0c;?精準捕捉高頻問題是GEO優化的第一步。企業需通過以下方法挖掘用戶真實需求&#xff1a; ?AI對話日志分析&#xff1a; 分析用…

HTML基礎及進階

目錄 一、HTML基礎 1.什么是HTML 2.常用標簽 &#xff08;1&#xff09;標題標簽&#xff1a;h1-h6數字越小文字會越大&#xff0c;這個標簽會占一整行 &#xff08;2&#xff09;加粗標簽&#xff1a; &#xff08;3&#xff09;換行標簽&#xff1a; &#xff08;4&am…

MSTP與鏈路聚合技術

MSTP&#xff08;多生成樹協議&#xff09; 簡介 MSTP&#xff08;多生成樹協議&#xff09;是Spanning Tree Protocol&#xff08;STP&#xff09;的改進版&#xff0c;支持網絡中使用多條生成樹&#xff0c;并根據用戶需求限制生成樹間的路徑。MSTP將多個VLAN映射到一棵生成…

ModuleNotFoundError: No module named ‘ml_logger.logbook‘

問題 (legion) zhouy24RL-DSlab:~/zhouy24Files/legion/LEGION$ python main.py ML_LOGGER_USER is not set. This is required for online usage. Traceback (most recent call last): File “main.py”, line 7, in from mtrl.app.run import run File “/data/zhouy24File…

c# ftp上傳下載 幫助類

工作中FTP的上傳和下載還是很常用的。如下載打標數據,上傳打標結果等。 這個類常用方法都有了:上傳,下載,判斷文件夾是否存在,創建文件夾,獲取當前目錄下文件列表(不包括文件夾) ,獲取當前目錄下文件列表(不包括文件夾) ,獲取FTP文件列表(包括文件夾), 獲取當前目…

PyTorch 分布式訓練(Distributed Data Parallel, DDP)簡介

PyTorch 分布式訓練&#xff08;Distributed Data Parallel, DDP&#xff09; 一、DDP 核心概念 torch.nn.parallel.DistributedDataParallel 1. DDP 是什么&#xff1f; Distributed Data Parallel (DDP) 是 PyTorch 提供的分布式訓練接口&#xff0c;DistributedDataPara…

策略模式_行為型_GOF23

策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;核心思想是將一組算法封裝成獨立對象&#xff0c;使它們可以相互替換&#xff0c;從而讓算法的變化獨立于使用它的客戶端。這類似于游戲中的技能切換——玩家根據戰況選擇不同技能…

【Python】天氣數據可視化

1. Python進行數據可視化 在數據分析和科學計算領域&#xff0c;Python憑借其強大的庫和簡潔的語法&#xff0c;成為了眾多開發者和科研人員的首選工具。數據可視化作為數據分析的重要環節&#xff0c;能夠幫助我們更直觀地理解數據背后的規律和趨勢。本文將詳細介紹如何使用P…

深度學習4.4筆記

《動手學深度學習》-4.4-筆記 驗證數據集&#xff1a;通常是從訓練集中劃分出來的一部分數據&#xff0c;不要和訓練數據混在一起&#xff0c;評估模型好壞的數據集 測試數據集&#xff1a;只用一次的數據集 k-折交叉驗證&#xff08;k-Fold Cross-Validation&#xff09;是…

vue 兩種路由模式

一、兩種模式比較 在vue.js中&#xff0c;路由模式分為兩種&#xff1a;hash 模式和 history 模式。這兩種模式決定了URL的結構和瀏覽器歷史記錄的管理方式。 1. hash 模式帶 #&#xff0c;#后面的地址變化不會引起頁面的刷新。換句話說&#xff0c;hash模式不會將#后面的地址…

Android生態大變革,谷歌調整開源政策,核心開發不再公開

“開源”這個詞曾經是Android的護城河&#xff0c;如今卻成了谷歌的燙手山芋。最近谷歌宣布調整Android的開源政策&#xff0c;核心開發將全面轉向私有分支。翻譯成人話就是&#xff1a;以后Android的核心更新&#xff0c;不再公開共享了。 這操作不就是開源變節嗎&#xff0c;…

JavaScript中集合常用操作方法詳解

JavaScript中集合常用操作方法詳解 JavaScript中的集合主要包括數組(Array)、集合(Set)和映射(Map)。下面我將詳細介紹這些集合類型的常用操作方法。 數組(Array) 數組是JavaScript中最常用的集合類型&#xff0c;提供了豐富的操作方法。 創建數組 // 字面量創建 const ar…

【HC-05】藍牙串口通信模塊調試與應用(1)

一、HC-05 基礎學習視頻 HC-05藍牙串口通信模塊調試與應用1 二、HC-05學習視頻課件

【學Rust寫CAD】18 定點數2D仿射變換矩陣結構體(MatrixFixedPoint結構別名)

源碼 // matrix/fixed.rs use crate::fixed::Fixed; use super::generic::Matrix;/// 定點數矩陣類型別名 pub type MatrixFixedPoint Matrix<Fixed, Fixed, Fixed, Fixed, Fixed, Fixed>;代碼解析 這段代碼定義了一個定點數矩陣的類型別名 MatrixFixedPoint&#xff…

axios文件下載使用后端傳遞的名稱

java后端通過HttpServletResponse 返回文件流 在Content-Disposition中插入文件名 一定要設置Access-Control-Expose-Headers&#xff0c;代表跨域該Content-Disposition返回Header可讀&#xff0c;如果沒有&#xff0c;前端是取不到Content-Disposition的&#xff0c;可以在統…

HarmonyOS之深入解析如何根據url下載pdf文件并且在本地顯示和預覽

一、文件下載 ① 網絡請求配置 下載在線文件&#xff0c;需要訪問網絡&#xff0c;因此需要在 config.json 中添加網絡權限&#xff1a; {"module": {"requestPermissions": [{"name": "ohos.permission.INTERNET","reason&qu…

鴻蒙前后端項目源碼-點餐v3.0-原創!原創!原創!

鴻蒙前后端點餐項目源碼含文檔ArkTS語言. 原創作品.我半個月寫的原創作品&#xff0c;請尊重原創。 原創作品&#xff0c;盜版必究&#xff01;&#xff01;&#xff01;&#xff01; 原創作品&#xff0c;盜版必究&#xff01;&#xff01;&#xff01;&#xff01; 原創作…