当前位置: 首页 > news >正文

TI 毫米波雷达开发系列之mmWave Studio 和 Visuiallizer 的异同点雷达影响因素分析

TI 毫米波雷达开发之mmWave Studio 和 Visuiallizer 的异同点

  • 引入
  • 整个雷达系统研究的目标
  • 分析影响这个目标的因素
    • 硬件影响因素 —— 雷达系统的硬件结构(主要是雷达收发机)
      • AWR1642芯片硬件系统组成
        • MSS 和 DSS 概述
        • MSS 和 DSS 分工
        • BSS的分工
        • AWR1642 组成及分工总结
      • 雷达收发机对雷达检测效果的影响
        • 影响雷达测距效果的因素
        • 测速及其他指标的影响
        • 三种调参方式的对比
    • 软件影响因素—— 信号处理的流程
      • Demo存在的问题
      • 软件原因分析
        • 软件流程5大步骤
        • matlab 代码演示
        • 处理阶段分析
        • 原因分析
        • 2DFFT的重要性
        • mmWave studio
  • 不定期更新

引入

接触毫米波以来,陆陆续续有人问 mmWave Studio 和 Visuializer 这两个软件的异同点,本文将从原理性和结构性的角度去分析这两个软件的功能和作用,其中会以TI毫米波雷达系统为例穿插雷达系统的基本目标、影响雷达系统检测性能的因素、雷达系统的结构和信号处理流程等内容。阅读本文不仅能够认识mmWave Studio 和 Visuializer 这两个软件的作用,还会建立一点关于雷达系统结构和雷达信号处理基本知识的认知。

整个雷达系统研究的目标

所有雷达系统的基本原理都是向外辐射电磁波,一部分电磁波碰到障碍物返回,然后这部分电磁波被雷达接收机接收,通过对回波的分析提取信息,关注的对象称为目标,我们关心的是目标的参数,再TI毫米波雷达领域常见的是距离、速度、角度。当然目标的识别(表面积、形态之类的 ,人 车 自行车 静目标、动目标等等)。明确了雷达研究的主要内容之后,我们来看看哪些因素会影响到雷达的检测性能。

分析影响这个目标的因素

整个影响因素可以分为两大方面:软件方面 和 硬件方面。接下来我们把这两个方面是如何影响雷达系统工作能力的掰开揉碎了看一看。

硬件影响因素 —— 雷达系统的硬件结构(主要是雷达收发机)

谈到硬件,就不得不提系统的硬件结构,这个也是我们做雷达相关课题非常关心的一个内容。本文以TI毫米波雷达芯片AWR1642为例,分析该系统的硬件结构及各自分工。其他的芯片在结构方面于AWR1642基本类似,可参考具体的芯片数据手册。附AWR1642芯片数据手册下载地址。

AWR1642芯片硬件系统组成

首先看下面的第一张图,一颗AWR1642 芯片由三部分组成——Radar Front End 、 Intergrated MCU、 Intergrated DSP ,通常情况下被称为 BSS \ MSS \ DSS三个子系统。图中 ARM Cortex-R4F 和 TI C674x 分别是MCU和DSP内核的型号,因此这颗芯片也叫双核SOC。

MSS 和 DSS 概述

雷达前端在后面详细展开讨论,先关注MSS和DSS两个子系统。MSS和DSS其实并不神秘,MSS就是一颗MCU,俗称单片机。所以大可认为这里有一个STM32,只不过STM32的内核是ARM Cortex-M3/M4的,而AWR1642 MSS里面的MCU内核是ARM Cortex-R4F。DSS里面认为是一颗DSP芯片,DSP是(Digital Signal Processor)数字信号处理器的意思,也是一颗类似单片机的计算芯片,曾经的市场上MCU、DSP、FPGA三分天下,当时的MCU处理能力还没上来,FPGA成本又太高,DSP得益于其独特的哈佛结构和多指令并行处理技术在性能上大大优于MCU的同时又比FPGA成本低了很多,所以红极一时,但是随着技术的发展现在MCU的处理越来越强,很多高性能MCU里面集成了DSP核用于数值计算。DSP的并行处理在FPGA面前又是个弟弟,Zynq这种芯片成本也大幅下降。所以DSP目前处于相对家道中落的阶段,在大众的视野中出现的频率没有那么高,但并不代表DSP已经失去了用武之地,在一些音视频处理、通信等需要复杂计算的应用上面,DSP还是在发光发热,只不过可能单芯片DSP不那么常见了。TI是全球最早生产销售的DSP芯片的老牌半导体厂家,所以他家的芯片里面用DSP也不足为奇,有多年的技术积累做铺垫。当然我个人一直觉得TI有想再让DSP重归人们视野的冲动,这个就属于个人臆想了。

MSS 和 DSS 分工

接下来看看为什么要再AWR1642中选择1颗MCU + 1颗 DSP这种配置的合理性,MSS和DSS各自的作用是什么。MSS和DSS中MSS偏重控制,DSS偏重计算。这里的控制是指0.通信(CAN\SPI\I2C\串口)、使能、外围器件的控制等功能,处理Flash读写数据、LED灯状态、串口数据收发等等任务都是常规且单片机擅长的事情,这些事情给MSS做。雷达信号处理中会有1DFFT、2DFFT\3DFFT和众多算法,DSP最擅长FFT变换,偏激一点可以说DSP就是为FFT而生的,这个活交给MCU去干花费的时间远远大于DSP,会导致系统整体的相应时间加长,即影响实时性,这在部分雷达应用中是大忌,举个例子:用以检测前方行人的雷达在车速很高的即将撞上行人的时候还在计算不能及时预警,那简直是笑话。所以他们两兄弟DSS支撑完成雷达信号的快速计算和处理,算完的结果丢给MSS,MSS把该存的存、改发的发,分工明确,效率最大。DSS和MSS合起来又叫Process System。

BSS的分工

到这里MSS和DSS两个系统还成不了气候,接下来看看BSS(Radar Front End)。这个子系统才是让这颗芯片称为雷达芯片的原因,从雷达的基本原理可知,雷达就是完成发射电磁波然后接收电磁波,对接收到的电磁波信号进行处理的设备。所以完整的雷达系统一定要有一套收发系统,即雷达收发机,雷达收发机可以是分体的也可以是一体的,AWR1642采用一体式雷达收发机,雷达收发机集成到了芯片内部。所以BSS的任务就是产生和发射电磁波信号,然后接收电磁波信号并进行模拟部分的处理。

AWR1642 组成及分工总结

所以一个单片机 、一个DSP、一个雷达收发机组成了一个雷达系统,这三个系统本来是分立且独立的系统,只不过现在被集成在一颗芯片里面了,但是本质上的组成还是没有变化。所以总体的分工是BSS收发电磁波进行模拟部分的处理后,数据经过ADC转换成数字信号,然后丢给DSS,DSS处理之后结果丢给MSS,MSS把结果改存的存,改发送的发送。三者各自独立又相互协调,通过一些特殊的机制保证协同工作,组成了一个完整的雷达系统。
在这里插入图片描述

雷达检测效果影响因素分析2P-TI毫米波雷达系统组成和分工

雷达收发机对雷达检测效果的影响

接下来详细看看影响雷达系统工作的关键硬件结构——雷达收发机。雷达收发机本身就是个涉及射频原理的很复杂的领域,个人认为雷达的精髓就这个系统里面,篇幅受限不深入探讨,这里只做基本的介绍,雷达收发机分雷达发射机和雷达接收机,各自成系统,来看下方一个细化的系统结构图,这里面由很多部件构成,包括高精度时钟、功率放大、低噪放、混频器、滤波器等等,需要知道的是,这些部件并非出场设定一成不变,可以配置这些部件的工作过程,举个例子,可以配置滤波器的截止频率、通带带宽、发射天线、接收天线的开关、信号的增益、ADC位数、采样率、采样方式等等。那为什么要配置这些呢?因为这些是影响雷达检测性能的关键因素之一。

在这里插入图片描述

影响雷达测距效果的因素

雷达可以发射的电磁波信号的种类不止有一种,有定频连续波、多频连续波、线性调频波 、脉冲波等。这部分关于雷达体制的内容也不过多赘述,TI的雷达芯片AWR1642发射的是线性调频波(LFMCW),线性调频波又分锯齿波和三角波,AWR1642是锯齿波雷达。锯齿波就是在一定的扫频周期内,信号的频率随着时间线性增加的波形。这个波形的时间-幅度图像如下图所示,单个线性调频波又叫一个Chirp,Chirp有扫频初始频率、扫频时间、扫频带宽、扫频斜率等指标。
在这里插入图片描述
频率-时间图像如下所示:
在这里插入图片描述
接下来分析一个雷达能够检测的最基本的物理量——距离。雷达测距性能通常表现在两个指标上——测距范围、测距精度。线性调频波的最大测距范围由下面的公式确定,其中IFmax与ADC采样频率有关,C是 光速,固定值,S是线性调频波的扫频斜率。
在这里插入图片描述
测距精度由光速和B决定,B是线性调频波的带宽。
在这里插入图片描述
以上两个公式告诉我们一个道理——可以通过调整线性调频波的波形去调整雷达的最大测距范围和测距精度。理想的状态是测距范围大同时测距精度高,但现实中肯定是要对二者做协调,既保证精度又保证测距范围。所以针对不同的应用,自然要根据实际的测距范围和测距精度去设计一组合适的线性调频波参数来满足项目或课题的要求,也就是设计或者调整Chirp的参数。

测速及其他指标的影响

以上我们举例说明了测距的两个关键因素,那测速也有指标:最大不模糊速度和最大测速范围。最大测速范围由下面的公式决定:
在这里插入图片描述
速度分辨率由下面的公式决定:
在这里插入图片描述
这里引入了两个新的变量:Chirp 的时间和Chirp 的个数。所以新指标的引入需要额外考虑影响Chirp波形的新参数。值得一提的是Chirp的参数之间也是互相限制的,不可能让人随心所欲的调大调小,所以需要做多个因素下的协调。

另外一些需要关注的与Chirp无关的参数如ADC采样时间、ADC采样率、不同的目标因为材料,反射特性等因素需要考虑滤波器通带的频率范围、有些目标反射特性不好就要调整发射机的增益,但是增益增加会导致功率增加或者干扰的引入…需要考虑众多因素。

那雷达的检测效果是这些参数综合影响的结果,不同的应用对指标的要求不一样,最终需要调整的参数就不一样,通过调整和协调得到一组最合适的参数就是我们的目标,当然这些参数有范围限制,有的参数相互之间有函数关系,此消彼长,有的参数也不是越大越好,需要调整的参数也并不只有以上的几个,需要调整的参数其实就是mmWave studio 里面所有的页签下,能改的几乎都是可调的参数。
在这里插入图片描述

mmWave Studio中可调参数众多,而且很多参数不知道会怎样影响结果,也就不知道怎么调整。好消息是,并不是参数调不好其他的工作就不能做。除过一些极个别的情况,一般情况下,选用TI官方的默认参数就可以支撑做后续的工作了,调参是个优化的过程。就像很多算法一样,参数调不好只是效果不好,但并不会影响算法的基本功能的表达。但是想得到一个好的检测效果,一组合适的参数必定是绕不开的。

三种调参方式的对比

以上说明的过程我们统称雷达射频前端的调参过程,知道了参数调整很重要,那么实际情况需要调参的时候我们会怎么操作?
根据是否有DCA1000分为两种方案:

  1. 使用CCS自己写程序代码或者使用官方例程找到里面关于射频前端配置的代码段进行修改。即通过DSP内核或者ARM内核进行控制。从下面的图可以知道,BSS里面其实也有一个Cortex-R4F的MCU,处理来自MSS的配置命令,然后配置雷达射频前端。且不说你要搞明白上电到配置到结果输出整套流程,也不说新建工程搭配置环境要花费的时间和精力,程序代码花费时间和精力,假设你的程序没问题,修改参数,编译、烧录,看现象,编译连接下载的时间大家知道,低效率显而易见。
    在这里插入图片描述

  2. 修改Demo的配置文件。
    很多Demo都可以通过cfg文件进行命令的配置。比如ODS_AOP这种Demo,通过配合mmwave SDK User‘s Guide 就可以直接修改想要的参数。
    在这里插入图片描述
    这种方式效率稍高。但是要看运气,有的Demo可以通过配置调整参数,有的不行。有的只允许调整一部分参数,有的Demo应用方向和你的课题相近,有的却风马牛不相及,有的参数好配、应用也差不多,但是适配的板卡和芯片信号不一样,而且最终调整的结果怎么看——只能通过Vrisualizer看,但由于耦合了很多的其他因素的影响,其实从最终的结果上很难看到雷达射频前端参数修改带来的效果上得到增益,想得到一组合适的参数就更难了,原因这里我们先埋个雷,软件部分说完就明白了。

  3. 使用DCA1000,DCA1000配合mmWave Studio 的使用演示在下面的视频有介绍,

    AWR1642+DCA1000数据捕获参数设置步骤演示&使用经验&技巧

