因为YOLOV2的创新并不突出,主要是更新了backbone和借鉴了faster RCNN或者SSD,后面又提出了YOLO9000,可以检测9000个类别。这个算是一个比较新颖的思路。
整体思路:
1、训练:融合imageNet 9000类和coco 80类的训练集。且并不需要重新标注imagenet 的检测框,训练时遇到coco数据回传检测loss,遇到image net数据回传分类loss。(这里我觉得应该是也把分类loss coco数据也被合并到imagenet)
2、预测:YOLOv2给出的置信度就是pr(physical opbject) ,同时会给出边界框位置以及一个树状概率图。在这个概率图中找到概率最高的路径,当达到某一个阈值时停止,就用当前节点表示预测的类别。
YOLO9000可以快速检测出超过9000个类别的物体,总体mAP值为19.7%。
需要解决的问题:
1、如何解决imagenet 9000类别的冲突问题。
2、如何对应imagenet 标签和coco标签。
解决方案:
一、通过Word tree。
狗这个label即属于犬科也属于家畜,这就很复杂了,完全是个图结构。因此作者采用WordTree来解决分类和检测数据集的标签问题,也就是说在这个树里面任意一个节点只能属于唯一一个节点(跟WordNet是有区别的)。
*遍历Imagenet的label,然后在WordNet中寻找该label到根节点(指向一个物理对象)的路径;
*如果路径直有一条,那么就将该路径直接加入到分层树结构中;
*否则,所有路径中选择一条最短路径,加入到分层树。
训练时:使用multi-label模型,即假定一张图片可以有多个label,并且不要求label间独立,即使用多个softmax。
预测时:条件概率模型的方式,某个节点的概率值等于该节点到根节点的所有条件概率之积。例如,如果想知道一张图片是不是“Norfolk terrier ”需要计算:
为了验证这种方法作者在WordTree(用1000类别的ImageNet创建)上训练了Darknet-19模型。为了创建WordTree1k,作者天添加了很多中间节点,把标签由1000扩展到1369。训练过程中ground truth标签要顺着向根节点的路径传播。例如,如果一张图片被标记为“Norfolk terrier”,它也被标记为“dog” 和“mammal”等。为了计算条件概率,模型预测了一个包含1369个元素的向量,而且基于所有“同义词集”计算softmax,其中“同义词集”是同一概念的下位词。
softmax操作也同时应该采用分组操作,下图上半部分为ImageNet对应的原生Softmax,下半部分对应基于WordTree的Softmax:
最后在Imagenet1k数据集上的top-1 accuracy为72.9%,top-5 accuracy为91.2%;在WordTree1k数据集上的top-1 accuracy为71.9%,top-5 accuracy为90.4%。在WordTree1k数据集上的准确率要稍低一点,主要是因为那些新的类别的影响。
然后作者开始融合ImageNet 9000和coco,进行联合训练,YOLO9000的主网络基本和YOLOv2类似,只不过每个grid cell只采用3个box prior。
参考链接:
2、https://zhuanlan.zhihu.com/p/35325884