yolov2 yolo9000阅读笔记

论文地址:https://arxiv.org/pdf/1612.08242v1.pdf

关于yolov1见我的另一篇

YOLO9000: Better, Faster, Stronger

  • yolov2是指对yolov1做出了些许改进,而yolo9000是指对yolov2使用dataset combination method and joint training algorithm从而得到可以实现9000个类别的detection的model

  • 首先,yolov1存在召回率(即查全率 T P F N + T P \frac{TP}{FN + TP} FN+TPTP)低和localization不准的问题,针对这些问题提出了一些改进,也即

better

  1. 用batch normalization提高了一点点的map(2%),并且可以去掉v1中的dropout
  2. v1采用224224的分类任务来预训练backbone再在448 * 448的detection上去finetune,而v2在448 * 448detection finetune之前,插入了10个epoch的448448分类任务来过渡resolution,又对map提高了几乎4%
  3. 借鉴faster-rcnn的anchor,而且对每个anchor都预测一个class而改变了之前一个grid只预测一个class的做法。这样做的结果是降低了一点map但是提高了召回率
  4. 使用k-means来确定anchor的尺寸,而k-means采取的距离为: d ( b o x ; c e n t r o i d ) = 1 − I O U ( b o x ; c e n t r o i d ) d(box; centroid) = 1 − IOU(box; centroid) d(box;centroid)=1IOU(box;centroid)目的是消除bbox的size的影响
  5. 认为faster-rcnn的anchor shift设计有缺陷,输出的如果是直接对anchor的center的shift会导致一开始飘到很远的地方,振荡很久才收敛,所以这里沿用yolov1采用0-1(用grid来归一化)的输出,所以输出前要加一个logistics回归。
    输出 t x , t y , t w , t h , t o t_x,t_y,t_w,t_h,t_o tx,ty,tw,th,to,而 p w , p h p_w,p_h pw,ph是anchor的长宽, c x , c y c_x,c_y cx,cy是grid cell的位置
    在这里插入图片描述
    P r ( o b j e c t ) ∗ I O U ( b , o b j e c t ) = σ ( t o ) P r(object) ∗ IOU(b,object) = σ(t_o) Pr(object)IOU(b,object)=σ(to)
    最终效果如下图:
    在这里插入图片描述
  6. 为了得到fine-grained的feature,将earlier的feature用一个passthrough传到后面的层,而由于没有用unet结构,为了将前面的26 * 26和后面的13*13concatenate到一起,将26 * 26拆成4个channel
  7. multi-scale training,每10个epoch随机改变一次输入的size(由于只由conv和pooling组成,所以输入理论上只要是某个倍数即可)导致训练出的模型可以适应多种resolution的输入

faster

  • 提出了darknet这个backbone,用更快更精简的网络实现了高的准确率在这里插入图片描述
  • 先在classification任务上训练darknet,然后把最后一层卷积层去掉加上一些其它的用于detection的东西(就懒得翻译了都看得懂):We modify this network for detection by removing the last convolutional layer and instead adding on three 3 × 3 convolutional layers with 1024 filters each followed by a final 1 × 1 convolutional layer with the number of outputs we need for detection. For VOC we predict 5 boxes with 5 coordinates each and 20 classes per box so 125 filters. We also add a passthrough layer from the final 3 × 3 × 512 layer to the second to last convolutional layer so that our model can use fine grain features

stronger

  • 能够用两种dataset的混合来训练,一种是只有class没有bbox标注的,用来训练分类器,这时loss只计算并更新与分类有关的参数,更新对应置信度最高的bbox的分类输出;另一种是常规的detection输入,这时使用完整的loss。
  • 提出一种multi-label的模型(而不使用softmax),是为了使来自不同数据集的输入有较好的兼容性,当label的语义有重叠时对模型的训练不会产生不利冲突,这个multi-label的模型如下
  • 将label使用word-tree的形式表示出来,而预测每个结点对其子节点的条件概率。所以如果1000个label,最后可能要预测1300多维的向量,因为树的根部是一些不作为label的(比如“名词”、“动词”)之类的单词。而对于每一类的概率,需要从该结点沿着路径乘到根节点。test时预测的类别为从根节点开始沿着概率值最高一条路径一直走下去直到某个阈值开始输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值