基于卷积神经网络的物体识别研究与实现

作者:杨眷玉电子科大专业硕士2013

Research and Implementation of Object Detection Based On Convolutional Neural Networks

摘要

物体识别是计算机视觉中的一个研究方向,也是当前比较热门的研究领域。在人们的需求不断增长的今天,物体识别在安全、科技、经济方面正在起着举足轻重的作用,安防领域和交通监管部门也对物体识别提出了迫切的要求,所以研究物体识别对社会的未来有非常重要的意义。2006年一种新的方法深度神经网络的出现,标志着以深度学习为新纪元的时代的到来,卷积神经网络作为深度学习方法之一,凭借着优秀的性能和无限的潜力成为了竞相研究的对象,并且已经在图像识别领域取得巨大的成功。因此,基于卷积神经网络的物体识别已经成为了物体识别领域的一个研究热点。

本论文重点阐述了一个改进YOLO的卷积神经网络模型,改进后网络性能得到了较为明显的提升,具体的工作如下:

1.改进的模型修改了YOLO网络的损失函数。改进YOLO的模型将比例的形式替换了原有差值的形式。相对于旧的损失函数,新的损失函数显得更加灵活,对网络误差的优化更合理。

2.改进的模型在YOLO网络中增加了1×1的卷积核。这样就减少该层的参数数量,使网络各层提取的特征过渡更加平滑。

3.改进的模型采用了新的inception结构。因为Inception结构本身就有加深和加宽网络的能力,并且在增强网络性能的同时,还能减少网络参数的数量。

4.改进的模型添加了一层时空金字塔下采样层,这样就能更充分地利用原图像中的信息,增强网络的识别性能。另外,由于时空金字塔下采样层本身具有的优势,使得网络在时间性能上也有提高。

最后,在pascal voc2007数据库pascal voc2012数据库上对改进YOLO的卷积神经网络进行了实验,并用混淆矩阵时间复杂度信息可视化三种工具对实验数据进行了分析和总结。实验的结果表明,改进YOLO发网络无论在识别性能方面还是在时间效率方面都领先于其他网络,并且在国际领先水平的网络面前也有一定的竞争能力。由于在时间性能上的良好表现,所以本文将该网络模型的研究成果投入到实际应用中,开发并实现了一个改进YOLO的卷积神经网络系统

关键词:卷积神经网络,inception结构,时空金字塔下采样,物体识别

Keywords: convolution neural network, inception structure model, spatio-temporal pyramid, Object recognition

第一章绪论

1.1研究工作的背景与意义

物体识别技术是指对日常生活中图像或视频中的物体进行识别所采用的各项技术,体现了在任意环境下对观察到的物体进行检测、分割和识别的能力。

1.2国内外发展现状

物体识别在计算机视觉领域指的是在一张图像或一组视频序列中找到给定的物体,并且能够用物体框框出物体的具体位置。

物体识别的主要步骤包括:

特征提取:在识别的前期将图像中隐含的特征表达给提取出来(尽可能多地提取图像中的特征信息)

特征处理:对提取的特征进行进一步提纯和精炼,包括特征编码、特征汇聚等处理方式。

物体分类:将前面精炼过的特征当作图像的表达去训练分类器,然后用分类器对新的图像进行分类判别。

传统的物体识别方法可以从底层特征提取、特征编码、特征汇聚和使用分类器分类这四个方面来叙述。

底层特征提取:

基于兴趣点的检测

使用密集提取的方式(尺度不变特征转换SIFT、方向梯度直方图HOG)

将兴趣点检测与密集提取相结合的方式

(近年来深度学习领域有一个重要的观点,就是直接从图像像素学习到的特征比手工特征更有效,所以凡是基于深度学习方法的算法,都尽可能的去除了手工提取特征的方法,而直接从原始图像中提取特征。)

特征编码:

向量量化编码

稀疏编码

超向量编码

Fisher向量编码

特征汇聚:

最大值汇聚

平均值汇聚

使用分类器分类:

支持向量机

softmax(适用于二分类,而softmax分类器是适用于多分类,虽然通过多个二分类器的级联能够实现多分类效果,但总体来讲,支持向量机分类器依然不如softmax分类器。 )

深度学习的三点巨大的优势:

深度学习适合处理大数据。

