DeepSORT(目标跟踪算法)中的马氏距离详解(很详细)

DeepSORT(目标跟踪算法)中的马氏距离详解(很详细)

flyfish

马氏距离的公式是由印度统计学家【普拉萨纳·钱德拉·马哈拉诺比斯(Prasanta Chandra Mahalanobis)】)(好长的名字,抄的)在1936年提出的。马氏距离是一种多维尺度上的距离度量,它考虑了各个维度之间的相关性,并且通过协方差矩阵对数据进行缩放,使得在计算不同数据点之间的距离时,可以考虑到各个维度的不同特性。可以直接拖到最后的一张图,看下马氏距离与欧式距离相比有什么优势

介绍

假设我们有两个点 x x x y y y ,并且我们有这些点的协方差矩阵 S S S。马氏距离的公式为:

D M ( x , y ) = ( x − y ) T S − 1 ( x − y ) D_M(x, y) = \sqrt{(x - y)^T S^{-1} (x - y)} DM(x,y)=(xy)TS1(xy)

下面是一个具体的例子:

假设点 x = [ 2 , 3 ] x = [2, 3] x=[2,3],点 y = [ 6 , 8 ] y = [6, 8] y=[6,8],协方差矩阵 S = [ 4 2 2 3 ] S = \begin{bmatrix} 4 & 2 \\ 2 & 3 \end{bmatrix} S=[4223]

代码计算

  1. 计算 x − y x - y xy
  2. 计算协方差矩阵的逆矩阵 S − 1 S^{-1} S1
  3. 计算 ( x − y ) T S − 1 ( x − y ) (x - y)^T S^{-1} (x - y) (xy)TS1(xy)
  4. 最后取平方根得到马氏距离
    让我们用Python代码验证这个计算过程。

代码

import numpy as np# 定义点 x 和 y
x = np.array([2, 3])
y = np.array([6, 8])# 定义协方差矩阵 S
S = np.array([[4, 2],[2, 3]])# 计算 x - y
delta = x - y# 计算协方差矩阵的逆矩阵 S^{-1}
S_inv = np.linalg.inv(S)# 计算马氏距离
mahalanobis_distance = np.sqrt(np.dot(np.dot(delta.T, S_inv), delta))print(mahalanobis_distance)

我们来执行这个代码,看看结果。

2.9154759474226504

计算结果显示,点 x x x y y y 之间的马氏距离为 2.915。

手工计算马氏距离

  1. 计算 x − y x - y xy
  2. 计算协方差矩阵的逆矩阵 S − 1 S^{-1} S1
  3. 计算 ( x − y ) T S − 1 ( x − y ) (x - y)^T S^{-1} (x - y) (xy)TS1(xy)
  4. 最后取平方根得到马氏距离
    给定点 x = [ 2 , 3 ] x = [2, 3] x=[2,3] y = [ 6 , 8 ] y = [6, 8] y=[6,8],以及协方差矩阵 S = [ 4 2 2 3 ] S = \begin{bmatrix} 4 & 2 \\ 2 & 3 \end{bmatrix} S=[4223]
步骤 1: 计算 x − y x - y xy

δ = x − y = [ 2 , 3 ] − [ 6 , 8 ] = [ − 4 , − 5 ] \delta = x - y = [2, 3] - [6, 8] = [-4, -5] δ=xy=[2,3][6,8]=[4,5]

步骤 2: 计算协方差矩阵的逆矩阵 S − 1 S^{-1} S1

计算 S S S 的行列式:
det ⁡ ( S ) = 4 ⋅ 3 − 2 ⋅ 2 = 12 − 4 = 8 \det(S) = 4 \cdot 3 - 2 \cdot 2 = 12 - 4 = 8 det(S)=4322=124=8

计算伴随矩阵:
adj ( S ) = [ 3 − 2 − 2 4 ] \text{adj}(S) = \begin{bmatrix} 3 & -2 \\ -2 & 4 \end{bmatrix} adj(S)=[3224]

