Object_tracking_boxmot / tests /unit /test_reidbackend.py
usiddiquee
hi
e1832f4
import cv2
import pytest
import numpy as np
from pathlib import Path
from boxmot.utils import ROOT, WEIGHTS
from boxmot.appearance.backends.onnx_backend import ONNXBackend
from boxmot.appearance.backends.openvino_backend import OpenVinoBackend
from boxmot.appearance.backends.pytorch_backend import PyTorchBackend
from boxmot.appearance.backends.tensorrt_backend import TensorRTBackend
from boxmot.appearance.backends.tflite_backend import TFLiteBackend
from boxmot.appearance.backends.torchscript_backend import TorchscriptBackend
from boxmot.appearance.reid.auto_backend import ReidAutoBackend
# generated in previous job step
EXPORTED_REID_MODELS = [
WEIGHTS / 'osnet_x0_25_msmt17.pt',
WEIGHTS / 'osnet_x0_25_msmt17.torchscript',
WEIGHTS / 'osnet_x0_25_msmt17.onnx',
WEIGHTS / 'osnet_x0_25_msmt17_openvino_model'
]
ASSOCIATED_BACKEND = [
PyTorchBackend,
TorchscriptBackend,
ONNXBackend,
OpenVinoBackend
]
@pytest.mark.parametrize("reid_model", EXPORTED_REID_MODELS)
def test_reidbackend_output(reid_model):
rab = ReidAutoBackend(
weights=reid_model, device='cpu', half=False
)
b = rab.get_backend()
img = cv2.imread(str(ROOT / 'assets/MOT17-mini/train/MOT17-04-FRCNN/img1/000001.jpg'))
dets = np.array([[144, 212, 578, 480, 0.82, 0],
[425, 281, 576, 472, 0.56, 65]])
embs = b.get_features(dets[:, 0:4], img)
assert embs.shape[0] == 2 # two crops should give two embeddings
assert embs.shape[1] == 512 # osnet embeddings are of size 512
@pytest.mark.parametrize("exported_reid_model, backend", zip(EXPORTED_REID_MODELS, ASSOCIATED_BACKEND))
def test_reidbackend_type(exported_reid_model, backend):
rab = ReidAutoBackend(
weights=exported_reid_model, device='cpu', half=False
)
b = rab.get_backend()
assert isinstance(b, backend)