Project Icon

PHALP

基于3D外观、位置和姿态预测的人体跟踪技术

PHALP是一个开源的3D人体跟踪项目,利用人体3D外观、位置和姿态预测实现精确跟踪。该项目提供完整代码实现,包含安装指南、演示代码、数据集准备和评估工具。PHALP可处理视频文件、YouTube视频和图像目录等多种输入源,并具备多样化的可视化功能。这一工具为人体动作分析和计算机视觉研究提供了有力支持。

通过预测3D外观、位置和姿态来跟踪人物

这是论文"通过预测3D外观、位置和姿态来跟踪人物"的代码仓库。 Jathushan RajasegaranGeorgios PavlakosAngjoo KanazawaJitendra MalikarXiv Website shields.io Open In Colab

这个代码仓库为我们的PHALP论文提供了代码实现,包括安装说明、在任何视频上运行的演示代码、数据集准备以及在数据集上进行评估。

这个分支包含支持我们最新工作的代码:4D-Humans
原始PHALP代码请参见初始发布分支

安装

安装PyTorch依赖后,您可以直接安装我们的phalp包:

pip install phalp[all]@git+https://github.com/brjathu/PHALP.git
分步说明
git clone https://github.com/brjathu/PHALP.git
cd PHALP
conda create -n phalp python=3.10
conda activate phalp
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
pip install -e .[all]

演示

要在视频上运行我们的代码,请指定输入视频video.source和输出目录video.output_dir

python scripts/demo.py video.source=assets/videos/gymnasts.mp4 video.output_dir='outputs'

输出目录将包含轨迹的视频渲染和一个包含带有3D姿态和形状的轨迹的.pkl文件(见下面的结构)。

命令行选项

输入源

您可以指定各种类型的输入源。例如,您可以指定视频文件、YouTube视频或图像目录:

# 对于视频文件
python scripts/demo.py video.source=assets/videos/vid.mp4

# 对于YouTube视频
python scripts/demo.py video.source=\'"https://www.youtube.com/watch?v=xEH_5T9jMVU"\'

# 对于图像目录
python scripts/demo.py video.source=<目录路径>
自定义边界框

除了这些选项,您还可以将图像和边界框作为输入提供,这样模型将只使用给定的边界框进行跟踪。要实现这一点,您需要将video.source指定为一个.pkl文件,其中每个键是帧名称,图像的绝对路径通过os.path.join(video.base_path, frame_name)计算得出。每个键的值是一个包含以下键的字典:gt_bboxgt_classgt_track_id。请参见以下示例。gt_boxes是一个形状为(N, 4)np.ndarray,其中每行是格式为[x1, y1, x2, y2]的边界框。您还可以提供gt_classgt_track_id以存储在最终输出中。

gt_data[frame_id] = {
                    "gt_bbox": gt_boxes,
                    "extra_data": {
                        "gt_class": [],
                        "gt_track_id": [],
                    }
                }

以下是如何向模型提供边界框和跟踪ID并获取渲染的示例。

mkdir assets/videos/gymnasts
ffmpeg -i assets/videos/gymnasts.mp4 -q:v 2 assets/videos/gymnasts/%06d.jpg

python scripts/demo.py \
render.enable=True \
video.output_dir=test_gt_bbox \
use_gt=True \
video.base_path=assets/videos/gymnasts \
video.source=assets/videos/gt_tracks.pkl

在部分帧上运行

您可以指定要跟踪的视频的开始和结束,例如从第50帧跟踪到第100帧:

python scripts/demo.py video.source=assets/videos/vid.mp4 video.start_frame=50 video.end_frame=100
在不提取帧的情况下进行跟踪

但是,如果视频太长,提取帧太耗时,您可以设置video.extract_video=False。这将使用torchvision后端,并且只会在内存中保留视频的时间戳。如果启用此选项,您可以以秒为单位给出视频的开始时间和结束时间。

python scripts/demo.py video.source=assets/videos/vid.mp4 video.extract_video=False video.start_time=1s video.end_time=2s

可视化类型

我们在render.type中支持多种类型的可视化:HUMAN_MESH(默认)渲染完整的人体网格,HUMAN_MASK可视化分割掩码,HUMAN_BBOX可视化带有跟踪ID的边界框,TRACKID_<id>_MESH仅渲染跟踪<id>的完整人体网格:

