SuperRadar 社区共建案例|从全链路到真实车辆场景:A100 周界感知与 MTI 实验

0 阅读8分钟

作者介绍

黄涛 北京理工大学毫米波与太赫兹波技术在读博士生,研究方向太赫兹光电子学

社区贡献说明

本文为 SuperRadar 开发者贡献共建应用案例,作者基于 CTSAI-A100 真实车辆周界 ADC 数据,建立了一套面向车辆靠近 / 远离场景的 Range-Doppler 分析、MTI 杂波抑制与 LFMCW 参数实验工程。

项目工程位于:github.com/Super-Radar…

引言

本项目把真实场景中难以单独控制的带宽、Chirp 时宽、PRF、目标数量、目标速度与 MTI 阶数分开研究。

车辆靠近或者远离雷达时,ADC 中不仅包含车辆运动产生的回波,还混合着地面、道路设施、建筑物以及多径传播产生的静态和近静态反射。

车辆周界采集场景

这时,一些问题会变得更加具体:

  • 车辆运动在 Range-Doppler Map 中会呈现怎样的特征?
  • 大量能量集中在零 Doppler 附近时,MTI 能带来怎样的变化?
  • MTI 阶数越高,是不是一定越好?
  • 带宽、PRF、Chirp 时宽和目标速度,又分别影响了什么?

实验场景与数据

本项目实际采集数据如下:

场景Acquisition RunRX 数ADC TXT
空环境144
车辆靠近5420
车辆远离5420
合计11-44

本实验边界

ALL-channel 数据采集和保存存在明显时间开销。

因此,车辆靠近和车辆远离场景中的 5 个 Run,应该理解为:车辆处于不同位置和运动状态时采集得到的 5 组离散场景样本。

不能直接理解为严格等时间间隔的连续车辆轨迹。

同样,在这批运动车辆数据中,Rx0-Rx3 也不能直接假设为严格同时采集的 coherent array snapshot。

因此,本项目中的 Doppler FFT 与 MTI 均在“单个 ADC 文件内部的一帧 256 个 slow-time chirp”内完成,而不是跨多个 Run 做慢时间处理。

实测处理链

本次真实 ADC 的处理流程如下:

CTSAI-A100 ADC TXT
        ↓
Header / Payload / Trailer Check
        ↓
Packed uint32 → Signed int16
        ↓
Fast-time DC Removal
        ↓
Range FFT
        ↓
Range-Slow-Time Data
        ↓
MTI2 / MTI3
        ↓
Doppler FFT
        ↓
Range-Doppler Map
        ↓
近零 Doppler 能量统计

ADC 与 Range-Doppler 基础

本次实验继续使用 CTSAI-A100 ADC 原始数据作为输入。

数据解析方式沿包括:

  • Header / Payload / Trailer 校验;
  • 32-bit Packed Word 解包;
  • 16-bit ADC 二进制补码恢复;
  • Fast-time / Slow-time 数据重组。

以 Pf0 数据为例:

Ns=1024,Nc=256N_s=1024,\qquad N_c=256

每个 32-bit Packed Word 包含两个 16-bit ADC Sample,因此标准 Payload 包含:

Nword=NsNc2=131072N_{\mathrm{word}}=\frac{N_sN_c}{2}=131072

个 Packed Word。

完成解析后,单 RX 数据可以表示为:

Xq∈RNs×Nc\mathbf{X}_q\in\mathbb{R}^{N_s\times N_c}

本文不再重复展开 Packed ADC 的完整解包过程。

同样,关于 LFMCW 信号模型、Range FFT、Doppler FFT 以及距离 / 速度物理坐标的完整过程。

请参考上一篇文章*《社区共建 | 北京理工大学黄涛基于 A100 实现 MATLAB 全链路信号处理工程》。*

本文只保留后续需要使用的几个关键关系。

调频斜率:

S=BTrS=\frac{B}{T_r}

目标距离对应的主要距离频率:

fR=2SRcf_R=\frac{2SR}{c}

目标径向速度对应 Doppler Frequency:

fD=2vλf_D=\frac{2v}{\lambda}

其中波长为:

λ=cfc\lambda=\frac{c}{f_c}

对于理想点目标,可以近似表示为:

