基于知识图谱WordNet实现多数据集合并及其在YOLO9000中的应用

作者: 褚云飞 陈业红 吴朝军

基于知识图谱WordNet实现多数据集合并及其在YOLO9000中的应用0

关键词:WordNet;WordTree;深度学习;目标检测;YOLO9000;Softmax

1 概述

在如今的生活中,人脸识别、自动驾驶、车辆检测、行人检测等视觉技术早已得到了普遍应用,为人们众多工作生活带来了便利。这些检测识别技术背后依靠的是目标检测算法的产生和发展。社会生活要求目标检测系统足够快速、足够准确、有足够的能力检测更多对象。从传统到深度学习,目标检测算法不断地更新换代,不断改进先前的不足并提出更加强大和富有创意的方法。

2014年,Ross Girshick极具创造性地提出Region-CNN算法,目标检测的实现从此拥有了卷积神经网络(CNN) 的支持,继之以Fast R-CNN、Faster R-CNN,目标检测算法在深度学习的强大动力下不断改进[1-2]。由于R-CNN的网络是two-stage双阶段结构,也就是将候选区域的检测和分类识别分成两个阶段执行,它的系列算法检测精确度高,但缺点是检测速度慢,无法满足实时性。2016年,Joseph Redmon提出YOLO算法,将候选区域检测和分类识别合为一个,成为Onestage单阶段结构的开山之作,大大提高了目标检测的速度。然而YOLO也有不足之处,与Fast R-CNN等基于Region proposal 的方法相比,YOLO存在更大的定位误差和更低的召回率[3]。为了解决这些问题,一年后,Joseph Redmon 与导师Ali Farhadi 对YOLOv1 进行改进,发表了论文《YOLO9000: Better, Faster, Stron⁃ger》,也就是YOLOv2,提高了YOLO的召回率,并对目标精确定位改进,同时保持了分类准确性。YOLO9000使用了World Tree整合COCO和ImageNet 数据集,并在其上进行联合训练,能够检测9000多个目标类别,这是联合检测数据集和分类数据集实施共同训练突破数据集瓶颈的重要一步[4]。因此,笔者认为World Tree的构建,在整合数据以识别更多对象的工作中起到了关键作用。众所周知,深度学习的主要局限来自它对训练数据的规模和质量的极高要求,而基于WordTree的数据集合并策略无疑是解决此类问题的一般性方法,所以明晰YOLO中构建WordTree的基本原理和实现方法就具有非常重要的意义。

2 相关工作

2.1 知识图谱工具:WordNet

内在的意义类似于一个最常见的依靠语言学整合而成的英语词典,但更加具体的描述在于它还是一种知识谱图应用实例,即这本词典中的所有单词根据它们彼此间的意义联系组成了一个庞大的网络,所以我们常常将WordNet称作“单词的网络”。WordNet不仅提供了每个概念的含义,而且给出了单词的近义词或反义词,同时阐释出一义多词、一词多义、类别归属等问题,使用WordNet的基本功能可以参见文献[5]。作为知识图谱的应用工具,在数据标注上有重要语义作用[6]。图1是WordNet的一个应用网页,在检索栏中输入一个预检索的单词,选择检索的选项(同义、反义,关联等),可以输出相对应的所有单词义集以及例句。

2.2 大型视觉数据库

2.2.1 ImageNet

ImageNet是根据WordNet中的语义关系构建的图像数据集,其不仅数据量大而且带有数据标签。Ima⁃geNet数据集拥有1500万左右张图片,涉及2.2万类视觉对象。其中有超过103万张图像。ImageNet中虽然图片量大,但是全部经过了人工挑选、整理和标记,带有边框批注,是庞大的基于图像分类的数据集,类似于一个图像引擎[7]。ImageNet依据WordNet具有层次结构的英语词典设计标注名字空间,因而可以描述基于已有知识的不同概念间的语义关系[6]。

2.2.2 VOC

