# Preparing HMDB51 ## Introduction ```BibTeX @article{Kuehne2011HMDBAL, title={HMDB: A large video database for human motion recognition}, author={Hilde Kuehne and Hueihan Jhuang and E. Garrote and T. Poggio and Thomas Serre}, journal={2011 International Conference on Computer Vision}, year={2011}, pages={2556-2563} } ``` For basic dataset information, you can refer to the dataset [website](https://serre-lab.clps.brown.edu/resource/hmdb-a-large-human-motion-database/). Before we start, please make sure that the directory is located at `$MMACTION2/tools/data/hmdb51/`. To run the bash scripts below, you need to install `unrar`. you can install it by `sudo apt-get install unrar`, or refer to [this repo](https://github.com/innerlee/setup) by following the usage and taking [`zzunrar.sh`](https://github.com/innerlee/setup/blob/master/zzunrar.sh) script for easy installation without sudo. ## Step 1. Prepare Annotations First of all, you can run the following script to prepare annotations. ```shell bash download_annotations.sh ``` ## Step 2. Prepare Videos Then, you can run the following script to prepare videos. ```shell bash download_videos.sh ``` ## Step 3. Extract RGB and Flow This part is **optional** if you only want to use the video loader. Before extracting, please refer to [install.md](/docs/en/install.md) for installing [denseflow](https://github.com/open-mmlab/denseflow). If you have plenty of SSD space, then we recommend extracting frames there for better I/O performance. You can run the following script to soft link SSD. ```shell # execute these two line (Assume the SSD is mounted at "/mnt/SSD/") mkdir /mnt/SSD/hmdb51_extracted/ ln -s /mnt/SSD/hmdb51_extracted/ ../../../data/hmdb51/rawframes ``` If you only want to play with RGB frames (since extracting optical flow can be time-consuming), consider running the following script to extract **RGB-only** frames using denseflow. ```shell bash extract_rgb_frames.sh ``` If you didn't install denseflow, you can still extract RGB frames using OpenCV by the following script, but it will keep the original size of the images. ```shell bash extract_rgb_frames_opencv.sh ``` If both are required, run the following script to extract frames using "tvl1" algorithm. ```shell bash extract_frames.sh ``` ## Step 4. Generate File List you can run the follow script to generate file list in the format of rawframes and videos. ```shell bash generate_rawframes_filelist.sh bash generate_videos_filelist.sh ``` ## Step 5. Check Directory Structure After the whole data process for HMDB51 preparation, you will get the rawframes (RGB + Flow), videos and annotation files for HMDB51. In the context of the whole project (for HMDB51 only), the folder structure will look like: ``` mmaction2 ├── mmaction ├── tools ├── configs ├── data │ ├── hmdb51 │ │ ├── hmdb51_{train,val}_split_{1,2,3}_rawframes.txt │ │ ├── hmdb51_{train,val}_split_{1,2,3}_videos.txt │ │ ├── annotations │ │ ├── videos │ │ │ ├── brush_hair │ │ │ │ ├── April_09_brush_hair_u_nm_np1_ba_goo_0.avi │ │ │ ├── wave │ │ │ │ ├── 20060723sfjffbartsinger_wave_f_cm_np1_ba_med_0.avi │ │ ├── rawframes │ │ │ ├── brush_hair │ │ │ │ ├── April_09_brush_hair_u_nm_np1_ba_goo_0 │ │ │ │ │ ├── img_00001.jpg │ │ │ │ │ ├── img_00002.jpg │ │ │ │ │ ├── ... │ │ │ │ │ ├── flow_x_00001.jpg │ │ │ │ │ ├── flow_x_00002.jpg │ │ │ │ │ ├── ... │ │ │ │ │ ├── flow_y_00001.jpg │ │ │ │ │ ├── flow_y_00002.jpg │ │ │ ├── ... │ │ │ ├── wave │ │ │ │ ├── 20060723sfjffbartsinger_wave_f_cm_np1_ba_med_0 │ │ │ │ ├── ... │ │ │ │ ├── winKen_wave_u_cm_np1_ri_bad_1 ``` For training and evaluating on HMDB51, please refer to \[getting_started.md\](/docs/en/getting_started.md).