它不是一个黑箱系统,其功能和结构都已经展示出来。

它几乎是唯一的端到端机器学习系统。

卷积神经网络(CNN)

1.3本文的主要研究内容

改进YOLO的卷积神经网络在物体识别领域方向的应用

对当前物体识别和卷积神经网络CNN的现状进行了归纳和总结,并对物体识别的基础有条理地进行了汇总和概括。

结合其他技术设计了改进YOLO模型的卷积神经网络,该网络既保留并有效延续了原有网络的优势,同时又在原有网络的基础上融入了新的理念和设计,解决了原网络中的诸多不足,大大增强了该网络对于物体识别的性能,提高了网络的识别率和时间效率。

使用pascal voc2007数据库和pascal voc2012数据库对改进YOLO的神经网络进行训练与测试,并从识别性能和时间性能的角度对实验数据进行分析和归纳。另外,通过特征可视化和权重可视化,将结果数据以图像的形式显示出来,这样就能使网络的性能表现更一目了然、也更有说服力。

实际生活为场景将改进YOLO的卷积神经网络模型应用到实际生活中,以说明该网络的实用导向,另外也对网络的体系、优势与不足作了分析和总结

1.4本论文的结构安排

第一章首先对物体识别的研究背景作了总结性的叙述,概括性的介绍了物体识别的发展历史和各阶段所用的理论思想和相关技术,最后对当前物体识别和卷积神经网络CNN的现状进行了归纳和总结。

第二章主要描述了一些本论文中需要用到的理论基础和相关技术。

第三章主要讲解了改进YOLO的卷积神经网络模型。

第四章主要讲述了本论文中算法的流程、实现思想和基础理论,以及在pascal voc数据库上的实现结果,并用混淆矩阵、时间复杂度和信息可视化这三种方式分别对实验结果进行了详尽的分析。

第五章主要描述了一个改进YOLO的卷积神经网络的物体识别系统的实现。

第二章基础理论和相关技术

2.1物体识别的主要流程

核心技术

2.1.1数据预处理

数据预处理(data preprocessing)

原因:

高质量的挖掘结果依赖于高质量的数据。

在没有经过处理的原始数据中其实存在许多的问题。

因用户方面的要求,需要将数据转换为一种更容易处理的格式。

方法:

采样:从大量的数据中选择有代表性的子集。

转换:对原始数据进行操作,用来产生单一输入。

降噪:删除数据噪音。

标准化:组织数据,使其能够被更有效地访问。

重要内容摘要:提出某些对某些特定环境重要的特定的数据。

2.1.2特征提取

出于对特征提取的需要,在神经网络中加入了卷积层、采样层、全连接层。

2.1.3分类器

主要涉及softmax分类器

2.2相关的理论结构

2.2.1 inception模型结构

正是因为Googlenet网络框架中融入了Inception module的理念及设计,才使得Googlenet在检测和识别中大放异彩,将国际领先水平又提升到一个新的高度。

它将上一层的输出作为本层的输入,之后分4条不同的分支,分别做3种不同的卷积和最大池化这4种操作,然后在前者的后3条分支的基础上,又各自增加一个1x1大小的卷积核的级联操作,以此来减小网络参数的厚度,来达到优化网络的目的。最后再将这4种操作后的输出合并在一起,共同进入下一层的操作。

Inception Module既能保留网络结构的稀疏性,又能利用密集矩阵的高计算性能。

Inception Module的好处是能增加网络的宽度(不同尺度的卷积核并联,可以实现对多尺度特征的利用,就更全面地利用图像中隐藏的信息)

Inception主要的思想就是如何找出最优的局部稀疏结构并将其覆盖为近似的稠密的组件。

2.2.2时空金字塔下采样层

为解决由于图像尺寸不一致导致的图像扭曲问题,引入时空金字塔下采样技术(Spatial Pyramid Pooling,简称SPP),它能将任意大小的图像池化生成固定长度的图像表示。

优点

对于输入的任意大小尺寸或任意比例的图像,它可以输出固定大小的图像。

可以对任意尺度提取的特征进行池化。

分类器(SVM或softmax)或全连接层需要固定长度的向量,这种向量可以用Bag-of-Words (Bo W)的方法来获得,但时空金字塔下采样提升了Bow的性能,因为它可以通过池化区域空间来保留空间信息。因此,这也就使得时空金字塔下采样在提高网络性能的同时,也大大缩短了所需要的计算时间。

