深度学习_目标检测_YOLO9000模型详解

YOLO9000详细介绍

YOLO9000是在YOLOv2的基础上提出的一种联合训练方法,可以检测超过9000个类别的模型。YOLOv2混合目标检测数据集和分类数据集,用目标检测数据集及其类别标记信息和位置标注信息训练模型学习预测目标定位和分类,用分类数据集及其类别标记信息进一步扩充模型所能识别的物体类别同时能增强模型鲁棒性。

YOLO9000如何组织数据

YOLO9000根据各个类别之间的从属关系建立一种树结WordTree,将COCO数据集和ImageNet数据集组织起来。

WordTree的生成方式如下:

1.首先遍历ImageNet中的类别名词。
2. 对每个名词,在WordNet(一种结构化概念及概念之间关系的语言数据库)上找到从它所在位置到根结点(设根结点为实体对象physical object)的最短路径,由于在WordNet中大多数同义词只有一个路径,所以先把该路径的词全都加到树中。
3. 迭代地检查剩下的名词,取它到根节点的最短路径,将该最短路径上的还没出现在层次树中的词加入到树中。混合后的数据集形成一个有9418类的WordTree。生成的WordTree模型如下图所示。另外考虑到COCO数据集相对于ImageNet数据集数据量太少了,为了平衡两个数据集,作者进一步对COCO数据集过采样,使COCO数据集与ImageNet数据集的数据量比例接近1:4。

在这里插入图片描述

对于物体的标签,采用one-hot编码的形式,数据集中的每个物体的类别标签被组成1个长度为9418的向量,向量中除在WordTree中从该物体对应的名词到根结点的路径上出现的词对应的类别标号处为1,其余位置为0。

YOLO9000联合训练的过程

YOLO9000采用YOLOv2的结构,anchor box由原来的5调整到3,对每个anchor box预测其对应的边界框的位置信息x,y,w,h和置信度以及所包含的物体分别属于9418类的概率,所以每个anchor box需要预测4+1+9418=94234 + 1 + 9418 = 9423个值。每个网格需要预测3×9423=282693\times 9423 = 28269个值。在训练过程中,当网络遇到来自检测数据集的图片时,用完整的YOLOv2loss进行反向传播计算,当网络遇到来自分类数据集的图片时,只用分类部分的loss进行反向传播。

YOLO9000的预测过程

WordTree中每个节点的子节点都属于同一个子类,分层次的对每个子类的节点进行一次softmax处理,以得到同义词集合中的每个词的下义词的概率。当需要预测属于某个类别的概率时,需要预测该类别节点的条件概率。即在WordTree上找到该类别名词的根结点的路径,计算路径上每个节点的概率之积。预测时,YOLOv2得到置信度,同时会给出边界框位置以及一个树状概率图,沿着根结点向下,沿着置信度最高的分枝向下,直到达到某个阈值,最后到达的节点类别即为预测物体的类别。

YOLO9000使用WordTree混合目标检测数据集和分类数据集,并在其上进行联合训练,使之能实时检测出超过9000个类别的物体,其强大令人赞叹不已。YOLO9000尤其对动物的识别效果很好,但是对衣服或者设备等类别的识别效果不是很好,可能的原因是与目标检测数据集中的数据偏向有关。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章