← Open Source
v-iashin

video_features

Extract video features from raw videos using multiple GPUs. We support RAFT flow frames as well as S3D, I3D, R(2+1)D, VGGish, CLIP, and TIMM models.

Model DevelopmentDataset engineeringPython
Open on GitHub
Momentum
+0stars in 24 hours0.0%
660
Stars
112
Forks
+1
This week
7
Contributors
Created 2020-06-01 · Updated 2026-10-10 · #15360 today
Top developers
v-iashinKamino666rmuraix

v-iashin/video_features is ranked 15,360 with 660 stars.

Same-category comparison

v-iashin/video_features is ranked 15,360 among these 8 peers; yzhao062/combo is ranked 15,361.

Same-category comparison
NameRankMetrics
ali-vilab/Wan-Move15,343
Language:
Python
Stars:
661
Forks:
37
Description:
[NeurIPS 2025] Wan-Move: Motion-controllable Video Generation via Latent Trajectory Guidance.
appliedAI-Initiative-old/orb_slam_2_ros15,344
Language:
C++
Stars:
661
Forks:
290
Description:
A ROS implementation of ORB_SLAM2.
arnoweng/CheXNet15,345
Language:
Python
Stars:
661
Forks:
237
Description:
A pytorch reimplementation of CheXNet.
bbaaii/DreamDiffusion15,356
Language:
Python
Stars:
660
Forks:
80
Description:
Implementation of “DreamDiffusion: Generating High-Quality Images from Brain EEG Signals”.
yzhao062/combo15,361
Language:
Python
Stars:
660
Forks:
105
Description:
(AAAI' 20) A Python Toolbox for Machine Learning Model Combination.
MorvanZhou/pytorch-A3C15,365
Language:
Python
Stars:
659
Forks:
142
Description:
Simple A3C implementation with pytorch + multiprocessing.
NVIDIA-AI-IOT/CUDA-PointPillars15,366
Language:
Python
Stars:
659
Forks:
185
Description:
A project demonstrating how to use CUDA-PointPillars to deal with cloud points data from lidar.
cpnota/autonomous-learning-library15,370
Language:
Python
Stars:
659
Forks:
72
Description:
A PyTorch library for building deep reinforcement learning agents.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModel Development
SubcategoryDataset engineering
KeywordsData processing, Video production
Stars660
Forks112
Contributors7
Created date2020-06-01
Updated date2026-10-10
Stars in 1 day0
Stars in 7 days1
Rank15,360
Previous rank15,175
Rank change-185
7-day stars rank11,008
Previous 7-day stars rank11,073
7-day stars rank change65
Total stars rank15,571
Previous total stars rank15,542
Total stars rank change-29
CountryUK
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.

Supported Models

Action Recognition

Sound Recognition

Optical Flow

Frame-wise Features

Quick Start

or run with conda locally:

# 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.

Used in

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 .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}},
}
Nearby in the ranking
Similar items