计算逆矩阵:
S − 1 = 1 8 ⋅ adj ( S ) = 1 8 ⋅ [ 3 − 2 − 2 4 ] = [ 0.375 − 0.25 − 0.25 0.5 ] S^{-1} = \frac{1}{8} \cdot \text{adj}(S) = \frac{1}{8} \cdot \begin{bmatrix} 3 & -2 \\ -2 & 4 \end{bmatrix} = \begin{bmatrix} 0.375 & -0.25 \\ -0.25 & 0.5 \end{bmatrix} S1=81adj(S)=81[3224]=[0.3750.250.250.5]

步骤 3: 计算 ( x − y ) T S − 1 ( x − y ) (x - y)^T S^{-1} (x - y) (xy)TS1(xy)

我们分步计算:

  1. 计算 S − 1 ⋅ δ T S^{-1} \cdot \delta^T S1δT
    S − 1 ⋅ δ T = [ 0.375 − 0.25 − 0.25 0.5 ] ⋅ [ − 4 , − 5 ] T S^{-1} \cdot \delta^T = \begin{bmatrix} 0.375 & -0.25 \\ -0.25 & 0.5 \end{bmatrix} \cdot [-4, -5]^T S1δT=[0.3750.250.250.5][4,5]T
    我们先计算每个元素:
    0.375 ⋅ ( − 4 ) + ( − 0.25 ) ⋅ ( − 5 ) = − 1.5 + 1.25 = − 0.25 − 0.25 ⋅ ( − 4 ) + 0.5 ⋅ ( − 5 ) = 1 − 2.5 = − 1.5 \begin{align*} 0.375 \cdot (-4) + (-0.25) \cdot (-5) &= -1.5 + 1.25 = -0.25 \\ -0.25 \cdot (-4) + 0.5 \cdot (-5) &= 1 - 2.5 = -1.5 \\ \end{align*} 0.375(4)+(0.25)(5)0.25(4)+0.5(5)=1.5+1.25=0.25=12.5=1.5
    所以:
    S − 1 ⋅ δ T = [ − 0.25 , − 1.5 ] S^{-1} \cdot \delta^T = [-0.25, -1.5] S1δT=[0.25,1.5]

  2. 计算 δ ⋅ [ − 0.25 , − 1.5 ] T \delta \cdot [-0.25, -1.5]^T δ[0.25,1.5]T
    δ ⋅ [ − 0.25 , − 1.5 ] T = [ − 4 , − 5 ] ⋅ [ − 0.25 , − 1.5 ] T = ( − 4 ⋅ − 0.25 ) + ( − 5 ⋅ − 1.5 ) = 1 + 7.5 = 8.5 \delta \cdot [-0.25, -1.5]^T = [-4, -5] \cdot [-0.25, -1.5]^T = (-4 \cdot -0.25) + (-5 \cdot -1.5) = 1 + 7.5 = 8.5 δ[0.25,1.5]T=[4,5][0.25,1.5]T=(40.25)+(51.5)=1+7.5=8.5

步骤 4: 取平方根

8.5 ≈ 2.915 \sqrt{8.5} \approx 2.915 8.5 2.915

马氏距离的绘图

绘制两个点之间的欧氏距离和马氏距离来进行比较。假设我们使用之前定义的点 x = [ 2 , 3 ] x = [2, 3] x=[2,3] y = [ 6 , 8 ] y = [6, 8] y=[6,8],以及协方差矩阵 S S S

我们可以进行以下步骤:

  1. 计算欧氏距离。
  2. 计算马氏距离。
  3. 绘制这两个点在平面上的位置。
  4. 绘制欧氏距离和马氏距离的线段。
    以下是完整的Python代码来实现这些步骤,并进行绘图。
