From cd135c07fbb810841b43d3d63bca7f51ae8234d7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:28:51 +0000 Subject: [PATCH 1/2] Initial plan From 6efdd8c397e9bf7a123cb1aa48a27a19b67b72a3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:32:24 +0000 Subject: [PATCH 2/2] Rename fmpose directory to fmpose3d and update all imports Co-authored-by: MMathisLab <28102185+MMathisLab@users.noreply.github.com> --- README.md | 4 ++-- animals/demo/vis_animals.py | 6 +++--- animals/models/model_animals.py | 2 +- animals/scripts/main_animal3d.py | 8 ++++---- demo/vis_in_the_wild.py | 10 +++++----- {fmpose => fmpose3d}/__init__.py | 0 {fmpose => fmpose3d}/aggregation_methods.py | 2 +- {fmpose => fmpose3d}/animals/__init__.py | 0 .../animals/common/__init__.py | 0 .../animals/common/animal3d_dataset.py | 0 .../animals/common/animal_visualization.py | 0 .../animals/common/arber_dataset.py | 0 .../animals/common/arguments.py | 0 {fmpose => fmpose3d}/animals/common/camera.py | 0 .../animals/common/graph_utils.py | 0 .../animals/common/lifter3d.py | 0 .../animals/common/mocap_dataset.py | 0 .../animals/common/skeleton.py | 0 {fmpose => fmpose3d}/animals/common/utils.py | 0 .../animals/models/__init__.py | 0 .../animals/models/graph_frames.py | 0 .../animals/models/model_animal3d.py | 2 +- {fmpose => fmpose3d}/common/__init__.py | 0 {fmpose => fmpose3d}/common/arguments.py | 0 {fmpose => fmpose3d}/common/camera.py | 0 {fmpose => fmpose3d}/common/generator.py | 0 {fmpose => fmpose3d}/common/graph_utils.py | 0 {fmpose => fmpose3d}/common/h36m_dataset.py | 6 +++--- {fmpose => fmpose3d}/common/load_data_hm36.py | 6 +++--- {fmpose => fmpose3d}/common/mocap_dataset.py | 0 {fmpose => fmpose3d}/common/skeleton.py | 0 {fmpose => fmpose3d}/common/utils.py | 0 {fmpose => fmpose3d}/lib/__init__.py | 0 {fmpose => fmpose3d}/lib/checkpoint/README.md | 0 .../lib/checkpoint/__init__.py | 0 .../lib/checkpoint/download_checkpoints.py | 0 {fmpose => fmpose3d}/lib/hrnet/__init__.py | 0 .../experiments/w48_384x288_adam_lr1e-3.yaml | 0 {fmpose => fmpose3d}/lib/hrnet/gen_kpts.py | 18 +++++++++--------- .../lib/hrnet/lib/__init__.py | 0 .../lib/hrnet/lib/config/__init__.py | 0 .../lib/hrnet/lib/config/default.py | 0 .../lib/hrnet/lib/config/models.py | 0 .../lib/hrnet/lib/models/__init__.py | 0 .../lib/hrnet/lib/models/pose_hrnet.py | 0 .../lib/hrnet/lib/utils/__init__.py | 0 .../lib/hrnet/lib/utils/coco_h36m.py | 0 .../lib/hrnet/lib/utils/inference.py | 0 .../lib/hrnet/lib/utils/transforms.py | 0 .../lib/hrnet/lib/utils/utilitys.py | 4 ++-- {fmpose => fmpose3d}/lib/preprocess.py | 0 {fmpose => fmpose3d}/lib/sort/__init__.py | 0 {fmpose => fmpose3d}/lib/sort/sort.py | 0 {fmpose => fmpose3d}/lib/yolov3/__init__.py | 0 {fmpose => fmpose3d}/lib/yolov3/bbox.py | 0 .../lib/yolov3/cfg/tiny-yolo-voc.cfg | 0 .../lib/yolov3/cfg/yolo-voc.cfg | 0 {fmpose => fmpose3d}/lib/yolov3/cfg/yolo.cfg | 0 .../lib/yolov3/cfg/yolov3.cfg | 0 {fmpose => fmpose3d}/lib/yolov3/darknet.py | 4 ++-- .../lib/yolov3/data/coco.names | 0 {fmpose => fmpose3d}/lib/yolov3/data/pallete | Bin .../lib/yolov3/data/voc.names | 0 .../lib/yolov3/human_detector.py | 8 ++++---- {fmpose => fmpose3d}/lib/yolov3/preprocess.py | 0 {fmpose => fmpose3d}/lib/yolov3/util.py | 4 ++-- {fmpose => fmpose3d}/models/__init__.py | 0 {fmpose => fmpose3d}/models/graph_frames.py | 0 {fmpose => fmpose3d}/models/model_GAMLP.py | 2 +- pyproject.toml | 2 +- scripts/FMPose3D_main.py | 8 ++++---- tests/test_demo_human.py | 10 +++++----- tests/test_model.py | 2 +- tests/test_training_pipeline.py | 2 +- 74 files changed, 55 insertions(+), 55 deletions(-) rename {fmpose => fmpose3d}/__init__.py (100%) rename {fmpose => fmpose3d}/aggregation_methods.py (99%) rename {fmpose => fmpose3d}/animals/__init__.py (100%) rename {fmpose => fmpose3d}/animals/common/__init__.py (100%) rename {fmpose => fmpose3d}/animals/common/animal3d_dataset.py (100%) rename {fmpose => fmpose3d}/animals/common/animal_visualization.py (100%) rename {fmpose => fmpose3d}/animals/common/arber_dataset.py (100%) rename {fmpose => fmpose3d}/animals/common/arguments.py (100%) rename {fmpose => fmpose3d}/animals/common/camera.py (100%) rename {fmpose => fmpose3d}/animals/common/graph_utils.py (100%) rename {fmpose => fmpose3d}/animals/common/lifter3d.py (100%) rename {fmpose => fmpose3d}/animals/common/mocap_dataset.py (100%) rename {fmpose => fmpose3d}/animals/common/skeleton.py (100%) rename {fmpose => fmpose3d}/animals/common/utils.py (100%) rename {fmpose => fmpose3d}/animals/models/__init__.py (100%) rename {fmpose => fmpose3d}/animals/models/graph_frames.py (100%) rename {fmpose => fmpose3d}/animals/models/model_animal3d.py (99%) rename {fmpose => fmpose3d}/common/__init__.py (100%) rename {fmpose => fmpose3d}/common/arguments.py (100%) rename {fmpose => fmpose3d}/common/camera.py (100%) rename {fmpose => fmpose3d}/common/generator.py (100%) rename {fmpose => fmpose3d}/common/graph_utils.py (100%) rename {fmpose => fmpose3d}/common/h36m_dataset.py (98%) rename {fmpose => fmpose3d}/common/load_data_hm36.py (98%) rename {fmpose => fmpose3d}/common/mocap_dataset.py (100%) rename {fmpose => fmpose3d}/common/skeleton.py (100%) rename {fmpose => fmpose3d}/common/utils.py (100%) rename {fmpose => fmpose3d}/lib/__init__.py (100%) rename {fmpose => fmpose3d}/lib/checkpoint/README.md (100%) rename {fmpose => fmpose3d}/lib/checkpoint/__init__.py (100%) rename {fmpose => fmpose3d}/lib/checkpoint/download_checkpoints.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/__init__.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/experiments/w48_384x288_adam_lr1e-3.yaml (100%) rename {fmpose => fmpose3d}/lib/hrnet/gen_kpts.py (91%) rename {fmpose => fmpose3d}/lib/hrnet/lib/__init__.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/config/__init__.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/config/default.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/config/models.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/models/__init__.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/models/pose_hrnet.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/utils/__init__.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/utils/coco_h36m.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/utils/inference.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/utils/transforms.py (100%) rename {fmpose => fmpose3d}/lib/hrnet/lib/utils/utilitys.py (98%) rename {fmpose => fmpose3d}/lib/preprocess.py (100%) rename {fmpose => fmpose3d}/lib/sort/__init__.py (100%) rename {fmpose => fmpose3d}/lib/sort/sort.py (100%) rename {fmpose => fmpose3d}/lib/yolov3/__init__.py (100%) rename {fmpose => fmpose3d}/lib/yolov3/bbox.py (100%) rename {fmpose => fmpose3d}/lib/yolov3/cfg/tiny-yolo-voc.cfg (100%) rename {fmpose => fmpose3d}/lib/yolov3/cfg/yolo-voc.cfg (100%) rename {fmpose => fmpose3d}/lib/yolov3/cfg/yolo.cfg (100%) rename {fmpose => fmpose3d}/lib/yolov3/cfg/yolov3.cfg (100%) rename {fmpose => fmpose3d}/lib/yolov3/darknet.py (99%) rename {fmpose => fmpose3d}/lib/yolov3/data/coco.names (100%) rename {fmpose => fmpose3d}/lib/yolov3/data/pallete (100%) rename {fmpose => fmpose3d}/lib/yolov3/data/voc.names (100%) rename {fmpose => fmpose3d}/lib/yolov3/human_detector.py (96%) rename {fmpose => fmpose3d}/lib/yolov3/preprocess.py (100%) rename {fmpose => fmpose3d}/lib/yolov3/util.py (98%) rename {fmpose => fmpose3d}/models/__init__.py (100%) rename {fmpose => fmpose3d}/models/graph_frames.py (100%) rename {fmpose => fmpose3d}/models/model_GAMLP.py (99%) diff --git a/README.md b/README.md index 4bfc91f9..5f17f6de 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,9 @@ conda activate fmpose_3d ```bash git clone xxxx.git # clone this repo # TestPyPI (pre-release/testing build) -pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ fmpose==0.0.5 +pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ fmpose3d==0.0.5 # Future Official PyPI release -# pip install fmpose +# pip install fmpose3d ``` ## Demo diff --git a/animals/demo/vis_animals.py b/animals/demo/vis_animals.py index 0aad779b..fddb79af 100644 --- a/animals/demo/vis_animals.py +++ b/animals/demo/vis_animals.py @@ -13,8 +13,8 @@ from PIL import Image import matplotlib.gridspec as gridspec import imageio -from fmpose.animals.common.arguments import opts as parse_args -from fmpose.common.camera import normalize_screen_coordinates, camera_to_world +from fmpose3d.animals.common.arguments import opts as parse_args +from fmpose3d.common.camera import normalize_screen_coordinates, camera_to_world sys.path.append(os.getcwd()) @@ -37,7 +37,7 @@ CFM = getattr(module, "Model") else: # Load model from installed fmpose package - from fmpose.models import Model as CFM + from fmpose3d.models import Model as CFM from deeplabcut.pose_estimation_pytorch.apis import superanimal_analyze_images diff --git a/animals/models/model_animals.py b/animals/models/model_animals.py index 59aa847b..3943ff47 100644 --- a/animals/models/model_animals.py +++ b/animals/models/model_animals.py @@ -6,7 +6,7 @@ from einops import rearrange from timm.models.layers import DropPath -from fmpose.animals.models.graph_frames import Graph +from fmpose3d.animals.models.graph_frames import Graph class TimeEmbedding(nn.Module): diff --git a/animals/scripts/main_animal3d.py b/animals/scripts/main_animal3d.py index fb40166f..f3761eb3 100644 --- a/animals/scripts/main_animal3d.py +++ b/animals/scripts/main_animal3d.py @@ -6,9 +6,9 @@ import numpy as np from tqdm import tqdm import torch.optim as optim -from fmpose.animals.common.arguments import opts as parse_args -from fmpose.animals.common.utils import * -from fmpose.animals.common.animal3d_dataset import TrainDataset +from fmpose3d.animals.common.arguments import opts as parse_args +from fmpose3d.animals.common.utils import * +from fmpose3d.animals.common.animal3d_dataset import TrainDataset import time args = parse_args().parse() @@ -30,7 +30,7 @@ CFM = getattr(module, "Model") else: # Load model from installed fmpose package - from fmpose.animals.models import Model as CFM + from fmpose3d.animals.models import Model as CFM def train(opt, actions, train_loader, model, optimizer, epoch): return step('train', opt, actions, train_loader, model, optimizer, epoch) diff --git a/demo/vis_in_the_wild.py b/demo/vis_in_the_wild.py index d53da8a1..8d56e918 100755 --- a/demo/vis_in_the_wild.py +++ b/demo/vis_in_the_wild.py @@ -10,12 +10,12 @@ sys.path.append(os.getcwd()) # Auto-download checkpoint files if missing -from fmpose.lib.checkpoint.download_checkpoints import ensure_checkpoints +from fmpose3d.lib.checkpoint.download_checkpoints import ensure_checkpoints ensure_checkpoints() -from fmpose.lib.preprocess import h36m_coco_format, revise_kpts -from fmpose.lib.hrnet.gen_kpts import gen_video_kpts as hrnet_pose -from fmpose.common.arguments import opts as parse_args +from fmpose3d.lib.preprocess import h36m_coco_format, revise_kpts +from fmpose3d.lib.hrnet.gen_kpts import gen_video_kpts as hrnet_pose +from fmpose3d.common.arguments import opts as parse_args args = parse_args().parse() os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu @@ -30,7 +30,7 @@ spec.loader.exec_module(module) CFM = getattr(module, 'Model') -from fmpose.common.camera import * +from fmpose3d.common.camera import * import matplotlib import matplotlib.pyplot as plt diff --git a/fmpose/__init__.py b/fmpose3d/__init__.py similarity index 100% rename from fmpose/__init__.py rename to fmpose3d/__init__.py diff --git a/fmpose/aggregation_methods.py b/fmpose3d/aggregation_methods.py similarity index 99% rename from fmpose/aggregation_methods.py rename to fmpose3d/aggregation_methods.py index 03daca4e..80a651cb 100644 --- a/fmpose/aggregation_methods.py +++ b/fmpose3d/aggregation_methods.py @@ -1,5 +1,5 @@ import torch -from fmpose.common.utils import project_to_2d +from fmpose3d.common.utils import project_to_2d def average_aggregation(list_hypothesis): return torch.mean(torch.stack(list_hypothesis), dim=0) diff --git a/fmpose/animals/__init__.py b/fmpose3d/animals/__init__.py similarity index 100% rename from fmpose/animals/__init__.py rename to fmpose3d/animals/__init__.py diff --git a/fmpose/animals/common/__init__.py b/fmpose3d/animals/common/__init__.py similarity index 100% rename from fmpose/animals/common/__init__.py rename to fmpose3d/animals/common/__init__.py diff --git a/fmpose/animals/common/animal3d_dataset.py b/fmpose3d/animals/common/animal3d_dataset.py similarity index 100% rename from fmpose/animals/common/animal3d_dataset.py rename to fmpose3d/animals/common/animal3d_dataset.py diff --git a/fmpose/animals/common/animal_visualization.py b/fmpose3d/animals/common/animal_visualization.py similarity index 100% rename from fmpose/animals/common/animal_visualization.py rename to fmpose3d/animals/common/animal_visualization.py diff --git a/fmpose/animals/common/arber_dataset.py b/fmpose3d/animals/common/arber_dataset.py similarity index 100% rename from fmpose/animals/common/arber_dataset.py rename to fmpose3d/animals/common/arber_dataset.py diff --git a/fmpose/animals/common/arguments.py b/fmpose3d/animals/common/arguments.py similarity index 100% rename from fmpose/animals/common/arguments.py rename to fmpose3d/animals/common/arguments.py diff --git a/fmpose/animals/common/camera.py b/fmpose3d/animals/common/camera.py similarity index 100% rename from fmpose/animals/common/camera.py rename to fmpose3d/animals/common/camera.py diff --git a/fmpose/animals/common/graph_utils.py b/fmpose3d/animals/common/graph_utils.py similarity index 100% rename from fmpose/animals/common/graph_utils.py rename to fmpose3d/animals/common/graph_utils.py diff --git a/fmpose/animals/common/lifter3d.py b/fmpose3d/animals/common/lifter3d.py similarity index 100% rename from fmpose/animals/common/lifter3d.py rename to fmpose3d/animals/common/lifter3d.py diff --git a/fmpose/animals/common/mocap_dataset.py b/fmpose3d/animals/common/mocap_dataset.py similarity index 100% rename from fmpose/animals/common/mocap_dataset.py rename to fmpose3d/animals/common/mocap_dataset.py diff --git a/fmpose/animals/common/skeleton.py b/fmpose3d/animals/common/skeleton.py similarity index 100% rename from fmpose/animals/common/skeleton.py rename to fmpose3d/animals/common/skeleton.py diff --git a/fmpose/animals/common/utils.py b/fmpose3d/animals/common/utils.py similarity index 100% rename from fmpose/animals/common/utils.py rename to fmpose3d/animals/common/utils.py diff --git a/fmpose/animals/models/__init__.py b/fmpose3d/animals/models/__init__.py similarity index 100% rename from fmpose/animals/models/__init__.py rename to fmpose3d/animals/models/__init__.py diff --git a/fmpose/animals/models/graph_frames.py b/fmpose3d/animals/models/graph_frames.py similarity index 100% rename from fmpose/animals/models/graph_frames.py rename to fmpose3d/animals/models/graph_frames.py diff --git a/fmpose/animals/models/model_animal3d.py b/fmpose3d/animals/models/model_animal3d.py similarity index 99% rename from fmpose/animals/models/model_animal3d.py rename to fmpose3d/animals/models/model_animal3d.py index 993661bd..8c2e9675 100644 --- a/fmpose/animals/models/model_animal3d.py +++ b/fmpose3d/animals/models/model_animal3d.py @@ -6,7 +6,7 @@ from einops import rearrange from timm.models.layers import DropPath -from fmpose.animals.models.graph_frames import Graph +from fmpose3d.animals.models.graph_frames import Graph class TimeEmbedding(nn.Module): def __init__(self, dim: int, hidden_dim: int = 64): diff --git a/fmpose/common/__init__.py b/fmpose3d/common/__init__.py similarity index 100% rename from fmpose/common/__init__.py rename to fmpose3d/common/__init__.py diff --git a/fmpose/common/arguments.py b/fmpose3d/common/arguments.py similarity index 100% rename from fmpose/common/arguments.py rename to fmpose3d/common/arguments.py diff --git a/fmpose/common/camera.py b/fmpose3d/common/camera.py similarity index 100% rename from fmpose/common/camera.py rename to fmpose3d/common/camera.py diff --git a/fmpose/common/generator.py b/fmpose3d/common/generator.py similarity index 100% rename from fmpose/common/generator.py rename to fmpose3d/common/generator.py diff --git a/fmpose/common/graph_utils.py b/fmpose3d/common/graph_utils.py similarity index 100% rename from fmpose/common/graph_utils.py rename to fmpose3d/common/graph_utils.py diff --git a/fmpose/common/h36m_dataset.py b/fmpose3d/common/h36m_dataset.py similarity index 98% rename from fmpose/common/h36m_dataset.py rename to fmpose3d/common/h36m_dataset.py index 7285acb5..1a42d7e0 100755 --- a/fmpose/common/h36m_dataset.py +++ b/fmpose3d/common/h36m_dataset.py @@ -2,9 +2,9 @@ import numpy as np -from fmpose.common.camera import normalize_screen_coordinates -from fmpose.common.mocap_dataset import MocapDataset -from fmpose.common.skeleton import Skeleton +from fmpose3d.common.camera import normalize_screen_coordinates +from fmpose3d.common.mocap_dataset import MocapDataset +from fmpose3d.common.skeleton import Skeleton h36m_skeleton = Skeleton( parents=[ diff --git a/fmpose/common/load_data_hm36.py b/fmpose3d/common/load_data_hm36.py similarity index 98% rename from fmpose/common/load_data_hm36.py rename to fmpose3d/common/load_data_hm36.py index 03a2a9ba..1985dea3 100755 --- a/fmpose/common/load_data_hm36.py +++ b/fmpose3d/common/load_data_hm36.py @@ -1,9 +1,9 @@ import numpy as np import torch.utils.data as data -from fmpose.common.camera import normalize_screen_coordinates, world_to_camera -from fmpose.common.generator import ChunkedGenerator -from fmpose.common.utils import deterministic_random +from fmpose3d.common.camera import normalize_screen_coordinates, world_to_camera +from fmpose3d.common.generator import ChunkedGenerator +from fmpose3d.common.utils import deterministic_random class Fusion(data.Dataset): diff --git a/fmpose/common/mocap_dataset.py b/fmpose3d/common/mocap_dataset.py similarity index 100% rename from fmpose/common/mocap_dataset.py rename to fmpose3d/common/mocap_dataset.py diff --git a/fmpose/common/skeleton.py b/fmpose3d/common/skeleton.py similarity index 100% rename from fmpose/common/skeleton.py rename to fmpose3d/common/skeleton.py diff --git a/fmpose/common/utils.py b/fmpose3d/common/utils.py similarity index 100% rename from fmpose/common/utils.py rename to fmpose3d/common/utils.py diff --git a/fmpose/lib/__init__.py b/fmpose3d/lib/__init__.py similarity index 100% rename from fmpose/lib/__init__.py rename to fmpose3d/lib/__init__.py diff --git a/fmpose/lib/checkpoint/README.md b/fmpose3d/lib/checkpoint/README.md similarity index 100% rename from fmpose/lib/checkpoint/README.md rename to fmpose3d/lib/checkpoint/README.md diff --git a/fmpose/lib/checkpoint/__init__.py b/fmpose3d/lib/checkpoint/__init__.py similarity index 100% rename from fmpose/lib/checkpoint/__init__.py rename to fmpose3d/lib/checkpoint/__init__.py diff --git a/fmpose/lib/checkpoint/download_checkpoints.py b/fmpose3d/lib/checkpoint/download_checkpoints.py similarity index 100% rename from fmpose/lib/checkpoint/download_checkpoints.py rename to fmpose3d/lib/checkpoint/download_checkpoints.py diff --git a/fmpose/lib/hrnet/__init__.py b/fmpose3d/lib/hrnet/__init__.py similarity index 100% rename from fmpose/lib/hrnet/__init__.py rename to fmpose3d/lib/hrnet/__init__.py diff --git a/fmpose/lib/hrnet/experiments/w48_384x288_adam_lr1e-3.yaml b/fmpose3d/lib/hrnet/experiments/w48_384x288_adam_lr1e-3.yaml similarity index 100% rename from fmpose/lib/hrnet/experiments/w48_384x288_adam_lr1e-3.yaml rename to fmpose3d/lib/hrnet/experiments/w48_384x288_adam_lr1e-3.yaml diff --git a/fmpose/lib/hrnet/gen_kpts.py b/fmpose3d/lib/hrnet/gen_kpts.py similarity index 91% rename from fmpose/lib/hrnet/gen_kpts.py rename to fmpose3d/lib/hrnet/gen_kpts.py index e1b83a3a..f3592a59 100755 --- a/fmpose/lib/hrnet/gen_kpts.py +++ b/fmpose3d/lib/hrnet/gen_kpts.py @@ -15,22 +15,22 @@ import cv2 import copy -from fmpose.lib.hrnet.lib.utils.utilitys import plot_keypoint, PreProcess, write, load_json -from fmpose.lib.hrnet.lib.config import cfg, update_config -from fmpose.lib.hrnet.lib.utils.transforms import * -from fmpose.lib.hrnet.lib.utils.inference import get_final_preds -from fmpose.lib.hrnet.lib.models import pose_hrnet +from fmpose3d.lib.hrnet.lib.utils.utilitys import plot_keypoint, PreProcess, write, load_json +from fmpose3d.lib.hrnet.lib.config import cfg, update_config +from fmpose3d.lib.hrnet.lib.utils.transforms import * +from fmpose3d.lib.hrnet.lib.utils.inference import get_final_preds +from fmpose3d.lib.hrnet.lib.models import pose_hrnet cfg_dir = osp.join(osp.dirname(osp.abspath(__file__)), 'experiments') + '/' # Auto-download checkpoints if missing and get checkpoint paths -from fmpose.lib.checkpoint.download_checkpoints import ensure_checkpoints, get_checkpoint_path +from fmpose3d.lib.checkpoint.download_checkpoints import ensure_checkpoints, get_checkpoint_path ensure_checkpoints() # Loading human detector model -from fmpose.lib.yolov3.human_detector import load_model as yolo_model -from fmpose.lib.yolov3.human_detector import yolo_human_det as yolo_det -from fmpose.lib.sort.sort import Sort +from fmpose3d.lib.yolov3.human_detector import load_model as yolo_model +from fmpose3d.lib.yolov3.human_detector import yolo_human_det as yolo_det +from fmpose3d.lib.sort.sort import Sort def parse_args(): parser = argparse.ArgumentParser(description='Train keypoints network') diff --git a/fmpose/lib/hrnet/lib/__init__.py b/fmpose3d/lib/hrnet/lib/__init__.py similarity index 100% rename from fmpose/lib/hrnet/lib/__init__.py rename to fmpose3d/lib/hrnet/lib/__init__.py diff --git a/fmpose/lib/hrnet/lib/config/__init__.py b/fmpose3d/lib/hrnet/lib/config/__init__.py similarity index 100% rename from fmpose/lib/hrnet/lib/config/__init__.py rename to fmpose3d/lib/hrnet/lib/config/__init__.py diff --git a/fmpose/lib/hrnet/lib/config/default.py b/fmpose3d/lib/hrnet/lib/config/default.py similarity index 100% rename from fmpose/lib/hrnet/lib/config/default.py rename to fmpose3d/lib/hrnet/lib/config/default.py diff --git a/fmpose/lib/hrnet/lib/config/models.py b/fmpose3d/lib/hrnet/lib/config/models.py similarity index 100% rename from fmpose/lib/hrnet/lib/config/models.py rename to fmpose3d/lib/hrnet/lib/config/models.py diff --git a/fmpose/lib/hrnet/lib/models/__init__.py b/fmpose3d/lib/hrnet/lib/models/__init__.py similarity index 100% rename from fmpose/lib/hrnet/lib/models/__init__.py rename to fmpose3d/lib/hrnet/lib/models/__init__.py diff --git a/fmpose/lib/hrnet/lib/models/pose_hrnet.py b/fmpose3d/lib/hrnet/lib/models/pose_hrnet.py similarity index 100% rename from fmpose/lib/hrnet/lib/models/pose_hrnet.py rename to fmpose3d/lib/hrnet/lib/models/pose_hrnet.py diff --git a/fmpose/lib/hrnet/lib/utils/__init__.py b/fmpose3d/lib/hrnet/lib/utils/__init__.py similarity index 100% rename from fmpose/lib/hrnet/lib/utils/__init__.py rename to fmpose3d/lib/hrnet/lib/utils/__init__.py diff --git a/fmpose/lib/hrnet/lib/utils/coco_h36m.py b/fmpose3d/lib/hrnet/lib/utils/coco_h36m.py similarity index 100% rename from fmpose/lib/hrnet/lib/utils/coco_h36m.py rename to fmpose3d/lib/hrnet/lib/utils/coco_h36m.py diff --git a/fmpose/lib/hrnet/lib/utils/inference.py b/fmpose3d/lib/hrnet/lib/utils/inference.py similarity index 100% rename from fmpose/lib/hrnet/lib/utils/inference.py rename to fmpose3d/lib/hrnet/lib/utils/inference.py diff --git a/fmpose/lib/hrnet/lib/utils/transforms.py b/fmpose3d/lib/hrnet/lib/utils/transforms.py similarity index 100% rename from fmpose/lib/hrnet/lib/utils/transforms.py rename to fmpose3d/lib/hrnet/lib/utils/transforms.py diff --git a/fmpose/lib/hrnet/lib/utils/utilitys.py b/fmpose3d/lib/hrnet/lib/utils/utilitys.py similarity index 98% rename from fmpose/lib/hrnet/lib/utils/utilitys.py rename to fmpose3d/lib/hrnet/lib/utils/utilitys.py index 8e756f2b..6174a2c0 100755 --- a/fmpose/lib/hrnet/lib/utils/utilitys.py +++ b/fmpose3d/lib/hrnet/lib/utils/utilitys.py @@ -3,9 +3,9 @@ import torch import json import torchvision.transforms as transforms -from fmpose.lib.hrnet.lib.utils.transforms import * +from fmpose3d.lib.hrnet.lib.utils.transforms import * -from fmpose.lib.hrnet.lib.utils.coco_h36m import coco_h36m +from fmpose3d.lib.hrnet.lib.utils.coco_h36m import coco_h36m import numpy as np joint_pairs = [[0, 1], [1, 3], [0, 2], [2, 4], diff --git a/fmpose/lib/preprocess.py b/fmpose3d/lib/preprocess.py similarity index 100% rename from fmpose/lib/preprocess.py rename to fmpose3d/lib/preprocess.py diff --git a/fmpose/lib/sort/__init__.py b/fmpose3d/lib/sort/__init__.py similarity index 100% rename from fmpose/lib/sort/__init__.py rename to fmpose3d/lib/sort/__init__.py diff --git a/fmpose/lib/sort/sort.py b/fmpose3d/lib/sort/sort.py similarity index 100% rename from fmpose/lib/sort/sort.py rename to fmpose3d/lib/sort/sort.py diff --git a/fmpose/lib/yolov3/__init__.py b/fmpose3d/lib/yolov3/__init__.py similarity index 100% rename from fmpose/lib/yolov3/__init__.py rename to fmpose3d/lib/yolov3/__init__.py diff --git a/fmpose/lib/yolov3/bbox.py b/fmpose3d/lib/yolov3/bbox.py similarity index 100% rename from fmpose/lib/yolov3/bbox.py rename to fmpose3d/lib/yolov3/bbox.py diff --git a/fmpose/lib/yolov3/cfg/tiny-yolo-voc.cfg b/fmpose3d/lib/yolov3/cfg/tiny-yolo-voc.cfg similarity index 100% rename from fmpose/lib/yolov3/cfg/tiny-yolo-voc.cfg rename to fmpose3d/lib/yolov3/cfg/tiny-yolo-voc.cfg diff --git a/fmpose/lib/yolov3/cfg/yolo-voc.cfg b/fmpose3d/lib/yolov3/cfg/yolo-voc.cfg similarity index 100% rename from fmpose/lib/yolov3/cfg/yolo-voc.cfg rename to fmpose3d/lib/yolov3/cfg/yolo-voc.cfg diff --git a/fmpose/lib/yolov3/cfg/yolo.cfg b/fmpose3d/lib/yolov3/cfg/yolo.cfg similarity index 100% rename from fmpose/lib/yolov3/cfg/yolo.cfg rename to fmpose3d/lib/yolov3/cfg/yolo.cfg diff --git a/fmpose/lib/yolov3/cfg/yolov3.cfg b/fmpose3d/lib/yolov3/cfg/yolov3.cfg similarity index 100% rename from fmpose/lib/yolov3/cfg/yolov3.cfg rename to fmpose3d/lib/yolov3/cfg/yolov3.cfg diff --git a/fmpose/lib/yolov3/darknet.py b/fmpose3d/lib/yolov3/darknet.py similarity index 99% rename from fmpose/lib/yolov3/darknet.py rename to fmpose3d/lib/yolov3/darknet.py index 36e73d83..c16753cb 100755 --- a/fmpose/lib/yolov3/darknet.py +++ b/fmpose3d/lib/yolov3/darknet.py @@ -8,8 +8,8 @@ import os import sys -from fmpose.lib.yolov3.util import convert2cpu as cpu -from fmpose.lib.yolov3.util import predict_transform +from fmpose3d.lib.yolov3.util import convert2cpu as cpu +from fmpose3d.lib.yolov3.util import predict_transform class test_net(nn.Module): diff --git a/fmpose/lib/yolov3/data/coco.names b/fmpose3d/lib/yolov3/data/coco.names similarity index 100% rename from fmpose/lib/yolov3/data/coco.names rename to fmpose3d/lib/yolov3/data/coco.names diff --git a/fmpose/lib/yolov3/data/pallete b/fmpose3d/lib/yolov3/data/pallete similarity index 100% rename from fmpose/lib/yolov3/data/pallete rename to fmpose3d/lib/yolov3/data/pallete diff --git a/fmpose/lib/yolov3/data/voc.names b/fmpose3d/lib/yolov3/data/voc.names similarity index 100% rename from fmpose/lib/yolov3/data/voc.names rename to fmpose3d/lib/yolov3/data/voc.names diff --git a/fmpose/lib/yolov3/human_detector.py b/fmpose3d/lib/yolov3/human_detector.py similarity index 96% rename from fmpose/lib/yolov3/human_detector.py rename to fmpose3d/lib/yolov3/human_detector.py index 911b22ed..7783093a 100755 --- a/fmpose/lib/yolov3/human_detector.py +++ b/fmpose3d/lib/yolov3/human_detector.py @@ -9,10 +9,10 @@ import pickle as pkl import argparse -from fmpose.lib.yolov3.util import * -from fmpose.lib.yolov3.darknet import Darknet -from fmpose.lib.yolov3 import preprocess -from fmpose.lib.checkpoint.download_checkpoints import get_checkpoint_path +from fmpose3d.lib.yolov3.util import * +from fmpose3d.lib.yolov3.darknet import Darknet +from fmpose3d.lib.yolov3 import preprocess +from fmpose3d.lib.checkpoint.download_checkpoints import get_checkpoint_path cur_dir = os.path.dirname(os.path.realpath(__file__)) project_root = os.path.join(cur_dir, '../../../') diff --git a/fmpose/lib/yolov3/preprocess.py b/fmpose3d/lib/yolov3/preprocess.py similarity index 100% rename from fmpose/lib/yolov3/preprocess.py rename to fmpose3d/lib/yolov3/preprocess.py diff --git a/fmpose/lib/yolov3/util.py b/fmpose3d/lib/yolov3/util.py similarity index 98% rename from fmpose/lib/yolov3/util.py rename to fmpose3d/lib/yolov3/util.py index fd990ca7..b6cbd1bd 100755 --- a/fmpose/lib/yolov3/util.py +++ b/fmpose3d/lib/yolov3/util.py @@ -4,8 +4,8 @@ import numpy as np import cv2 import os.path as osp -from fmpose.lib.yolov3.bbox import bbox_iou -from fmpose.lib.checkpoint.download_checkpoints import get_checkpoint_dir +from fmpose3d.lib.yolov3.bbox import bbox_iou +from fmpose3d.lib.checkpoint.download_checkpoints import get_checkpoint_dir def get_path(cur_file): diff --git a/fmpose/models/__init__.py b/fmpose3d/models/__init__.py similarity index 100% rename from fmpose/models/__init__.py rename to fmpose3d/models/__init__.py diff --git a/fmpose/models/graph_frames.py b/fmpose3d/models/graph_frames.py similarity index 100% rename from fmpose/models/graph_frames.py rename to fmpose3d/models/graph_frames.py diff --git a/fmpose/models/model_GAMLP.py b/fmpose3d/models/model_GAMLP.py similarity index 99% rename from fmpose/models/model_GAMLP.py rename to fmpose3d/models/model_GAMLP.py index 13569fdc..4ea7d4ef 100644 --- a/fmpose/models/model_GAMLP.py +++ b/fmpose3d/models/model_GAMLP.py @@ -4,7 +4,7 @@ import torch.nn as nn import math from einops import rearrange -from fmpose.models.graph_frames import Graph +from fmpose3d.models.graph_frames import Graph from functools import partial from einops import rearrange, repeat from timm.models.layers import DropPath diff --git a/pyproject.toml b/pyproject.toml index 8d2480a5..0cda58cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,7 @@ include = ["fmpose*"] "*" = ["*.yaml", "*.cfg", "*.names"] [tool.setuptools.dynamic] -version = {attr = "fmpose.__version__"} +version = {attr = "fmpose3d.__version__"} [tool.black] line-length = 100 diff --git a/scripts/FMPose3D_main.py b/scripts/FMPose3D_main.py index 9ce3a6e5..8140f909 100644 --- a/scripts/FMPose3D_main.py +++ b/scripts/FMPose3D_main.py @@ -9,10 +9,10 @@ import torch.optim as optim from tqdm import tqdm -from fmpose.common import opts, Human36mDataset, Fusion -from fmpose.common.utils import * +from fmpose3d.common import opts, Human36mDataset, Fusion +from fmpose3d.common.utils import * -from fmpose.aggregation_methods import aggregation_RPEA_weighted_by_2D_error +from fmpose3d.aggregation_methods import aggregation_RPEA_weighted_by_2D_error args = opts().parse() os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu @@ -33,7 +33,7 @@ CFM = getattr(module, "Model") else: # Load model from installed fmpose package - from fmpose.models import Model as CFM + from fmpose3d.models import Model as CFM def test_multi_hypothesis( diff --git a/tests/test_demo_human.py b/tests/test_demo_human.py index 9fbf893e..ae9b582d 100644 --- a/tests/test_demo_human.py +++ b/tests/test_demo_human.py @@ -25,8 +25,8 @@ def test_output_dir(tmp_path): def test_2d_pose_estimation(test_image_path, test_output_dir): """Test that 2D pose estimation runs and produces output.""" # Import here to avoid import issues at collection time - from fmpose.lib.hrnet.gen_kpts import gen_video_kpts as hrnet_pose - from fmpose.lib.preprocess import h36m_coco_format, revise_kpts + from fmpose3d.lib.hrnet.gen_kpts import gen_video_kpts as hrnet_pose + from fmpose3d.lib.preprocess import h36m_coco_format, revise_kpts # Run 2D pose estimation keypoints, scores = hrnet_pose(test_image_path, det_dim=416, num_peroson=1, gen_output=True, type='image') @@ -52,9 +52,9 @@ def test_2d_pose_estimation(test_image_path, test_output_dir): def test_demo_pipeline_runs(test_image_path): """Test that the full demo pipeline can be imported and key components work.""" # Test imports - from fmpose.lib.hrnet.gen_kpts import gen_video_kpts - from fmpose.lib.preprocess import h36m_coco_format, revise_kpts - from fmpose.models import Model + from fmpose3d.lib.hrnet.gen_kpts import gen_video_kpts + from fmpose3d.lib.preprocess import h36m_coco_format, revise_kpts + from fmpose3d.models import Model assert gen_video_kpts is not None assert h36m_coco_format is not None diff --git a/tests/test_model.py b/tests/test_model.py index 0ccec900..90a1541c 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -1,6 +1,6 @@ import pytest import torch -from fmpose.models import Model +from fmpose3d.models import Model class Args: """Mock args for model configuration.""" diff --git a/tests/test_training_pipeline.py b/tests/test_training_pipeline.py index 2dfb9ffb..5c5b8c1d 100644 --- a/tests/test_training_pipeline.py +++ b/tests/test_training_pipeline.py @@ -1,7 +1,7 @@ import pytest import torch import torch.optim as optim -from fmpose.models import Model +from fmpose3d.models import Model class Args: