diff --git a/configs/body_2d_keypoint/rtmo/body7/rtmo-l_16xb16-600e_body7-640x640.py b/configs/body_2d_keypoint/rtmo/body7/rtmo-l_16xb16-600e_body7-640x640.py
index 4cd0ece77b..45e4295c6c 100644
--- a/configs/body_2d_keypoint/rtmo/body7/rtmo-l_16xb16-600e_body7-640x640.py
+++ b/configs/body_2d_keypoint/rtmo/body7/rtmo-l_16xb16-600e_body7-640x640.py
@@ -480,7 +480,7 @@
assigner=dict(
type='SimOTAAssigner',
dynamic_k_indicator='oks',
- oks_calculator=dict(type='PoseOKS')),
+ oks_calculator=dict(type='PoseOKS', metainfo=metafile)),
prior_generator=dict(
type='MlvlPointGenerator',
centralize_points=True,
diff --git a/configs/body_2d_keypoint/rtmo/body7/rtmo-m_16xb16-600e_body7-640x640.py b/configs/body_2d_keypoint/rtmo/body7/rtmo-m_16xb16-600e_body7-640x640.py
index f5b760d893..6c1a005366 100644
--- a/configs/body_2d_keypoint/rtmo/body7/rtmo-m_16xb16-600e_body7-640x640.py
+++ b/configs/body_2d_keypoint/rtmo/body7/rtmo-m_16xb16-600e_body7-640x640.py
@@ -479,7 +479,7 @@
assigner=dict(
type='SimOTAAssigner',
dynamic_k_indicator='oks',
- oks_calculator=dict(type='PoseOKS')),
+ oks_calculator=dict(type='PoseOKS', metainfo=metafile)),
prior_generator=dict(
type='MlvlPointGenerator',
centralize_points=True,
diff --git a/configs/body_2d_keypoint/rtmo/body7/rtmo-s_8xb32-600e_body7-640x640.py b/configs/body_2d_keypoint/rtmo/body7/rtmo-s_8xb32-600e_body7-640x640.py
index 6fc068ecd4..83d7c21d8a 100644
--- a/configs/body_2d_keypoint/rtmo/body7/rtmo-s_8xb32-600e_body7-640x640.py
+++ b/configs/body_2d_keypoint/rtmo/body7/rtmo-s_8xb32-600e_body7-640x640.py
@@ -481,7 +481,7 @@
assigner=dict(
type='SimOTAAssigner',
dynamic_k_indicator='oks',
- oks_calculator=dict(type='PoseOKS'),
+ oks_calculator=dict(type='PoseOKS', metainfo=metafile),
use_keypoints_for_center=True),
prior_generator=dict(
type='MlvlPointGenerator',
diff --git a/configs/body_2d_keypoint/rtmo/body7/rtmo-t_8xb32-600e_body7-416x416.py b/configs/body_2d_keypoint/rtmo/body7/rtmo-t_8xb32-600e_body7-416x416.py
index fc9a7d745c..566fe34455 100644
--- a/configs/body_2d_keypoint/rtmo/body7/rtmo-t_8xb32-600e_body7-416x416.py
+++ b/configs/body_2d_keypoint/rtmo/body7/rtmo-t_8xb32-600e_body7-416x416.py
@@ -475,7 +475,7 @@
assigner=dict(
type='SimOTAAssigner',
dynamic_k_indicator='oks',
- oks_calculator=dict(type='PoseOKS'),
+ oks_calculator=dict(type='PoseOKS', metainfo=metafile),
use_keypoints_for_center=True),
prior_generator=dict(
type='MlvlPointGenerator',
diff --git a/configs/body_2d_keypoint/rtmo/coco/rtmo-l_16xb16-600e_coco-640x640.py b/configs/body_2d_keypoint/rtmo/coco/rtmo-l_16xb16-600e_coco-640x640.py
index 36cf20266f..97bbd109ca 100644
--- a/configs/body_2d_keypoint/rtmo/coco/rtmo-l_16xb16-600e_coco-640x640.py
+++ b/configs/body_2d_keypoint/rtmo/coco/rtmo-l_16xb16-600e_coco-640x640.py
@@ -268,7 +268,7 @@
assigner=dict(
type='SimOTAAssigner',
dynamic_k_indicator='oks',
- oks_calculator=dict(type='PoseOKS')),
+ oks_calculator=dict(type='PoseOKS', metainfo=metafile)),
prior_generator=dict(
type='MlvlPointGenerator',
centralize_points=True,
diff --git a/configs/body_2d_keypoint/rtmo/coco/rtmo-m_16xb16-600e_coco-640x640.py b/configs/body_2d_keypoint/rtmo/coco/rtmo-m_16xb16-600e_coco-640x640.py
index f73482b03f..de669ba604 100644
--- a/configs/body_2d_keypoint/rtmo/coco/rtmo-m_16xb16-600e_coco-640x640.py
+++ b/configs/body_2d_keypoint/rtmo/coco/rtmo-m_16xb16-600e_coco-640x640.py
@@ -267,7 +267,7 @@
assigner=dict(
type='SimOTAAssigner',
dynamic_k_indicator='oks',
- oks_calculator=dict(type='PoseOKS')),
+ oks_calculator=dict(type='PoseOKS', metainfo=metafile)),
prior_generator=dict(
type='MlvlPointGenerator',
centralize_points=True,
diff --git a/configs/body_2d_keypoint/rtmo/coco/rtmo-s_8xb32-600e_coco-640x640.py b/configs/body_2d_keypoint/rtmo/coco/rtmo-s_8xb32-600e_coco-640x640.py
index cab732ae60..755c47bf82 100644
--- a/configs/body_2d_keypoint/rtmo/coco/rtmo-s_8xb32-600e_coco-640x640.py
+++ b/configs/body_2d_keypoint/rtmo/coco/rtmo-s_8xb32-600e_coco-640x640.py
@@ -269,7 +269,7 @@
assigner=dict(
type='SimOTAAssigner',
dynamic_k_indicator='oks',
- oks_calculator=dict(type='PoseOKS'),
+ oks_calculator=dict(type='PoseOKS', metainfo=metafile),
use_keypoints_for_center=True),
prior_generator=dict(
type='MlvlPointGenerator',
diff --git a/mmpose/apis/inferencers/base_mmpose_inferencer.py b/mmpose/apis/inferencers/base_mmpose_inferencer.py
index 0f4dacb050..574063e824 100644
--- a/mmpose/apis/inferencers/base_mmpose_inferencer.py
+++ b/mmpose/apis/inferencers/base_mmpose_inferencer.py
@@ -336,13 +336,13 @@ def preprocess(self,
# head's `predict` method. Here, we set the arguments for filtering
if self.cfg.model.type == 'BottomupPoseEstimator':
# 1. init with default arguments
- test_cfg = self.model.test_cfg.copy()
+ test_cfg = self.model.head.test_cfg.copy()
# 2. update the score_thr and nms_thr in the test_cfg of the head
if 'score_thr' in test_cfg:
test_cfg['score_thr'] = bbox_thr
if 'nms_thr' in test_cfg:
test_cfg['nms_thr'] = nms_thr
- self.model.head.test_cfg = test_cfg
+ self.model.test_cfg = test_cfg
for i, input in enumerate(inputs):
bbox = bboxes[i] if bboxes else []
diff --git a/mmpose/apis/inferencers/pose2d_inferencer.py b/mmpose/apis/inferencers/pose2d_inferencer.py
index f5ce671e87..8b6a2c3e96 100644
--- a/mmpose/apis/inferencers/pose2d_inferencer.py
+++ b/mmpose/apis/inferencers/pose2d_inferencer.py
@@ -243,6 +243,9 @@ def forward(self,
if pose_based_nms:
for ds in data_samples:
+ if len(ds.pred_instances) == 0:
+ continue
+
kpts = ds.pred_instances.keypoints
scores = ds.pred_instances.bbox_scores
num_keypoints = kpts.shape[-2]
diff --git a/projects/README.md b/projects/README.md
index 58f092fc70..a23696640e 100644
--- a/projects/README.md
+++ b/projects/README.md
@@ -40,6 +40,16 @@ We also provide some documentation listed below to help you get started:
+- **[🎳RTMO](./rtmo)**: Towards High-Performance One-Stage Real-Time Multi-Person Pose Estimation
+
+ TRY IT NOW
+
+
+
+