Investigation of Multimodal Features, Classifiers and Fusion Methods for Emotion Recognition(情绪识别的多模态特征,分类器和融合方法研究)

摘要

自动情绪识别是一项具有挑战性的任在本文中,我们展示了我们为基于音频视频的野外情感识别(EmotiW)2018挑战的子挑战所付出的努力,该挑战要求参与者从六种普遍情感中为视频剪辑分配单个情感标签(Anger ,厌恶,恐惧,幸福,悲伤和惊喜)和中立。所提出的多模态情感识别系统考虑了音频,视频和文本信息。除了手工功能外,我们还通过传递学习从深度神经网络(DNN)中提取瓶颈特征。评估时间分类器和非时间分类器以获得最佳单峰情绪分类结果。然后通过Beam Search Fusion(BS-Fusion)计算并融合情绪可能性。我们在EmotiW 2018挑战中测试了我们的方法,我们获得了有希望的结果:测试数据集的60.34%。与基线系统相比,有显着的改善。更重要的是,我们的结果仅比获胜者低1.5%。

1.介绍

随着人工智能的发展,人们对实现更自然的人机交互(HMI)系统产生了浓厚的兴趣。情感作为人机界面的一个重要方面,也越来越受到人们的关注。由于情感识别的复杂性和应用情景的多样性,单一形态很难满足需求。考虑音频,视频,文本和生物信息的多模态识别方法可以提高识别性能。
基于音频视频的野外情绪识别(EmotiW)挑战的子挑战在情绪识别中起着重要作用。 Acted Facial Expressions in the wide(AFEW)数据集是EmotiW挑战的数据集。组织者为参与者提供了一个评估其识别系统的开放平台。第一次EmotiW挑战是在2013年举办的。今年是第6次挑战。七种情绪的识别准确率每年都在增加:41.03%[2],50.37%[3],53.80%[4],59.02%[5],60.34%[6]。
在情绪分类中提取更多的辨别特征是很重要的。在深度神经网络(DNN)普及之前,帧级手工特征被广泛研究和利用,包括方向梯度直方图(HOG),局部二值模式(LBP) ,局部相位量化(LPQ)和尺度不变特征变换(SIFT)。三个正交平面(TOP),总结功能(FUN),费舍尔矢量编码(FV),空间金字塔匹配(SPM)和词袋(BOW)也被用来捕捉时间信息。现在,基于DNN的方法在许多领域产生了最先进的性能。然而,由于AFEW数据库中的训练样本有限,复杂的DNN难以训练。为了解决这个问题,采用了迁移学习。然后从微调模型中提取瓶颈特征。
分类器在情绪识别中也很重要。刘等人利用在向量空间中运行的偏最小二乘(PLS),Logistic回归(LR)和核支持向量机(KSVM)对黎曼流形上的数据点进行分类以进行情感识别。 Kaya等选择极限学习机(ELM)和内核极限学习机(KELM)来建模模态特殊功能,这些功能比SVM更快,更准确。最近,还测试了许多时间模型,例如长期短期记忆(LSTM),门控递归单位(GRU)和3D卷积网络(C3D)。
为了获得更好的性能,融合不同模态的融合方法至关重要。融合方法可分为特征级融合(或称为早期融合),决策级融合(或称为后期融合)和模型级融合。大多数团队在过去的挑战中选择了后期融合。 Vielzeuf等讨论了五种融合方法:多数投票,均值,ModDrop,得分树和加权均值。他们发现加权平均值是最有效的融合方法,具有较小的过度拟合风险。欧阳等人利用强化学习策略找到最佳融合权重。
在EmotiW 2018 中,我们参与了基于音频视频的子挑战。任务是为视频剪辑分配单个情感标签,分类准确度是比较度量。在本文中,我们提出了我们的多模态情感识别系统,如图1所示。不同模态的特征是基于多个分类器单独训练的。情感可能性由BS-Fusion融合。与EmotiW挑战中的先前解决方案相比,我们的创新主要集中在三个部分:1.多模式功能:据我们所知,它是第一次考虑文本,身份和背景信息。 2.分类器:研究了不同类型的聚合模型,包括NetFV,NetVLAD,NetRVLAD和SoftDBoW。 3.融合方法:he Beam Search Fusion (BS-Fusion)被提出用于模态选择和权重确定。
其余论文的结构如下。多模态特征和各种分类器分别在第2节和第3节中说明。在第4节中,我们关注我们提出的BS-Fusion。数据集和实验结果分别在第5节和第6节中说明。第7节总结了整篇论文。