xp[n,m]=Apexp⁡(j2πfR,pnfs)exp⁡(j2πfD,pmTsameTX)x_p[n,m]=A_p\exp\left(j2\pi f_{R,p}\frac{n}{f_s}\right)\exp\left(j2\pi f_{D,p}mT_{\mathrm{sameTX}}\right)

Pf0 参数下的距离轴

Pf0 主要参数如下:

参数数值
载频 fc76.3 GHz
调频带宽 B300 MHz
Chirp Ramp Tr43 μs
Chirp Period Tc48 μs
ADC 采样率 fs25 MHz
Samples / Chirp Ns1024
Chirps / Frame Nc256
Range FFT Nr1024
Doppler FFT Nd256

调频斜率:

S=300×10643×10−6≈6.9767×1012 Hz/sS=\frac{300\times10^6}{43\times10^{-6}}\approx6.9767\times10^{12}\ \mathrm{Hz/s}

当前采样与 FFT 参数对应的距离栅格为:

ΔRbin=cfs2SNr≈0.52454 m/bin\Delta R_{\mathrm{bin}}=\frac{cf_s}{2SN_r}\approx0.52454\ \mathrm{m/bin}

对应 Nyquist 距离上限约为

Rmax⁡=cfs4S≈268.56 mR_{\max}=\frac{cf_s}{4S}\approx268.56\ \mathrm{m}

车辆靠近代表样本距离谱

距离分辨率与 FFT 栅格

完整调频带宽对应的经典 FMCW 理论距离分辨率:

ΔRres=c2B≈0.49965 m\Delta R_{\mathrm{res}}=\frac{c}{2B}\approx0.49965\ \mathrm{m}

当前 ADC 每个 Chirp 实际观测时间:

Tobs=Nsfs=40.96 μsT_{\mathrm{obs}}=\frac{N_s}{f_s}=40.96\ \mu\mathrm{s}

在该采样窗口内覆盖的线性调频带宽约为:

Bobs=STobs≈285.77 MHzB_{\mathrm{obs}}=ST_{\mathrm{obs}}\approx285.77\ \mathrm{MHz}

因此:

c2Bobs≈0.52454 m\frac{c}{2B_{\mathrm{obs}}}\approx0.52454\ \mathrm{m}

与当前 Range FFT 栅格基本一致。

这里两个数值虽然接近,但物理意义并不完全相同:

  • 约 0.5245 m/bin 表示当前 ADC 采样窗口及 FFT 参数下的距离坐标间隔;
  • 约 0.4997 m 表示完整 300 MHz 调频带宽对应的理论距离分辨能力。

Doppler 与速度轴

完成距离维处理后,对固定距离 bin 和通道观察 Chirp 序列。

若目标径向速度近似恒定,则慢时间相位满足

x[m]∝ej2πfDmTsameTX.x[m] \propto e^{j2\pi f_DmT_{\mathrm{sameTX}}}.

这里使用 TsameTXT_{\mathrm{sameTX}} 是为了兼容后续 TDM MIMO:当不同 TX 轮流发射时,同一个 TX 的有效慢时间采样周期可能是多个 Chirp Period。

Doppler FFT 写为

XD[k,ℓ,q]=∑m=0M−1Xr[k,m,q]wd[m]e−j2πℓm/Nd,X_D[k,\ell,q] = \sum_{m=0}^{M-1} X_r[k,m,q]w_d[m] e^{-j2\pi \ell m/N_d},

其中 MM 为有效 slow-time 样本数,NdN_d 为 Doppler FFT 点数。

执行 fftshift 后,零多普勒位于频谱中心。

多普勒频率与径向速度满足

v=λfD2.v=\frac{\lambda f_D}{2}.

Doppler FFT 的频率栅格为

ΔfD,bin=1NdTsameTX,\Delta f_{D,\mathrm{bin}} = \frac{1}{N_dT_{\mathrm{sameTX}}},

对应速度栅格

Δvbin=λ2NdTsameTX.\Delta v_{\mathrm{bin}} = \frac{\lambda} {2N_dT_{\mathrm{sameTX}}} .

若实际 slow-time 只采集 MM 个 Chirp,则 coherent processing interval 为

TCPI=MTsameTX,T_{\mathrm{CPI}} = MT_{\mathrm{sameTX}},

由有限观测时长决定的速度分辨尺度近似为

