1.初始数据通过imdb类的操作放在它的属性roidb里。
2.roidb只是一个字典,可以拿出来当做一个单独的字典,脱离imdb。
3.roi_data_layer下的layer就是input-data。Forward中加载数据并控制一次一张图片
的数据进入网络。送到rpn-data中三组数据:
gt_boxes :大小(一张图片xml中box个数, 5);一张图中box的坐标以及类别
data : 大小(1,3,高,宽);一张图的数据
im_info: 大小(1, 3); (高, 宽, 下面提到的比例)
图片的大小与原图不同,每张图的高或宽被rescale成600,另一边会按照相同的比例rescale(代码出处未找到,且不懂这样的原因??????)
4.`AnchorTargetLayer就是rpn-data.计算anchors,以及anchors是否合理(大小,overlap),并根据每个anchor与gt_box的重叠度判断labels;anchors大小是卷积网络过来数据的高宽再乘9个(即,一个点有9个).最后产生四组数据(设k=len(anchors)):
labels:大小(k, 1); 前景=1,背景=0, 否则=-1
rpn_bbox_targets: 大小(k, 4)
bbox_inside_weights: 大小(k, 4);有前景=1,否则为0
bbox_outside_weights: 大小(k, 4); 有前景或背景=1/(前景+背景),否则为0