All Projects → v-iashin → video_features

v-iashin / video_features

Licence: GPL-3.0 license
Extract video features from raw videos using multiple GPUs. We support RAFT and PWC flow frames as well as S3D, I3D, R(2+1)D, VGGish, CLIP, ResNet features.

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to video features

slowfast feature extractor
Feature Extractor module for videos using the PySlowFast framework
Stars: ✭ 56 (-75.11%)
Mutual labels:  feature-extraction, video-features
MixingBear
Package for automatic beat-mixing of music files in Python 🐻🎚
Stars: ✭ 73 (-67.56%)
Mutual labels:  audio-features, feature-extraction
BMT
Source code for "Bi-modal Transformer for Dense Video Captioning" (BMVC 2020)
Stars: ✭ 192 (-14.67%)
Mutual labels:  i3d, video-features
Tensorflow-Audio-Classification
Audio classification with VGGish as feature extractor in TensorFlow
Stars: ✭ 105 (-53.33%)
Mutual labels:  vggish
DeepNetModel
记录每一个常用的深度模型结构的特点(图和代码)
Stars: ✭ 25 (-88.89%)
Mutual labels:  resnet
EPC
Every Pixel Counts ++: Joint Learning of Geometry and Motion with 3D Holistic Understanding
Stars: ✭ 27 (-88%)
Mutual labels:  optical-flow
sparsezoo
Neural network model repository for highly sparse and sparse-quantized models with matching sparsification recipes
Stars: ✭ 264 (+17.33%)
Mutual labels:  resnet
quagmire
Python surface process framework on highly scalable unstructured meshes
Stars: ✭ 13 (-94.22%)
Mutual labels:  parallel
Galaxy
Galaxy is an asynchronous parallel visualization ray tracer for performant rendering in distributed computing environments. Galaxy builds upon Intel OSPRay and Intel Embree, including ray queueing and sending logic inspired by TACC GraviT.
Stars: ✭ 18 (-92%)
Mutual labels:  parallel
YACLib
Yet Another Concurrency Library
Stars: ✭ 193 (-14.22%)
Mutual labels:  parallel
MIT-Driverless-CV-TrainingInfra
PyTorch pipeline of MIT Driverless Computer Vision paper(2020)
Stars: ✭ 89 (-60.44%)
Mutual labels:  resnet
GuidedNet
Caffe implementation for "Guided Optical Flow Learning"
Stars: ✭ 28 (-87.56%)
Mutual labels:  optical-flow
facenet-pytorch-glint360k
A PyTorch implementation of the 'FaceNet' paper for training a facial recognition model with Triplet Loss using the glint360k dataset. A pre-trained model using Triplet Loss is available for download.
Stars: ✭ 186 (-17.33%)
Mutual labels:  multi-gpu
Deep-learning-for-contact map v2
Prediction of protein contact map
Stars: ✭ 19 (-91.56%)
Mutual labels:  resnet
noroutine
Goroutine analogue for Node.js, spreads I/O-bound routine calls to utilize thread pool (worker_threads) using balancer with event loop utilization. 🌱
Stars: ✭ 86 (-61.78%)
Mutual labels:  parallel
pareach
a tiny function that "parallelizes" work in NodeJS
Stars: ✭ 19 (-91.56%)
Mutual labels:  parallel
codeceptjs-bdd
⭐️ ⭐️⭐️ Migrated to Salesforce Open Source Platform - https://github.com/salesforce/codeceptjs-bdd
Stars: ✭ 24 (-89.33%)
Mutual labels:  parallel
iros bshot
B-SHOT : A Binary Feature Descriptor for Fast and Efficient Keypoint Matching on 3D Point Clouds
Stars: ✭ 43 (-80.89%)
Mutual labels:  feature-extraction
flow1d
[ICCV 2021 Oral] High-Resolution Optical Flow from 1D Attention and Correlation
Stars: ✭ 91 (-59.56%)
Mutual labels:  optical-flow
PTTmineR
Parallel Searching and Crawling Data from PTT 🚀
Stars: ✭ 31 (-86.22%)
Mutual labels:  parallel

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

Open In Colab

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_torch_zoo.yml

# load the environment
conda activate torch_zoo

# extract r(2+1)d features for the sample videos
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.

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 small things).
  • @borijang: for solving bugs with file names, I3D checkpoint loading enhancement and code style improvements.
  • @ohjho: added support of 37-layer R(2+1)d favors.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].