Δvres≈λ2TCPI=λ2MTsameTX.\Delta v_{\mathrm{res}} \approx \frac{\lambda}{2T_{\mathrm{CPI}}} = \frac{\lambda}{2MT_{\mathrm{sameTX}}} .

当 Nd>MN_d>M 时,Doppler 零填充可以让频谱栅格变得更密,但不会增加 CPI,因此不会等比例提高真实速度分辨能力。

这与距离维中“FFT 栅格”和“波形分辨率”之间的区别类似。

慢时间采样频率为

fs,slow=1TsameTX,f_{s,\mathrm{slow}} = \frac{1}{T_{\mathrm{sameTX}}},

所以无模糊多普勒范围近似为

∣fD∣<12TsameTX.|f_D| < \frac{1}{2T_{\mathrm{sameTX}}}.

转换成速度:

∣v∣<vmax⁡=λ4TsameTX.|v| < v_{\max} = \frac{\lambda}{4T_{\mathrm{sameTX}}} .

Pf0 SISO 配置下

TsameTX=48 μs.T_{\mathrm{sameTX}} = 48\ \mu s.

由 fc=76.3 GHzf_c=76.3\ \mathrm{GHz}:

λ=cfc≈3.9291 mm.\lambda = \frac{c}{f_c} \approx 3.9291\ \mathrm{mm}.

因此

Δvbin≈0.15988 m/s/bin,\Delta v_{\mathrm{bin}} \approx 0.15988\ \mathrm{m/s/bin},
vmax⁡≈20.46 m/s.v_{\max} \approx 20.46\ \mathrm{m/s}.

车辆靠近代表样本 Range-Doppler Map

为什么需要 MTI?

真实道路和室内环境中,固定反射面在连续 Chirp 之间的位置变化很小,因此对应的慢时间相位近似稳定,大量能量集中在 fD≈0f_D\approx0 的区域。

车辆、人体和其他运动目标则通过 chirp-to-chirp 相位变化产生非零多普勒。

MATLAB ADC 全链路工程在 Doppler FFT 之前提供多种慢时间杂波处理:

NONE
MEAN
MTI2
MTI3
SVD
SVD_MEAN
SVD_MTI2

不同方法对“稳定背景”的数学假设并不相同:

  • MEAN 直接去除常量慢时间分量;
  • MTI 用差分滤波器在零频构造零点;
  • SVD 则从整帧数据中寻找能量占主导的低秩相关子空间。

均值消除

对某个 range-channel 单元的慢时间序列:

x=[x0,x1,…,xM−1]T.\mathbf x = [x_0,x_1,\ldots,x_{M-1}]^T.

慢时间均值为

xˉ=1M1Tx.\bar x = \frac1M\mathbf1^T\mathbf x.

处理后:

y=x−xˉ1=(I−1M11T)x.\mathbf y = \mathbf x-\bar x\mathbf1 = \left( \mathbf I-\frac1M\mathbf1\mathbf1^T \right)\mathbf x.

记

P⊥=I−1M11T.\mathbf P_\perp = \mathbf I-\frac1M\mathbf1\mathbf1^T.

由于

P⊥1=0,\mathbf P_\perp\mathbf1=\mathbf0,

任何在一个 CPI 内保持严格常量的慢时间复分量都会被投影掉。

若目标速度很低、一个 CPI 内相位变化很小,则目标分量也可能与常量子空间具有较高相关性,因此均值消除并不只影响“背景”。

MTI2

最基础的二脉冲抵消器:

y[n]=x[n]−x[n−1]y[n]=x[n]-x[n-1]

Z 域中:

Y(z)=(1−z−1)X(z),Y(z) = (1-z^{-1})X(z),

对应传递函数:

HMTI2(z)=1−z−1H_{\mathrm{MTI2}}(z)=1-z^{-1}

令:

z=ejωz=e^{j\omega}

其幅频响应:

∣HMTI2(ejω)∣=2∣sin⁡(ω2)∣\left|H_{\mathrm{MTI2}}(e^{j\omega})\right|=2\left|\sin\left(\frac{\omega}{2}\right)\right|

运动目标对应的 Slow-time 数字角频率为:

ωD=2πfDTsameTX=4πvTsameTXλ\omega_D=2\pi f_DT_{\mathrm{sameTX}}=\frac{4\pi vT_{\mathrm{sameTX}}}{\lambda}

因此 MTI2 对不同目标速度的幅度响应:

A2(v)=2∣sin⁡(2πvTsameTXλ)∣A_2(v)=2\left|\sin\left(\frac{2\pi vT_{\mathrm{sameTX}}}{\lambda}\right)\right|

当目标速度接近零时,可以近似得到:

A2(v)≈4πTsameTXλ∣v∣A_2(v)\approx\frac{4\pi T_{\mathrm{sameTX}}}{\lambda}|v|

这给出了低速目标衰减的直接来源:速度越接近零,目标慢时间频率越靠近 MTI 的零点。

MTI3

项目代码中MT3同时测试了三脉冲抵消器:

y[n]=x[n]−2x[n−1]+x[n−2]y[n]=x[n]-2x[n-1]+x[n-2]

对应传递函数:

HMTI3(z)=1−2z−1+z−2=(1−z−1)2H_{\mathrm{MTI3}}(z)=1-2z^{-1}+z^{-2}=(1-z^{-1})^2

因此这里的 “3” 对应三脉冲结构,而差分阶数为二阶。

其幅频响应:

HMTI3(ejω)=−4e−jωsin⁡2ω2,H_{\mathrm{MTI3}}(e^{j\omega}) = -4e^{-j\omega} \sin^2\frac{\omega}{2},

其幅度为

∣HMTI3(ejω)∣=4sin⁡2ω2.|H_{\mathrm{MTI3}}(e^{j\omega})| = 4\sin^2\frac{\omega}{2} .

代入目标速度:

A3(v)=4sin⁡2(2πvTsameTXλ)A_3(v)=4\sin^2\left(\frac{2\pi vT_{\mathrm{sameTX}}}{\lambda}\right)

当目标速度趋近于零时:

A2(v)=O(∣v∣)A_2(v)=O(|v|)

而:

A3(v)=O(v2)A_3(v)=O(v^2)

三脉冲抵消器在零多普勒附近下降更快,因此静态背景抑制可以更深,但低速目标也会比 MTI2 更容易损失。

SVD 低秩杂波抑制

工程代码中还提供基于整帧数据的 SVD 处理。

将 Range Cube 的 range-channel 维展开:

X∈C(NrNch)×M.\mathbf X \in \mathbb C^{(N_rN_{\mathrm{ch}})\times M}.

奇异值分解:

X=UΣVH\mathbf X = \mathbf U \mathbf\Sigma \mathbf V^H

其中

σ1≥σ2≥⋯ .\sigma_1\ge\sigma_2\ge\cdots.

当环境中存在大面积稳定反射时,不同 range-channel 单元在慢时间上往往具有共同的强相关分量,这些分量会集中在较大的奇异值及其对应子空间中。

取前 rr 个奇异分量:

Xr=UrΣrVrH.\mathbf X_r = \mathbf U_r \mathbf\Sigma_r \mathbf V_r^H.

Eckart–Young 定理给出

Xr=arg⁡min⁡rank⁡(Z)≤r∥X−Z∥F.\mathbf X_r = \arg\min_{\operatorname{rank}(\mathbf Z)\le r} \|\mathbf X-\mathbf Z\|_F.

若将该低秩部分作为稳定背景估计,则

Xclean=X−UrΣrVrH\mathbf X_{\mathrm{clean}} = \mathbf X - \mathbf U_r\mathbf\Sigma_r\mathbf V_r^H

又因为

XVr=UrΣr,\mathbf X\mathbf V_r = \mathbf U_r\mathbf\Sigma_r,

可以改写为

Xclean=X(I−VrVrH).\mathbf X_{\mathrm{clean}} = \mathbf X \left( \mathbf I-\mathbf V_r\mathbf V_r^H \right) .

前 rr 个分量对应的能量比例为

ηr=∑i=1rσi2∑iσi2.\eta_r = \frac{\sum_{i=1}^{r}\sigma_i^2} {\sum_i\sigma_i^2}.

如果 rr 取得过大,持续存在或速度很低的真实目标也可能进入主导子空间,因此 SVD 的秩选择同样需要结合目标速度范围和实际场景。

车辆周界实测结果

距离谱

空环境、车辆靠近与车辆远离均提供物理距离轴结果:

车辆靠近距离谱

车辆靠近

分别比较:

MTI

MTI2

MTI3

车辆远离

同样比较 MTI 前、MTI2 与 MTI3:

MTI

MTI2

MTI3

