def test_model_script(self):
     model = detr_resnet50(pretrained=False).eval()
     scripted_model = torch.jit.script(model)
     x = nested_tensor_from_tensor_list([torch.rand(3, 200, 200), torch.rand(3, 200, 250)])
     out = model(x)
     out_script = scripted_model(x)
     self.assertTrue(out["pred_logits"].equal(out_script["pred_logits"]))
     self.assertTrue(out["pred_boxes"].equal(out_script["pred_boxes"]))
Exemplo n.º 2
0
    def test_model_onnx_detection(self):
        model = detr_resnet50(pretrained=False).eval()
        dummy_image = torch.ones(1, 3, 800, 800) * 0.3
        model(dummy_image)

        # Test exported model on images of different size, or dummy input
        self.run_model(
            model,
            [(torch.rand(1, 3, 750, 800), )],
            input_names=["inputs"],
            output_names=["pred_logits", "pred_boxes"],
            tolerate_small_mismatch=True,
        )
Exemplo n.º 3
0
 def test_model_detection_different_inputs(self):
     model = detr_resnet50(pretrained=False).eval()
     # support NestedTensor
     x = nested_tensor_from_tensor_list(
         [torch.rand(3, 200, 200),
          torch.rand(3, 200, 250)])
     out = model(x)
     self.assertIn('pred_logits', out)
     # and 4d Tensor
     x = torch.rand(1, 3, 200, 200)
     out = model(x)
     self.assertIn('pred_logits', out)
     # and List[Tensor[C, H, W]]
     x = torch.rand(3, 200, 200)
     out = model([x])
     self.assertIn('pred_logits', out)
Exemplo n.º 4
0
    def test_warpped_model_script_detection(self):
        class WrappedDETR(nn.Module):
            def __init__(self, model):
                super().__init__()
                self.model = model

            def forward(self, inputs: List[Tensor]):
                sample = nested_tensor_from_tensor_list(inputs)
                return self.model(sample)

        model = detr_resnet50(pretrained=False)
        wrapped_model = WrappedDETR(model)
        wrapped_model.eval()
        scripted_model = torch.jit.script(wrapped_model)
        x = [torch.rand(3, 200, 200), torch.rand(3, 200, 250)]
        out = wrapped_model(x)
        out_script = scripted_model(x)
        self.assertTrue(out["pred_logits"].equal(out_script["pred_logits"]))
        self.assertTrue(out["pred_boxes"].equal(out_script["pred_boxes"]))
Exemplo n.º 5
0
    keep = probas.max(-1).values > prob_threshold
    end = time.time()

    probas = probas.cpu().detach().numpy()
    keep = keep.cpu().detach().numpy()

    # convert boxes from [0; 1] to image scales
    bboxes_scaled = rescale_bboxes(outputs['pred_boxes'][0, keep], im.size)
    return probas[keep], bboxes_scaled, end-start



if __name__ == "__main__":
    # detr = DETRdemo(num_classes=3+1)

    detr = detr_resnet50(pretrained=False,num_classes=3+1).eval()  # <------这里类别需要+1
    state_dict =  torch.load('outputs/checkpoint.pth')   # <-----------修改加载模型的路径
    detr.load_state_dict(state_dict["model"])
    detr.to(device)
    

    files = os.listdir("./myData/test")

    for file in files:
        img_path = os.path.join("./myData/test",file)
        im = Image.open(img_path)

        scores, boxes, waste_time = detect(im, detr, transform)

        # print(scores)