Spaces:
Running
on
Zero
Running
on
Zero
#!/usr/bin/env python3 | |
import os, sys, importlib.util, re | |
# βββ Monkey-patch mmdet to remove its mmcv-version assertion βββ | |
spec = importlib.util.find_spec('mmdet') | |
if spec and spec.origin: | |
src = open(spec.origin, encoding='utf-8').read() | |
# strip out the mmcv_minimum_versionβ¦assertβ¦ block up to __all__ | |
patched = re.sub(r'(?ms)^[ \t]*mmcv_minimum_version.*?^__all__', '__all__', src) | |
m = importlib.util.module_from_spec(spec) | |
m.__loader__ = spec.loader | |
m.__file__ = spec.origin | |
m.__path__ = spec.submodule_search_locations | |
sys.modules['mmdet'] = m | |
exec(compile(patched, spec.origin, 'exec'), m.__dict__) | |
# βββ Configuration: set your image & output folder here βββ | |
IMAGE_PATH = "000000197388.jpg" | |
VIS_OUT_DIR = "vis_results" | |
POSE2D = "rtmo" # hard-code the RTMO 2D model alias | |
DEVICE = None # e.g. "cuda:0" or None to auto-select | |
# βββ Inference βββ | |
from mmpose.apis.inferencers import MMPoseInferencer | |
# create output folder | |
os.makedirs(VIS_OUT_DIR, exist_ok=True) | |
# instantiate the inferencer | |
inferencer = MMPoseInferencer( | |
pose2d=POSE2D, | |
scope="mmpose", | |
device=DEVICE, | |
det_cat_ids=[0], | |
# you can override any other init args here⦠| |
) | |
# run on our single image, with the RTMO-specific defaults, | |
# iterating the generator so that visualization actually happens: | |
for result in inferencer( | |
inputs=IMAGE_PATH, | |
bbox_thr=0.1, | |
nms_thr=0.65, | |
pose_based_nms=True, | |
show=False, | |
vis_out_dir=VIS_OUT_DIR, | |
): | |
# result is a dict with keys "visualization" and "predictions" | |
# you can inspect it here if you like, e.g.: | |
# print(result['predictions']) | |
pass | |
print(f"Visualized results saved to {VIS_OUT_DIR}/") | |