空环境

空道路背景则用于观察环境中稳定静态反射在 MTI 前后的变化:

MTI

MTI2

MTI3

近零 Doppler 能量变化

从 Range-Doppler Map 可以看到,经过 MTI 后,零 Doppler 附近的大量稳定能量发生明显变化。

为了进一步进行量化,工程在约:

−0.32 m/s≤v≤0.32 m/s-0.32\ \mathrm{m/s}\le v\le0.32\ \mathrm{m/s}

的速度窗口内统计处理前后的频谱能量。

代表性 Rx0 结果为:

场景MTI2MTI3
Empty42.90 dB68.37 dB
Vehicle Approaching43.68 dB69.76 dB
Vehicle Receding42.23 dB67.70 dB

从当前样本可以看到,MTI3 在近零 Doppler 区域带来的能量变化明显高于 MTI2。

这些 dB 数值描述的是当前样本、当前速度窗口和当前归一化方式下的近零 Doppler 频谱能量变化。

参数实验与理论对应

调频带宽决定什么?

经典 FMCW 理论距离分辨率:

ΔRres=c2B\Delta R_{\mathrm{res}}=\frac{c}{2B}

分别比较对应:

调频带宽理论距离分辨率
150 MHz0.9993 m
300 MHz0.4997 m
450 MHz0.3331 m

可以看到,在其他条件近似不变时:增加有效调频带宽可以缩短距离脉冲响应主瓣,对相邻距离目标的分离更有利。

也就是说,当两个目标在距离维度非常接近时,更大的带宽更有利于形成可区分的距离响应。

Bandwidth Study

Chirp 时宽改变什么?

固定带宽 BB 时:

S=BTrS=\frac{B}{T_r}

目标距离对应的主要 Beat Frequency 为:

fR=2SRc=2BRcTrf_R=\frac{2SR}{c}=\frac{2BR}{cT_r}

因此:

fR∝1Trf_R\propto\frac{1}{T_r}

改变 Chirp 时宽会改变调频斜率,从而改变距离 → Beat Frequency之间的映射关系。

但只要完整有效带宽仍然保持为 BB,经典理论距离分辨能力依然主要由带宽决定。

另一方面,实际 ADC 采样率、采样窗口和最大 Beat Frequency 还会进一步影响实际的 FFT 栅格和可处理距离范围。

PRF 与速度范围

Chirp Period 为 TcT_c 时:

PRF=1TcPRF=\frac{1}{T_c}

在 SISO 条件下,无模糊速度近似为:

vmax⁡=λPRF4v_{\max}=\frac{\lambda PRF}{4}

因此PRF提高,可以扩大无模糊速度范围。

但如果 Slow-time 样本数 MM 保持不变:

TCPI=MPRFT_{\mathrm{CPI}}=\frac{M}{PRF}

速度分辨尺度近似为:

Δvres≈λPRF2M\Delta v_{\mathrm{res}}\approx\frac{\lambda PRF}{2M}

也就是说:当 Chirp 数量不变时,PRF 越高,CPI 会越短,速度主瓣也会变宽。

因此 PRF 不是简单的“越高越好”,而是涉及:无模糊速度范围与有效观测时间之间的权衡。

如果希望在提高 PRF 的同时维持 CPI,就需要同步增加 Chirp 数量。

目标速度为什么会影响 MTI?

目标径向速度通过:

fD=2vλf_D=\frac{2v}{\lambda}

映射到 Slow-time Frequency。

MTI2 对应:

A2(v)=2∣sin⁡(2πvTcλ)∣A_2(v)=2\left|\sin\left(\frac{2\pi vT_c}{\lambda}\right)\right|

MTI3 对应:

A3(v)=4sin⁡2(2πvTcλ)A_3(v)=4\sin^2\left(\frac{2\pi vT_c}{\lambda}\right)

当目标速度较小时:

A2(v)∼∣v∣A_2(v)\sim|v|
A3(v)∼v2A_3(v)\sim v^2

所以目标速度越低,MTI 后的相对幅度越容易下降。

提高 MTI 阶数虽然可以进一步削弱静态分量,也会扩大对极低速运动的影响。

MTI 阶数参数实验

多个目标靠得太近会怎样?

多个理想点目标可以表示为:

