01_Machine Vision_LSI及傅立叶变换

outline

  • 图像分解和线性时不变系统
  • 二维傅立叶变换
  • 图像采样

图像分解和线性时不变系统

图像数学表达

图像由基本的像素点组成,如果将每一个像素点看作一个脉冲,则每个像素点的值可以看作是脉冲的幅值,这样图像就可以看作是由一系列脉冲组成的。

单个像素点的数学表达式:

f ( i , j ) = A δ ( x − i , y − j ) f(i,j) = A\delta(x-i,y-j) f(i,j)=Aδ(xi,yj)

其中,A是像素点的幅值, δ ( x − x 0 , y − y 0 ) \delta(x-x_0,y-y_0) δ(xx0,yy0)是二维脉冲函数,表示在 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处的脉冲。

则图像可表示为一些列脉冲的叠加,其数学表达式:

f ( x , y ) = ∑ i = 1 N ∑ j = 1 N f ( i , j ) δ ( x − i , y − i ) f(x,y) = \sum_{i=1}^{N} \sum_{j=1}^{N} f(i,j)\delta(x-i,y-i) f(x,y)=i=1Nj=1Nf(i,j)δ(xi,yi)

其中,N是图像中的像素点个数,A_i是第i个像素点的幅值, ( x i , y i ) (x_i,y_i) (xi,yi)是第i个像素点的坐标。

图像处理系统

  f ( x , y ) → image processing T → g ( x , y ) \ f(x,y) \rightarrow \begin{array}{|c|} \hline \text{image processing T} \\ \hline \end{array} \rightarrow g(x,y)  f(x,y)image processing Tg(x,y)

其中,f(x,y)是输入图像,g(x,y)是输出图像, T是图像处理系统.
所以数学表达式为:

g ( x , y ) = T [ f ( x , y ) ] = T [ ∑ i = 1 N ∑ j = 1 N f ( i , j ) δ ( x − i , y − i ) ] g(x,y) = T[f(x,y)] = T\left[\sum_{i=1}^{N} \sum_{j=1}^{N} f(i,j)\delta(x-i,y-i)\right] g(x,y)=T[f(x,y)]=T[i=1Nj=1Nf(i,j)δ(xi,yi)]

如果T是线性的,则有:

g ( x , y ) = ∑ i = 1 N ∑ j = 1 N f ( i , j ) T [ δ ( x − i , y − i ) ] g(x,y) = \sum_{i=1}^{N} \sum_{j=1}^{N} f(i,j)T[\delta(x-i,y-i)] g(x,y)=i=1Nj=1Nf(i,j)T[δ(xi,yi)]

h ( x , y ) = T [ δ ( x , y ) ] h(x,y) = T[\delta(x,y)] h(x,y)=T[δ(x,y)],即为T的冲激响应。
如果T是时不变系统,则h(x,y)是固定的,不随输入的位置变化,可以在整个空间内平移。则有:

g ( x , y ) = ∑ i = 1 N ∑ j = 1 N f ( i , j ) h ( x − i , y − i ) = f ( x , y ) ∗ h ( x , y ) g(x,y) = \sum_{i=1}^{N} \sum_{j=1}^{N} f(i,j)h(x-i,y-i)=f(x,y)*h(x,y) g(x,y)=i=1Nj=1Nf(i,j)h(xi,yi)=f(x,y)h(x,y)

  • 只用时不变系统才能用卷积计算,时不变系统指的是输入信号发生平易,输出信号也发生平移,不会因位置的不同而产生额外的变化。

T { δ ( x − i , y − j ) } = h ( x − i , y − j ) T \{\delta(x-i,y-j)\} = h(x-i,y-j) T{δ(xi,yj)}=h(xi,yj)

  • h(x,y)也就是滤波器,是固定的,不随输入的位置变化,则其在空间内平移就可以计算图像输出,而不需要做额外的变化。
  • 如果h(x,y)是变化的,则在不同的位置输出不一样,不能用单一的h(x,y)来计算输出。

二维傅立叶变换

傅立叶变换为将信号从时域转化为频域。其核心思想是将一个信号分解为不同频率的正弦波叠加。其视觉呈现可参考3B1B的视频。
https://www.youtube.com/watch?v=spUNpyF58BY&t=441s

