clip-video-encode
轻松计算视频帧的clip嵌入。
安装
使用pip:
pip install clip-video-encode
或从源代码构建:
python setup.py install
使用方法
名称
clip-video-encode - 使用CLIP图像编码器对帧进行编码
概要
clip-video-encode SRC <标志>
描述
输入:
src:
str: mp4文件路径
str: YouTube链接
str: 包含多个mp4或YouTube链接的txt文件路径
list: 包含多个mp4或YouTube链接的列表
dest:
str: 保存嵌入的目录
None: dest = src + .npy
output_format:
str: "files"或"webdataset"
take_every_nth:
int: 仅取每第n帧
frame_workers:
int: 分配视频读取的进程数。
frame_memory_size:
int: FrameReader的内存大小(GB)。
metadata_columns:
str: 在src中查找的元数据列名的逗号分隔列表
use_dst_name:
bool: 使用video2numpy建议的保存名称
distribute:
str: 分发策略,目前可选slurm或none
oc_model_name:
str: open_clip模型名称,用于选择CLIP架构
pretrained:
str: open_clip预训练权重名称
位置参数
SRC
标志
--dest=DEST
默认值: ''
--output_format=OUTPUT_FORMAT
默认值: 'files'
--take_every_nth=TAKE_EVERY_NTH
默认值: 1
--frame_workers=FRAME_WORKERS
默认值: 1
--frame_memory_size=FRAME_MEMORY_SIZE
默认值: 4
--metadata_columns=METADATA_COLUMNS
默认值: ''
--use_dst_name=USE_DST_NAME
默认值: False
--distribute=DISTRIBUTE
默认值: 'none'
--oc_model_name=OC_MODEL_NAME
默认值: 'ViT-B-32'
--pretrained=PRETRAINED
默认值: 'laion2b_s34b_b79k'
API
该模块公开了一个名为clip_video_encode
的函数,它接受与命令行工具相同的参数:
import glob
from clip_video_encode import clip_video_encode
VIDS = glob.glob("some/path/my_videos/*.mp4")
EMBEDDING_DIR = "some/path/my_embeddings"
take_every_5 = 5
clip_video_encode(VIDS, EMBEDDING_DIR, take_every_5)
谁在使用clip-video-encode?
- CLIP-Kinetics700 - 使用clip-video-encode以1 FPS的速度将Kinetics700数据集(700GB)压缩到约8GB
- CLIP-WebVid - 以1 FPS的速度将WebVid数据集(1000万个视频)编码为CLIP ViT-B/32嵌入。
示例
查看一些很酷的clip-video-encode示例:
- 物体检测器 - 使用clip-video-encode生成的嵌入在视频中查找物体。
- 大型数据集处理 - 如果您想将大型数据集(如WebVid)处理成CLIP嵌入,请查看链接的README.md底部的示例。
设置虚拟环境:
python3 -m venv .env
source .env/bin/activate
pip install -e .
运行测试:
pip install -r requirements-test.txt
然后
make lint
make test
您可以使用make black
重新格式化代码
python -m pytest -x -s -v tests -k "dummy"
运行特定测试