VOC数据集是著名的基于视觉目标检测任务的大型数据集,为目标检测模型监督学习训练提供的标注数据,共涉及20个类别[8]。

2.2.3 COCO

Common Objects in Context数据集可以用来完成图像物体检测、语义分割和字幕生成,主要对目标之间的上下文关系和目标的2维精确定位问题提供数据支持,是最重要的物体检测数据集之一[9]。MicrosoftCOCO是一个大型的数据集,包含有150万个对象实例,80个object类别,91个Stuff类别,超过33万张图片,其中20万张带有标注,分为训练、验证和测试三种数据集。

2.3 Softmax ()多分类输出层

使用跨越所有可能类别的Softmax层来输出最终的目标类别的概率分布,是构造多分类器常使用的方法。Softmax() 函数输出的是每个分类的概率值,而不是输出一个整数的类别编码。通过Softmax() 函数可以将多分类的输出值转换为范围在[0, 1],和为1的概率分布,将多分类的结果以概率形式展示出来。使用Softmax() 要求同组输入Softmax层运算的元素应该是互斥的,结果输出为每个元素的条件概率。在机器学习尤其是深度学习中,Softmax() 函数在多分类的场景中使用广泛[10]。公式(1) 中, Softmax(zi) 表示输出分类类别为i 的概率,其中n为类别总数。

其中,输入的分类特征变量z1,z2,z3经Softmax() 映射为0~1之间的实数y1,y2,y3,y4并且能保证其归一化和为1。

3 为什么要构建Word Tree

图像分类任务一般只要求确定图像包含哪一种类别的目标,而目标检测不仅要确定图像类别,还需要确定目标的位置和大小,由此可见,检测数据集同时包含了分类信息和定位信息。用于检测任务的数据集标注工作代价更大,所以带标注的检测数据集的体量比起面向分类任务的数据集要小很多[11-12]。

YOLO9000若想要检测更多的对象,但缺少对象检测训练的样本,于是联合ImageNet 大量的分类样本和COCO的对象检测数据集一起训练,用仅带有分类标注的数据集来扩展可检测类别的数量,实现对更多种类的图像目标进行定位和分类。YOLO9000同样使用跨所有可能类别的Softmax() 输出层映射目标类别的概率分布,这也是多分类常常使用的方法。最直接的方法可以把ImageNet 中的9000种类别的数据合并到COCO数据集中,并将Soft⁃max() 分类层改成9000维。然而,通过Softmax函数预测各个类别的概率分布的前提条件是:待检测的类别之间应该是互斥的,即不同输出类别对应的实例集合之间的交集应该是空。然而,ImageNet的对象类别与COCO的对象类别存在大量重叠,并不满足类别互斥的要求。COCO是检测数据集,一般只标注了常见目标而图像分类数据集ImageNet具有更广泛的标签范围。比如COCO数据集中有“猫”这个类别,ImageNet 中同样有此类别,并且又细分多个不同品种的猫,显然猫与不同品种的猫是包含关系,并不相互独立,所以无法用单个Softmax来做对象分类。

YOLO9000作者选择将ImageNet和COCO数据集结合起来共同训练。如何整合数据,需要解决哪些问题以及如何解决这些问题是成功的关键。首先,针对具体实施中遇到的COCO和ImageNet数据集中类别不完全互斥的问题,作者提出了将两个数据集按照一定的框架整合到一起,形成一个具有多层分类结构的方法,即层级分类(Hierarchical classi⁃fication) 的方法[4]。两个数据集中类别依据的从属关系框架来自Word⁃Net这个表示单词内部关系的知识图谱工具。最后,解决完所有问题,YOLO9000 的作者根据设想建立出一种树型结构—WordTree,提供能解决标签互斥的多标签标注机制。比如COCO 对象类别有“狗”,而Ima⁃geNet 细分成100 多个品种的狗,狗与100多个狗的品种是包含关系,而不是互斥关系。一个“Norfolk ter⁃rier”标签同时也是“dog”,就可以采用“dog”和“Norfolk terrier”两个标签来标注。