# 渲染完整人体网格
python scripts/demo.py video.source=assets/videos/vid.mp4 render.type=HUMAN_MESH

# 渲染分割掩码
python scripts/demo.py video.source=assets/videos/vid.mp4 render.type=HUMAN_MASK

# 渲染带有跟踪ID的边界框
python scripts/demo.py video.source=assets/videos/vid.mp4 render.type=HUMAN_BBOX

# 渲染单个跟踪ID,比如0
python scripts/demo.py video.source=assets/videos/vid.mp4 render.type=TRACKID_0_MESH

更多渲染类型 除了这些设置外,对于渲染网格,PHALP使用头部遮罩可视化,它只渲染人体上半身,以便用户可以在同一视频中看到实际人物和轨迹。要启用此功能,请设置 `render.head_mask=True`。
# 用于渲染检测到的和被遮挡的人
python scripts/demo.py video.source=assets/videos/vid.mp4 render.head_mask=True

您还可以通过设置 render.show_keypoints=True 来可视化2D投影关键点[待完成]。


跨镜头边界追踪

默认情况下,PHALP不会跨镜头边界进行追踪。要启用此功能,请设置 detect_shots=True

# 用于跨镜头边界追踪
python scripts/demo.py video.source=assets/videos/vid.mp4 detect_shots=True
附加说明
  • 出于调试目的,您可以设置 debug=True 来禁用富进度条。

输出 .pkl 结构

包含轨迹、3D姿势等的 .pkl 文件存储在 <video.output_dir>/results 下,是一个2级字典:

详细结构
import joblib
results = joblib.load(<video.output_dir>/results/<video_name>.pkl)
results = {
  # 每帧的字典。
  'vid_frame0.jpg': {
    '2d_joints':       List[np.array(90,)],   # 每个检测的45个2D关节
    '3d_joints':       List[np.array(45,3)],  # 每个检测的45个3D关节
    'annotations':     List[Any],             # 每个检测的自定义注释
    'appe':            List[np.array(4096,)], # 每个检测的外观特征
    'bbox':            List[[x0 y0 w h]],     # 每个轨迹(检测+幽灵)的2D边界框(左上角和尺寸)
    'camera':          List[[tx ty tz]],      # 每个检测的相机平移(相对于图像)
    'camera_bbox':     List[[tx ty tz]],      # 每个检测的相机平移(相对于边界框)
    'center':          List[[cx cy]],         # 每个检测的边界框2D中心
    'class_name':      List[int],             # 每个检测的类别ID(人类为0)
    'conf':            List[float],           # 每个检测的置信度分数
    'frame_path':      'vid_frame0.jpg',      # 帧标识符
    'loca':            List[np.array(99,)],   # 每个检测的位置特征
    'mask':            List[mask],            # 每个检测的RLE压缩掩码
    'pose':            List[np.array(229,)],  # 每个检测的姿势特征(连接的SMPL参数)
    'scale':           List[float],           # 每个检测的max(宽度, 高度)
    'shot':            int,                   # 镜头编号
    'size':            List[[imgw imgh]],     # 每个检测的图像尺寸
    'smpl':            List[Dict_SMPL],       # 每个检测的SMPL参数:betas (10), body_pose (23x3x3), global_orient (3x3)
    'tid':             List[int],             # 每个检测的轨迹ID
    'time':            int,                   # 帧号
    'tracked_bbox':    List[[x0 y0 w h]],     # 每个检测的2D边界框(左上角和尺寸)
    'tracked_ids':     List[int],             # 每个检测的轨迹ID
    'tracked_time':    List[int],             # 每个检测上次被看到的时间
  },
  'vid_frame1.jpg': {
    ...
  },
  ...
}

后处理流程

即将推出。


训练和评估

即将推出。

致谢

部分代码取自或改编自以下仓库:

引用

如果您发现此代码对您的研究有用,或者使用了我们方法生成的数据,请考虑引用以下论文:

@inproceedings{rajasegaran2022tracking,
  title={Tracking People by Predicting 3{D} Appearance, Location \& Pose},
  author={Rajasegaran, Jathushan and Pavlakos, Georgios and Kanazawa, Angjoo and Malik, Jitendra},
  booktitle={CVPR},
  year={2022}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号