视频中为什么要点来点去的原因就是直接配置BSS的过程,这个过程相比上面的方式,是不是简单和高效多了,只需要在输入框直接输入参数或者选择参数就好了,直接配置完了,不会限制哪个能配哪个不能配,配置完的效果可以快速且直接地在mmWave Studio 上看到,甚至你可以只修改某一个变量看看这个变量修改之后对结果有什么影响,怎么看我们也在软件部分提到。

以上对比可以得出第一个硬件方面的结论 :参数配置过程中,DCA1000要方便很多,使用配置文件或者修改程序的方式低效且无用。另外Demo+Visualizer是针对某一个应用或者某一个板卡特殊设计的,不具通用性,针对不同的Demo的Visualizer也不通用,这样就必然会被束手束脚,带来各种各样适配的问题。但是mmWave Sudio 和 DCA1000 不挑板卡,不挑应用领域,只是对雷达射频前端进行配置,不会其他因素的影响。后面在软件影响因素分析的部分,我们还会得出同样的结论。

软件影响因素—— 信号处理的流程

Demo存在的问题

我们来看TI官方关于汽车雷达的一个例程,这个例程演示了雷达前方车辆目标检测结果。这个演示中,右侧是是真实场景,左侧就是Visualizer软件运行的结果,TI对实际场景中的目标和Visualizer中的目标进行了重点标注。这个标注会让我们把注意力锁定在红色圈中,感觉就是检测的效果还不错。但同样应该关注标注之外的内容,目标检测的重点不仅仅是凸显目标,同时要抑制非目标,放眼整张图来看,图中多处出现虚假目标、“鬼影“的问题。
在这里插入图片描述
当然这也是被称为演示的原因,我们的目标肯定是尽量完整的检测出目标,但实际情况确实这些检测出来的目标点是否是真实目标、是否存在虚警和漏检。检测到的目标距离速度信息能否反应真实目标的距离速度,偏差有多少,精度有多少。可以肯定的一点是,绝大部分的项目不能直接搬运例程的结果,就算是同样的应用场景,你也会发现,例程检测的结果也会有上述问题,这个锅算法要背一大部分。(接下来看看算法是怎么影响的)
在这里插入图片描述

软件原因分析

软件流程5大步骤

之前的雷达系统硬件结构可以知道,通过ADC,雷达射频前端和处理子系统之间的通路打通了,接收机的信号经过ADC送到ADC Buffer,DSP和MCU对ADC数据进行计算、处理,最后输出目标的距离等信息,我们来看看从ADC原始数据开始,数据是怎么被处理,一步步得到目标的信息的。雷达信号处理顶层时序在TI的文档中给出了明确的处理流程,整个过程分为1DFFT - 2DFFT - CFAR - Post Processing - 角度和坐标计算 - 结果输出。输出的结果使用可视化的方式展现出来就是Vrisuallizer的形式。
在这里插入图片描述

matlab 代码演示

上面这样干巴巴的提这个流程没有直观的感受,我用程序把整个处理过程用图的形式给大家展示一下,下图分别是从2DFFT - CFAR - 聚类的过程,(不涉及角度计算和坐标确定),最终有角标的是真实的目标的信息。将2DFFT结果中只有带角标的地方是真正的目标。其他的尖峰都是杂波或者噪声引起的。CFAR和聚类处理后图上面就剩3个目标点了,真实的目标点包含在这个三个目标点中。
在这里插入图片描述

处理阶段分析