import numpy as np
import matplotlib.pyplot as plt# 定义点 x 和 y
x = np.array([2, 3])
y = np.array([6, 8])# 定义协方差矩阵 S
S = np.array([[4, 2],[2, 3]])# 计算欧氏距离
euclidean_distance = np.linalg.norm(x - y)# 计算马氏距离
delta = x - y
S_inv = np.linalg.inv(S)
mahalanobis_distance = np.sqrt(np.dot(np.dot(delta.T, S_inv), delta))# 绘图
plt.figure(figsize=(8, 8))
plt.scatter(*x, color='blue', label='Point x')
plt.scatter(*y, color='red', label='Point y')# 绘制欧氏距离
plt.plot([x[0], y[0]], [x[1], y[1]], 'k--', label=f'Euclidean Distance = {euclidean_distance:.2f}')# 为了绘制马氏距离的等高线,我们可以绘制马氏距离的椭圆
from matplotlib.patches import Ellipse# 计算椭圆的参数
eigvals, eigvecs = np.linalg.eigh(S)
angle = np.degrees(np.arctan2(*eigvecs[:,0][::-1]))width, height = 2 * np.sqrt(eigvals)ellipse = Ellipse(xy=x, width=width, height=height, angle=angle, edgecolor='purple', fc='None', lw=2, label=f'Mahalanobis Distance = {mahalanobis_distance:.2f}')
plt.gca().add_patch(ellipse)plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.title('Comparison of Euclidean and Mahalanobis Distances')
plt.grid(True)
plt.axis('equal')
plt.show()

在这里插入图片描述
欧氏距离和马氏距离的比较:

  • 蓝点代表点 x x x
  • 红点代表点 y y y
  • 虚线表示两点之间的欧氏距离,长度为 6.40。
  • 紫色椭圆表示马氏距离等高线,马氏距离为 2.92。

图中的椭圆反映了协方差矩阵 S S S 的影响,显示了在不同方向上的不同尺度,这使得马氏距离能更准确地反映点与点之间的关系。欧氏距离忽略了数据的相关性和尺度,而马氏距离考虑了这些因素,使其在一些应用场景中更有用。

协方差

import numpy as np# 定义数据样本
data = np.array([[2, 3],[6, 8],[3, 5]
])# 计算均值向量
mean_vector = np.mean(data, axis=0)# 计算协方差矩阵
cov_matrix = np.cov(data, rowvar=False)print(mean_vector, cov_matrix)
[3.66666667 5.33333333] [[4.33333333 5.16666667][5.16666667 6.33333333]]

手工计算详细步骤

给定数据样本:

样本1 = [ 2 , 3 ] \text{样本1} = [2, 3] 样本1=[2,3]
样本2 = [ 6 , 8 ] \text{样本2} = [6, 8] 样本2=[6,8]
样本3 = [ 3 , 5 ] \text{样本3} = [3, 5] 样本3=[3,5]

计算均值向量:

S i j = 1 n − 1 ∑ k = 1 n ( x k i − μ i ) ( x k j − μ j ) S_{ij} = \frac{1}{n-1} \sum_{k=1}^{n} (x_{ki} - \mu_i)(x_{kj} - \mu_j) Sij=n11k=1n(xkiμi)(xkjμj)
μ = [ 2 + 6 + 3 3 , 3 + 8 + 5 3 ] = [ 3.67 , 5.33 ] \mu = \left[ \frac{2+6+3}{3}, \frac{3+8+5}{3} \right] = [3.67, 5.33] μ=[32+6+3,33+8+5]=[3.67,5.33]

计算协方差矩阵
  1. 计算 S 11 S_{11} S11

S 11 = 1 n − 1 ∑ k = 1 n ( x k 1 − μ 1 ) 2 S_{11} = \frac{1}{n-1} \sum_{k=1}^{n} (x_{k1} - \mu_1)^2 S11=n11k=1n(xk1μ1)2S11

S 11 = 1 2 [ ( 2 − 3.67 ) 2 + ( 6 − 3.67 ) 2 + ( 3 − 3.67 ) 2 ] = 1 2 [ ( − 1.67 ) 2 + ( 2.33 ) 2 + ( − 0.67 ) 2 ] = 1 2 [ 2.79 + 5.43 + 0.45 ] = 8.67 2 = 4.33 \begin{aligned}S_{11} &= \frac{1}{2} \left[ (2 - 3.67)^2 + (6 - 3.67)^2 + (3 - 3.67)^2 \right] \\ &= \frac{1}{2} \left[ (-1.67)^2 + (2.33)^2 + (-0.67)^2 \right] \\ &= \frac{1}{2} \left[ 2.79 + 5.43 + 0.45 \right] \\ &= \frac{8.67}{2} = 4.33 \\ \end{aligned} S11=21[(23.67)2+(63.67)2+(33.67)2]=21[(1.67)2+(2.33)2+(0.67)2]=21[2.79+5.43+0.45]=28.67=4.33

  1. 计算 S 12 S_{12} S12

S 12 = 1 n − 1 ∑ k = 1 n ( x k 1 − μ 1 ) ( x k 2 − μ 2 ) S_{12} = \frac{1}{n-1} \sum_{k=1}^{n} (x_{k1} - \mu_1)(x_{k2} - \mu_2) S12=n11k=1n(xk1μ1)(xk2μ2)
S 12 = 1 2 [ ( 2 − 3.67 ) ( 3 − 5.33 ) + ( 6 − 3.67 ) ( 8 − 5.33 ) + ( 3 − 3.67 ) ( 5 − 5.33 ) ] = 1 2 [ ( − 1.67 ) ( − 2.33 ) + ( 2.33 ) ( 2.67 ) + ( − 0.67 ) ( − 0.33 ) ] = 1 2 [ 3.89 + 6.22 + 0.22 ] = 10.33 2 = 5.17 \begin{aligned} S_{12} &= \frac{1}{2} \left[ (2 - 3.67)(3 - 5.33) + (6 - 3.67)(8 - 5.33) + (3 - 3.67)(5 - 5.33) \right] \\ &= \frac{1}{2} \left[ (-1.67)(-2.33) + (2.33)(2.67) + (-0.67)(-0.33) \right] \\ &= \frac{1}{2} \left[ 3.89 + 6.22 + 0.22 \right] \\ &= \frac{10.33}{2} = 5.17 \\ \end{aligned} S12=21[(23.67)(35.33)+(63.67)(85.33)+(33.67)(55.33)]=21[(1.67)(2.33)+(2.33)(2.67)+(0.67)(0.33)]=21[3.89+6.22+0.22]=210.33=5.17
4. 计算 S 22 S_{22} S22
S 22 = 1 n − 1 ∑ k = 1 n ( x k 2 − μ 2 ) 2 S_{22} = \frac{1}{n-1} \sum_{k=1}^{n} (x_{k2} - \mu_2)^2 S22=n11k=1n(xk2μ2)2
S 22 = 1 2 [ ( 3 − 5.33 ) 2 + ( 8 − 5.33 ) 2 + ( 5 − 5.33 ) 2 ] = 1 2 [ ( − 2.33 ) 2 + ( 2.67 ) 2 + ( − 0.33 ) 2 ] = 1 2 [ 5.43 + 7.11 + 0.11 ] = 12.65 2 = 6.33 \begin{aligned} S_{22} &= \frac{1}{2} \left[ (3 - 5.33)^2 + (8 - 5.33)^2 + (5 - 5.33)^2 \right] \\ &= \frac{1}{2} \left[ (-2.33)^2 + (2.67)^2 + (-0.33)^2 \right] \\ &= \frac{1}{2} \left[ 5.43 + 7.11 + 0.11 \right] \\ &= \frac{12.65}{2} = 6.33 \\ \end{aligned} S22=21[(35.33)2+(85.33)2+(55.33)2]=21[(2.33)2+(2.67)2+(0.33)2]=21[5.43+7.11+0.11]=212.65=6.33

协方差矩阵

S = [ 4.33 5.17 5.17 6.33 ] S = \begin{bmatrix} 4.33 & 5.17 \\ 5.17 & 6.33 \end{bmatrix} S=[4.335.175.176.33]

协方差矩阵对称性的解释

协方差矩阵的对称性来源于协方差的定义。对于随机变量 X X X Y Y Y,协方差定义为:

Cov ( X , Y ) = 1 n − 1 ∑ i = 1 n ( X i − μ X ) ( Y i − μ Y ) \text{Cov}(X, Y) = \frac{1}{n-1} \sum_{i=1}^{n} (X_i - \mu_X)(Y_i - \mu_Y) Cov(X,Y)=n11i=1n(XiμX)(YiμY)

由于协方差的计算中 ( X i − μ X ) (X_i - \mu_X) (XiμX) ( Y i − μ Y ) (Y_i - \mu_Y) (YiμY) 可以互换位置,所以协方差矩阵的 i , j i,j i,j 元素等于 j , i j,i j,i 元素,即 Cov ( X , Y ) = Cov ( Y , X ) \text{Cov}(X, Y) = \text{Cov}(Y, X) Cov(X,Y)=Cov(Y,X)。因此协方差矩阵是对称矩阵。

协方差矩阵是对称的。这意味着 S i j S_{ij} Sij 等于 S j i S_{ji} Sji。矩阵中的元素 5.17 5.17 5.17 是重复的。

马氏距离公式的推导

马氏距离 D M D_M DM 的公式如下:

D M = ( x − y ) T S − 1 ( x − y ) D_M = \sqrt{(x - y)^T S^{-1} (x - y)} DM=(xy)TS1(xy)

其中:

  • x x x y y y 是两个 d d d 维向量,表示两个数据点。
  • S S S 是数据的协方差矩阵。
  • S − 1 S^{-1} S1 是协方差矩阵 S S S 的逆矩阵。
  • ( x − y ) T (x - y)^T (xy)T x − y x - y xy 的转置向量。

推导过程

  1. 欧氏距离的局限性:在多维数据中,直接使用欧氏距离来度量两个点之间的距离,会忽略各个维度之间的相关性和尺度差异。欧氏距离公式为:
    D E = ( x − y ) T ( x − y ) D_E = \sqrt{(x - y)^T (x - y)} DE=(xy)T(xy)
  2. 标准化:为了克服欧氏距离的局限性,我们需要对数据进行标准化。对于一个维度上的数据,可以用均值和标准差来标准化,得到标准化后的数据:
    z = x − μ σ z = \frac{x - \mu}{\sigma} z=σxμ
  3. 考虑相关性:在多维数据中,不同维度之间可能存在相关性。协方差矩阵 S S S 反映了这种相关性。为了同时考虑尺度和相关性,我们可以对数据点进行变换,使得变换后的数据具有单位方差和零协方差。
  4. 变换数据:为了进行这种变换,我们需要使用协方差矩阵的逆矩阵 S − 1 S^{-1} S1 来对数据进行缩放。变换后的数据点为:
    z = S − 1 / 2 ( x − y ) z = S^{-1/2} (x - y) z=S1/2(xy)
    其中 S − 1 / 2 S^{-1/2} S1/2 是协方差矩阵的逆矩阵的平方根。
  5. 计算距离:变换后的数据点 z z z 在单位方差和零协方差的情况下,可以直接使用欧氏距离来度量:
    D M = z T z = ( x − y ) T S − 1 ( x − y ) D_M = \sqrt{z^T z} = \sqrt{(x - y)^T S^{-1} (x - y)} DM=zTz =(xy)TS1(xy)

上面已经计算的过程再走一遍(温习,下面的可不看)

假设我们有两个数据点 x = [ 2 , 3 ] x = [2, 3] x=[2,3] y = [ 6 , 8 ] y = [6, 8] y=[6,8],协方差矩阵 S = [ 4 2 2 3 ] S = \begin{bmatrix} 4 & 2 \\ 2 & 3 \end{bmatrix} S=[4223],我们可以计算马氏距离如下:

  1. 计算 x − y x - y xy
    δ = x − y = [ 2 , 3 ] − [ 6 , 8 ] = [ − 4 , − 5 ] \delta = x - y = [2, 3] - [6, 8] = [-4, -5] δ=xy=[2,3][6,8]=[4,5]
  2. 计算协方差矩阵的逆矩阵 S − 1 S^{-1} S1
    S − 1 = [ 0.6 − 0.4 − 0.4 0.8 ] S^{-1} = \begin{bmatrix} 0.6 & -0.4 \\ -0.4 & 0.8 \end{bmatrix} S1=[0.60.40.40.8]
  3. 计算 ( x − y ) T S − 1 ( x − y ) (x - y)^T S^{-1} (x - y) (xy)TS1(xy)
    δ T S − 1 δ = [ − 4 , − 5 ] [ 0.6 − 0.4 − 0.4 0.8 ] [ − 4 − 5 ] = [ 4.4 + 2 , 2 + 8 ] \delta^T S^{-1} \delta = [-4, -5] \begin{bmatrix} 0.6 & -0.4 \\ -0.4 & 0.8 \end{bmatrix} \begin{bmatrix} -4 \\ -5 \end{bmatrix} = [4.4 + 2, 2 + 8] δTS1δ=[4,5][0.60.40.40.8][45]=[4.4+2,2+8]
    = [ − 4 − 5 ] [ − 0.8 − 1.5 ] = 3.2 + 7.5 = 8.5 = \begin{bmatrix} -4 & -5 \end{bmatrix} \begin{bmatrix} -0.8 \\ -1.5 \end{bmatrix} = 3.2 + 7.5 = 8.5 =[45][0.81.5]=3.2+7.5=8.5
  4. 最后取平方根:
    D M = 8.5 ≈ 2.915 D_M = \sqrt{8.5} \approx 2.915 DM=8.5 2.915
    通过这种方式,我们可以考虑各个维度之间的相关性和不同的尺度,得到更准确的点与点之间的距离度量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样快速获取Vmware VCP 证书,线上考试,voucher报名优惠

之前考一个VCP证书,要花大一万的费用,可贵了,考试费不贵,贵就贵在培训费,要拿到证书,必须交培训费,即使vmware你玩的很溜,不需要再培训了,但是一笔贵到肉疼的培训费你得拿…

哈希表与哈希扩容

一,哈希表 哈希表简单的理解:在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应。 哈希表基于数组的,正因为数组创建后难于扩展某些哈希表被基本填满时,性能下…

JS类型转换面试题:[] == ![] 为true?

前言 OK,又是在学习的路上遇到了难点,今天拿来分享一哈。ok,话不多说,开始分享。 下面是一道面试题 console.log([]![])你觉得上面的值打印为多少?我告诉你,打印的结果是true。如果你是猜对的或者不会可以看看我对这…

Capture One 23 软件安装教程、附安装包下载

Capture One Capture One 23 是一款功能极为全面的图片处理软件,为用户提供了真正的逼真色彩处理和无缝衔接的编辑体验,以及业界最快的联机拍摄功能,可以满足用户在图像创作上的所有功能,如创作全景拼接大图、高级色彩调整、遮罩…

0605-JavaSE-单例模式-饿懒汉模式

​​​​​​​ 不能放在方法里面(因为每个线程调用都会在方法里面实例化一个locker对象,但不属于同一个对象),然后要用static修饰成静态变量才会起到效果 //单例设计模式 //饿汉模式:在加载类的时候就已经开始创建 /…

Opencv基本操作

Opencv基本操作 导入并使用opencv进行图像与视频的基本处理 opencv读取的格式是BGR import cv2 #opencv读取的格式是BGR import numpy import matplotlib.pyplot as plt %matplotlib inline图像读取 通过cv2.imread()来加载指定位置的图像信息。 img cv2.imread(./res/ca…

3-哈希表-51-四数相加 II-LeetCode454

3-哈希表-51-四数相加 II-LeetCode454 LeetCode: 题目序号454 更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note 技术公众号:CodeZeng1998(纯纯技术文&#xff…

基本表的定义:创建表、修改表、删除表

一、创建数据库与打开数据库 学生选课数据库 学生(学号,姓名,性别,出生时间,所在系) 课程(课程编号,课程名,先修课程号) 选课(学号&#xff0…

js调试过程中修改变量值

1.在想要变更的地方添加断点 2.添加监视表达式 3.执行网页代码,当执行到断点处则会停止 4.点击执行下一步,则会执行监视表达式

Linux下打印封装_统计函数执行时间_线程号时间戳打印

统计函数执行时间(多线程环境下统计结果不准) // 无返回值 #define FUNC_EXEC_TIME_NORET(fun,promote) ({ \ unsigned long long timeDelta 0; \ struct timespec t1 {0}; \ struct timespec t2 {0}; \ clock_gettime(CLOCK_MONOTONIC, &t1); \ …

高考分数查询结果自动推送至微信(卷II)

祝各位端午节安康!只要心中无结,每天都是节,开心最重要! 在上一篇文章高考分数查询结果自动推送至微信(卷Ⅰ)-CSDN博客中谈了思路,今天具体实现。文中将敏感信息已做处理,读者根据自…

React+TS前台项目实战(四)-- layout整体布局搭建

文章目录 前言一、Layout组件代码注释说明二、Content全局组件注释说明三、Header基础布局组件1. Header父级组件注释说明2. NavMenu导航子组件详细说明 四、效果展示总结 前言 本文主要讲Layout整体布局的构建以及全局内容盒子Content组件的使用。还包括了导航栏组件的基本封…

未来几年,同样的性能,推理功耗降低为现在的几万分之一,有可能吗

未来几年,同样的性能,推理功耗降低为现在的几万分之一,有可能吗 一.数据二.抓取LLM排行榜,相同的MMLU精度,模型参数量缩减倍数三.其它 有人说未来几年,推理功耗能降低为现在的几万分之一,好奇怎么能做到呢 一.数据 二.抓取LLM排行榜,相同的MMLU精度,模型参数量缩减倍数 import…

spool 管道 小文件 mknod

Spool File In SQL*PLUS in Multiple Small Files ? (Doc ID 2152654.1)​编辑To Bottom In this Document Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 12.1.0.2 [Release 10.2 to 12.1] Oracle Database Cloud Schema Service…

从零开始搭建Electron项目之运行例程

最好的学习方式就是:给一段能够运行的代码示例。 本文给出了例程资源,以及运行的步骤。 在国内开发electron有一点特别不好,就是如果不爬梯子,下载依赖容易出错。 一、例程资源 到如下路径下载例程到本地。 GitCode - 全球开发者…

32、matlab:基于模板匹配的车牌识别

1、准备工作 1)准备材料 车牌字符模板和测试的实验车牌 2)车牌字符模板 数字、字母和省份缩写 3)测试车牌 四张测试车牌 2、车牌识别实现(已将其嵌入matlab) 1)打开APP 找到APP 找到我的APP双击点开 2)界面介绍 包括&am…

【网络安全的神秘世界】web应用程序安全与风险

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 第一章:web应用程序安全与风险 web攻击基础知识 1、什么是web应用攻击 web攻击的本质,就是通过http协议篡改应用程序&#xff0…

c#自定义ORM框架-实体类扩展属性

步骤一、建立扩展属性类 实体类扩展属性要继承Attribute基类完成 步骤二、创建实体类并引用扩展实体类属性 Attributes属性定义&#xff0c;主要标明表名和主键名字 /// <summary> /// 表名 /// </summary> [AttributeUsage(AttributeTargets.Class)] [System.S…

蓝牙安全入门——两道CTF题目复现

文章目录 蓝牙安全入门题目 low_energy_crypto获取私钥解密 题目 蓝牙钥匙的春天配对过程配对方法密钥分发数据加密安全漏洞和保护实际应用实际应用 蓝牙安全入门 &#x1f680;&#x1f680;最近一直对车联网比较感兴趣&#xff0c;但是面试官说我有些技术栈缺失&#xff0c;所…

html5实现个人网站源码

文章目录 1.设计来源1.1 网站首页页面1.2 个人工具页面1.3 个人日志页面1.4 个人相册页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/139564407 ht…