时空金字塔是由许多多种分辨率的特征图组成的。为获得不同分辨率的特征图,我们需要从输入的特征图中进行不同大小的窗口和不同步长的下采样。在得到的这些特征图后,再将每个输出的单元拉直成一个向量,最后再接入全连接层。

三级金字塔结构模型,其每一级的分辨率分别为3×3,2×2,1×1,图中256是最后一个卷积层卷积核的数目。一般使用时空金字塔时,都是将紧跟最后一个卷积层的池化层使用时空金字塔下采样代替,将其输出的特征图作为后续全连接层的输入。因为卷积神经网络的卷积层不需要固定尺寸的图像,只有全连接层是需要固定大小输入的,所以网络一般将时空金字塔下采样层放到卷积层的后面

总的来讲,时空金字塔下采样思想就是将图像按照不同大小比例进行池化,然后将得到的不同的矩形向量进行拉直,这样就将图像中的精细空间划分到了粗糙空间,最后将拉直的特征向量再进行聚集。

在卷积神经网络中使用时空金字塔下采样思想的意义就在于,它能使网络提取到更多不同尺度的特征信息,使得所提取的特征更丰富,从而提高了网络的识别性能。

2.3卷积神经网络

卷积神经网络(convolutional neural network,简称CNN)一种前向传播和后向传播结合的人工神经网络。

Lenet-5网络结构也被视为学习卷积神经网络入门的经典结构。

2.3.1神经网络

神经网络的训练阶段,可分为两个步骤,分别是前向传播和后向传播,前向传播是提取特征和计算输出差值,后向传播是利用梯度下降算法进行层层传播误差,这样前向和后向相互交替,就能实现网络模型与实际模型的最优化,也就很好的实现了网络模型的预测性。

2.3.2 CNN理论

卷积神经网络有三个比较明显且先进的技术:局部感知,参数共享,下采样。

局部感知

参数共享

多套参数进行学习的方式来提取特征。

这样既保证了参数数量比较少,也保证了可以提取足够多种类的特征。

下采样

通过下采样操作,去除了图像的多余信息,保留了对图像最本质最关键的特征。

2.3.3 CNN模型

卷积神经网络的代表模型Le Net5,它是一种卷积层加下采样层的级联结构。按层叙述依次是输入层,第一个卷积层(也就是C1),第一个下采样层(也就是S2),第二个卷积层(即图中C3),第二个下采样层(即图中S4),最后是全连接层和输出层。

2.3.4 CNN相关算法

(1)NIN网络

使用多层感知器做卷积的层被称为MLP卷积层,包含这种卷积层的网络称为NIN(Network in Network)。

(2)Google Net网络

Google Net有22层,比大多数的卷积神经网络的深度要多出许多层。

在Google Net中有许多1×1的卷积核和inception结构,这种结构设计能够大大降低特征图的厚度,从而可以提高整体的效率。

Googlenet模型大大增加了网络的深度,并且去掉了最顶层的全连接层。

2.4 YOLO算法

YOLO(You Only Look Once)的实现基于R-CNN的框架,但是它是基于一种端到端的思想,利用一个网络同时完成分类和标注物体框,为了优化边框的位置,后续又加入了线性单元,用于调整物体框坐标,从而提高分类准确率。

区别于之前的方法是用分类器来做检测,YOLO作者对边框和对应的类概率进行回归。

R-CNN的每个检测步骤是分离的,不便整体优化,而YOLO则是利用一个单一的CNN,完成了在整个图像上边框和类别概率的预测。这既使得它可以实现end-to-end的优化,同时也提高了框架的速度。

在系统流程图中,输入图像划分为S*S个网格,如果一个物体的中心落在某个网格内,则对应的网格负责检测该物体。 每个小网格预测B个边框和其对应的置信度得分。这些得分反映了框含有物体的置信度大小与框是否含有物体的概率大小。如果这个小网格中不含有物体,则置信度为,否则作者希望置信度得分等于预测出的box和ground truth box的IOU(交集除以并集)。最后,将置信度定义为:

每个边框包含5个预测值:x,y,w,h和置信度。(x,y)表示相对于小网格边界的框中心点坐标,w和h表示相对于整张图片框的宽和高,最后,置信度表示预测出的框与任一ground truth box的IOU。

24个卷积层和2个全连接层,其中也大量运用了卷积的级联结构。网络的初始卷积层完成从图像中提取特征的功能,最后的全连接层预测类概率和边框,在激活函数的选取上,除最后一层使用逻辑激活函数外,其他层均是使用的ReLU。另外,为了避免过拟合,网络使用了dropout结构。

为了解决由于大部分区域的预测概率为导致训练过程发散的问题,作者引入了一个变量来解决这个问题:即某位置是否有物体存在的概率Pr(Object)。

在每个位置都对Pr(Object)进行更新,而只在有物体存在时才对Pr(DogObject)更新。

YOLO的网络损失函数使用平方和误差来表示,并引入尺度因子λ对类概率和边框的误差进行加权,同时为了反映出在大的边框中的补偿度的影响比较小,所以最后作者使用边框宽高的平方根。

2.5本章小结

第三章改进YOLO的卷积神经网络模型

本文的改进的网络有以下的几个新特点:

(1)优化了YOLO网络的损失函数

(2)将inception模型结构融入到新网络模型中。

(3)使用了时空金字塔下采样层

3.1基于YOLO网络的改进

YOLO的不足:

在YOLO算法的损失函数中,损失函数对大小不同的边框采取相同的误差,而在识别中大尺寸的物体发生的误差和小尺寸的物体发生的误差对整个网络的影响是不同的,这也就体现了该函数的不足。

当出现两类或多类相近的物体时,YOLO网络就往往会将其误识别为同一类,这就表明YOLO网络对于细节的区分度太差,网络有待优化。

该模型对长宽比例比较悬殊的物体识别性能不是太好。当同一副图片中既有大的物体也有小的物体,并且大小物体在整幅图片中所占的比例悬殊比较大时,则在测试效果中大物体可以识别,但小的物体往往不能被检测出来。

改进:

修改了原YOLO网络的损失函数,将比例的形似替换了原有差值的形式。因为在原式中存在不公平的优化:对大物体的优化会变得更好,对小物体得到优化会变得更差。相对于旧的损失函数,新的损失函数显得更灵活,优化得更好。

将原网络的第一二层之间添加了一个64个1×1的卷积核。这样就使得该层的权重参数的数量减少,所提取的特征过渡比较平滑。

将原网络的第三大层和第四大层结构用新的inception结构来替换。Inception结构本身就有加深和加宽网络的能力,并且在增强网络后还会使得网络的参数减少很多。这就为网络的识别性能和运行时间提供了理论依据。

将原网络的卷积层和全连接层之间添加了一层时空金字塔下采样层,这样就能更充分地利用原图像中的信息,增强网络的识别性能。另外,由于时空金字塔下采样层本身具有的优势,使得网络在时间性能上也有提高。

3.2基于损失函数的改进

在卷积神经网络中,经常使用方差函数来作为网络的损失函数

在改进的网络损失函数中,利用了对比度这种归一化思想来对其进行改进,考虑到了图片中物体大小不一的情况。具体损失函数如公式3-3所示。

3.3改进的INCEPTION结构模型

加入inception前网络的这部分结构就是不同数目的1×1卷积核和3×3大小的卷积核的级联,而加入后却是像网状一样散开再进行聚合。另外在inception的前一层也稍作了些改动,就是增加了64个1×1大小的卷积核,这些核的作用和inception模型的功能是一样的。

一,改进YOLO的卷积神经网络比YOLO网络具有更强大的提取图像特征的能力,提取到的特征表达更丰富。

二,改进YOLO的卷积神经网络比YOLO网络在时间上的性能更优越。

3.4改进的SPP结构模型

时空金字塔下采样SSP的优点包括:

1.对于输入的任意大小尺寸或任意比例的图像,它可以输出固定大小的图像。

2.可以对任意尺度提取的特征进行池化。

3.分类器(SVM或softmax)或全连接层需要固定长度的向量,这种向量可以用Bag-of-Words (Bo W)的方法来获得,但时空金字塔下采样提升了Bow,因为它可以通过池化区域空间来保留空间信息。