按照个人的理解人为地将整个处理过程分为三个阶段

  1. 信号变换阶段(包含1DFFT 、 2DFFT ) ,通常情况下,我们会把ADC数据称为原始数据,这里我称2DFFT结果为原始数据,,2DFFT之后的图叫RDM(Range-Doppler Map)。ADC数据反映的是时域的信息,我们关心的距离、速度这些内容在时域信息中看不到,但是通过1DFFT、2DFFT这些信息可以在RDM中直观的看到。从信息的角度看,1DFFT、2DFFT 这两个过程只是做了域变换,即时域到频域的变换,相当于换了一个角度看这些数据,并没有信息的损失。
  2. 提取关键点(目标点)阶段,也叫数据的预处理阶段,这个阶段统称目标检测。输入的数据是2DFFT结果,输出是提取的目标点。里面最常用的算法就是CFAR算法,当然并不仅仅包含CFAR算法,理论上来讲,只要是对2DFFT结果进行处理提取关键信息点的处理都可以归类到这个部分里面。上面峰值聚类也在这个阶段。可以明确的是,这个阶段就有信息的损失了,因为CFAR就是把原来2DFFT的点筛出来我们想要的几个点了。
  3. 后处理阶段, 这个阶段就是在目标点的基础上进行再处理,包括角度、切片、分类、滤波等。输入是2阶段提取出的目标点,是对目标点的再处理。所以这部分也会损失/修改信息。
    在这里插入图片描述
原因分析

从上面的图目标提取的过程可以看到算法的本质工作提取有效信息,剔除无效信息的过程。问题在于,提取的不准,剔除的也不全。所以搞雷达算法的人就集中去研究这一步分的内容,选取什么样的算法更有效、算法有什么改进的地方、该选取什么参数…都是这里面要解决的问题。所以搞雷达算法的人关心的只有三个部分:输入数据、算法逻辑、输出结果。输入数据和输出结果是必要的,知道输入是什么,期望的输出是什么,才能看算法有没有起到作用。很类似函数的调试,输入1,期望输出是5,实际输出是3,那你就要深入函数内部看看哪里做错了。这个也是一样的,原始数据中首先要包含有效信息,即包含目标,然后算法逻辑处理过后是否能够提取到有效目标,目标和实际的差别有多大。这其中原始数据和处理逻辑两个变量可以解耦,处理逻辑不受原始数据的约束,但是最终结果有效一定是原始数据和处理逻辑都正确的情况。算法逻辑与具体的算法相关,这里我们不做讨论。我们关心原始数据,目的是保证原始数据的正确,所以能看到原始数据是你评估算法有效性的必要条件。
DCA1000 和 mmWave Studio 能满足这个需求。DCA1000和mmWave Studio能够采集到原始的ADC数据并保存成bin文件,解析bin文件就能拿到ADC数据,经过1DFFT和2DFFT拿到RDM。RDM中直观的看到目标的信息。

2DFFT的重要性

到这一步就能理解能够看到原始2DFFT结果数据是非常重要的一个环节,也就是说2DFFT结果-RDM图是个非常重要且承上启下结点。启下的意义在于知道原始数据可以评估算法的有效性,对于后续的算法处理可以单纯在软件平台让你研究算法本身的逻辑。承上的意义在原始方案评估的时候可以快速评估。很多TI的雷达项目在启动阶段要快速评估雷达能不能用、好不好用。

如果通过去跑官方的例程,在Vrisuallizer上面分析那几个目标点是否符合实际情况这种方式,我们刚刚提到了,这个时候已经是经过多道算法处理的结果了,可能存在虚警、漂移、漏检等问题,这里面漏检和漂移是比较头疼的问题,虚警直接剔除目标点就行。所以有可能是算法和算法参数影响导致本来有的点被干掉了,那你觉得没检测出来,就PASS掉这个方案,但其实本来RDM图上面有,只是你看到的结果没有,就像流言一样,从刚开始的人口说出来,转了几道手,到你这可能得出的结果就是错的。

所以最好能听到最原始的版本,方案评估的时候也要拿到最原始的版——直接看RDM图,原始数据不损失信息,大脑里面有最高级的算法,一眼过去就知道有没有目标了,哪些是目标,哪些是干扰。评估环境的改变、目标的改变、参数的影响等等一切变化对结果的影响都可以通过看RDM图看出来,可以控制变量的去观察,实现了和算法的解耦,有效的数据存下来,至于怎么提取信息丢给算法去做,算法能不能做好是另外一回事情。

