基于动态双注意力机制的跨模态行人重识别模型

2022-11-08 12:43李大伟曾智勇
计算机应用 2022年10期
关键词:三元组灰度行人

李大伟,曾智勇*

(1.福建师范大学 计算机与网络空间安全学院,福州 350117;2.福建师范大学 数字福建大数据安全技术研究所,福州 350117)

0 引言

行人重识别是跨越多个不重叠监控摄像机检索特定行人图像的技术。目前,绝大多数研究者关注的是可见光下的行人重识别问题,并取得了较大进展。然而,由于成像机制不同,跨模态图像模态间存在巨大差异,跨模态行人重识别技术面临巨大挑战,解决该问题对公共安全和刑侦有着非常重要的现实意义,对加强社会管理、预防犯罪行为发生、维护国家安全等方面具有广阔的应用前景[1]。

相较于单模态行人重识别来说,跨模态行人重识别由于行人在不同模态下图像之间的差异比在各自单模态下的差异大得多,如图1 所示,图1(a)关注的是可见光到可见光之间图像的匹配,而图1(b)关注的是红外到可见光之间图像的匹配,因此,对于跨模态行人重识别来说,直接应用这些单模态方法效果不佳。

现有的大多数方法是通过特征对齐的方式对图片进行预处理,再通过一个单流网络或双流网络去学习不同模态的可共享的特征表示。如Ye等[2]将可见光图像的三个通道逐像素做线性累加,得到辅助的灰度图像,然后将三种模态的图像经过一个参数共享的单流网络,学习不同模态间共享的特征表示。其他一些学者通过对抗生成网络(Generative Adversarial Network,GAN)生成某种模态对应的另一模态的图像来减小不同模态间的差异。如Dai等[3]首次把GAN 运用在跨模态行人重识别上,并提出了一个具有交叉模态三重损失的对抗生成训练框架,以共同区分不同身份和模态。Wang等[4]提出一种对齐生成对抗网络(Alignment Generative Adversarial Network,AlignGAN),利用像素对齐和特征对齐学习到对鉴别不同身份有益的特征。然而,这种全局特征学习的方法对背景中的噪声格外敏感,不能较好地解决模态差异问题。此外,一些学者也积极地将注意力机制运用到行人重识别中。如Ye等[5]设计了一个动态双注意力聚合(Dynamic Dual-attentive AGgregation,DDAG)学习模型,该模型包括模内加权部分聚合(Intra-modality Weighted-Part Aggregation,IWPA)模块和跨模态图形结构化注意力(Crossmodality Graph Structured Attention,CGSA)模块。IWPA 的目标是通过同时挖掘每个模态中行人身体不同部位之间的上下联系,得到一个具有区分度的局部聚合特征表征。CGSA利用不同模态图像特征的邻近结构关系去学习两个模态的全局特征,结合两种模态之间的结构关系去加强特征表达能力。但对于跨模态行人重识别来说,由于有限的样本和模态间存在较大的模态差异,神经网络在学习中很容易被噪声样本污染从而造成不稳定。

为了解决上述问题,受Ye等[2,5]方法的启发,本文提出了一个新的跨模态行人重识别模型。为了在有限样本中学习到充分的特征信息,在模型开始的输入部分,输入两组图片分别对同一个网络进行训练:第一组图像是可见光和红外图像的组合;第二组图像加入了通过齐次增强方式生成的可见光图像对应的灰度图像。这些灰度图像保留了可见光图像的结构信息,由于红外图像不包含任何颜色信息,因此结构信息对跨模态匹配是至关重要的。此外,经过灰度化的图像在风格上更加接近红外图像,这对于拉近可见光和红外图像的特征分布是有益的[2]。其次,为了缩小同一个行人的不同模态图像特征间差异,提出了适用于三个模态间图像的加权六向三元组排序(Weighted Six-Directional triple Ranking,WSDR)损失,该项损失充分利用了所找出的硬三元组中的信息,整体优化了不同模态间特征的相对距离,提高了对模态变化的鲁棒性,从而改善跨模态行人重识别的性能。

本文的主要工作如下:

1)提出了一个新的跨模态行人重识别网络模型,通过利用齐次增强的灰度图像进行多模态学习,进一步提升网络模型的性能。

