一类COCO数据集上的Yolov3

时间:2020-01-28 14:35:39

标签: python machine-learning deep-learning yolo

我想比较可以检测多个类别的yolov3模型与只能检测一个类别的yolov3模型的性能。

我到目前为止所做的事情:

  • 为了进行比较,我使用了在COCO数据集上预先训练的yolov3模型。 因此,我使用此处提到的yolov3.cfg coco.data和yolov3.weights文件:https://pjreddie.com/darknet/yolo/
  • 然后,我从COCO网站上下载了特定班级的火车和val数据。班级人员约有6400张火车图像和约2600个验证数据,班椅上有〜12744张火车图像和〜580个验证图像。
  • 对于一类模型,我在相应的行(#classes = 1和#filters = 18)中修改了yolov3.cfg
  • 然后,我根据预先训练的权重文件:darknet53.conv.74
  • 为每个人和椅子训练了一个yolov3模型。

培训

  • 我已经为班级人员训练了大约 267100 批次的模型。 (AVG-LOSS:1.3)
  • 我已经为 51200 批次的班级椅子进行了模型训练。 (AVG-LOSS:1.0)

验证

  • 我已使用下载的验证图像来计算map-value / ap-value。我是通过致电darknet detector map model.data model.cfg model.best.weights
  • 来完成此操作的

班级成员

  • 当我使用默认的coco模型(可以检测80个类)时,我得到:

    class_id = 0, name = person, ap = 76.56%, (TP=7684, FP=3982)

  • 经过训练的一类模型可以实现:

    class_id = 0, name = person, ap = 66.63%, (TP=6515, FP=2259)

班主任

  • 当我使用默认的coco模型(可以检测80个类)时,我得到:

    class_id = 0, name = person, ap = 60.58%, (TP=880, FP=504)

  • 经过训练的一类模型可以实现:

    class_id = 0, name = person, ap = 38.59%, (TP=482, FP=232)

问题

  1. 为什么训练期间的平均损失仍高于1.0?看来该功能已经收敛,并且我已经超出了每类约2000批的经验法则。

  2. 数据量不足以仅训练一个班级吗?特别是当我对转换层使用预训练权重时?

  3. 平均精度(ap)值是否现实?一类模型的表现比所有80种模型都训练的模型差吗?如果不是,那么一类模型的精度变差的原因可能是什么?

  4. 如果是的话,这是因为如果我们在所有课程中进行培训,我们真的可以学习各个课程之间的差异,并且结果是仅学习一门课程就能获得更好的成绩?

    < / li>

班椅的火车图片

Train image of class chair

班级人的火车图片

Train image of class person

0 个答案:

没有答案