基础公式
  • 欧拉公式:
    e i θ = cos ⁡ θ + i sin ⁡ θ e^{i\theta} = \cos\theta + i\sin\theta eiθ=cosθ+isinθ
  • 连续傅立叶变换:
    F ( u , v ) = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( x , y ) e − i 2 π ( u x + v y ) d x d y F(u,v) = \int_{-\infty}^{\infty}\int_{-\infty}^{\infty}f(x,y)e^{-i2\pi(ux+vy)}dxdy F(u,v)=f(x,y)ei2π(ux+vy)dxdy
  • 离散傅立叶变换:
    F ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) e − i 2 π ( u x / M + v y / N ) F(u,v) = \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)e^{-i2\pi(ux/M+vy/N)} F(u,v)=x=0M1y=0N1f(x,y)ei2π(ux/M+vy/N)
  • 逆傅立叶变换:
    f ( x , y ) = ∫ − ∞ ∞ ∫ − ∞ ∞ F ( u , v ) e i 2 π ( u x + v y ) d u d v f(x,y) = \int_{-\infty}^{\infty}\int_{-\infty}^{\infty}F(u,v)e^{i2\pi(ux+vy)}dudv f(x,y)=F(u,v)ei2π(ux+vy)dudv
  • 离散傅立叶变换的逆变换:
    f ( x , y ) = 1 M N ∑ u = 0 M − 1 ∑ v = 0 N − 1 F ( u , v ) e i 2 π ( u x / M + v y / N ) f(x,y) = \frac{1}{MN}\sum_{u=0}^{M-1}\sum_{v=0}^{N-1}F(u,v)e^{i2\pi(ux/M+vy/N)} f(x,y)=MN1u=0M1v=0N1F(u,v)ei2π(ux/M+vy/N)
  • 傅立叶变换具有可分离性,即:
    F ( u , v ) = ∫ − ∞ ∞ [ ∫ − ∞ ∞ f ( x , y ) e − i 2 π v y d y ] e − i 2 π u x d x = ∫ − ∞ ∞ F x ( u , y ) e − i 2 π u x d x F(u,v) = \int_{-\infty}^{\infty}\left[\int_{-\infty}^{\infty}f(x,y)e^{-i2\pi vy}dy\right]e^{-i2\pi ux}dx = \int_{-\infty}^{\infty}F_x(u,y)e^{-i2\pi ux}dx F(u,v)=[f(x,y)ei2πvydy]ei2πuxdx=Fx(u,y)ei2πuxdx
  • 离散傅立叶变换的可分离性:
    F ( u , v ) = 1 M N ∑ x = 0 M − 1 [ ∑ y = 0 N − 1 f ( x , y ) e − i 2 π v y / N ] e − i 2 π u x / M = 1 M ∑ x = 0 M − 1 F x ( u , y ) e − i 2 π u x / M F(u,v) = \frac{1}{MN}\sum_{x=0}^{M-1}\left[\sum_{y=0}^{N-1}f(x,y)e^{-i2\pi vy/N}\right]e^{-i2\pi ux/M} = \frac{1}{M}\sum_{x=0}^{M-1}F_x(u,y)e^{-i2\pi ux/M} F(u,v)=MN1x=0M1[y=0N1f(x,y)ei2πvy/N]ei2πux/M=M1x=0M1Fx(u,y)ei2πux/M
DFT 性质

傅立叶变换得到的频谱图像是复数,通常用幅度谱和相位谱来表示,幅度谱是复数的模,相位谱是复数的辐角。数学表达:

F ( u , v ) = R ( u , v ) + j I ( u , v ) = ∣ F ( u , v ) ∣ e i θ ( u , v ) F(u,v) = R(u,v) + jI(u,v)= |F(u,v)|e^{i\theta(u,v)} F(u,v)=R(u,v)+jI(u,v)=F(u,v)eiθ(u,v)

其中:

∣ F ( u , v ) ∣ = R 2 ( u , v ) + I 2 ( u , v ) |F(u,v)| = \sqrt{R^2(u,v) + I^2(u,v)} F(u,v)=R2(u,v)+I2(u,v)

θ ( u , v ) = arctan ⁡ ( I ( u , v ) R ( u , v ) ) \theta(u,v) = \arctan\left(\frac{I(u,v)}{R(u,v)}\right) θ(u,v)=arctan(R(u,v)I(u,v))