2)为多视图检索提出了一个加权六向三元组排序损失,有效缩小了同一行人不同模态间图像特征在特征空间中的距离,从而减少了模态间差异。

3)通过大量实验来分析验证所提模型的有效性,为未来的研究提供了一个有效提升模型性能的方式。在两个公共跨模态(可见光-红外)数据集上均取得了较高的识别准确率。

1 相关工作

1.1 单模态行人重识别

单模态行人重识别是对不同单模态摄像机拍摄到的行人图像进行匹配的过程。但是,由于在不同的场合下行人的姿态、着装、遮挡以及光照等变化都会对匹配产生较大的影响,最终造成识别精度的降低。开始阶段的研究工作主要通过利用方向梯度直方图(Histogram of Oriented Gradient,HOG)特征[6]、尺度不变特征变换(Scale Invariant Feature Transform,SIFT)特征[7]、Gabor 特征[8]以及局部二值模 式(Local Binary Pattern,LBP)[9]等方法,使用人工的方式进行行人特征提取,再利用相对距离比较(Relative Distance Comparison,RDC)[10]、大边际邻近(Large Margin Nearest Neighbor,LMNN)[11]分类、交叉视角的二次判别分析(Crossview Quadratic Discriminant Analysis,XQDA)[12]、概率相对距离比较(Probabilistic Relative Distance Comparison,PRDC)[13]、局部Fisher 判别分析(Local Fisher Discriminant Analysis,LFDA)[14]等算法进行度量学习。然而,由于人工提取特征的效率限制,已无法适应当前大数据的特征提取任务。随着深度神经网络的出现和发展,有学者将其运用到了行人重识别中,取得了较好的效果。已有的工作通过全局特征[15-16]或部分特征学习[17-19]在端到端的深度学习模型上取得了较高的准确率;然而,这些方法通常无法处理跨模态图像间的模态差异,从而无法应用到跨模态行人重识别上。

1.2 跨模态行人重识别

跨模态行人重识别旨在解决不同种模态图像之间的行人匹配问题,例如红外图像到可见光图像之间的匹配识别[20-21]、图像和文本描述等非视觉数据之间的匹配[22]、可见光图像与素描图像之间的匹配[23]等。

对于可见光到红外的行人重识别,Wu等[24]提出了一种深度零填充的方法,解决了图像结构不同无法用同一神经网络训练问题。Ye等[25]设计了一个双流网络来学习多模态可共享特征,同时处理具有双重约束的跨模态高阶损失和模态内变化。Zhu等[26]提出了异质中心(Hetero Center triplet,HC)损失,通过约束两个异质模态之间的类内中心距离来监督网络学习跨模态图像间的不变信息,以减少类内交叉模态的变化。Hao等[27]提出了一种端到端的双流超球面流形嵌入模型来约束模态内和模态间的变化。此外,一些方法还利用特定模态分类器的优势来促进特征学习[28-29];然而,这些方法通常侧重于学习全局特征表示,而忽略了行人之间具有区分度的局部特征及同一行人不同模式图像之间的潜在关系。

近两年来,随着对抗生成网络(GAN)的不断发展,该技术也被运用到跨模态的行人重识别中。Wang等[20]提出一种双层差异减少方法,利用GAN 生成可见光(红外)图像对应的红外(可见光)图像,形成统一的多光谱图像,减少了模态间差异。Wang等[4]提出一种对齐生成对抗网络,该模型由像素对齐模块、特征对齐模块和联合鉴别器组成,可以联合利用像素对齐和特征对齐。这样不仅能够缓解模态间和模态内的变化,而且能够学习到基于身份的一致性特征。目前来说尽管GAN 在跨模态行人重识别中取得了一定的成功,但训练GAN 模型非常困难,需要消耗大量的计算资源。同时,利用GAN 生成新图像时容易引入噪声,影响跨模态行人重识别的精度。相比之下,通过线性累加可见光图像三个通道像素得到的灰度图像就会避免上述问题,并且生成的灰度图像还很好地保留了原始图像的结构信息。

1.3 注意力机制

注意力机制已经广泛应用于各种深度学习应用中,以增强数据的特征表示。对于行人重新识别研究来说,注意力机制被用来组合来自不同视频帧的时空信息[30]。一些工作[31]还研究了使用多尺度或不同的卷积通道来捕获像素级或小区域级关注。Yin等[32]提出了局部注意机制,通过一个可学习的转换函数来细化局部聚合特征,以考虑一个人不同身体部位之间的重要性。然而,这些注意力机制对于较大的交叉模态差异和噪声,可能无法取得较好的效果。