YOLO9000没有直接使用Word⁃Net对图像分类而是重新建立树的结构,原因在于WordNet是一个有向图结构,一种对象可以同时从属于多种属性,比如:dog 既是一种canine (犬),也是一种domestic animal(家畜),它们都是WordNet中的同义词。语言的复杂性限制了数据集训练的可行性,YOLO9000并不使用完整的图结构,而是要通过ImageNet构建分层树来简化问题,使对象间的从属关系直接简洁,方便对象分类。

4 如何构建WorldTree

构建好的WordTree有9418个节点(对象类型),包括ImageNet 的Top 9000个对象,COCO 对象,以及ImageNet对象检测挑战数据集中的对象,以及为了添加这些对象,从WordNet路径中提取出的中间对象。结合COCO和ImageNet建立的WordTree如图3所示。World Tree以physical object为根节点,各名词依据相互间的关系构建树枝、树叶,节点间的连接,表达对象概念之间蕴含的上下位关系。

构建World Tree的步骤是:

1) 建立WordTree根节点(Physical object) ;2) 首先检查ImagenNet和COCO中的所有欲加入的对象Oi;3) 然后在WordNet中找Oi到对应的节点Ni;4) 如果该节点Ni 到WordTree 根节点R(Physicalobject) 的路径只有一条,就将该路径以及路径上的所有节点添加到WrodTree,转6(大部分对象都只有一条路径);5) 否则,反复检查路径不唯一的对象所有的想要添加到已有的WordTree的路径长度,从中选择一条尽可能短的路径添加到已有WordTree中,转6;6) 如果所有节点已加入,结束,否则转2。

如图4所示,金毛狗的路径可以是金毛属于狗,狗属于动物,动物属于根节点object;也可以是金毛属于宠物,宠物又同时属于狗和豢养动物,豢养动物和狗都属于动物,最后找到根节点object。找到金毛在WordNet中的三条路径,发现后述两条路径都有四条边,而第一条所述路径有三条边,为最短路径,于是舍弃其他路径,将最短路径加入到已有WordTree中。

依此方法,YOLO2 根据WordNet,将ImageNet 和COCO中的名词对象一起构建了一个WordTree,并且Wordtree中每个对象只有唯一路径连接到根目录。以Physical object为根节点,各名词依据相互间的关系构建树枝、树叶,节点间的连接,表达了对象概念之间蕴含的上位/下位关系。至此,虽然整个WordTree中的对象之间不是互斥的关系,但对于单个节点,属于它的所有子节点之间是互斥关系,这样就可以针对从属于同一层级对象的子节点使用Softmax操作来预测该层级下所有平行类别之间的概率分布。这样使用有限多的softmax函数,就可以实现无线扩展对象的检测。为了评估此方法,还添加了ImageNet检测挑战中未包含的类。最终World Tree中的节点共对应9418个类别。在样本的选取上,由于ImageNet比COCO大得多,所以YOLO9000通过对COCO进行过度采样来平衡数据集,使得ImageNet与COCO采样的比例为4:1。

5 如何利用WorldTree 确定识别对象

在所有对象互斥的情况下,采用softmax() 预测n个类别的对象,输出可以采用n维向量表达,对象被预测到的类别对应的那一维数值接近1,其他维数值接近0。

在World Tree中,采用softmax() 层对对象进行分类的方法是:首先将World Tree中的所属于同一父类的叶子节点以及向上遍历所有可继续细分的属于同一父类的中间节点分组进行线性排列,然后对每一行属于同一父类的对象分别进行softmax() 计算。这样计算得到的是每个节点对象的条件概率,也就是同义词集合中它们的每个下义词预测到的概率。例如:object根节点包含的子节点有动物、人工制品,……,动物包含的子节点有猫、狗,……,狗包含的子节点有金毛、哈士奇、泰迪,……,如图5:

上一篇 点击页面呼出菜单 下一篇