Readme
Implementation of HF Space: Video to Openpose
Converts an mp4 video and translates human motion to an OpenPose video
Video to OpenPose
Run this model in Node.js with one line of code:
npm install replicate
REPLICATE_API_TOKEN
environment variableexport REPLICATE_API_TOKEN=<paste-your-token-here>
Find your API token in your account settings.
import Replicate from "replicate";
const replicate = new Replicate({
auth: process.env.REPLICATE_API_TOKEN,
});
Run lucataco/vid2openpose using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
const output = await replicate.run(
"lucataco/vid2openpose:5ec45ee53f41d21bf9062e0dc3be9f75c201f69a35824177d09e47c619bb90e2",
{
input: {
video: "https://replicate.delivery/pbxt/K0vdyqPcKpGyVqVdmkb7n4rxAtE0PApnJKrh8WNW0hVTqSi4/polina2.mp4"
}
}
);
console.log(output);
To learn more, take a look at the guide on getting started with Node.js.
pip install replicate
REPLICATE_API_TOKEN
environment variableexport REPLICATE_API_TOKEN=<paste-your-token-here>
Find your API token in your account settings.
import replicate
Run lucataco/vid2openpose using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
output = replicate.run(
"lucataco/vid2openpose:5ec45ee53f41d21bf9062e0dc3be9f75c201f69a35824177d09e47c619bb90e2",
input={
"video": "https://replicate.delivery/pbxt/K0vdyqPcKpGyVqVdmkb7n4rxAtE0PApnJKrh8WNW0hVTqSi4/polina2.mp4"
}
)
print(output)
To learn more, take a look at the guide on getting started with Python.
REPLICATE_API_TOKEN
environment variableexport REPLICATE_API_TOKEN=<paste-your-token-here>
Find your API token in your account settings.
Run lucataco/vid2openpose using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
curl -s -X POST \
-H "Authorization: Bearer $REPLICATE_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: wait" \
-d $'{
"version": "5ec45ee53f41d21bf9062e0dc3be9f75c201f69a35824177d09e47c619bb90e2",
"input": {
"video": "https://replicate.delivery/pbxt/K0vdyqPcKpGyVqVdmkb7n4rxAtE0PApnJKrh8WNW0hVTqSi4/polina2.mp4"
}
}' \
https://api.replicate.com/v1/predictions
To learn more, take a look at Replicate’s HTTP API reference docs.
brew install cog
If you don’t have Homebrew, there are other installation options available.
Pull and run lucataco/vid2openpose using Cog (this will download the full model and run it in your local environment):
cog predict r8.im/lucataco/vid2openpose@sha256:5ec45ee53f41d21bf9062e0dc3be9f75c201f69a35824177d09e47c619bb90e2 \
-i 'video="https://replicate.delivery/pbxt/K0vdyqPcKpGyVqVdmkb7n4rxAtE0PApnJKrh8WNW0hVTqSi4/polina2.mp4"'
To learn more, take a look at the Cog documentation.
Pull and run lucataco/vid2openpose using Docker (this will download the full model and run it in your local environment):
docker run -d -p 5000:5000 --gpus=all r8.im/lucataco/vid2openpose@sha256:5ec45ee53f41d21bf9062e0dc3be9f75c201f69a35824177d09e47c619bb90e2
curl -s -X POST \ -H "Content-Type: application/json" \ -d $'{ "input": { "video": "https://replicate.delivery/pbxt/K0vdyqPcKpGyVqVdmkb7n4rxAtE0PApnJKrh8WNW0hVTqSi4/polina2.mp4" } }' \ http://localhost:5000/predictions
Add a payment method to run this model.
Each run costs approximately $0.096. Alternatively, try out our featured models for free.
By signing in, you agree to our
terms of service and privacy policy
{
"completed_at": "2023-12-08T17:06:09.463114Z",
"created_at": "2023-12-08T17:03:17.387986Z",
"data_removed": false,
"error": null,
"id": "vrkxaljbcvbcaeweuvmegod2iq",
"input": {
"video": "https://replicate.delivery/pbxt/K0vdyqPcKpGyVqVdmkb7n4rxAtE0PApnJKrh8WNW0hVTqSi4/polina2.mp4"
},
"logs": "video rate is OK\nMoviepy - Building video video_resized.mp4.\nMoviePy - Writing audio in video_resizedTEMP_MPY_wvf_snd.mp3\nchunk: 0%| | 0/57 [00:00<?, ?it/s, now=None]\nMoviePy - Done.\nMoviepy - Writing video video_resized.mp4\nt: 0%| | 0/64 [00:00<?, ?it/s, now=None]\nt: 30%|██▉ | 19/64 [00:00<00:00, 182.49it/s, now=None]\nt: 59%|█████▉ | 38/64 [00:00<00:00, 170.05it/s, now=None]\nt: 88%|████████▊ | 56/64 [00:00<00:00, 170.41it/s, now=None]\nMoviepy - Done !\nMoviepy - video ready video_resized.mp4\nvideo resized to 512 height\nvideo fps: 25.0\nbroke the video into frames\nvideo is shorter than the cut value\nset stop frames to: 64\nframe /tmp/kang0.jpg/64: done;\nframe /tmp/kang1.jpg/64: done;\nframe /tmp/kang2.jpg/64: done;\nframe /tmp/kang3.jpg/64: done;\nframe /tmp/kang4.jpg/64: done;\nframe /tmp/kang5.jpg/64: done;\nframe /tmp/kang6.jpg/64: done;\nframe /tmp/kang7.jpg/64: done;\nframe /tmp/kang8.jpg/64: done;\nframe /tmp/kang9.jpg/64: done;\nframe /tmp/kang10.jpg/64: done;\nframe /tmp/kang11.jpg/64: done;\nframe /tmp/kang12.jpg/64: done;\nframe /tmp/kang13.jpg/64: done;\nframe /tmp/kang14.jpg/64: done;\nframe /tmp/kang15.jpg/64: done;\nframe /tmp/kang16.jpg/64: done;\nframe /tmp/kang17.jpg/64: done;\nframe /tmp/kang18.jpg/64: done;\nframe /tmp/kang19.jpg/64: done;\nframe /tmp/kang20.jpg/64: done;\nframe /tmp/kang21.jpg/64: done;\nframe /tmp/kang22.jpg/64: done;\nframe /tmp/kang23.jpg/64: done;\nframe /tmp/kang24.jpg/64: done;\nframe /tmp/kang25.jpg/64: done;\nframe /tmp/kang26.jpg/64: done;\nframe /tmp/kang27.jpg/64: done;\nframe /tmp/kang28.jpg/64: done;\nframe /tmp/kang29.jpg/64: done;\nframe /tmp/kang30.jpg/64: done;\nframe /tmp/kang31.jpg/64: done;\nframe /tmp/kang32.jpg/64: done;\nframe /tmp/kang33.jpg/64: done;\nframe /tmp/kang34.jpg/64: done;\nframe /tmp/kang35.jpg/64: done;\nframe /tmp/kang36.jpg/64: done;\nframe /tmp/kang37.jpg/64: done;\nframe /tmp/kang38.jpg/64: done;\nframe /tmp/kang39.jpg/64: done;\nframe /tmp/kang40.jpg/64: done;\nframe /tmp/kang41.jpg/64: done;\nframe /tmp/kang42.jpg/64: done;\nframe /tmp/kang43.jpg/64: done;\nframe /tmp/kang44.jpg/64: done;\nframe /tmp/kang45.jpg/64: done;\nframe /tmp/kang46.jpg/64: done;\nframe /tmp/kang47.jpg/64: done;\nframe /tmp/kang48.jpg/64: done;\nframe /tmp/kang49.jpg/64: done;\nframe /tmp/kang50.jpg/64: done;\nframe /tmp/kang51.jpg/64: done;\nframe /tmp/kang52.jpg/64: done;\nframe /tmp/kang53.jpg/64: done;\nframe /tmp/kang54.jpg/64: done;\nframe /tmp/kang55.jpg/64: done;\nframe /tmp/kang56.jpg/64: done;\nframe /tmp/kang57.jpg/64: done;\nframe /tmp/kang58.jpg/64: done;\nframe /tmp/kang59.jpg/64: done;\nframe /tmp/kang60.jpg/64: done;\nframe /tmp/kang61.jpg/64: done;\nframe /tmp/kang62.jpg/64: done;\nframe /tmp/kang63.jpg/64: done;\nbuilding video result\nMoviepy - Building video /tmp/openpose_result.mp4.\nMoviepy - Writing video /tmp/openpose_result.mp4\nt: 0%| | 0/65 [00:00<?, ?it/s, now=None]\nt: 34%|███▍ | 22/65 [00:00<00:00, 217.51it/s, now=None]\nt: 72%|███████▏ | 47/65 [00:00<00:00, 233.20it/s, now=None]\nMoviepy - Done !\nMoviepy - video ready /tmp/openpose_result.mp4\noutput video: /tmp/openpose_result.mp4",
"metrics": {
"predict_time": 96.145992,
"total_time": 172.075128
},
"output": "https://replicate.delivery/pbxt/5K3wa2XCfV1BQKN80YMkCRFwrPGfs0ujoG595HSGnKEB8PASA/openpose_result.mp4",
"started_at": "2023-12-08T17:04:33.317122Z",
"status": "succeeded",
"urls": {
"get": "https://api.replicate.com/v1/predictions/vrkxaljbcvbcaeweuvmegod2iq",
"cancel": "https://api.replicate.com/v1/predictions/vrkxaljbcvbcaeweuvmegod2iq/cancel"
},
"version": "5ec45ee53f41d21bf9062e0dc3be9f75c201f69a35824177d09e47c619bb90e2"
}
video rate is OK
Moviepy - Building video video_resized.mp4.
MoviePy - Writing audio in video_resizedTEMP_MPY_wvf_snd.mp3
chunk: 0%| | 0/57 [00:00<?, ?it/s, now=None]
MoviePy - Done.
Moviepy - Writing video video_resized.mp4
t: 0%| | 0/64 [00:00<?, ?it/s, now=None]
t: 30%|██▉ | 19/64 [00:00<00:00, 182.49it/s, now=None]
t: 59%|█████▉ | 38/64 [00:00<00:00, 170.05it/s, now=None]
t: 88%|████████▊ | 56/64 [00:00<00:00, 170.41it/s, now=None]
Moviepy - Done !
Moviepy - video ready video_resized.mp4
video resized to 512 height
video fps: 25.0
broke the video into frames
video is shorter than the cut value
set stop frames to: 64
frame /tmp/kang0.jpg/64: done;
frame /tmp/kang1.jpg/64: done;
frame /tmp/kang2.jpg/64: done;
frame /tmp/kang3.jpg/64: done;
frame /tmp/kang4.jpg/64: done;
frame /tmp/kang5.jpg/64: done;
frame /tmp/kang6.jpg/64: done;
frame /tmp/kang7.jpg/64: done;
frame /tmp/kang8.jpg/64: done;
frame /tmp/kang9.jpg/64: done;
frame /tmp/kang10.jpg/64: done;
frame /tmp/kang11.jpg/64: done;
frame /tmp/kang12.jpg/64: done;
frame /tmp/kang13.jpg/64: done;
frame /tmp/kang14.jpg/64: done;
frame /tmp/kang15.jpg/64: done;
frame /tmp/kang16.jpg/64: done;
frame /tmp/kang17.jpg/64: done;
frame /tmp/kang18.jpg/64: done;
frame /tmp/kang19.jpg/64: done;
frame /tmp/kang20.jpg/64: done;
frame /tmp/kang21.jpg/64: done;
frame /tmp/kang22.jpg/64: done;
frame /tmp/kang23.jpg/64: done;
frame /tmp/kang24.jpg/64: done;
frame /tmp/kang25.jpg/64: done;
frame /tmp/kang26.jpg/64: done;
frame /tmp/kang27.jpg/64: done;
frame /tmp/kang28.jpg/64: done;
frame /tmp/kang29.jpg/64: done;
frame /tmp/kang30.jpg/64: done;
frame /tmp/kang31.jpg/64: done;
frame /tmp/kang32.jpg/64: done;
frame /tmp/kang33.jpg/64: done;
frame /tmp/kang34.jpg/64: done;
frame /tmp/kang35.jpg/64: done;
frame /tmp/kang36.jpg/64: done;
frame /tmp/kang37.jpg/64: done;
frame /tmp/kang38.jpg/64: done;
frame /tmp/kang39.jpg/64: done;
frame /tmp/kang40.jpg/64: done;
frame /tmp/kang41.jpg/64: done;
frame /tmp/kang42.jpg/64: done;
frame /tmp/kang43.jpg/64: done;
frame /tmp/kang44.jpg/64: done;
frame /tmp/kang45.jpg/64: done;
frame /tmp/kang46.jpg/64: done;
frame /tmp/kang47.jpg/64: done;
frame /tmp/kang48.jpg/64: done;
frame /tmp/kang49.jpg/64: done;
frame /tmp/kang50.jpg/64: done;
frame /tmp/kang51.jpg/64: done;
frame /tmp/kang52.jpg/64: done;
frame /tmp/kang53.jpg/64: done;
frame /tmp/kang54.jpg/64: done;
frame /tmp/kang55.jpg/64: done;
frame /tmp/kang56.jpg/64: done;
frame /tmp/kang57.jpg/64: done;
frame /tmp/kang58.jpg/64: done;
frame /tmp/kang59.jpg/64: done;
frame /tmp/kang60.jpg/64: done;
frame /tmp/kang61.jpg/64: done;
frame /tmp/kang62.jpg/64: done;
frame /tmp/kang63.jpg/64: done;
building video result
Moviepy - Building video /tmp/openpose_result.mp4.
Moviepy - Writing video /tmp/openpose_result.mp4
t: 0%| | 0/65 [00:00<?, ?it/s, now=None]
t: 34%|███▍ | 22/65 [00:00<00:00, 217.51it/s, now=None]
t: 72%|███████▏ | 47/65 [00:00<00:00, 233.20it/s, now=None]
Moviepy - Done !
Moviepy - video ready /tmp/openpose_result.mp4
output video: /tmp/openpose_result.mp4
This model costs approximately $0.096 to run on Replicate, or 10 runs per $1, but this varies depending on your inputs. It is also open source and you can run it on your own computer with Docker.
This model runs on Nvidia T4 GPU hardware. Predictions typically complete within 8 minutes. The predict time for this model varies significantly based on the inputs.
Implementation of HF Space: Video to Openpose
Converts an mp4 video and translates human motion to an OpenPose video
This model is cold. You'll get a fast response if the model is warm and already running, and a slower response if the model is cold and starting up.
Choose a file from your machine
Hint: you can also drag files onto the input
video rate is OK
Moviepy - Building video video_resized.mp4.
MoviePy - Writing audio in video_resizedTEMP_MPY_wvf_snd.mp3
chunk: 0%| | 0/57 [00:00<?, ?it/s, now=None]
MoviePy - Done.
Moviepy - Writing video video_resized.mp4
t: 0%| | 0/64 [00:00<?, ?it/s, now=None]
t: 30%|██▉ | 19/64 [00:00<00:00, 182.49it/s, now=None]
t: 59%|█████▉ | 38/64 [00:00<00:00, 170.05it/s, now=None]
t: 88%|████████▊ | 56/64 [00:00<00:00, 170.41it/s, now=None]
Moviepy - Done !
Moviepy - video ready video_resized.mp4
video resized to 512 height
video fps: 25.0
broke the video into frames
video is shorter than the cut value
set stop frames to: 64
frame /tmp/kang0.jpg/64: done;
frame /tmp/kang1.jpg/64: done;
frame /tmp/kang2.jpg/64: done;
frame /tmp/kang3.jpg/64: done;
frame /tmp/kang4.jpg/64: done;
frame /tmp/kang5.jpg/64: done;
frame /tmp/kang6.jpg/64: done;
frame /tmp/kang7.jpg/64: done;
frame /tmp/kang8.jpg/64: done;
frame /tmp/kang9.jpg/64: done;
frame /tmp/kang10.jpg/64: done;
frame /tmp/kang11.jpg/64: done;
frame /tmp/kang12.jpg/64: done;
frame /tmp/kang13.jpg/64: done;
frame /tmp/kang14.jpg/64: done;
frame /tmp/kang15.jpg/64: done;
frame /tmp/kang16.jpg/64: done;
frame /tmp/kang17.jpg/64: done;
frame /tmp/kang18.jpg/64: done;
frame /tmp/kang19.jpg/64: done;
frame /tmp/kang20.jpg/64: done;
frame /tmp/kang21.jpg/64: done;
frame /tmp/kang22.jpg/64: done;
frame /tmp/kang23.jpg/64: done;
frame /tmp/kang24.jpg/64: done;
frame /tmp/kang25.jpg/64: done;
frame /tmp/kang26.jpg/64: done;
frame /tmp/kang27.jpg/64: done;
frame /tmp/kang28.jpg/64: done;
frame /tmp/kang29.jpg/64: done;
frame /tmp/kang30.jpg/64: done;
frame /tmp/kang31.jpg/64: done;
frame /tmp/kang32.jpg/64: done;
frame /tmp/kang33.jpg/64: done;
frame /tmp/kang34.jpg/64: done;
frame /tmp/kang35.jpg/64: done;
frame /tmp/kang36.jpg/64: done;
frame /tmp/kang37.jpg/64: done;
frame /tmp/kang38.jpg/64: done;
frame /tmp/kang39.jpg/64: done;
frame /tmp/kang40.jpg/64: done;
frame /tmp/kang41.jpg/64: done;
frame /tmp/kang42.jpg/64: done;
frame /tmp/kang43.jpg/64: done;
frame /tmp/kang44.jpg/64: done;
frame /tmp/kang45.jpg/64: done;
frame /tmp/kang46.jpg/64: done;
frame /tmp/kang47.jpg/64: done;
frame /tmp/kang48.jpg/64: done;
frame /tmp/kang49.jpg/64: done;
frame /tmp/kang50.jpg/64: done;
frame /tmp/kang51.jpg/64: done;
frame /tmp/kang52.jpg/64: done;
frame /tmp/kang53.jpg/64: done;
frame /tmp/kang54.jpg/64: done;
frame /tmp/kang55.jpg/64: done;
frame /tmp/kang56.jpg/64: done;
frame /tmp/kang57.jpg/64: done;
frame /tmp/kang58.jpg/64: done;
frame /tmp/kang59.jpg/64: done;
frame /tmp/kang60.jpg/64: done;
frame /tmp/kang61.jpg/64: done;
frame /tmp/kang62.jpg/64: done;
frame /tmp/kang63.jpg/64: done;
building video result
Moviepy - Building video /tmp/openpose_result.mp4.
Moviepy - Writing video /tmp/openpose_result.mp4
t: 0%| | 0/65 [00:00<?, ?it/s, now=None]
t: 34%|███▍ | 22/65 [00:00<00:00, 217.51it/s, now=None]
t: 72%|███████▏ | 47/65 [00:00<00:00, 233.20it/s, now=None]
Moviepy - Done !
Moviepy - video ready /tmp/openpose_result.mp4
output video: /tmp/openpose_result.mp4