在图像应用中,通常用幅度谱来表示频谱图像,因为幅度谱包含了图像的主要信息,而相位谱则包含了图像的细节信息。

  • 周期性
    F ( u , v ) = F ( u + m , v ) = F ( u , v + n ) F(u,v) = F(u+m,v) = F(u,v+n) F(u,v)=F(u+m,v)=F(u,v+n)
  • 共轭对称性
    F ( u , v ) = F ∗ ( − u , − v ) F(u,v) = F^*(-u,-v) F(u,v)=F(u,v)
  • 线性性
    a F 1 ( u , v ) + b F 2 ( u , v ) = F ( a u , v ) + F ( b u , v ) aF_1(u,v) + bF_2(u,v) = F(au,v) + F(bu,v) aF1(u,v)+bF2(u,v)=F(au,v)+F(bu,v)
  • 卷积
    f ( x , y ) ∗ g ( x , y ) = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( α , β ) g ( x − α , y − β ) d α d β f ( x , y ) ∗ g ( x , y )    ⟺    F ( u , v ) G ( u , v ) f ( x , y ) g ( x , y )    ⟺    F ( u , v ) ∗ G ( u , v ) f(x,y) * g(x,y) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(\alpha, \beta) g(x - \alpha, y - \beta) d\alpha d\beta \\ f(x,y) * g(x,y) \iff F(u,v) G(u,v) \\ f(x,y) g(x,y) \iff F(u,v) * G(u,v) f(x,y)g(x,y)=f(α,β)g(xα,yβ)dαdβf(x,y)g(x,y)F(u,v)G(u,v)f(x,y)g(x,y)F(u,v)G(u,v)
  • 旋转

x = r cos ⁡ θ , y = r sin ⁡ θ , u = ω cos ⁡ φ , v = ω sin ⁡ φ f ( r , θ + θ 0 )    ⟺    F ( ω , φ + θ 0 ) x = r \cos \theta, \quad y = r \sin \theta, \quad u = \omega \cos \varphi, \quad v = \omega \sin \varphi \\ f(r, \theta + \theta_0) \iff F(\omega, \varphi + \theta_0) x=rcosθ,y=rsinθ,u=ωcosφ,v=ωsinφf(r,θ+θ0)F(ω,φ+θ0)

  • 旋转不变性

g ( u , v ) = 1 π ∫ 0 2 π ∫ 0 1 e − j ( 2 π u r 2 + v θ ) f ( r , θ ) d r d θ g(u,v) = \frac{1}{\pi} \int_0^{2\pi} \int_0^1 e^{-j(2\pi ur^2 + v\theta)} f(r, \theta) dr d\theta g(u,v)=π102π01ej(2πur2+vθ)f(r,θ)drdθ

zero padding

zero padding 主要是为了要解决周期性混叠以及循环卷积的问题。采样定理是解决信号混叠的问题,不能解决循环卷积以及周期性混叠的问题。

首先要了解周期延拓的概念:在DFT变换时,隐式的认为信号是无限重复的。

因为信号是无限周期重复的,所以在做卷积运算时,当计算至数据的末尾时,会将下一个周期的头部数据纳入计算,出现循环卷积的现象。

在这里插入图片描述正是因为这种计算方式,导致可能会将图片的左边和右边混在一起。所以需要在图片两边做zero padding.

  • zero padding 的尺寸
    • DFT 计算一维信号时,如果有2个信号分别为 N 和 M,那么需要做 zero padding 到 N+M-1 的尺寸
    • DFT 计算二维信号时,如果有2个信号分别为 NxM 和 PxQ,那么需要做 zero padding 到 (N+P-1)x(M+Q-1) 的尺寸
为什么滤波用DFT, 而图像压缩用DCT?
  • DFT 计算为复数,可以同时表示信号的幅度和相位信息,便于详细的滤波处理。
  • DCT 计算为实数,减少了存储和计算的复杂性。
  • DCT 变换后大多数的能量集中在低频信号,更符合人眼的视觉特性。

图像采样

