rtmo / rtmo_gpu.py
Luigi's picture
RTMO ONNX Models from MMPOSE range from Tiny to Large
7ad7e4d verified
Raw
History Blame
2.12 kB
import os
from rtmlib import RTMO
class RTMO_GPU(RTMO):
def __init__(self,
onnx_model: str = None,
model_input_size: tuple = (640, 640),
mean: tuple = None,
std: tuple = None,
to_openpose: bool = False,
backend: str = 'onnxruntime',
device: str = 'cuda'):
if backend == 'onnxruntime':
if not os.path.exists(onnx_model):
from rtmlib.tools.file import download_checkpoint
onnx_model = download_checkpoint(onnx_model)
import onnxruntime as ort
providers = {'cpu': 'CPUExecutionProvider',
'cuda': [
('CUDAExecutionProvider', {
'device_id': 0,
'arena_extend_strategy': 'kNextPowerOfTwo',
'gpu_mem_limit': 2 * 1024 * 1024 * 1024,
'cudnn_conv_algo_search': 'DEFAULT',
'do_copy_in_default_stream': True,
'enable_cuda_graph': False
}),
'CPUExecutionProvider']}
self.session = ort.InferenceSession(path_or_bytes=onnx_model,
providers=providers[device])
print(f'load {onnx_model} with {backend} backend')
self.onnx_model = onnx_model
self.model_input_size = model_input_size
self.mean = mean
self.std = std
self.backend = backend
self.device = device
self.to_openpose = to_openpose
else:
super().__init__(onnx_model,
model_input_size,
mean,
std,
to_openpose,
backend,
device)