CoTracker v2 can be loaded via torch.hub. It supports both Offline and Online modes.
Offline Mode: Processes the entire video at once.
Online Mode: Uses a different API designed for chunked/streaming processing.
import torch
import imageio.v3 as iio
# Setup
device = 'cuda'
grid_size = 10
url = 'https://github.com/facebookresearch/co-tracker/blob/main/assets/apple.mp4'
frames = iio.imread(url, plugin="FFMPEG")
video = torch.tensor(frames).permute(0, 3, 1, 2)[None].float().to(device) # B T C H W
# Offline Mode
cotracker = torch.hub.load("facebookresearch/co-tracker", "cotracker2").to(device)
pred_tracks, pred_visibility = cotracker(video, grid_size=grid_size) # B T N 2, B T N 1
# Online Mode
cotracker = torch.hub.load("facebookresearch/co-tracker", "cotracker2_online").to(device)
cotracker(video_chunk=video, is_first_step=True, grid_size=grid_size)
for ind in range(0, video.shape[1] - cotracker.step, cotracker.step):
pred_tracks, pred_visibility = cotracker(
video_chunk=video[:, ind : ind + cotracker.step * 2]
)