PNet需要的box准备 - SiYue0211/mtcnn_tf GitHub Wiki
PNet需要的box准备
使用WIDER_train作为数据集产生PNet需要的box,具体流程如下:
-
生成负的box(negative box)
- 随机画框,如果画的框与Ground Truth的IOU小于0.3判断为负的box
具体随机画框的方式是:
a. 设置框的尺度,从12pix到min(width,hegiht)/2随机 b. 设置左上角坐标,x在(0,width-框的尺寸)范围内随机,y在(0,height-框的尺寸)范围内随机 c. 有了左上和框的尺寸自然可以得到完整框
-
回归框偏移,解释一下就是在Ground Truth的周围画框,确保与GT有IOU,但是又小于0.3
具体的方法是:
a. 设置框的尺寸,从12pix到min(width,hegiht)/2随机
b. 随机设置偏移量
c. 根据偏移量设置左上角位置
d. 使用偏移量可以保证有交集
e. 如果IOU大于0.3不要
-
需要
2
的原因是如果只用1
方法画框,可能很多框与GT的IOU为0,这不利于PNet训练 -
将所有生成的框resize到12*12
-
偏移框
偏移量的计算
`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)
-
回归框偏移,确保与GT的IOU大于0.65
-
记录偏移量,偏移量表示GT与生成框之间的偏移,绝对值越小说明和GT越相近
-
-
生成忽略的box(Part Face)
-
part face与GT的IOU在0.4到0.65之间
-
记录偏移量
-
-
结果 GT的框
红框表示negative box中1方法
生成的
粉红框表示negative box中2方法
生成的
黄色框表示part face
绿色框表示positive box