x[n,m]=∑p=1PApej2πfR,pn/fsej2πfD,pmTcx[n,m]=\sum_{p=1}^{P}A_p e^{j2\pi f_{R,p}n/f_s}e^{j2\pi f_{D,p}mT_c}

经过二维有限窗 DFT 后,可以近似表示为:

X[k,ℓ]≈∑p=1PApWr(k−kp)Wd(ℓ−ℓp)X[k,\ell]\approx\sum_{p=1}^{P}A_pW_r(k-k_p)W_d(\ell-\ell_p)

其中:

  • WrW_r 表示距离维窗函数的离散频率响应;
  • WdW_d 表示 Slow-time 窗函数的离散频率响应。

如果多个目标在距离和速度上间隔足够大,就可以形成相对独立的峰。

但当目标间隔逐渐接近距离或 Doppler 主瓣宽度时:不同目标响应会开始重叠。

这时,即使继续加入 CFAR、Peak Search 或亚栅格拟合,也仍然受到系统真实物理分辨能力的约束。

仿真与真实环境的差异

教学仿真中的目标通常被简化成一个理想点散射体:

xp[n,m]=Apej2πfR,pn/fsej2πfD,pmTcx_p[n,m]=A_p e^{j2\pi f_{R,p}n/f_s}e^{j2\pi f_{D,p}mT_c}

但真实车辆显然不是一个点。

一辆车辆可能同时包含:

  • 车头;
  • 车轮;
  • 车身金属结构;
  • 玻璃;
  • 不同姿态下形成的多个强散射中心。

真实环境中还存在:

  • 地面;
  • 建筑物;
  • 路缘;
  • 固定物体;
  • 环境多径。

因此,真实数据更接近:

x[n,m]=∑p=1PAp[n,m]ejϕp[n,m]+c[n,m]+w[n,m]x[n,m]=\sum_{p=1}^{P}A_p[n,m]e^{j\phi_p[n,m]}+c[n,m]+w[n,m]

其中不同散射中心的幅度和相位还会随着车辆运动不断变化。

因此,真实车辆的 Range-Doppler Map 往往会出现:

  • 多个局部散射峰;
  • 距离方向扩展;
  • 速度方向扩展;
  • 随姿态变化的幅度;
  • 靠近零 Doppler 的低速成分;
  • 多径叠加产生的复杂谱结构。

这也是为什么:仿真用于理解规律,真实数据用于观察实际问题。

二者不能简单一一对应。

仿真中的深零频陷波可以验证 MTI 的滤波器关系,但不能直接等价成真实硬件在任意环境中的固定抑制度;

同样,真实 ADC 中出现的某一条非零 Doppler 频带,也需要结合实际 TX 编码、慢时间周期和采集配置才能进一步解释为物理速度。

LFMCW 仿真结果

高采样率发射 Chirp:

LFMCW 发射信号时频图

仿真 Range-Doppler:

Simulation Range-Doppler Before MTI

Simulation Range-Doppler After MTI

参数实验:

Bandwidth Study

Chirp Duration Study

PRF Study

Target Number Study

Target Velocity Study

MTI Order Study

工程复现

项目工程位于:github.com/Super-Radar…

运行统一入口:

main

也可以分别执行:

run('tests/inspect_measured_dataset.m')
run('tests/check_measured_physical_axes.m')
run('tests/run_measured_physical_analysis.m')
run('tests/run_lfmcw_simulation.m')
run('tests/run_parameter_studies.m')

本项目局限性与物理解释边界

为了避免对实验结果做超出数据本身的解释,本项目保留以下边界:

5 个车辆 run 是离散采样,不用于重建严格连续轨迹;

Rx0-Rx3 在运动车辆条件下不作为严格同时相干阵列快照,因此本文不基于这批数据宣称严格四通道 DOA;

真实车辆是扩展目标,车身、轮毂、玻璃、金属结构、地面、多径会产生多个散射中心;

MTI3 在零 Doppler 具有二重零点,静态背景抑制更深,但极低速目标损失也更明显;

MATLAB 教学仿真用于解释参数关系,不等价于真实硬件在所有场景中的检测性能。

在 SuperRadar 社区,一次实验、一组数据、一段代码、一套算法,甚至一个有价值的问题反馈,都可以成为后来者继续研究的起点。

欢迎基于现有项目继续复现、修改和探索,也欢迎通过 GitHub Issue、Pull Request 分享你的代码、数据和应用案例。