PNet需要的box准备 - SiYue0211/mtcnn_tf GitHub Wiki

PNet需要的box准备

使用WIDER_train作为数据集产生PNet需要的box,具体流程如下:

  • 生成负的box(negative box)

    1. 随机画框,如果画的框与Ground Truth的IOU小于0.3判断为负的box

    具体随机画框的方式是:

      a. 设置框的尺度,从12pix到min(width,hegiht)/2随机
       
      b. 设置左上角坐标,x在(0,width-框的尺寸)范围内随机,y在(0,height-框的尺寸)范围内随机
    
      c. 有了左上和框的尺寸自然可以得到完整框
    
    1. 回归框偏移,解释一下就是在Ground Truth的周围画框,确保与GT有IOU,但是又小于0.3

      具体的方法是:

      a. 设置框的尺寸,从12pix到min(width,hegiht)/2随机

      b. 随机设置偏移量

      c. 根据偏移量设置左上角位置

      d. 使用偏移量可以保证有交集

      e. 如果IOU大于0.3不要

    2. 需要2的原因是如果只用1方法画框,可能很多框与GT的IOU为0,这不利于PNet训练

    3. 将所有生成的框resize到12*12

    4. 偏移框

 偏移量的计算

`offset_x1 = (gx1 - x1) / float(x2-x1)

 offset_y1 = (gy1 - y1) / float(y2-y1)

 offset_x2 = (gx2 - x2) / float(x2-x1)

 offset_y2 = (gy2 - y2) / float(y2-y1)`
  • 生成正的box(positive box)

    1. 回归框偏移,确保与GT的IOU大于0.65

    2. 记录偏移量,偏移量表示GT与生成框之间的偏移,绝对值越小说明和GT越相近

  • 生成忽略的box(Part Face)

    1. part face与GT的IOU在0.4到0.65之间

    2. 记录偏移量

  • 结果 GT的框

红框表示negative box中1方法生成的

粉红框表示negative box中2方法生成的

黄色框表示part face

绿色框表示positive box