mmWave studio

上面这些问题的解决用mmWave Studio + DCA1000的bin文件捕获功能和 RDM观察窗口。环境搭好,采集一次数据,直接观察RDM图像,怀疑是哪里影响了结果,直接改哪边就行,看看改了以后RDM图上有没有明显变化,不停的重复这个过程,这个过程你不关心具体的数据是多少,只是看个大概的图像和变化的趋势,所以mmWave Studio 可以看图但是不方便看数据,所以叫DCA1000叫评估板,评估的过程就是大概看看行不行有没有这样一个趋势,不关心细节。想要细节,DCA1000+mmWave Studio的另外一个作用来了,捕获原始的ADC数据通过bin文件输出, 在matlab 或者 python工具中,ADC的每个值你都能拿到,哪里是最大值,最大值是多少,这个信噪比能不能满足要求,都可以计算。采到有效数据了或者建立一个数据集,去搞算法,算法通了去搞软件,写到DSP上。我刚刚展示的就是这样的一个过程。上面的小尾巴就回答完了。

所以返回来再来看看Visuallizer 是把结果通过串口输出然后接收数据显示的过程,串口输出的数据已经是经过CFAR和聚类甚至其他算法处理的结果了,他的本质就是一个GUI,是最终的目标数据给你展示了一下而已。可以直接把它理解成一个特殊应用点的好看的串口调试助手,其他方面一点作用没有。目前为止只有一个例程,能够通过Vrisualizer看到RDM图像,这里的是实数了,并且经过对数运算了。理论上可以这么搞。将就,数据的保存、同步、数据集的制作、串口的速率限制等等都是问题。

总结一下: 要知道自己的主要工作是哪些,面临的问题是什么、要用哪些工具和方法去解决问题,可以分为 选型、 方案评估、软件开发、硬件开发、算法等。后面我们也会展开分析一下。各个阶段要做什么事情,用什么工具,需要具备哪些基础知识等等。

不定期更新

相关文章:

TI 毫米波雷达开发系列之mmWave Studio 和 Visuiallizer 的异同点雷达影响因素分析

TI 毫米波雷达开发之mmWave Studio 和 Visuiallizer 的异同点 引入整个雷达系统研究的目标分析影响这个目标的因素硬件影响因素 —— 雷达系统的硬件结构(主要是雷达收发机)AWR1642芯片硬件系统组成MSS 和 DSS 概述MSS 和 DSS 分工BSS的分工AWR1642 组成…...

SpringBoot事务处理

一、事务回顾 回顾地址: 深入理解数据库事务(超详细)_数据库事务操作_Maiko Star的博客-CSDN博客 事务: 是一组操作的集合,是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败 事…...

网络安全—自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…...

首页以卡片形式来展示区块链列表数据(Web3项目一实战之五)

我们已然在 Web3 分布式存储 IPFS(Web3项目一实战之四) 介绍了什么是IPFS,以及在本地电脑如何安装它。虽然在上一篇讲解了该怎么安装IPFS,也做了相应的配置,但在本地开发阶段,前端总是无法避免跨域这个远程请求api的”家常便饭的通病“。 很显然,对于出现跨域这类常见问…...

opencv使用pyinstaller打包错误:‘can‘t find starting number (in the name of file)

使用Python语言和opencv模块在pycharm中编辑的代码运行没问题,但是在使用pyinstaller打包后出现错误can‘t find starting number (in the name of file) [ERROR:0] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-q3d_8t8e\opencv\modules\videoi…...

