Skip to content

Extract TVL1 optical flows in python (multi-process && multi-server)

Notifications You must be signed in to change notification settings

bomtorazek/py-denseflow

 
 

Repository files navigation

Py-denseflow

This is a python port of denseflow, which extract the videos' frames and optical flow images with TVL1 algorithm as default.


Requirements:

  • numpy
  • cv2
  • PIL.Image
  • multiprocess
  • scikit-video (optional)
  • scipy

Installation

Install the requirements:

pip install -r requirements.txt
conda 환경을 사용하실 경우:
conda env create -f environment_tvl1_linux.yml
conda env create -f environment_tvl1_windows.yml

위의 방법이 안 될 경우 requirements_linux.txt 또는 requirements_windows.txt에 있는

제가 쓴 bash script를 복붙하시는 방법도 있습니다.


Usage

The denseflow.py contains two modes including 'run' and 'debug'.

here 'debug' is built for debugging the video paths and video-read methods. (IPython.embed suggested)

debug는 그냥 영상 하나만 잘 되는지 확인 해보는 모드입니다.

Just simply run the following code:

data_root와 dataset을 밑의 경로를 보시며 적절히 수정해주세요

마지막 commit을 windows 환경에서는 검증하지 못했으니 확인 부탁드립니다.

python denseflow.py --data_root=/home/esuh/data/ --dataset=cvpr/Track2.1/Train --new_dir=flows --step=1 --mode=run

--rejection=completed.txt : 이미 완료된 항목을 배제합니다.
--validation : validation frame 추출시 동영상 경로가 조금 달라서 이 parse를 추가해야 합니다.
--modality: rgb, flow, both 중에 추출할 frames을 선택할 수 있습니다.
--semi: semi는 이름 경로가 달라서 추가 해줘야 합니다.

python denseflow.py --data_root=/home/esuh/data/ --dataset=cvpr/Track2.2/HMDB51 --new_dir=flows --step=1 --mode=run --modality=rgb --semi
python denseflow.py --data_root=/home/esuh/data/ --dataset=cvpr/Track2.2/Train --new_dir=flows --step=1 --mode=run --modality=rgb --semi --validation
python denseflow.py --data_root=/home/esuh/data/ --dataset=cvpr/Track2.2/Validation --new_dir=flows --step=1 --mode=run --modality=rgb --semi --validation

data
----cvpr
    ----Track2.1
            ----Train
                 ----videos (여기에 원본 클립 넣으시면 됩니다.)
                       ----Run
                          ----Run_1_1.mp4
                          ....
                       ----Sit
                       ...
                 ----flows (여기에 frame들이 만들어집니다. 폴더도 자동으로 만들어집니다.)
                 
            ----Validation
                 ----videos
                       ----0.mp4
                       ----1.mp4
                 ----flows (여기에 frame들이 만들어집니다. 폴더도 자동으로 만들어집니다.)
flows 아래에는 각 클립이름의 폴더가 생기며 그 아래에 img_00001.jpg, flow_x_00001.jpg, flow_y_00001.jpg가 만들어집니다.

While in 'run' mode, here we provide multi-process as well as multi-server with manually s_/e_ IDs setting.

for example: server 0 need to process 3000 videos with 4 processes parallelly working:

python denseflow.py --new_dir=denseflow_py --num_workers=4 --step=1 --bound=20 --mode=run --s_=0 --e_=3000
여기 --s랑 --e는 시작 비디오 끝 비디오 선택하는 기능인데 필요없어서 코드 수정하고 주석 처리했습니다.
혹시 필요하신 분은 수정하셔서 사용하시면 됩니다.

Just feel free to let me know if any bugs exist.

About

Extract TVL1 optical flows in python (multi-process && multi-server)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%