DeepSORT(目标跟踪算法)卡尔曼滤波中的贝叶斯定理

2024-06-15 02:20

本文主要是介绍DeepSORT(目标跟踪算法)卡尔曼滤波中的贝叶斯定理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DeepSORT(目标跟踪算法)卡尔曼滤波中的贝叶斯定理

flyfish

从例子中介绍名词

假设我们有一个袋子,里面有5个红球和3个蓝球。我们从袋子里随机抽取一个球。

概率 (Probability)

我们想计算从袋子里抽到红球的概率 P ( R ) P(R) P(R)

红球的数量是5,球的总数量是8,所以抽到红球的概率是:
P ( R ) = 5 8 P(R) = \frac{5}{8} P(R)=85

条件概率 (Conditional Probability)

条件概率是指在已知某事件 B B B 发生的情况下,另一个事件 A A A 发生的概率。用符号 P ( A ∣ B ) P(A \mid B) P(AB) 表示。

公式

条件概率的公式为:
P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A \mid B) = \frac{P(A \cap B)}{P(B)} P(AB)=P(B)P(AB)
前提是 P ( B ) > 0 P(B)> 0 P(B)>0

这里:

  • P ( A ∣ B ) P(A \mid B) P(AB) 是在 B B B 发生的情况下 A A A 发生的概率。
  • P ( A ∩ B ) P(A \cap B) P(AB) 是事件 A A A B B B 同时发生的概率。
  • P ( B ) P(B) P(B) 是事件 B B B 发生的概率。

联合概率 (Joint Probability)

联合概率是指两个或多个事件同时发生的概率。用符号 P ( A ∩ B ) P(A \cap B) P(AB) P ( A , B ) P(A, B) P(A,B) 表示。

公式

联合概率可以用条件概率和边缘概率的乘积表示:
P ( A ∩ B ) = P ( A ∣ B ) ⋅ P ( B ) P(A \cap B) = P(A \mid B) \cdot P(B) P(AB)=P(AB)P(B)

P ( A ∩ B ) = P ( B ∣ A ) ⋅ P ( A ) P(A \cap B) = P(B \mid A) \cdot P(A) P(AB)=P(BA)P(A)

示例

假设我们有一个包含红球和蓝球的袋子。已知袋子中有5个红球和3个蓝球。我们从袋子里随机抽取两个球,并且不放回。

联合概率

我们要计算第一次抽到红球 A A A 和第二次也抽到红球 B B B 的联合概率。

  1. 第一次抽到红球 P ( A ) P(A) P(A)
    P ( A ) = 5 8 P(A) = \frac{5}{8} P(A)=85
  2. 在第一次已经抽到红球的情况下,第二次再抽到红球的条件概率 P ( B ∣ A ) P(B \mid A) P(BA)
    P ( B ∣ A ) = 4 7 P(B \mid A) = \frac{4}{7} P(BA)=74
    因此,联合概率 P ( A ∩ B ) P(A \cap B) P(AB) 为:
    P ( A ∩ B ) = P ( A ) ⋅ P ( B ∣ A ) = 5 8 ⋅ 4 7 = 20 56 = 5 14 P(A \cap B) = P(A) \cdot P(B \mid A) = \frac{5}{8} \cdot \frac{4}{7} = \frac{20}{56} = \frac{5}{14} P(AB)=P(A)P(BA)=8574=5620=145
条件概率

假设我们知道第一次抽到了红球 A A A,我们想知道在这种情况下第二次也抽到红球 B B B 的概率:
P ( B ∣ A ) = P ( A ∩ B ) P ( A ) = 5 14 5 8 = 4 7 P(B \mid A) = \frac{P(A \cap B)}{P(A)} = \frac{\frac{5}{14}}{\frac{5}{8}} = \frac{4}{7} P(BA)=P(A)P(AB)=85145=74

似然 (Likelihood)

假设我们做了一次试验,从袋子里抽到了一个红球。我们想知道这个观察结果在给定红球数量为5、蓝球数量为3的情况下的似然。

在这个简单例子中,似然实际上就是红球的概率,即:
L ( θ ∣ Red observed ) = P ( Red observed ∣ θ ) = P ( R ) = 5 8 L(\theta \mid \text{Red observed}) = P(\text{Red observed} \mid \theta) = P(R) = \frac{5}{8} L(θRed observed)=P(Red observedθ)=P(R)=85
在这个例子中,观测数据是 “抽到红球”,模型参数是 θ = { 5 个红球 , 3 个蓝球 } \theta = \{5 \text{个红球}, 3 \text{个蓝球}\} θ={5个红球,3个蓝球}。因此:
L ( θ ∣ Red observed ) = P ( Red ∣ θ ) = 5 8 L(\theta \mid \text{Red observed}) = P(\text{Red} \mid \theta) = \frac{5}{8} L(θRed observed)=P(Redθ)=85

所以,似然函数的值在这个具体例子中等于抽到红球的概率。直观地讲,我们在已知袋子里球的分布情况下,观测到红球的可能性就是从袋子里抽到红球的概率。这个例子中的似然实际上就是红球的概率,因为我们已经知道袋子里球的数量和类型。

更复杂的情况

在更复杂的情况下,似然函数用于评估不同模型参数的好坏。例如,如果我们不知道袋子里红球和蓝球的数量,通过多次抽取球的结果(观测数据),我们可以估计袋子里红球和蓝球的比例。在这种情况下,似然函数帮助我们找到最适合观测数据的模型参数。
通过一个具体的例子来演示如何使用似然函数来估计模型参数。

示例场景

假设我们有一个袋子,但不知道里面红球和蓝球的具体数量。我们随机从袋子里抽取了10次球,并记录了结果。假设我们观察到以下数据:

  • 红球:7次
  • 蓝球:3次
    我们的目标是估计袋子里红球的比例 p p p(红球占总球数的比例)。

似然函数

设袋子中红球的比例为 p p p,蓝球的比例为 1 − p 1 - p 1p。根据二项分布,抽到 k k k 次红球的概率为:
P ( Red = k ∣ p ) = ( n k ) p k ( 1 − p ) n − k P(\text{Red}=k \mid p) = \binom{n}{k} p^k (1-p)^{n-k} P(Red=kp)=(kn)pk(1p)nk

其中:

  • n n n 是抽取的总次数(这里 n = 10 n = 10 n=10
  • k k k 是红球的次数(这里 k = 7 k = 7 k=7

计算似然

我们要计算在不同 p p p 值下观测到7次红球的似然。

似然函数 L ( p ∣ data ) L(p \mid \text{data}) L(pdata) 定义为:
L ( p ∣ data ) = P ( data ∣ p ) = ( 10 7 ) p 7 ( 1 − p ) 3 L(p \mid \text{data}) = P(\text{data} \mid p) = \binom{10}{7} p^7 (1-p)^3 L(pdata)=P(datap)=(710)p7(1p)3

具体计算

  1. 计算组合数:
    ( 10 7 ) = 10 ! 7 ! ( 10 − 7 ) ! = 10 × 9 × 8 3 × 2 × 1 = 120 \binom{10}{7} = \frac{10!}{7!(10-7)!} = \frac{10 \times 9 \times 8}{3 \times 2 \times 1} = 120 (710)=7!(107)!10!=3×2×110×9×8=120
  2. 似然函数:
    L ( p ∣ data ) = 120 ⋅ p 7 ⋅ ( 1 − p ) 3 L(p \mid \text{data}) = 120 \cdot p^7 \cdot (1-p)^3 L(pdata)=120p7(1p)3

找到最大似然估计 (Maximum Likelihood Estimation, MLE)

为了找到最适合观测数据的 p p p,我们需要最大化似然函数。我们可以通过求导数并找到极值点来实现这一目标。

  1. 似然函数的对数形式(对数似然)更方便处理:
    log ⁡ L ( p ∣ data ) = log ⁡ ( 120 ) + 7 log ⁡ ( p ) + 3 log ⁡ ( 1 − p ) \log L(p \mid \text{data}) = \log(120) + 7 \log(p) + 3 \log(1-p) logL(pdata)=log(120)+7log(p)+3log(1p)
  2. 对对数似然函数求导并求解使导数为0的 p p p 值:
    d d p log ⁡ L ( p ∣ data ) = 7 p − 3 1 − p \frac{d}{dp} \log L(p \mid \text{data}) = \frac{7}{p} - \frac{3}{1-p} dpdlogL(pdata)=p71p3
    设置导数为0并求解:
    7 p = 3 1 − p \frac{7}{p} = \frac{3}{1-p} p7=1p3
    7 ( 1 − p ) = 3 p 7(1-p) = 3p 7(1p)=3p
    7 − 7 p = 3 p 7 - 7p = 3p 77p=3p
    7 = 10 p 7 = 10p 7=10p
    p = 7 10 = 0.7 p = \frac{7}{10} = 0.7 p=107=0.7

因此,观测到7次红球和3次蓝球的数据下,红球比例 p p p 的最大似然估计为0.7。

不发生的概率

符号 ¬ \neg ¬ 表示逻辑上的“非”或“否定”,即取反的意思。
P ( ¬ A ) P(\neg A) P(¬A) 表示事件 A A A 不发生的概率。如果 A A A 是某个事件,那么 ¬ A \neg A ¬A 就是 A A A 的补事件,或者说 A A A 不发生的事件。

具体解释

  • P ( A ) P(A) P(A):事件 A A A 发生的概率。
  • P ( ¬ A ) P(\neg A) P(¬A):事件 A A A 不发生的概率。
    在概率论中,如果事件 A A A 和事件 ¬ A \neg A ¬A 是互斥且穷尽的(即两者覆盖了所有可能性),则它们的概率和为 1:

P ( A ) + P ( ¬ A ) = 1 P(A) + P(\neg A) = 1 P(A)+P(¬A)=1

因此,如果你知道事件 A A A 发生的概率 P ( A ) P(A) P(A),你可以很容易地计算出事件 A A A 不发生的概率 P ( ¬ A ) P(\neg A) P(¬A)

P ( ¬ A ) = 1 − P ( A ) P(\neg A) = 1 - P(A) P(¬A)=1P(A)

先验估计是预测阶段的估计,而后验估计是更新阶段的估计。

  1. 先验估计(Prior Estimate)
  • 定义:先验估计是指在当前时刻没有结合最新观测数据前的系统状态估计。它是基于上一时刻的后验估计和系统的状态转移模型得到的。
  • 符号:通常用 x ^ k ∣ k − 1 \hat{x}_{k|k-1} x^kk1 表示,其中 k k k 表示当前时刻, k − 1 k-1 k1 表示上一时刻。
  • 计算:根据系统的状态转移方程进行预测,即:
    x ^ k ∣ k − 1 = A k − 1 x ^ k − 1 ∣ k − 1 + B k − 1 u k − 1 \hat{x}_{k|k-1} = A_{k-1} \hat{x}_{k-1|k-1} + B_{k-1} u_{k-1} x^kk1=Ak1x^k1∣k1+Bk1uk1
    其中, x ^ k − 1 ∣ k − 1 \hat{x}_{k-1|k-1} x^k1∣k1 是上一时刻的后验估计, A k − 1 A_{k-1} Ak1 是状态转移矩阵, B k − 1 B_{k-1} Bk1 是控制输入矩阵, u k − 1 u_{k-1} uk1 是控制输入。
  1. 后验估计(Posterior Estimate)
  • 定义:后验估计是指在结合当前时刻的观测数据后,对系统状态的更新估计。它是对先验估计进行修正得到的。
  • 符号:通常用 x ^ k ∣ k \hat{x}_{k|k} x^kk 表示,表示结合了第 k k k 时刻的观测数据后的状态估计。
  • 计算:根据卡尔曼增益(Kalman Gain)和观测更新方程进行修正,即:
    x ^ k ∣ k = x ^ k ∣ k − 1 + K k ( z k − H k x ^ k ∣ k − 1 ) \hat{x}_{k|k} = \hat{x}_{k|k-1} + K_k (z_k - H_k \hat{x}_{k|k-1}) x^kk=x^kk1+Kk(zkHkx^kk1)
    其中, K k K_k Kk 是卡尔曼增益, z k z_k zk 是当前时刻的观测数据, H k H_k Hk 是观测矩阵。
    通过上述过程,卡尔曼滤波器能够不断地利用新观测数据修正系统状态估计,从而提供一个更加准确的状态估计。

贝叶斯定理是概率论中的一个基本定理,用于描述在给定某些条件(证据)的情况下,如何更新对事件的概率估计。它的基本形式是:

P ( A ∣ B ) = P ( B ∣ A ) ⋅ P ( A ) P ( B ) P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)

在这个公式中,每个符号都有特定的含义:

  • P ( A ∣ B ) P(A|B) P(AB):在条件 B B B 发生的情况下,事件 A A A 发生的概率。这被称为 后验概率(Posterior Probability)。
  • P ( B ∣ A ) P(B|A) P(BA):在条件 A A A 发生的情况下,事件 B B B 发生的概率。这被称为 似然(Likelihood)。
  • P ( A ) P(A) P(A):事件 A A A 发生的概率,不考虑任何条件。这被称为 先验概率(Prior Probability)。
  • P ( B ) P(B) P(B):事件 B B B 发生的概率,不考虑条件 A A A 是否发生。这被称为 边际概率(Marginal Probability),也可以看作是一个归一化常数,确保概率总和为 1。

通俗理解

假设你每天早晨都要预测一天的天气情况,你可以这样做:

  1. 先验估计(Prior Estimate)
  • 你看了昨晚的天气预报,预报说今天会晴天。于是,你一早起床就预测今天会是晴天。这就是你的先验估计,即基于已有的信息(昨天的预报)对今天天气的预测。
  1. 后验估计(Posterior Estimate)
  • 你打开窗户,看到了外面的实际天气。假如你看到天空阴云密布,显然今天的天气和昨晚的预报有差异。于是,你修正了你的天气预测,认为今天可能会下雨。这时,你结合了新的观测数据(看到的阴天)来更新你的预测。这就是你的后验估计,即结合新信息(实际观察)后对天气的更新预测。

贝叶斯定理的直观理解

贝叶斯定理可以帮助我们在得到新信息(证据)后,更新对某个事件发生概率的估计。简单来说,贝叶斯定理是如何利用现有的知识(先验概率)和新得到的信息(似然)来更新我们的认知(后验概率)。

贝叶斯定理的应用

贝叶斯定理的形式是:

P ( x k ∣ z 1 : k ) = P ( z k ∣ x k ) P ( x k ∣ z 1 : k − 1 ) P ( z k ∣ z 1 : k − 1 ) P(x_k | z_{1:k}) = \frac{P(z_k | x_k) P(x_k | z_{1:k-1})}{P(z_k | z_{1:k-1})} P(xkz1:k)=P(zkz1:k1)P(zkxk)P(xkz1:k1)

在卡尔曼滤波中,状态 x k x_k xk 和观测 z k z_k zk 都被假设为高斯分布。我们通过这个假设来简化贝叶斯定理的应用。

符号解释

  1. P ( x k ∣ z 1 : k ) P(x_k | z_{1:k}) P(xkz1:k)
  • 表示在时刻 k k k 观测到 z 1 : k z_{1:k} z1:k 后,状态 x k x_k xk 的后验概率分布。这个是我们希望计算和更新的目标,即根据所有观测数据(从时刻 1 到时刻 k k k)来更新当前状态的估计。
  1. P ( z k ∣ x k ) P(z_k | x_k) P(zkxk)
  • 表示在给定当前状态 x k x_k xk 的条件下,观测到 z k z_k zk 的概率(似然)。这反映了当前状态 x k x_k xk 如何生成观测值 z k z_k zk,通常由观测模型来描述。
  1. P ( x k ∣ z 1 : k − 1 ) P(x_k | z_{1:k-1}) P(xkz1:k1)
  • 表示在给定之前所有观测数据 z 1 : k − 1 z_{1:k-1} z1:k1 的条件下,当前状态 x k x_k xk 的先验概率分布。这个是通过状态转移模型从上一个时刻的后验概率分布预测得到的。
  1. P ( z k ∣ z 1 : k − 1 ) P(z_k | z_{1:k-1}) P(zkz1:k1)
  • 表示在给定之前所有观测数据 z 1 : k − 1 z_{1:k-1} z1:k1 的条件下,观测到 z k z_k zk 的概率(边际概率)。这个值用来归一化分子部分,使得后验概率分布的总概率为 1。

具体说明

先验概率 P ( x k ∣ z 1 : k − 1 ) P(x_k | z_{1:k-1}) P(xkz1:k1)
  • 解释:在时刻 k k k 之前的所有观测数据 z 1 : k − 1 z_{1:k-1} z1:k1 已知的情况下,对时刻 k k k 的状态 x k x_k xk 进行预测。
  • 来源:通常通过状态转移模型 f f f 预测得到:
    P ( x k ∣ z 1 : k − 1 ) ∼ N ( x ^ k ∣ k − 1 , P k ∣ k − 1 ) P(x_k | z_{1:k-1}) \sim \mathcal{N}(\hat{x}_{k|k-1}, P_{k|k-1}) P(xkz1:k1)N(x^kk1,Pkk1)
    其中 x ^ k ∣ k − 1 \hat{x}_{k|k-1} x^kk1 P k ∣ k − 1 P_{k|k-1} Pkk1 是先验均值和协方差矩阵。
似然 P ( z k ∣ x k ) P(z_k | x_k) P(zkxk)
  • 解释:在给定当前状态 x k x_k xk 的条件下,观测到 z k z_k zk 的概率。
  • 来源:通常通过观测模型 h h h 得到:
    P ( z k ∣ x k ) ∼ N ( H x ^ k , R ) P(z_k | x_k) \sim \mathcal{N}(H \hat{x}_k, R) P(zkxk)N(Hx^k,R)
    其中 H H H 是观测矩阵, R R R 是观测噪声协方差矩阵。
边际概率 P ( z k ∣ z 1 : k − 1 ) P(z_k | z_{1:k-1}) P(zkz1:k1)
  • 解释:在给定之前所有观测数据 z 1 : k − 1 z_{1:k-1} z1:k1 的情况下,观测到 z k z_k zk 的概率。这个概率确保分母是一个归一化常数,使得后验概率分布的总和为 1。
  • 来源:通过积分计算得到:
    P ( z k ∣ z 1 : k − 1 ) = ∫ P ( z k ∣ x k ) P ( x k ∣ z 1 : k − 1 ) d x k P(z_k | z_{1:k-1}) = \int P(z_k | x_k) P(x_k | z_{1:k-1}) dx_k P(zkz1:k1)=P(zkxk)P(xkz1:k1)dxk
后验概率 P ( x k ∣ z 1 : k ) P(x_k | z_{1:k}) P(xkz1:k)
  • 解释:在给定所有观测数据 z 1 : k z_{1:k} z1:k 的情况下,当前状态 x k x_k xk 的概率分布。
  • 来源:利用贝叶斯定理,将先验概率和似然结合,并归一化:
    P ( x k ∣ z 1 : k ) ∼ N ( x ^ k ∣ k , P k ∣ k ) P(x_k | z_{1:k}) \sim \mathcal{N}(\hat{x}_{k|k}, P_{k|k}) P(xkz1:k)N(x^kk,Pkk)
    其中 x ^ k ∣ k \hat{x}_{k|k} x^kk P k ∣ k P_{k|k} Pkk 是更新后的后验均值和协方差矩阵。

使用 Python 绘制贝叶斯更新过程

我们可以使用 Python 来模拟贝叶斯更新过程,并可视化后验分布的变化。以下是一个简单的 Python 代码示例:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm# 定义先验
mu_prior = 0
sigma_prior = 1
x = np.linspace(-5, 5, 1000)
prior = norm.pdf(x, mu_prior, sigma_prior)# 定义观测模型(似然)
mu_likelihood = 1
sigma_likelihood = 0.5
likelihood = norm.pdf(x, mu_likelihood, sigma_likelihood)# 计算后验(使用贝叶斯定理)
posterior = likelihood * prior
posterior /= np.trapz(posterior, x)  # 归一化# 绘制结果
plt.figure(figsize=(10, 6))
plt.plot(x, prior, label='Prior')
plt.plot(x, likelihood, label='Likelihood')
plt.plot(x, posterior, label='Posterior')
plt.xlabel('State')
plt.ylabel('Probability Density')
plt.title('Bayesian Update of Probability Distribution')
plt.legend()
plt.grid(True)
plt.show()

在这里插入图片描述

解释

  • 先验分布(Prior):假设先验均值为 0,标准差为 1 的高斯分布。
  • 似然分布(Likelihood):假设似然均值为 1,标准差为 0.5 的高斯分布。
  • 后验分布(Posterior):通过贝叶斯定理将先验和似然结合,并归一化得到后验分布。

贝叶斯定理在卡尔曼滤波中的应用,通过高斯分布假设,先验和似然分布的联合分布也是高斯分布。后验分布的均值和协方差可以通过条件高斯分布的性质得到,最终简化为卡尔曼滤波的更新公式。卡尔曼增益 ( K_k ) 确定了先验估计和观测数据的加权比例,后验状态估计和协方差更新则通过结合先验和观测数据,反映了状态估计的不确定性减少。

这篇关于DeepSORT(目标跟踪算法)卡尔曼滤波中的贝叶斯定理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062158

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int