连续信号 $ f_c(x,y)$ 转化为 f d ( x , y ) f_d(x,y) fd(x,y) 需要经过以下两步:

  • 采样 Sampling
    采样主要是将连续的 ( x , y ) (x,y) (x,y)转化为离散的 ( m , n ) (m,n) (m,n),决定图片的分辨率,决定了图片保留的信息。如果采样不足,会产生不可逆的信息丢失。
  • 量化 Quantization
    量化主要是针对 f d ( m , n ) f_d(m,n) fd(m,n)量化,将其映射到有限的灰度级上。主要决定了灰度的精度以及视觉效果。

综上:采样过程影响的更大。所以重点关注采样过程。

采样过程

真实世界的信号一般都是带限信号(band-limited)即:

F ( u , v ) = 0 , for ∣ u ∣ > U 0 or ∣ v ∣ > V 0 F(u,v) = 0, \quad \text{for} \quad |u| > U_0 \quad \text{or} \quad |v| > V_0 F(u,v)=0,foru>U0orv>V0

其中, U 0 U_0 U0 V 0 V_0 V0是带限信号的最大频率。

针对真实信号的采样函数为:

s ( x , y ) = ∑ k = − ∞ ∞ ∑ l = − ∞ ∞ δ ( x − m Δ x , n − Δ y ) s(x,y) = \sum_{k=-\infty}^{\infty} \sum_{l=-\infty}^{\infty} \delta(x-m \Delta x,n-\Delta y) s(x,y)=k=l=δ(xmΔx,nΔy)

其傅立叶变换为:

S ( u , v ) = 1 Δ x Δ y ∑ k = − ∞ ∞ ∑ l = − ∞ ∞ δ ( u − k Δ x , v − l Δ y ) S(u,v) = \frac{1}{\Delta x \Delta y} \sum_{k=-\infty}^{\infty} \sum_{l=-\infty}^{\infty} \delta(u-\frac{k}{\Delta x},v-\frac{l}{\Delta y}) S(u,v)=ΔxΔy1k=l=δ(uΔxk,vΔyl)

故连续信号 f ( x , y ) f(x,y) f(x,y) 转换为离散信号可以表示为:

f d ( x , y ) = f c ( x , y ) s ( x , y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f c ( m Δ x , n Δ y ) δ ( x − m Δ x , y − n Δ y ) \textcolor{red}{f_d(x, y)} = f_c(x,y) s(x,y) = \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{blue}{f_c(m\Delta x, n\Delta y)} \delta(x - m\Delta x, y - n\Delta y) fd(x,y)=fc(x,y)s(x,y)=m=n=fc(mΔx,nΔy)δ(xmΔx,ynΔy)

其傅立叶变换为:

F d ( u , v ) = F c ( u , v ) ∗ S ( u , v ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ F c ( u − m Δ x , v − n Δ y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ F c ( u − m f x s , v − n f y s ) \textcolor{red}{F_d(u, v)} = F_c(u,v) * S(u,v) = \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} F_c(u-\frac{m}{\Delta x},v-\frac{n}{\Delta y}) = \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} F_c(u - mf_{xs},v - nf_{ys}) Fd(u,v)=Fc(u,v)S(u,v)=m=n=Fc(uΔxm,vΔyn)=m=n=Fc(umfxs,vnfys)

可以得到其以 ( 1 Δ x , 1 Δ y ) (\frac{1}{\Delta x}, \frac{1}{\Delta y}) (Δx1,Δy1)为周期的周期延拓. 故若不想出现频率混叠,且已知 U 0 U_0 U0 V 0 V_0 V0是带限信号的最大频率,则有:

f x s = 1 Δ x ≥ 2 U 0 , f y s = 1 Δ y ≥ 2 V 0 f_{xs} =\frac{1}{\Delta x}\geq 2U_0, f_{ys} = \frac{1}{\Delta y}\geq 2V_0 fxs=Δx12U0,fys=Δy12V0

其中$ \frac{1}{2U_0} 和 和 \frac{1}{2V_0}$分别为Nyquist间隔。上述不等式即描述采样定理。若满足上述不等式,即可不丢失信息的情况下对信号进行采样。

恢复原始信号

可以应用理想低通滤波器恢复原始信号:

H ( u , v ) = { Δ x Δ y , ( u , v ) ∈ ( − U 0 , U 0 ) × ( − V 0 , V 0 ) 0 , others H(u,v)=\left\{ \begin{array}{ll} \Delta x\Delta y, & (u,v) \in (-U_0, U_0) \times (-V_0, V_0)\\ 0, & \text{others} \end{array} \right. H(u,v)={ΔxΔy,0,(u,v)(U0,U0)×(V0,V0)others

其恢复的信号为:

f c ( x , y ) = h ( x , y ) ∗ f d ( x , y ) = h ( x , y ) ∗ ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f c ( m Δ x , n Δ y ) δ ( x − m Δ x , y − n Δ y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f c ( m Δ x , n Δ y ) h ( x , y ) ∗ δ ( x − m Δ x , y − n Δ y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f c ( m Δ x , n Δ y ) h ( x − m Δ x , y − n Δ y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f d ( m , n ) h ( x − m Δ x , y − n Δ y ) \begin{aligned} f_c(x,y) &= h(x,y) * \textcolor{red}{f_d(x,y)} \\ &= h(x,y) * \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{blue}{f_c(m\Delta x, n\Delta y)} \delta(x - m\Delta x, y - n\Delta y) \\ &= \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{blue}{f_c(m\Delta x, n\Delta y)} h(x,y) * \delta(x - m\Delta x, y - n\Delta y) \\ &= \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{blue}{f_c(m\Delta x, n\Delta y)} h(x - m\Delta x, y - n\Delta y) \\ &= \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{green}{f_d(m,n)} h(x - m\Delta x, y - n\Delta y) \end{aligned} fc(x,y)=h(x,y)fd(x,y)=h(x,y)m=n=fc(mΔx,nΔy)δ(xmΔx,ynΔy)=m=n=fc(mΔx,nΔy)h(x,y)δ(xmΔx,ynΔy)=m=n=fc(mΔx,nΔy)h(xmΔx,ynΔy)=m=n=fd(m,n)h(xmΔx,ynΔy)

综上:若想避免混叠,可以在采样前先对原始图像 f c ( x , y ) f_c(x,y) fc(x,y)进行低通滤波,使其带宽小于采样频率,避免混叠。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Win11下搭建Kafka环境

目录 一、环境准备 二、安装JDK 1、下载JDK 2、配置环境变量 3、验证 三、安装zookeeper 1、下载Zookeeper安装包 2、配置环境变量 3、修改配置文件zoo.cfg 4、启动Zookeeper服务 4.1 启动Zookeeper客户端验证 4.2 启动客户端 四、安装Kafka 1、下载Kafka安装包…

自动化xpath定位元素(附几款浏览器xpath插件)

在 Web 自动化测试、数据采集、前端调试中,XPath 仍然是不可或缺的技能。虽然 CSS 选择器越来越强大,但面对复杂 DOM 结构时,XPath 仍然更具灵活性。因此,掌握 XPath,不仅能提高自动化测试的稳定性,还能在爬…

尝试一下,交互式的三维计算python库,py3d

py3d是一个我开发的三维计算python库,目前不定期在PYPI上发版,可以通过pip直接安装 pip install py3d 开发这个库主要可视化是想把自己在工作中常用的三维方法汇总积累下来,不必每次重新造轮子。其实现成的python库也有很多,例如…

手机向电脑传输文件方法有哪些?

手机和电脑已经成为我们日常生活和工作中不可或缺的工具,而它们之间的文件传输需求也日益增加。为了帮助大家更高效地完成这一任务,本文将介绍三种常用的手机向电脑传输文件方法,方便您根据不同场景选择合适的方式。 方法1.数据线 当您有数…

【ESP32】ESP-IDF开发 | WiFi开发 | HTTP服务器

1. 简介 1.1 HTTP HTTP(Hyper Text Transfer Protocol),全称超文本传输协议,用于从网络服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档…

生成式聊天机器人 -- 基于Pytorch + Global Attention + 双向 GRU 实现的SeqToSeq模型 -- 下

生成式聊天机器人 -- 基于Pytorch Global Attention 双向 GRU 实现的SeqToSeq模型 -- 下 训练Masked 损失单次训练过程迭代训练过程 测试贪心解码(Greedy decoding)算法实现对话函数 训练和测试模型完整代码 生成式聊天机器人 – 基于Pytorch Global Attention 双向 GRU 实…

DeepSeeek如何在Window本地部署

一、Ollama Ollama 是一个开源的本地化大语言模型(LLM)运行工具,专注于简化大模型在本地环境中的部署、管理和交互。它支持多种主流开源模型(如 Llama 2、Mistral、Phi-2 等),并提供了命令行和 API 接口&am…

01-SDRAM控制器的设计——案例总概述

本教程重点▷▷▷ 存储器简介。 介绍 SDRAM 的工作原理。 详细讲解SDRAM 控制的Verilog 实现方法。 PLL IP和FIFO IP 的调用,计数器设计,按键边沿捕获,数码管控制。 完成SDRAM控制器应用的完整案例。 Signal Tap 调试方法。 准备工作▷…

实验5 配置OSPFv2验证

实验5 配置OSPFv2验证 1.实验目的 (1)OSPFv2 验证的类型和意义。 (2)配置基于区域的 OSPFv2 简单口令验证和 MD5 验证的方法。 (3)配置基于链路的 OSPFv2 简单口令验证和 MD5 验证的方法。 2.实验准备 配置…

Office/WPS接入DeepSeek等多个AI工具,开启办公新模式!

在现代职场中,Office办公套件已成为工作和学习的必备工具,其功能强大但复杂,熟练掌握需要系统的学习。为了简化操作,使每个人都能轻松使用各种功能,市场上涌现出各类办公插件。这些插件不仅提升了用户体验,…

基于STM32HAL库的万年历系统

目录 前言 项目分析 CubeMX配置 工程文件结构 App文件夹 Lib文件夹 库文件代码 myrtc.c myrtc.h oled库&字符库 knob.c knob.h 业务逻辑代码 task_main.c task_main.h 前言 本篇博客来做一个简易的万年历系统,需要用到旋转编码器和0.96寸OLED屏幕…

【Matlab优化算法-第14期】基于智能优化算法的VMD信号去噪项目实践

基于智能优化算法的VMD信号去噪项目实践 一、前言 在信号处理领域,噪声去除是一个关键问题,尤其是在处理含有高斯白噪声的复杂信号时。变分模态分解(VMD)作为一种新兴的信号分解方法,因其能够自适应地分解信号而受到…

蓝耘智算平台与DeepSeek R1模型:推动深度学习发展

公主请阅 前言何为DeepSeek R1DeepSeek R1 的特点DeepSeek R1 的应用领域DeepSeek R1 与其他模型的对比 何为蓝耘智算平台使用蓝耘智算平台深度使用DeepSeek R1代码解释:处理示例输入:输出结果: 前言 在深度学习领域,创新迭代日新…

5、大模型的记忆与缓存

文章目录 本节内容介绍记忆Mem0使用 mem0 实现长期记忆 缓存LangChain 中的缓存语义缓存 本节内容介绍 本节主要介绍大模型的缓存思路,通过使用常见的缓存技术,降低大模型的回复速度,下面介绍的是使用redis和mem0,当然redis的语义…

windows蓝牙驱动开发-调试及支持的HCI和事件

调试蓝牙配置文件驱动程序 开发蓝牙配置文件驱动程序时,可以使用驱动程序验证程序来协助其调试。 若要启用验证检查,必须为 Bthusb.sys 启用驱动程序验证程序。 如果不执行此操作,将禁用验证检查。 若要完全利用验证检查,请确保…

深度求索(DeepSeek)的AI革命:NLP、CV与智能应用的技术跃迁

Deepseek官网:DeepSeek 引言:AI技术浪潮中的深度求索 近年来,人工智能技术以指数级速度重塑全球产业格局。在这场技术革命中,深度求索(DeepSeek)凭借其前沿的算法研究、高效的工程化能力以及对垂直场景的…

xxl-job使用nginx代理https后,访问出现403异常问题解决

在nginx代理为https之前,xxl-job使用http访问是没有问题的,但是换为https后,访问就有以下报错: 很多接口都出现了403异常 DataTables warning: table idjob_list - Ajax error. For more information about this error, please s…

kafka 3.5.0 raft协议安装

前言 最近做项目,需要使用kafka进行通信,且只能使用kafka,笔者没有测试集群,就自己搭建了kafka集群,实际上笔者在很早之前就搭建了,因为当时还是zookeeper(简称ZK)注册元数据&#…

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

爬虫技巧汇总

一、UA大列表 USER_AGENT_LIST 是一个包含多个用户代理字符串的列表,用于模拟不同浏览器和设备的请求。以下是一些常见的用户代理字符串: USER_AGENT_LIST [Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Hot Lingo 2.0),Mozilla…