图1:所提出的多模态情绪识别系统的概述。 来自不同模态的特征基于多个分类器被单独训练。 情感可能性由BS-Fusion融合。

2.多模式功能

在我们的方法中,会考虑音频,视频和文本功能以提高识别性能。 除了手工功能外,还考虑了从微调模型中提取的瓶颈特征。

2.1音频功能
在本节中,将讨论多种音频功能。 除了手工功能集外,还评估了自动语音识别(ASR)声学模型,SoundNet和VGGish的瓶颈特征。

2.1.1基于OpenSMILE的音频功能。
OpenSMILE工具包用于提取音频特征集,包括eGemaps(eGeMAPSv-01.conf)[34],IS09(IS09_emotion.conf),IS10(IS10_paraling.conf),IS11(IS11_speaker_state.conf),IS13( IS13_ComParE.conf)和MFCC(MFCC12_0_D_A.conf)。 为了提取这些特征集,首先在25ms帧内提取声学低级描述符(LLD),覆盖频谱,倒谱,韵律和语音质量信息,窗口移位为10ms。 然后,通过LLD计算平均值和最大值等统计函数,以获得段级特征。 我们在论文中测试了两个段长度:100ms和整个话语的长度。
2.1.2 ASR瓶颈特征。 我们从ASR声学模型中提取瓶颈特征。 首先,我们培训具有500小时自发和重音普通话语音库的中国ASR系统。 ASR声学模型有六个隐藏层。 前五层有1024个节点,最后一层有60个节点。 由于大多数发言者在AFEW数据集中使用英语,我们使用300小时的英语语料库对中国ASR系统进行微调,因为英语语料库有限。 然后,我们从两个声学模型中提取瓶颈特征:英语ASR声学模型和中国ASR声学模型。

图2:ASR声学模型的架构。 从波形中提取的FBank特征用作输入。 ASR声学模型的最后一层被视为瓶颈层。
2.1.3 SoundNet瓶颈功能。
我们从SoundNet网络中提取瓶颈功能,通过利用在野外收集的大量未标记的声音数据来学习丰富的自然声音表现。 SoundNet网络是一个1维卷积网络,由完整的卷积层和池层组成。 在本文中,我们将原始波形分成多个1段。 然后将这些段视为网络的输入,我们从图3中的conv7层提取SoundNet瓶颈特征。

图3:SoundNet网络的架构。 使用未标记的视频作为桥梁将视觉知识转换为声音模态。
2.1.4 VGGish瓶颈功能。
VGGish网络接受了AudioSet 的培训,其中包含超过200万个带有超过600个音频事件类别的人类标记的10s YouTube视频音轨。在本文中,VGGish网络用作特征提取器。 我们将原始波形分成多个1段。 从段中提取的对数谱图被视为输入。 VGGish从fc2中提取具有语义意义的高级128D嵌入功能。 然后利用主成分分析(PCA)提取归一化特征。

图4:VGGish网络的结构。 输入对数谱图为96×64。 黄色框,绿色框和灰色框分别表示2D卷积层,最大池化层和完全连接层。 黄色框内的数字是过滤器的数量,灰色框内的数字是神经元的数量

2.2视频功能
在本文中,我们提取了多个视频功能。除了手工制作功能,如三个正交平面的局部二值模式(LBPTOP),HOG和密集SIFT(DSIFT),还考虑了从VGG,DenseNet和C3D中提取的瓶颈特征。此外,我们还考虑了几何特征,背景特征和身份特征。
2.2.1手工视频功能。
通常,面部特征由两部分组成:外观特征和几何特征。至于外观特征,LBPTOP功能在以前的EmotiW挑战中被广泛使用。基本LBP功能在使用统一代码时具有59个功能。 LBPTOP功能将LBP从二维扩展到三维,它们独立地在XY,XT和YT平面上应用相关描述符,并将直方图连接在一起。除LBPTOP功能外,还测试了LBP,HOG,HOGLBP和DSIFT功能。 HOGLBP功能在XY平面上应用HOG描述符,在XT和YT平面上应用LBP描述符,然后将它们连接在一起。至于DSIFT功能,它相当于在固定比例和方向的图像上的密集网格上执行SIFT描述符。至于几何特征,考虑头部姿势和地标。情感与地标和头部姿势有关。当人们感到中立时,地标的移动相对较小。当人们感到悲伤时,他们往往会低下头。因此,我们会考虑这些标记为地理要素的功能。
2.2.2 CNN瓶颈特征。
为了从图像中提取瓶颈特征,选择VGG(配置“D”)和DenseNet-BC结构。 在本文中,VGG和DenseNet-BC网络在ImageNet上进行了预训练,并在(面部表情识别+)FER + 和野外静态面部表情(SFEW)2.0数据库中进行了微调。 灰度图像被视为输入。 对于VGG网络,我们从图5中的conv5-b,conv5-c,fc1和fc2中提取瓶颈特征。 至于DenseNetBC结构,我们从最后一个平均池层中提取瓶颈特征,标记为pool3。

图5:VGG网络的结构。 输入图像为64×64像素。 其他组件的含义与图4中的定义相同。

图6:DenseNet-BC [43]网络的结构。 输入图像为64×64像素。 有三个密集块。 黄色框和绿色框分别表示卷积层和平均合并层。
2.2.3 C3D功能。
C3D网络是2D卷积过程的扩展,其捕获视频的时空特征。 C3D网络在之前的EmotiW挑战中显示了其性能。 C3D的体系结构如图7所示。在本文中,C3D网络在sports1M 上进行了预训练,并在AFEW数据库上进行了微调。 它需要连续16帧作为输入,具有8个重叠帧。 fc6的输出被用作瓶颈功能。

图7:C3D网络的结构。 它需要连续16张图像作为输入。 每张图像裁剪为112×112像素。 黄色框表示3D卷积层。 其他组件的含义与图4中的定义相同。
2.2.4背景功能。
背景信息有助于判断情绪状态。恐惧往往伴随着昏暗的环境。快乐往往伴随着明亮的环境。为了考虑背景信息,我们将Inception网络作为特征提取器,在ImageNet上进行了预训练。从视频中提取的原始帧将传递到网络中。最后一个平均池层被视为瓶颈层。然后利用PCA提取标准化特征并减少特征尺寸。
2.2.5身份特征。
身份信息也很重要。由于AFEW数据库中的一些样本是连续的,他们的情绪也很可能是连续的。在实验中,SeetaFace1用于提取身份特征。 SeetaFace识别基于深度卷积神经网络(DCNN)。具体来说,它是VIPLFaceNet的一个实现,它由7个卷积层和2个完全连接的层组成,输入大小为256x256x3。在SeetaFace开源人脸识别工具包中,VIPLFaceNet中FC2层的2048个节点的输出被用作输入面的特征。
2.3文本功能
音频内容反映了情感。 例如,当人们生气时,诸如“他妈的”和“狗屎”这样的脏词很常见。 “抱歉”总是被用来表达一个人对别人的内疚感。 人们经常用’哦,我的上帝’来表达他们的惊喜。 为了考虑文本信息,术语频率 - 逆文档频率(TF-IDF)和字向量(WV)用于从原始文本中提取可计算特征。
2.3.1 TF-IDF。
TF-IDF是一种数字统计,旨在反映单词对文档的重要程度。 TF表示术语频率,而IDF表示逆文档频率。 TFIDF值与单词出现在文档中的次数成比例增加,并且被语料库中单词的频率所抵消。

