py-faster-rcnn---demo.py
./tool/demo.py
可传入参数 --gpu --cpu --net(vgg16 or zf)
cfg.TEST.HAS_RPN = True
Use RPN for proposals
prototxt :
./models/pascal_voc/下
caffemodel :
./data/faster_rcnn_models/下
demo.py文件的主流是黄色箭头、def vis_detections( ) 是紫色箭头、def demo( ) 是浅蓝色箭头、def parse_args() 是红棕色箭头。
其中:scores代表分数;boxes代表目标框对角两个点四个坐标值;dets代表各个框坐标和分数组成的矩阵、inds超过阈值符合要求的窗口对应的下标。
demo函数:
对测试图片提取预选框,并进行非极大值抑制,然后调用def vis_detections 画矩形框。参数:net 测试时使用的网络结构;image_name:图片名称。
scores, boxes = im_detect(net, im): test.py中im_detect,得到网络预测的scores, boxes
CONF_THRESH = 0.8: score 阈值,最后画出候选框时需要,>thresh才会被画出
NMS_THRESH = 0.3: 非极大值抑制的阈值,剔除重复候选框
vis_detections模块: 画出测试图片的bounding boxes, 参数im为测试图片; class_name 为类别名称,在前面定义的 CLASSES 中; dets为非极大值抑制后的bbox和score的数组;thresh是最后score的阈值,高于该阈值的候选框才会被画出来。
im_detect(net, im, boxes=None)函数(./lib/fast_rcnn/test.py)
1、blobs, im_scales = _get_blobs(im, boxes): blobs中data存输入图resize之后的图,im_scales =
float(target_size) / float(im_size_min)
orfloat(cfg.TEST.MAX_SIZE) / float(im_size_max)
600 1000
2、im_blob = blobs['data'],blobs['im_info'] = [M, N, imscale] (resize之后的图像是M*N)
3、network forward
4、boxes = rois[:, 1:5] / im_scales[0] : boxes针对原始图像坐标(P*Q)
5、scores = blobs_out['cls_prob']
6、pred_boxes: boxes针对bounding-box regression deltas的修改