我正在使用更快的 rcnn 模型来运行一些对象检测。我使用的包装器是胶子,代码如下:
net = model_zoo.get_model('faster_rcnn_resnet50_v1b_coco', pretrained=True)
im_fname = utils.download('https://github.com/dmlc/web-data/blob/master/' +
'gluoncv/detection/biking.jpg?raw=true',
path='biking.jpg')
x, orig_img = data.transforms.presets.rcnn.load_test(im_fname)
box_ids, scores, bboxes = net(x)
我的问题是,是否可以减小 net(x) 返回的数组的大小,从而有效地加快计算速度?
问题是该模型将 box_ids、scores 和 bboxes 生成为具有 80000 个元素的数组 - 只有前 10 个元素有用,其余的得分为 -1。我稍后尝试使用 asnumpy() 将这些数组转换为 numpy 数组,但是,mxnet 使用异步引擎,并且该函数必须等待计算结束才能执行。80000 个元素的计算需要更长的时间(5 秒 +),因此我试图减小数组大小(SSD 模型输出大约 6000 个元素并且速度更快)。
如果您有其他关于如何使 .asnumpy() 更快的解决方案,这些也是受欢迎的 - 基本上,一张图像的传递需要 5 秒,这似乎不合理,所以我正在寻找将它减少到 ~0.2 秒(这似乎更合适吧?)
谢谢!