其中TF(t,d)表示单词t出现在文档d中的次数。 nd是文档的总数,df(d,t)是包含单词t的文档的数量。
2.3.2 WV.单词向量是单词的高级表示,通过大型语料库来学习单词之间的语法关系。 在本文中,我们使用预先训练的FastText字向量。 它在维基百科2017,UMBC webbase语料库和statmt.org新闻数据集上训练了100万个单词向量。 每个单词可以映射到300-D可计算向量。

3 分类

除了SVM,随机森林(RF)和LR等经典分类器,我们还测试时间模型,包括均值池LSTM,时间LSTM和CNN-LSTM模型。 此外,还研究了几种类型的聚合模型:NetVLAD,NetRVLAD,SoftDBoW和NetFV。
3.1平均合并LSTM
对于平均合并LSTM,我们使用单层LSTM并将时间步长输出平均为编码器中的视频表示和解码器中的完全连接层。 softmax层被视为分类器。 Mean Pooling LSTM的结构如图8所示。

图8:Mean Pooling LSTM的结构。 红框表示不同时间步长的功能。
3.2时间LSTM
为了考虑更多的上下文信息,我们提出了Temporal LSTM。 Temporal LSTM和Mean Pooling LSTM之间的区别主要集中在输入上。 而不是处理一个时间步长的特征,同一窗口中的特征在Temporal LSTM中作为输入连接在一起。 可以调整重叠大小。 如果重叠大小设置为0,则独立处理相邻窗口。 时态LSTM可以考虑更多的上下文信息。 时间LSTM的结构如图9所示。


图9:时间LSTM的结构。 红框表示不同时间步长的功能。

3.3 CNN-LSTM
CNN-LSTM是端到端分类器。 平均合并LSTM和时间LSTM都是多步骤过程,其中首先提取特征然后将特征输入分类器。 但是,多步骤过程的目标并不一致。 此外,没有就情绪分类的适当特征达成一致。 为了解决这些问题,我们引入了端到端分类器–CNN-LSTM,其结构如图10所示.CNN-LSTM将原始图像作为输入。 CNN网络被视为特征提取器,它提取高级别输入的表示。 然后利用LSTM捕获时间信息。 整个结构以端到端的方式进行训练。
图10:CNN-LSTM的结构。

3.4聚合模型
聚合模型已经在Youtube 8M大规模视频理解挑战中展示了它们的表现。 这是记住所有相关视觉线索的有效方式。 我们研究了几种类型的可训练聚合模型,包括NetVLAD,NetRVLAD,SoftDBoW和NetFV。 由于VLAD编码在DNN中不可训练,因此建议NetVLAD架构以可训练的方式再现VLAD编码。 因此,可以通过反向传播而不是使用k均值聚类来优化参数。 NetVLAD描述符可以写成:

ak(xi)是描述符xi到簇k的软分配。 NetVLAD描述符从簇k中的可学习锚点ck计算描述符xi的残差(xi-ck)的加权和。
SoftDBoW和NetFV描述符在NetVLAD描述符中利用相同的思想来模仿FV和BOW。 与NetVLAD描述符相比,NetRVLAD描述符平均实际描述符而不是残差。

4融合方法

加权平均值是先前EmotiW挑战中有效的晚期融合方法。 但是,如何有效地计算模型子集的权重并忽略无用的模型仍然存在争议。 在本文中,我们提出了BS-Fusion,它从bream搜索方法中学习。 由于可行子集的数量存在组合爆炸(N个模型的2N子集),我们采用抽样程序,目的是过滤掉不太可能产生良好结果的子集。 我们使用大小为K的波束搜索并在每个回合中选择topK子集。 选择方法基于子集的分类准确性

