From d096cf347cb8332afd33c5e6881fa19badd36dd4 Mon Sep 17 00:00:00 2001 From: Bing Gong <gongbing1112@gmail.com> Date: Tue, 10 Mar 2020 12:15:34 +0100 Subject: [PATCH] add bash folder --- bash/download_and_preprocess_dataset_era5.sh | 125 +++++++++++++++++++ bash/workflow_era5.sh | 56 +++++++++ 2 files changed, 181 insertions(+) create mode 100644 bash/download_and_preprocess_dataset_era5.sh create mode 100755 bash/workflow_era5.sh diff --git a/bash/download_and_preprocess_dataset_era5.sh b/bash/download_and_preprocess_dataset_era5.sh new file mode 100644 index 00000000..e71d4763 --- /dev/null +++ b/bash/download_and_preprocess_dataset_era5.sh @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +# exit if any command fails +set -e + + +#if [ "$#" -eq 2 ]; then +# if [ $1 = "bair" ]; then +# echo "IMAGE_SIZE argument is only applicable to kth dataset" >&2 +# exit 1 +# fi +#elif [ "$#" -ne 1 ]; then +# echo "Usage: $0 DATASET_NAME [IMAGE_SIZE]" >&2 +# exit 1 +#fi +#if [ $1 = "bair" ]; then +# TARGET_DIR=./data/bair +# mkdir -p ${TARGET_DIR} +# TAR_FNAME=bair_robot_pushing_dataset_v0.tar +# URL=http://rail.eecs.berkeley.edu/datasets/${TAR_FNAME} +# echo "Downloading '$1' dataset (this takes a while)" +# #wget ${URL} -O ${TARGET_DIR}/${TAR_FNAME} Bing: on MacOS system , use curl instead of wget +# curl ${URL} -O ${TARGET_DIR}/${TAR_FNAME} +# tar -xvf ${TARGET_DIR}/${TAR_FNAME} --strip-components=1 -C ${TARGET_DIR} +# rm ${TARGET_DIR}/${TAR_FNAME} +# mkdir -p ${TARGET_DIR}/val +# # reserve a fraction of the training set for validation +# mv ${TARGET_DIR}/train/traj_256_to_511.tfrecords ${TARGET_DIR}/val/ +#elif [ $1 = "kth" ]; then +# if [ "$#" -eq 2 ]; then +# IMAGE_SIZE=$2 +# TARGET_DIR=./data/kth_${IMAGE_SIZE} +# else +# IMAGE_SIZE=64 +# fi +# echo ${TARGET_DIR} ${IMAGE_SIZE} +# mkdir -p ${TARGET_DIR} +# mkdir -p ${TARGET_DIR}/raw +# echo "Downloading '$1' dataset (this takes a while)" + # TODO Bing: for save time just use walking, need to change back if all the data are needed + #for ACTION in walking jogging running boxing handwaving handclapping; do +# for ACTION in walking; do +# echo "Action: '$ACTION' " +# ZIP_FNAME=${ACTION}.zip +# URL=http://www.nada.kth.se/cvap/actions/${ZIP_FNAME} +# # wget ${URL} -O ${TARGET_DIR}/raw/${ZIP_FNAME} +# echo "Start downloading action '$ACTION' ULR '$URL' " +# curl ${URL} -O ${TARGET_DIR}/raw/${ZIP_FNAME} +# unzip ${TARGET_DIR}/raw/${ZIP_FNAME} -d ${TARGET_DIR}/raw/${ACTION} +# echo "Action '$ACTION' data download and unzip " +# done +# FRAME_RATE=25 +# mkdir -p ${TARGET_DIR}/processed +# # download files with metadata specifying the subsequences +# TAR_FNAME=kth_meta.tar.gz +# URL=http://rail.eecs.berkeley.edu/models/savp/data/${TAR_FNAME} +# echo "Downloading '${TAR_FNAME}' ULR '$URL' " +# #wget ${URL} -O ${TARGET_DIR}/processed/${TAR_FNAME} +# curl ${URL} -O ${TARGET_DIR}/processed/${TAR_FNAME} +# tar -xzvf ${TARGET_DIR}/processed/${TAR_FNAME} --strip 1 -C ${TARGET_DIR}/processed + # convert the videos into sequence of downscaled images +# echo "Processing '$1' dataset" +# #TODO Bing, just use walking for test +# #for ACTION in walking jogging running boxing handwaving handclapping; do +# #Todo Bing: remove the comments below after testing +# for ACTION in walking; do +# for VIDEO_FNAME in ${TARGET_DIR}/raw/${ACTION}/*.avi; do +# FNAME=$(basename ${VIDEO_FNAME}) +# FNAME=${FNAME%_uncomp.avi} +# echo "FNAME '$FNAME' " +# # sometimes the directory is not created, so try until it is +# while [ ! -d "${TARGET_DIR}/processed/${ACTION}/${FNAME}" ]; do +# mkdir -p ${TARGET_DIR}/processed/${ACTION}/${FNAME} +# done +# ffmpeg -i ${VIDEO_FNAME} -r ${FRAME_RATE} -f image2 -s ${IMAGE_SIZE}x${IMAGE_SIZE} \ +# ${TARGET_DIR}/processed/${ACTION}/${FNAME}/image-%03d_${IMAGE_SIZE}x${IMAGE_SIZE}.png +# done +# done +# python video_prediction/datasets/kth_dataset.py ${TARGET_DIR}/processed ${TARGET_DIR} ${IMAGE_SIZE} +# rm -rf ${TARGET_DIR}/raw +# rm -rf ${TARGET_DIR}/processed + +while [[ $# -gt 0 ]] #of the number of passed argument is greater than 0 +do +key="$1" +case $key in + -d|--data) + DATA="$2" + shift + shift + ;; + -i|--input_dir) + INPUT_DIR="$2" + shift + shift + ;; + -o|--output_dir) + OUTPUT_DIR="$2" + shift + shift + ;; +esac +done + +echo "DATA = ${DATA} " +echo "OUTPUT_DIRECTORY = ${OUTPUT_DIR}" + +if [ -d $INPUT_DIR ]; then + echo "INPUT DIRECTORY = ${INPUT_DIR}" + +else + echo "INPUT DIRECTORY '$INPUT_DIR' DOES NOT EXIST" + exit 1 +fi + + +if [ $DATA = "era5" ]; then + mkdir -p ${OUTPUT_DIR} + python3 video_prediction/datasets/era5_dataset.py ${INPUT_DIR} ${OUTPUT_DIR} +else + echo "dataset name: '$DATA' (choose from 'era5')" >&2 + exit 1 +fi + +echo "Succesfully finished downloading and preprocessing dataset '$DATA' " \ No newline at end of file diff --git a/bash/workflow_era5.sh b/bash/workflow_era5.sh new file mode 100755 index 00000000..a96cb259 --- /dev/null +++ b/bash/workflow_era5.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +set -e + +model="savp" +#train_mode: end_to_end, pre_trained, fine_tune +train_mode="end_to_end" +is_pretrain=False +exp_name="era5_size_64_64_3_3t_norm" + +if [ $model=="savp" ] +then + method_dir="ours_savp" +elif [ $model=="gan" ] +then + method_dir="ours_gan" +elif [ $model=="vae" ] +then + method_dir="ours_vae" +else + echo "model does not exist" 2>&1 + exit 1 +fi + +raw_dataset_input=./splits/${exp_name} +prep_data_input=./data/${exp_name} +train_output=./logs/${exp_name} +results_output=./results_test_samples/${exp_name}/${method_dir} + +##############Datat Preprocessing################ +#For parallel on HPC +python ../workflow_video_prediction/DataPreprocess/benchmark/mpi_stager_v2_process_netCDF.py +#On local machine +#python ... +#Change the .hkl data to .tfrecords data +python ./video_prediction/datasets/era5_dataset_v2.py ${raw_dataset_input} ${prep_data_input} + +#########Train########################## +python ./scripts/train_v2.py --input_dir ${prep_data_input} --dataset era5 \ +--model savp --model_hparams_dict hparams/kth/${method_dir}/model_hparams.json \ +--output_dir logs/era5_64_64_3_3t_norm/${train_mode}/${method_dir}\ + +#--checkpoint pretrained_models/kth/ours_savp +#########Generate results################# +python ./scripts/generate_transfer_learning_finetune.py --input_dir ${prep_data_input} \ +--dataset_hparams sequence_length=20 --checkpoint ${train_output}\ +--mode test --results_dir ${results_output} \ +--batch_size 4 --dataset era5 + + + + + + + + + -- GitLab