A PyTorch library for building deep reinforcement learning agents.
Key parameters and specifications
Key parameters and specifications
Parameter
Value
Language
Python
Category
Model Development
Subcategory
Dataset engineering
Keywords
Data processing, Video production
Stars
660
Forks
112
Contributors
7
Created date
2020-06-01
Updated date
2026-10-10
Stars in 1 day
0
Stars in 7 days
1
Rank
15,360
Previous rank
15,175
Rank change
-185
7-day stars rank
11,008
Previous 7-day stars rank
11,073
7-day stars rank change
65
Total stars rank
15,571
Previous total stars rank
15,542
Total stars rank change
-29
Country
UK
README summary
Video Features allows you to extract features from video clips. It supports a variety of extractors and modalities, i. visual appearance, optical flow, and audio. Supported Models Action Recognition S3D (Kinetics 400) R(2+1)d RGB (IG-65M, Kinetics 400) I3D-Net RGB + Flow (Kinetics 400) Sound Recognition VGGish (AudioSet) Optical Flow RAFT (FlyingChairs, FlyingThings3D, Sintel, KITTI) Frame-wise Features All models from TIMM e. ViT, ConvNeXt, EVA, Swin, DINO (ImageNet, LAION, etc) CLIP ResNet-18,34,50,101
,152 (ImageNet) Quick Start or run with locally: If you are more comfortable with Docker, there is a Docker image with a pre-installed environment that supports all models. Multi-GPU and Multi-Node Setups With , it is easy to parallelize feature extraction among many GPUs. It is enough to start the script in another terminal with another GPU (or even the same one) pointing to the same output folder and input video paths. The script will check if the
features already exist and skip them. It will also try to load the feature file to check if it is corrupted (i. This approach allows you to continue feature extraction if the previous script failed for some reason. If you have an access to a GPU cluster with shared disk space you may scale extraction with as many GPUs as you can by creating several single-GPU jobs with the same command. Since each time the script is run the
list of input files is shuffled, you don't need to worry that workers will be processing the same video. On a rare occasion when the collision happens, the script will rewrite previously extracted features. Input The inputs are paths to video files. Paths can be passed as a list of paths to videos or as a text file formatted with a single path per line. Output Output is defined by the argument; by default it prints the features to the
command line. ** / **: Saves the features in the folder with the same name as the input video file but with the or extension. ** **: Saves features into a single HDF5 file per device in the (e. ) with video path as keys ( / replaced by ). Used in SpecVQGAN branch BMT branch MDVC branch Please, let me know if you found this repo useful for your projects or papers. Acknowledgements @Kamino666: added CLIP model as well as Windows and CPU support (and many other useful
things). @ohjho: added support of 37-layer R(2+1)d favors. @borijang: for solving bugs with file names, I3D checkpoint loading enhancement and code style improvements. @bjuncek: for helping with timm models and offline discussion. @VivekNarula7: for adding support for output format. Citation If you find this project useful in your research, please consider cite:
Frequently asked questions
How many stars and forks are recorded?
v-iashin/video_features has 660 stars and 112 forks.
What is the repository rank?
v-iashin/video_features is ranked 15,360.
What language and category are recorded?
v-iashin/video_features has 660 stars, uses Python and belongs to Model Development.
Which repository is closest in rank?
v-iashin/video_features is compared with yzhao062/combo, ranked 15,361 with 660 stars.
README
Video Features
video_features allows you to extract features from video clips.
It supports a variety of extractors and modalities,
i.e. visual appearance, optical flow, and audio.
See more details in Documentation.
# clone the repo and change the working directory
git clone https://github.com/v-iashin/video_features.git
cd video_features
# install environment
conda env create -f conda_env.yml
# load the environment
conda activate video_features
# extract r(2+1)d features for the sample videos
# (defaults to printing; use on_extraction=save_numpy or save_h5 or save_pickle to save to disk)
python main.py \
feature_type=r21d \
device="cuda:0" \
video_paths="[./sample/v_ZNVhz7ctTq0.mp4, ./sample/v_GGSY1Qvo990.mp4]"
# if you have many GPUs, just run this command from another terminal with another device
# device can also be "cpu"
If you are more comfortable with Docker, there is a
Docker image with a pre-installed environment that supports all models.
Check out the
Docker support.
documentation page.
Multi-GPU and Multi-Node Setups
With video_features, it is easy to parallelize feature extraction among many GPUs.
It is enough to start the script in another terminal with another GPU (or even the same one)
pointing to the same output folder and input video paths.
The script will check if the features already exist and skip them.
It will also try to load the feature file to check if it is corrupted (i.e. not openable).
This approach allows you to continue feature extraction if the previous script failed for some reason.
If you have an access to a GPU cluster with shared disk space you may scale
extraction with as many GPUs as you can by creating several single-GPU jobs with the same command.
Since each time the script is run the list of input files is shuffled, you don't need to worry that
workers will be processing the same video.
On a rare occasion when the collision happens, the script will rewrite previously extracted features.
Input
The inputs are paths to video files.
Paths can be passed as a list of paths to videos or as a text file formatted with a single path per line.
Output
Output is defined by the on_extraction argument; by default it prints the features to the command line.
Possible values of output are ['print', 'save_numpy', 'save_pickle', 'save_h5'].
save_numpy / save_pickle: Saves the features in the output_path folder with the same name as the input video file but with the .npy or .pkl extension.
save_h5: Saves features into a single HDF5 file per device in the output_path (e.g. video_features_cuda0.h5) with video path as keys (//\\ replaced by _). Structure: file.h5 / video_key (group) / feature_name (rgb, flow, fps etc). Use utils.py/inspect_h5() to explore the content.
@borijang: for solving bugs with file names, I3D checkpoint loading enhancement and code style improvements.
@bjuncek: for helping with timm models and offline discussion.
@VivekNarula7: for adding support for .h5 output format.
Citation
If you find this project useful in your research, please consider cite:
@misc{videofeatures2020,
title = {Video Features},
author = {Vladimir Iashin and other contributors},
year = {2020},
howpublished = {\url{https://github.com/v-iashin/video_features}},
}