2 本文方法

本文基于数据增强和注意力机制提出了一个新的跨模态行人重识别模型,整体网络框架如图2 所示。

2.1 多输入的跨模态行人重识别

在本文模型中,为神经网络模型输入了两组图像,其中一组是由可见光和红外图像组合而成,另一组由可见光图像、红外图像和由可见光图像生成的灰度图像组成。两组图片都参与标签损失与三元组损失的计算,这样就充分利用了有限的图像资源学习到更加优秀的图像特征。该网络是采用了单流网络与双流网络相结合的方式,用以提取和合并不同模态图像的特征。在早期为了学习到不同模态图像间具有区分度的特征,采用了双流网络;不同流中的卷积模块的网络参数是独立的,从而可以更好地捕获到具有特定形态的低级模态特征。由于可见光图像和灰度图像在结构信息上更加地相似,因此将可见光和灰度图像送入同一个网络流中进行学习。区别于前面两种图像,红外图像的特征更加独特,因此让其单独通过一个网络流。为了学习到不同模态之间可以共享的特征,对网络后面的卷积模块进行了参数共享。在获取到卷积特征并将其通过全局平均池化后,增加一个共享的批量归一化层来学习共享特征嵌入。

对于可见光图像的灰度化,直接将可见光的R、G、B 三个通道的像素进行累加,从而得到增强数据。与运用GAN的方法相比,这种生成图片的方式基本不会额外增加训练时间,这种数据增强的方式也不会额外地引入噪声,从而降低模型训练的效果。

2.2 同质和异质共享多模态分类器

2.2.1 模态共享身份分类器

模态共享身份分类器为三种不同的模态特征学习一个共享分类器θp。表示使用θp分类器将可见光图像特征预测成图像标签为yi的输出概率。相同地,和分别代表了灰度图像和红外图像特征,其中上标{v,r,g}表示模态的索引。假设每个训练批次包含了n个可见光图像、n个齐次增强的灰度图像和n个红外图像,则标签损失表示如下:

2.2.2 齐次不变正则化

为了增强对模态变化的鲁棒性,本文引入了齐次不变正则化[2]。其主要思想是原始可见图像和均匀增强灰度图像的特征通过特征网络提取后保持不变[2]。具体来说,采用平滑L1 损失作为正则化:

其中:B表示当前批次图像集合表示身份标签为i的可见光图像通过神经网络得到的特征向量表示身份标签为i的灰度增强图像通过网络得到的特征向量。

将这一部分总的损失称作双重同质和异质识别损失(Dual Homogeneous and Heterogeneous Identification loss,DHHI),则

DHHI 通过两组输入充分利用了有限的图片资源,学习到了更加充分的图像特征。

2.3 面向多视图检索的加权六向三元组排序损失

本节介绍了为多视图检索设计的加权六向三元组排序(WSDR)损失,它优化了在跨模态多视图检索间(可见-红外-灰度)的关系。

2.3.1 信息三元组挖掘

上述SDR 损失充分利用了不同视角下的跨模态三态关系。它使最远的交叉模态正对距离和最近的负对距离之间的相对差异最小化,提高了对模态变化的鲁棒性;SDR 损失使所学到的跨模态特征更具有可区分性。

2.3.2 三元组全局加权

这部分损失仅用在第二组含有3 个模态图像的特征上,其中对于第一组的双模态输入的图像用常规三元组损失进行计算,记作Ltri。

2.4 注意力机制

目前大多数跨模态行人重识别方法倾向于学习全局表征,这使得模型的区分能力和鲁棒性不足;然而,基于局部特征的单模态行人重识别的方法由于跨模态的差异而无法得到可靠的局部特征;此外,并且当两种模态之间图像差异变大时,模型的学习容易受到噪声的干扰而变得不稳定。为了解决这些问题,集成了IWPA 模块[5]和CGSA 模块[5]来进一步提高模型的识别性能。