5数据集

AFEW数据库(版本2018)包含使用中定义的半自动方法标记的视频剪辑。 共有1809个视频剪辑:773个用于培训,383个用于验证,653个用于测试。 还为Training数据集和Validation数据集提供了LBPTOP功能和元数据。 AFEW数据集的类别分布如表1所示。


6实验结果
在本节中,我们将研究音频,视频和文本功能的性能。此外,我们证明了BS-Fusion的有效性。

6.1音频特征分析
由于已经考虑了统计函数,因此话语级特征的特征维度是固定的。我们只评估它们在SVM,RF和LR中的性能。由于可变长度波形,段级特征和帧级特征的特征尺寸是可变的。由于分类器采用固定长度的特征作为输入,我们测试两个将可变长度特征压缩为固定长度特征的方法。至于统计函数,平均值,最大值和FV用于提取固定长度的特征。然后我们将它们传递给分类器,例如SVM,RF和LR。对于聚合模型和时间模型,可变长度特征被填充到固定长度的特征中。然后测试聚合模型(例如NetFV,NetVLAD,NetRVLAD和SoftDBoW)和时间模型(例如Mean Pooling LSTM,Temporal LSTM和CNN-LSTM)。通过实验分析,我们发现FV在统计函数中表现最差。尽管与均值池LSTM和时间LSTM相比,CNN-LSTM在训练数据集上获得最高准确度,但它在验证数据集中具有过度拟合问题。与Mean Pooling LSTM相比,时间LSTM获得了类似的结果。因此,在以下实验中忽略FV并且LSTM指平均合并LSTM。
6.1.1时间模型和聚合模型的结果。
在本节中,我们比较了LSTM,NetVLAD,NetRVLAD,SoftDBoW和NetFV的性能。实验结果列于表2.在实验中,我们选择分段级音频功能,包括SoundNet Bottleneck功能,MFCC,IS10和eGemaps。 SoundNet Bottleneck功能的段长度设置为1000毫秒,其他功能的段长度设置为100毫秒。 LSTM层中的神经元数量和完全连接层中的神经元数量固定为128. NetVLAD,NetRVLAD,SoftDBoW和NetFV的簇大小设置为64。
通过表2中的实验结果,我们发现LSTM在大多数情况下具有更好的性能。 因此,我们在以下实验中仅考虑LSTM并忽略聚合模型。
6.1.2音频功能的性能。
在本节中,我们将比较多个音频功能的性能。 实验结果列于表3中


表3中的1~7选择段级音频功能。进出口。 表3中的8~11测试多个话语级音频功能。 对于段级功能,我们列出功能名称前面的段长度。 由于LSTM不需要统计函数,因此将它们设置为None。 通过表3中的实验结果,我们发现不同的音频特征需要不同的统计函数和分类器。 中国ASR瓶颈功能获得最高精度,36.03%。 由于中国ASR系统训练的语音语料库大于英语ASR系统,因此中国ASR瓶颈功能具有更好的性能。 它显示了从多语言系统中提取的特征的效率。
6.2视频特征分析
在本节中,我们将展示我们的人脸检测方法和视频功能的性能。
6.2.1人脸检测方法。 在提供的面部中,训练数据集中的17个视频和验证数据集中的12个视频被错误地检测到。 对于错误检测到的视频,我们手动初始化第一个面部的位置,然后使用对象跟踪方法提取以下面部。 最后,我们将人脸转换为灰度图像并应用直方图均衡来减轻灯光的影响。
6.2.2视频功能的性能。 我们从SFEW微调模型和FER +微调模型中提取瓶颈功能。 我们发现,与FER +微调模型相比,SFEW微调模型的性能更差。 因此,仅考虑FER +微调模型。


