This:
    threshold = 0.75
    im = PILImage.open(im)
    img = np.array(im)
    img = transforms.ToTensor()(img)
    print(img.size())
    out = frcnn_model([img])
    print(out)
    scores = out[0]['scores']
    bboxes = out[0]['boxes']
    classes = out[0]['labels']
    best_idx = np.where(scores>threshold)
    best_bboxes = bboxes[best_idx]
    best_classes = bboxes[best_idx]
    if len(best_idx)>0:
       plt.imshow(im)
       ax=plt.gca()
       for b in best_bboxes:
           rect = Rectangle((b[0],b[1]), b[2]-b[0], b[3]-b[1], linewidth=2, edgecolor='r', facecolor='none')
           ax.add_patch(rect)
       plt.show()

Also, it seems that Faster R-CNN requires an RGB input not BGR, at least that seems from the normalization step:

        if image_mean is None:
            image_mean = [0.485, 0.456, 0.406]
        if image_std is None:
            image_std = [0.229, 0.224, 0.225]
        transform = GeneralizedRCNNTransform(min_size, max_size, image_mean, image_std)