1)模态内加权部分注意力(IWPA)。为了挖掘输入图片特征的上下文信息,以形成增强的部分聚合表示,从而应对复杂的挑战,本文在上述深度网络中加入模态内加权部分注意力(IWPA)模块。该模块首先用一个改进的非局部模块学习模态内部分注意力,然后用一个可学习的加权部分聚集策略和残差归一化来稳定和加强训练过程,最终得到一个带有注意力加权的图片特征。该部分的损失定义如下:

2)跨模态图形结构化注意力(CGSA)。CGSA 通过学习两个模态间的结构关系以加强特征表示。该模块的主要思想是属于同一身份的不同模态图像的特征表示是互利的。为了引导跨模态图形结构化注意力模块学习,CGSA 引入了一个具有单输出结构的图形注意层,其中最终输出节点特征由表示。其中是通过CGSA 模块计算获得,采用负对数似然损失函数进行图形注意力学习,损失函数定义为:

3)动态双重聚合学习[5]。用像素级部分聚合特征学习损失Lp作为主导损失,然后逐步添加图像级全局特征学习损失Lg进行优化。这样做的主要原因是在早期阶段用Lp学习像素级特征表示更容易。随着网络不断的学习,图像级全局特征学习使用跨模态的人物图像之间的关系来优化特征,表示为:

其中:t是训练轮数;T()代表前一个训练轮数的平均损失值;代表当前轮数跨模态图形结构化注意力损失数值。在这个动态更新框架中,图像级全局损失Lg逐步加入到整个学习过程中。

最终的总损失由Ldhhi、Lwsdr、Ltri、Lp和Lt组成,定义如下:

其中:β作为超参数控制着SDR 损失的贡献。DHHI 优化了具有身份监督的参数共享网络,使得网络学习到多模态身份不变特征;WSDR 损失Lwsdr提供监督以优化从6 个视图检索的相对距离;Lp、Lt分别从像素级和图像级学习到了模态内和模态间特征关系,加强了特征表示。这几个组件针对跨模态行人重识别模型学习进行了联合优化。

3 实验与结果分析

3.1 实验设置

3.1.1 数据集

为了评估了模型的性能,在两个公开的跨模态行人重识别数据集(SYSU-MM01[24]和RegDB[36])上进行了实验验证。

SYSU-MM01 数据集是由6 个不同的摄像机收集的大规模数据集,包括4 个通用可见光摄像机和2 个近红外摄像机,该数据集包含395 个训练身份,包括22 258 张可见图像和11 909 张近红外图像,图4 给出了两个不同身份的行人在6个不同摄像机下拍摄到的图片。

测试集包含另外95 个测试身份,具有两种不同的评估设置,分别是全局搜索和室内搜索。在这两种设置中,查询集是相同的,包含从两个红外摄像机捕获的3 803 幅图像。在全局搜索模式下,图库集包含从所有4 个可见光相机捕获的所有可见光图像;在室内搜索模式下,图库集仅包含由两个室内可见光相机捕获的可见光图像。完全按照现有的方法[5]执行图像候选集的10 次检索实验,并给出平均检索性能。

3.1.2 评估指标

本文使用累计匹配特性(Cumulative Matching Characteristics,CMC)曲线和平均精度均值(mean Average Precision,mAP)作为评价指标。CMC 统计在前r次检索结果中出现正确的人物图像的概率,当r=1时,代表Rank-1 精度;r=5时,代表Rank-5 精度,以此类推。mAP 是衡量图库集中出现多个匹配图像时的检索性能。

3.1.3 实施细节

该模型在PyTorch 框架上实现,使用单个NVIDIA Tesla P100 GPU 进行模型训练。模型采用ResNet50 作为骨干网络进行特征提取,网络初始化采用ImageNet 预处理后的模型参数。采用在PyTorch 中内置的灰度化函数(Grayscale(3))来为每个可见图像生成灰度图像。首先将输入图像调整到288×144,然后采用随机补零和随机水平翻转进行数据增强。对于注意力机制部分采用了文献[3]中同样的设置。采用随机梯度下降(Stochastic Gradient Descent,SGD)优化器进行优化,动量参数设置为0.9。将两个数据集的初始学习率都设置为0.1,学习率在第20 个Epoch 时衰减到0.01,在第50 个Epoch 时衰减到0.001,在两个数据集上总共有80 个训练轮次。将WSDR 损失中的裕量参数ρ设置为0.3,默认设置β=0.2。在测试阶段,使用批量归一化(Batch Normalization,BN)层的输出进行检索,并使用原始可见图像进行特征提取。在此,将所提出的模型称作BADIN。

3.2 消融实验

3.2.1 组件评估

首先在全局搜索和室内搜索两种模式下对大规模SYSU-MM01 数据集进行评估。表1中,“B”代表基线模型,使用原始的DDAG 模型[5]。“H0”代表额外增加一组输入图像,通过模态共享身份分类器得到标签损失进行训练。“DHHI”代表了在模型中加入了DHHI。“SDR”代表普通的六向三元组排序损失。“WSDR”代表带有加权的SDR 损失。

由表1 可以看出,当额外加入一组带有灰度图片输入时,与基线模型B 相比,额外添加一组输入的性能显著提高,即Rank-1 精度从0.547 5 变为0.568 1,提升了2.06 个百分点,证明了带有灰度图像的额外输入对跨模态人识别的有效性。当进一步在模型中加入DHHI 损失时,两种设置下的性能都得到了进一步提高,这表明了平滑L1 损失有效地通过中间模态拉近了可见光和红外的特征距离,提高了识别性能。当在模型中结合了SDR 损失,检索性能大幅提升,表明SDR 损失为减小类内间距、增大类间间距提供了强有力的监督。最后当根据距离差异对SDR 损失进行加权计算时,性能略有提高。从整体来看,在全局搜索模式下,与DDAG 基线模型相比,所提模型在Rank-1 和mAP 评价指标上分别提升了4.66 和3.41 个百分点。

步骤4 将决策变量决策变量Wli的值Wlit代入下层模型目标函数中,获得下层模型函数目标值θ,s-,s+及目标值符合满意值范围时(下层约束条件),则转入步骤5;如果目标值未达到满意值范围时,根据松驰变量s-,s+的值,调整的Wlit值,转入步骤1。

表1 在SYSU-MM01数据集上所提出的每个组件的评估Tab.1 Evaluation of each proposed component on SYSU-MM01 dataset

3.2.2 参数评估

为了评估所提总损失函数中超参数β(式(17))的影响。其在SYSU-MM01 数据集上全局搜索模式下的影响结果如图5 所示。加权六向三元组排序损失充分利用了不同视角下的3 种模态间的关系,这增强了对跨模态变化的鲁棒性。根据实验结果,在所有实验中将β设置为0.2。

3.3 深入分析

3.3.1 加权六向三元组排序损失

不同的三元组损失变体的性能比较,如表2 所示。与硬挖掘的三元组损失(Triplet(Hard))[37]、加权三向三元组排序损 失(Weighted Tri-Directional triple Ranking loss,WTDR)[2]相比,所提出的加权六向三元组排序损失通过显式优化6 个不同视图中的跨模态关系来实现更高的性能,取得了较好的效果。

表2 不同三元组损失变体下的Rank-1和mAPTab.2 Rank-1 and mAP under different triplet loss variants

3.3.2 IWPA及CGSA有效性分析

对于本文加入的IWPA 和CGSA 模块,也对其进行了有效性分析,结果如表3 所示。其中Base 模型表示BADIN 去除了IWPA、CGSA 模块以及它们所对应的计算损失。从表3 可以看出,Base 模型在全局搜索的模式下取得了0.573 3 的Rank-1 和0.542 6 的mAP;在Base 的基础上分别加入IWPA和CGSA 模块后,Rank-1 和mAP 都有了一定程度的提高;当两者同时加入时,与Base 相比,Rank-1 和mAP 分别提高了2.08 和2.17 个百分点。从实验结果可以看出,IWPA和CGSA 模块对模型效果的提升是有益的。此外,Base 模型比所采用的DDAG 基线模型在Rank-1 的准确率上还高出2.58个百分点。这也从侧面证明了本文模型的有效性。

表3 IWPA、CGSA模块的有效性验证Tab.3 Validity verification of IWPA module and CGSA module

3.3.3 复杂度分析

本节比较了本文模型与基线模型(DDAG)的额外计算时间和参数量。从表4 中可以看出,与DDAG 模型相比,本文模型的参数量只增加了1.05×106,几乎可以忽略不计,而时间的增加量较多。这是由于在输入时多增加了1.5 倍的数据量,从而导致训练时间也增加了1.46倍,总体而言相较于DDAG 模型来说并未引入额外较大的计算开销。