表4中的1~9选择帧级特征或分段级特征。进出口。 表4中的10~14评估了多个视频级别的特征。 通过实验结果,我们发现不同的视频特征需要不同的统计功能和分类器。 VGG_conv5-c功能获得最高精度,43.34%,优于音频模式的最佳效果。 HOGLBP功能是最好的手工功能,准确率提高40.73%。 通过Exp。 在表4中的7~9中,我们发现我们新提出的特征与其他视觉特征相比具有更差的性能。 然而,通过进一步的实验,我们发现这些特征(特别是身份特征)在融合阶段是有用的。 如果我们考虑这些功能,我们可以获得更高的准确性。
6.3文本特征分析
我们利用开源百度API1识别音频内容。 为了减小词汇量的大小,我们删除频率小于3的单词。 此外,我们将这个词改为原型。 例如,‘go’,‘going’和’gone’都被转换为’go’。 然后提取TF-IDF和WV特征。
通过表5中的实验结果,我们发现WV特征更适合于有限的数据集。 WV功能获得最高精度,36.94%,优于音频模式中的最佳功能。 它显示了文本特征的有效性。
6.4融合结果
通过BS-Fusion,根据验证数据集的分类性能选择情感可能性的子集。在测试数据集中,我们达到了60.34%的准确率。
图11:测试数据集中的混淆矩阵。

通过图11,我们可以看出我们的方法在愤怒,快乐和中立时具有很好的识别性能。但是,厌恶和惊讶很容易与其他人混淆。惊喜很容易与恐惧和中立相混淆。它与惊讶的模糊定义有关。惊喜包含令人愉快的惊喜和恐惧。愉快的惊喜很容易与快乐相混淆。恐惧很容易与恐惧相混淆。厌恶比模糊更加模糊。厌恶与视频内容有关。如果我们添加视频描述信息,则可以增加厌恶的识别准确度。

7 结论

在本文中,我们提出了基于音频视频文本的情感识别系统提交给EmotiW 2018.不同形式的特征是单独训练的。然后提取情绪可能性并将其传递到BS-Fusion。我们在基于EmotiW 2018音频 - 视频的子挑战中评估我们的方法。研究了多个特征和分类器。通过实验分析,我们发现视频模态在三种模态中具有最高的识别准确率。最后,我们通过BS-Fusion在测试数据集中实现了60.34%的识别准确度。
在未来,我们将为情感识别添加更多的辨别功能。由于情绪表达与视频内容有关,因此将考虑视频描述信息。此外,电影类型也很重要。恐怖电影中的恐惧很常见。

