Skip to content

Commit eb6a298

Browse files
committed
Update pyproject.toml and README.md
1 parent 5e0572b commit eb6a298

12 files changed

Lines changed: 157 additions & 50 deletions

README.md

Lines changed: 24 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,11 @@ Kineo is a calibration-free metric motion capture system that reconstructs 3D mo
1919

2020
## ⚡Quick Install
2121

22-
Kineo requires `python>=3.10` and `torch>=2.6.0` and was tested with CUDA 12.x:
23-
24-
### Windows
25-
26-
```sh
27-
conda create -n kineo python=3.10
28-
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126
29-
git clone https://github.com/liris-xr/kineo.git && cd kineo
30-
set SAM2_BUILD_ALLOW_ERRORS=0
31-
set SAM2_BUILD_CUDA=1
32-
pip install --no-build-isolation -v .
33-
```
34-
35-
### Linux
22+
Kineo uses Pixi for environment management. Install pixi [here](https://pixi.prefix.dev/latest/installation/).
3623

24+
Once Pixi is available, install the environment with:
3725
```sh
38-
conda create -n kineo python=3.10
39-
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126
40-
git clone https://github.com/liris-xr/kineo.git && cd kineo
41-
export SAM2_BUILD_ALLOW_ERRORS=0
42-
export SAM2_BUILD_CUDA=1
43-
pip install --no-build-isolation -v .
26+
pixi install
4427
```
4528

4629
## 🚀 How to use
@@ -49,36 +32,18 @@ Kineo provides two processing modes: offline and online. The offline mode is the
4932

5033
### Prerequisites
5134

52-
To run Kineo's demo, you will need to download:
53-
54-
- SMPL-X body model from [here](https://smpl-x.is.tue.mpg.de/)
55-
- NLF model from [here](https://github.com/isarandi/nlf/releases/tag/v0.3.2)
56-
- EfficientTAM model from [here](https://huggingface.co/yunyangx/efficient-track-anything/tree/main)
57-
58-
Your directory structure should look like:
59-
```
60-
checkpoints/
61-
├── nlf_l_multi_0.3.2.torchscript
62-
├── efficienttam_s.pt
63-
body_models/
64-
├── smplx/
65-
│ ├── SMPLX_NEUTRAL.npz
66-
│ ├── SMPLX_NEUTRAL.pkl
67-
│ └── J_regressor_55.pt
35+
Download the required model checkpoints:
36+
```sh
37+
pixi run download-checkpoints
6838
```
39+
You will be prompted to provide SMPL and SMPL-X credentials.
6940

7041
### Offline
7142

7243
In offline mode, Kineo uses the full video sequence to produce high-accuracy calibration of camera parameters and 3D motion reconstructions. This mode can be used on any video by running the following command:
7344

7445
```sh
75-
kineo-offline --sequence-name stone_quarry --batch-size 16 --target-fps 50 --shared-intrinsics \
76-
./assets/stone_quarry_1.mp4 \
77-
./assets/stone_quarry_2.mp4 \
78-
./assets/stone_quarry_3.mp4 \
79-
./assets/stone_quarry_4.mp4 \
80-
./assets/stone_quarry_5.mp4 \
81-
./assets/stone_quarry_6.mp4
46+
pixi run kineo-offline -- --sequence-name stone_quarry --batch-size 16 --target-fps 50 --shared-intrinsics ./assets/stone_quarry/
8247
```
8348

8449
A window will appear prompting you to select the person to track. Once selected, you can use the slider to verify that the track remains accurate throughout the video. When you press Continue, a new window will open for the next view, and this process repeats until the person has been selected in all views.
@@ -108,14 +73,28 @@ The pipeline will output results in the `outputs/infer_nlf_single_person_sam2/of
10873
In online mode, Kineo first performs a short calibration sequence to estimate the camera parameters. After this initial step, the video streams are processed in real time to produce the 3D output. By default, the program uses all available webcams.
10974

11075
```sh
111-
kineo-online
76+
pixi run kineo-online
11277
```
11378

11479
## 📊 Evaluation
11580

11681
Kineo sets a new state-of-the-art on EgoHumans and Human3.6M, reducing camera translation error by ~83–85%, camera angular error by ~86–92%, and world mean-per-joint error (W-MPJPE) by ~83–91% compared to prior methods, while efficiently handling multi-view sequences.
11782

118-
To reproduce the results presented in the paper, please refer to the [evaluation](./EVALUATION.md) instructions.
83+
To reproduce our results, download, preprocess then benchmark on the datasets using the provided commands:
84+
```sh
85+
# For H3.65M
86+
pixi run h36m-download <path-to-h36m-dataset>
87+
pixi run h36m-preprocess <path-to-h36m-dataset>
88+
pixi run h36m-benchmark <path-to-h36m-dataset> [path-to-config.yaml]
89+
90+
# For EgoHumans
91+
pixi run egohumans-download <path-to-egohumans-dataset>
92+
pixi run egohumans-preprocess <path-to-egohumans-dataset>
93+
pixi run egohumans-benchmark <path-to-egohumans-dataset> [path-to-config.yaml]
94+
```
95+
96+
If no `path-to-config.yaml` is not given, uses `configs/experiments/benchmarks/*_benchmark_nlf_estRt_estK_estD.yaml` by default.
97+
All configurations used in the paper are available in the `configs` directory.
11998

12099
## 🤝 Contributing
121100

configs/demo/offline/nlf_single_person_sam2.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ pipeline:
7474
_target_: kineo.pipeline.stages.sam2_semiauto_bbox_detection_rtmlib.SAM2SemiAutoBboxDetectionRtmlibStage
7575
name: "SAM2 Semi-Auto Bbox Detection"
7676
order: 5
77-
det_model: "https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/onnx_sdk/yolox_tiny_8xb8-300e_humanart-6f3252f9.zip"
77+
det_model: "checkpoints/yolox_tiny_8xb8-300e_humanart-6f3252f9.onnx"
7878
det_model_input_shape_hw: [416, 416]
7979
sam2_model_cfg: "configs/efficienttam/efficienttam_s.yaml"
8080
sam2_model_weights: "./checkpoints/efficienttam_s.pt"

pixi.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ solve-group = "default"
122122

123123
[tool.pixi.tasks]
124124
_download-smpl = { cmd = "test -f body_models/smpl/SMPL_NEUTRAL.pkl || python scripts/download_smpl.py" }
125+
_download-smplx = { cmd = "(test -f body_models/smplx/SMPLX_NEUTRAL.pkl && test -f body_models/smplx/SMPLX_NEUTRAL.npz) || python scripts/download_smplx.py" }
125126

126127
_download_nlf = { cmd = "test -f checkpoints/nlf_l_multi_0.3.2.torchscript || (mkdir -p checkpoints && curl -L https://github.com/isarandi/nlf/releases/download/v0.3.2/nlf_l_multi_0.3.2.torchscript -o checkpoints/nlf_l_multi_0.3.2.torchscript)", outputs = [
127128
"checkpoints/nlf_l_multi_0.3.2.torchscript",
@@ -150,6 +151,7 @@ download-checkpoints = { depends-on = [
150151
"_download_moge",
151152
"_download_yolox",
152153
"_download-smpl",
154+
"_download-smplx"
153155
], description = "Download all checkpoints" }
154156

155157
kineo-offline = { depends-on = ["download-checkpoints"], cmd = "kineo-offline" }

0 commit comments

Comments
 (0)