表4 不同模型的计算开销Tab.4 Computational overhead of different models

3.3.4 t-分布式随机邻居嵌入分析

从SYSU-MM01 数据集上随机选择的10 个身份的t-分布式随机邻居嵌 入(t-distributed Stochastic Neighbor Embedding,T-SNE)绘制了图6,包括可见光图像和红外图像在通过初始模型和训练后的模型的特征分布,其中每一个颜色代表一个不同的身份。由图6 可以观察到,在初始模型上可见光图像和红外图像的特征分散在两个不同的区域。将相同图片输入训练过后的模型中,可以观察到来自不同模态的每个身份的特征被聚集到嵌入空间同一位置中,说明了模型是有效的。

3.4 与现有技术的比较

将与现有的跨模态行人重识别方法进行比较,通过此项对比实验进一步验证了提出的解决方案的有效性。对比对象主要包括:

1)传统特征提取方法。HOG[38]、局部最大出现次数(Local Maximal Occurrence,LOMO)特征[12]。

2)基于GAN 的模型。双层差异减少学习(Dual-level Discrepancy Reduction Learning,D2RL)模型[20]、AlignGAN[4]。

3)深度度量学习。双向中心约束的top-ranking(Bi-Directional center-constrained Top-Ranking,eBDTR)模型[25]。

4)基于共享特征学习方法。Zero-Padding[24]、AGW[39]、DDAG[5]以及超球面流形嵌入(HyperSphere Manifold Embedding,HSME)[27]、模态意识协同(Modality-aware Collaborative,MAC)学习[28]、特定模态表示(Modality-Specific Representations,MSR)学习[29]等。其中DDAG 模型通过动态双注意力模型学习到了更加有效的特征表示,实现了良好的性能。

在SUSY-MM01 数据集上的两种查询模式的实验结果(表5)表明,所提模型在性能相较于现有技术有着一定程度的提高,在具有挑战性的SYSU-MM01 数据集全局查询模式下实现了59.41%的Rank-1 精度和56.43%的mAP。

表5 在SYSU-MM01数据集上本文方法与先进水平方法的性能比较Tab.5 Performance comparison of the proposed method and advanced methods on SYSU-MM01 dataset

在RegDB 数据集(表6)上的实验结果表明,所提模型在两种查询设置中都获得了较高的性能,对于可见光到红外查询设置,Rank-1 和mAP 的数值分别为70.53%和66.76%。

表6 在RegDB数据集上本文方法与先进方法的性能比较Tab.6 Performance comparison of the proposed method and advanced methods on RegDB dataset

该实验结果表明,模型可以通过额外的一组图像输入来学习更好的跨模态共享特征表示。但由于RegDB 数据集较小、图片风格相近,导致额外的一组训练没能取得较大的提高,因此相较于SYSU-MM01 数据集来说,精度提升的幅度较小。

4 结语

本文为跨模态行人重识别提出了一个新的基于数据增强学习的方法。通过额外增加一组由可见光、红外和齐次增强得到的灰度图像组成的输入,用两组输入图像对网络模型进行联合训练。进一步加强了对有限图像中特征的利用,提高了模型匹配的精度。同时,引入了加权六向三元组排序损失进一步优化跨模态三元组的相对距离,这个策略对所挖掘到的困难三元组的信息进行了充分的应用,有效地减小了同一身份不同模态间的特征距离,也增大了不同身份间的特征距离。对于文中所引用的注意力模型也通过实验证明了它的有效性。实验结果表明,该模型在跨模态行人重识别的任务上取得了有效的精度提升。但本文模型中所采用的注意力模块较为复杂,从而导致训练需要花费较长时间,因此未来的工作将优化注意力机制,提高模型训练的整体效率。

猜你喜欢
三元组灰度行人
TransP:一种基于WordNet中PartOf关系的知识图谱嵌入方法
采用改进导重法的拓扑结构灰度单元过滤技术
毒舌出没,行人避让
基于卷积神经网络的知识图谱补全方法研究
天津港智慧工作平台灰度发布系统和流程设计
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
K-VQA:一种知识图谱辅助下的视觉问答方法
基于多特征语义匹配的知识库问答系统
Arduino小车巡线程序的灰度阈值优化方案
路不为寻找者而设