情绪识别的多模态特征,分类器和融合方法研究相关推荐

  1. ocv特性_基于SOC-OCV曲线特征的SOH估计方法研究

    基于SOC-OCV曲线特征的SOH估计方法研究 刘轶鑫1,张 1,李 雪1,韩智强2 [摘 要][摘要] 电池的健康状态估计(state of health,SOH)是锂离子电池管理系统中的状 态参数 ...

  2. 多模态特征表示和融合

    多模态机器学习主要有五个方面的工作 1.Representation 主要任务是学习如何更好的提取和表示多模态数据的特征信息,以利用多模态数据的互补性 2.Translation 主要任务是如何将数据 ...

  3. 情绪识别数据集汇总心电相关and申请方法详细描述 呕心沥血之作 全网唯一 AMIGOS ASCERTAIN CLAS DECAF DREAMER MANHOB-HCI MPED SWELL

    心电信号情绪识别数据集 针对情绪识别的任务,在学习了一定的代码知识之后,摆在面前最大的问题就是如何寻找并申请使用数据集,这里我找到了9个情绪识别相关的数据集,由于我的课题原因,所以根据一篇综述找一下目 ...

  4. 毕业设计-基于深度学习的数据融合方法研究

    目录 前言 课题背景和意义 实现技术思路 一.深度学习概述 二.基于深度学习的数据融合方法分类 1.基于深度学习特征提取的数据融合方法 2.基于深度学习融合的数据融合方法 3.基于深度学习全过程的数据 ...

  5. 多源异构作物组学数据融合方法研究——以高粱为例

    摘要 [目的]作物组学研究是农业作物科学发展的未来研究趋势,在数据密集型科学研究背景下,作物组学数据存在数据量大.来源多.结构复杂的特点,对多源异构作物组学数据的融合有利于优质作物种质资源的挖掘,助力 ...

  6. 【文献调研】多模生理信号融合方法研究(主脑电)

    一.目标: 多模信号之间进行组合后,会有什么更好的收益?会得到更多的信号信息?还是会有互补的作用?组合后有何优点? 多模设备在同一个被试者上时,多个设备之间的互相干扰如何解决?参考和GND电极如何放置 ...

  7. 多源异构航班航迹数据流实时融合方法研究

    摘要: 二次雷达和广播式自动相关监视(ADS-B,automatic dependent surveillance-broadcast)是在空域监视系统中共存的两种主要监视手段,为了提高监视的精度和稳 ...

  8. (论文加源码)基于DEAP的脑电情绪识别(CNN,RNN和两种不同的注意力机制)

    论文及源码见个人主页:https://download.csdn.net/download/qq_45874683/85063985 (论文加源码)基于DEAP的脑电情绪识别(CNN,RNN和两种不同 ...

  9. 深圳大学梁臻博士提出EEGFuseNet高维脑电图混合无监督深度特征表征与融合模型及其在情绪识别中的应用...

    近期,深圳大学医学部生物医学工程学院梁臻博士(张治国教授团队MIND LAB核心成员)提出一种实用的基于无监督学习的卷积循环混合生成对抗网络,用以实现有效的脑电特征表征与融合,简称为EEGFuseNe ...

最新文章

  1. java读文件while改for循环_JAVA学习第十二天:while循环与for循环
  2. python流程图基本元素-2-2:python之控制结构
  3. Eclipse+CDT+MinGW搭建C++环境 (转)
  4. linux下配置某程序的sudo不用输密码
  5. python 数据库驱动开发实例_Python驱动概述
  6. 用masterpage后页面定位
  7. ipvs学习笔记(二)
  8. 5G第一个演进版本标准完成 3GPP宣布R16标准冻结
  9. 【辨异】 —— 带宽与宽带
  10. js中去掉字符串中的某个指定字符
  11. linux应用之Lamp(apache+mysql+php)的源码安装(centos)
  12. Electron+Vue3+TypeScript+Vite桌面应用程序项目初始化
  13. fc安卓模拟器_跨平台游戏模拟器RetroArch,一个软件畅玩FC 、MD、SFC、GBA游戏
  14. Python3 - DBUtils 和 pymysql 整合
  15. 雅虎邮箱pop服务器,使用Yahoo.com.cn的POP和SMTP
  16. 爬虫取中间文本_【实战No.2】1小时打造你自己的网络爬虫
  17. 别 了,余 额 宝!
  18. Jim Zemlin:中国是开源最重要的市场
  19. 各个版本Microsoft Visual C++运行库下载
  20. 【@NotNull和@NotBlank的区别】

热门文章

  1. linux《十》——系统安全之弱口令检测与网络端口扫描
  2. 电脑开机CPU被Windows资源管理器占满,导致其他软件不可用解决方法
  3. C# Naudio 从麦克风输入到声卡输出 录音 放音功能
  4. 量化交易领域最缺的人才!
  5. java c rsa解秘_Java的RSA加密,.net如何解密
  6. 今天,我的朋友圈被“马云”和“达摩院”霸占了 | 演讲实录
  7. 计算机专业笔记本电脑华为,2021适合计算机专业的笔记本电脑有哪些
  8. JDBC(Java Data Base Connectivity)高级用法
  9. 李宏毅课程:SELU 激活函数
  10. Bootstrap使用前必须在head 标签内导入bootstrap的链接,否则bootstrap无效