综上所述,使用时空金字塔下采样层不但能获得图像更丰富的特征信息,还大大提高了网络的时间效率

3.5改进YOLO的卷积神经网络结构

改进YOLO的卷积神经网络的结构和理念就是:借助于YOLO模型中的单一网络一体化实现整个物体识别的思想,利用YOLO模型的大框架,结合inception模型和SPP Layer结构,加上优化过的损失函数作为改进点,实现基于卷积神经网络的物体识别。

在改进YOLO模型的卷积神经网络中,共分为七个模块,首先是网络的输入层,接着是卷积层加下采样层的组合模块,第三个模块是inception module和下采样层的组合,第四个模块两组级联的卷积层,第五个模块是一个时空金字塔层spp layer,第六模块是一个全连接层,第七模块是一个输出层,其中下采样层和时空金字塔层都采用最大下采样。

3.6与其他网络模型的对比

网络结构、理论思想和损失函数三个方面,将改进YOLO的卷积神经网络模型与两组网络模型R-CNN和YOLO进行对比。

3.6.1网络结构的对比

在网络结构方面,

R-CNN模型所用的网络结构是基于Alexnet网络,只是它将Alexnet的最后一层的softmax移除了。

YOLO模型的网络结构是基于Google Net的简化和改进而形成的,它用1×1和3×3大小的卷积核的级联结构代替了Google Net中原有的inception结构,删除了一些Google Net中的网络分支,并且将最后的输出层也做了修改。

而新模型用的网络结构是在YOLO原有模型的基础上,又将Googlenet和在ILSVRC 2015场景分类竞赛中夺冠模型进行了组合,新网络融入了Googlenet中的inception模型和场景分类冠军网络中的SPP模型。

新网络与R-CNN(即Alexnet)和YOLO之间的对比。

1.浅层网络的对比。

Alexnet在第一个卷积层使用了相当大的感受野(11×11的卷积核,步长为4),而新网络和YOLO都使用了较小的感受野(7×7,步长为2),一方面是使用小的卷积核可以加深网络的深度,达到尽量不丢失图像的信息的目的,另一方面使用较小的卷积核也减少了网络参数。

2.卷积核的对比。

相比于Alex网络使用的5×5、3×3、11×11的卷积核,YOLO和新网络均使用了很多1×1的卷积核,但是YOLO模型仅仅是将1×1的卷积核进行了级联,而新网络不仅进行了级联,还运用了并行结构。

3.局部结构上的对比。

Alexnet使用都是卷积层加下采样层的形式,而这种简单的操作并不能很好的完成提取图像信息的任务。YOLO模型也只是简单的进行了卷积操作的级联,改进YOLO的网络中用inception结构替换了YOLO模型的级联卷积结构。

4. SPP层的优势。

时空金字塔下采样层的加入同样也为新网络带来了很多优势。时空金字塔下采样解决的问题是,不管输入的图片是什么尺度,都能够正确的传入网络。

3.6.2思想理论的对比

R-CNN模型的主体思想是,它利用Selective Search的方式对图像进行分割分组,得到多个侯选框的层次组(大约得到2000个物体候选框),然后再将这些所得的候选框进入CNN网络,利用网络自动提取图像特征的能力,将网络输出的特征用SVM分类器进行分类,最终就得到了所需识别物体的类别。

Yolo和新模型的主体思想是,基于R-CNN的框架,都是先利用区域提案来生成边框,然后利用CNN在边框中提取特征,再利用分类器进行分类。而且为了优

化边框的位置,后续加入了线性单元,用于调整边框坐标,从而提高分类准确率。

改进YOLO的卷积神经网络模型相比与R-CNN最大的优势就是时间的对比。

另外,改进YOLO的神经网络模型还针对YOLO模型的损失函数的不足进行了改进,使其更合理,更加适应对复杂多变的图像的识别,提升网络的识别能力。

3.7本章小结

第四章改进YOLO模型的设计与实现

改进YOLO网络模型的实现,以及改进的模型在PASCAL VOC2007数据库和PASCAL VOC2012数据库上进行的实验。

4.1算法设计

分别从前向算法后向算法来作具体阐述。

4.1.1总体设计

前向传播是说输入流由网络输入层进入,经过每一级每一层网络,最后经过网络输出层输出。