4.一维数组——用数组处理求Fibonacci数列前20项

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、结果显示 前言 本系列为一维数组编程题,点滴成长,一起逆袭。 一、题目描述 用数组处理求Fibonacci数列前20项 二、题目分析 前两项:f[20]{1,1} 后18项:for(…...

讯飞星火知识库文档问答Web API的使用(二)

上一篇提到过星火spark大模型,现在有更新到3.0: 给ChuanhuChatGPT 配上讯飞星火spark大模型V2.0(一) 同时又看到有知识库问答的web api,于是就测试了一下。 下一篇是在ChuanhuChatGPT 中单独写一个基于星火知识库的内容…...

第十三章 深度解读预训练与微调迁移,模型冻结与解冻(工具)

一个完整的代码 pythonCopy codeimport torch import torchvision import torchvision.transforms as transforms import torch.nn as nn import torch.optim as optim # 设置设备(CPU或GPU) device torch.device("cuda" if torch.cuda.is_a…...

tinyViT论文笔记

论文:https://arxiv.org/abs/2207.10666 GitHub:https://github.com/microsoft/Cream/tree/main/TinyViT 摘要 在计算机视觉任务中,视觉ViT由于其优秀的模型能力已经引起了极大关注。但是,由于大多数ViT模型的参数量巨大&#x…...

解决ssh -T git@github.com报错connection closed问题

解决ssh -T gitgithub.com报错connection closed问题 问题解决 问题 $ ssh -T gitgithub.com kex_exchange_identification: Connection closed by remote host Connection closed by 20.205.243.166 port 22解决 参考链接 $ ssh -T -p 443 gitssh.github.com...

新手如何购买保险,保险投资基础入门

一、教程描述 本套保险教程,大小2.63G,共有11个文件。 二、教程目录 第01课 保险到底有什么用.mp4 第02课 已有社保还需要商业保险吗.mp4 第03课 你必须要懂的保险基础知识.mp4 第04课 关于重疾你必须要知道的几件事情.mp4 第05课 家庭重疾险如何…...

基于springboot网上超市管理系统

基于springboot网上超市管理系统 摘要 随着互联网的快速发展,电子商务行业迎来了蓬勃的发展,网上超市作为电子商务的一种形式,为消费者提供了便利的购物体验。本文基于Spring Boot框架,设计和实现了一个网上超市管理系统&#xff…...

FlagEmbedding目前最好的sentence编码工具

FlagEmbedding专注于检索增强llm领域,目前包括以下项目: Fine-tuning of LM : LM-Cocktail Dense Retrieval: LLM Embedder, BGE Embedding, C-MTEB Reranker Model: BGE Reranker 更新 11/23/2023: Release LM-Cocktail, 一种通过模型融合在微调时保持原有模型通用…...

rabbitMQ发布确认-交换机不存在或者无法抵达队列的缓存处理

rabbitMQ在发送消息时,会出现交换机不存在(交换机名字写错等消息),这种情况如何会退给生产者重新处理?【交换机层】 生产者发送消息时,消息未送达到指定的队列,如何消息回退? 核心&…...

STM32 MAP文件

文章目录 1 生成Map2 map中概念3 文件分析流程3.1 Section Cross References3.2 Removing Unused input sections from the image(移除未使用的段)3.3 Image Symbol Table 映像符号表3.4 Memory Map of the image(映像的内存分布)…...

云原生Kubernetes系列 | Kubernetes静态Pod的使用

云原生Kubernetes系列 | Kubernetes静态Pod的使用 静态pod不建议在master上操作,因为master上跑的是集群核心静态pod,如果配置失败,会导致集群故障。建议在knode1或knode2上去做。 kubernetes master节点上的核心组件pod其实都是静态pod: [root@k8s-master ~]# ls /etc/ku…...

二次创作Z01语言

目录 一,字符集 二,编译分词 三,token含义 四,Z01翻译成C 五,执行翻译后的代码 六,打印Hello World! 一,字符集 假设有门语言叫Z01语言,代码中只有0和1这两种字符。 二&#…...

【蓝桥杯国赛真题28】Scratch行驶的汽车 少儿编程图形化编程 中小学生第十四届蓝桥杯scratch国赛真题讲解

目录 scratch行驶的汽车 一、题目要求 编程实现 二、案例分析 1、角色分析...

LeetCode Hot100 236.二叉树的最近公共祖先

题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节…...

ERROR: Could not find a version that satisfies the requirement torch

在windows 上安装pip install torch torchvision torchaudio 报错: ERROR: Could not find a version that satisfies the requirement torch (from versions: none) ERROR: No matching distribution found for torch 解决办法: 将python版本降到3.11…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

今日科技热点速览

🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...