我刚刚使用tensorflow对象检测api使用fast-rcnn完成了一些转移学习。我在tensorflow 1.14中,骨干网是fast_rcnn_resnet101_coco。进行预测时,冻结的网络是否会调整提供给它们的图像的大小?
我之所以问是因为,当我向模型提供比我训练的图像大得多的图像时,它无法识别任何对象。当我将图像裁剪为1200x1200时,所有对象都是相同的,但是效果很好。
模型是否包含图像尺寸约束?即使对象在3000x3000图片中的尺寸相同,我是否也应该使用与配置文件中的尺寸相似的尺寸进行预测?
在用于训练的配置文件中,我约束输入图像:
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 200
max_dimension: 1200
}
}
这是否意味着在我现在使用的经过训练的模型中,如果将其放大到大于1200x1200的图像,它将按比例缩小吗?这是我在加载的冻结模型中进行预测的方法:
with model.as_default():
with tf.Session(graph=model) as sess:
imageTensor = model.get_tensor_by_name("image_tensor:0")
boxesTensor = model.get_tensor_by_name("detection_boxes:0")
scoresTensor = model.get_tensor_by_name("detection_scores:0")
classesTensor = model.get_tensor_by_name("detection_classes:0")
numDetections = model.get_tensor_by_name("num_detections:0")
# Make prediction
(boxes, scores, labels, N) = sess.run([boxesTensor, scoresTensor, classesTensor, numDetections],
feed_dict = {imageTensor: image})
相关:Training Image Size Faster-RCNN
此外,这篇文章使我认为它应该处理任何输入大小,但显然不能以相同的方式处理它们,所以我很困惑:Faster RCNN + inception v2 input size
答案 0 :(得分:1)
在Feature Pyramid Networks for Object Detection中,Faster RCNN对不同大小的对象显示不同的mAP。该模型在大型对象上的mAP高于小型对象。在Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks中,更快的RCNN调整输入图像的大小,使其较短的一面为600像素。因此,以我的选择,图像中对象的相对大小对检测确实很重要。裁剪大图像并使用较小的图像作为输入可能会有助于检测原始图像中的小对象,因为小对象变成了新图像中的相对大的对象。
FPN in a basic Faster R-CNN system has different performance on small, middle and large objects.