反向传播讲的是网络输出值与数据的标签值之间总会有差值,然后从网络的末端输出层开始,将误差一级一级向前传播,直至输入层,并且网络就是根据层与层之间的误差来进行更新网络权重。

网络训练阶段的具体算法步骤

网络测试阶段的具体算法步骤

整体算法的伪代码

4.1.2前向传播流程

4.1.3反向传播流程

4.2算法实现

纯C语言编写

1.首先将训练数据集以及标签准备完毕,运行网络程序,让图片库去训练网络的参数。

2.然后当训练结束时,我们可以得到网络在训练阶段产生的一系列权重文件,之所以会有这么多文件,是为了帮助网络在运行过程中中断时,能够根据上次产生的文件继续训练而不需要从头开始。

3.最后当网络运行迭代到我们规定的4万轮时,网络会产生最终的权重文件,这也是最终的结果文件,利用该权重文件,我们就可以实现物体检测了。

4.3实验结果和对比

4.3.1图片数据库

PASCAL VOC 2007数据库和PASCAL VOC 2012数据库

4.3.2实验结果

4.3.3结果对比

改进YOLO的卷积神经网络在Pascal VOC 2007数据库和Pascal VOC 2012数据库进行了训练和测试,并与R-CNN网络、YOLO网络和RPN网络进行结构的对比。

4.4结果分析

1.通过对混淆矩阵的分析,可以观察新网络对什么样的样本识别性能比较好,什么样的样本识别性能不好,以及对容易混淆的图像的区分度怎么样,进而推测网络的优劣势在哪地方。

2.通过对该网络模型时间复杂度的分析,例如对网络参数的的数量对比,可以比较新网络的架构和之前网络架构在时间上的优化性能如何。

3.通过特征可视化,更能直观地看到经过网络所产生的特征效果如何,然后通过对不同层之间的特征的对比,可以看出哪些层的提取能力更好,更有效。

4.4.1混淆矩阵

4.4.2时间复杂度

网络的整个的计算量,与网络输入层的图片大小、卷积核大小、卷积核数量、网络的深度和宽度都有很大的关系。所以若想减轻网络的计算量,提高网络的时间上的效率,可以减少卷积核的数量、减少卷积核的大小、减小输入的大小、降低网络的宽度和深度,还有一点就是可以优化网络的结构。

4.4.3信息可视化

4.5本章小结

第五章物体识别系统的实现

改进YOLO的卷积神经网络的物体识别系统的实现,包括系统的任务需求,总体设计,系统流程以及系统的测试结果,实现一个以卷积神经网络为基础,结合其他前沿的理论和相关算法的面向应用的物体识别系统。

5.1系统任务需求

5.2系统总体设计

结构设计、流程设计和界面设计。

5.2.1结构设计

5.2.2流程设计

1.网络训练的流程

2.网络测试的流程

3.信息可视化的流程

5.2.3界面设计

5.3系统识别结果

具体的测试流程如下。

1.准备好所需要测试的样本。

2.加载网络的权重模型和网络参数。

3.网络读取需要检测的图像。

4.运行网络测试程序。

5.测试完成,显示测试结果,如图5-5、图5-7所示。

6.测试结束。

5.4本章小结

第六章全文总结与展望

6.1全文总结

本论文的创新点如下:

1.修改了原YOLO网络的损失函数,用比例的形式替换了原函数中的差值的形式。因为在原式中存在不公平的优化:对大物体的优化更好,对小物体的优化更差。相对于旧的损失函数,新的损失函数更灵活,优化得更好。

2.将原网络的第一二层之间添加了64个1×1的卷积核。这样就能减少该层的权重参数的数量,所提取的特征过渡比较平滑。

3.将原网络的第三大层和第四大层结构用新的inception结构来替换。Inception结构本身就有加深和加宽网络的能力,并且在增强网络后还会使得网络的参数减少很多。这就为网络的识别性能和运行时间提供了理论依据。

4.将原网络的卷积层和全连接层之间添加了一层空间金字塔下采样层。这样将更充分地利用原图像中的信息,加上时空金字塔原有的优化时间的功能,这样

就不仅增强网络的识别性能,还提升了网络的时间效率。

6.2后续工作展望

VGG网络和inception结构网络这两套网络模型

识别不出来或者误识别。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227G0GYD600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券