| #!/bin/bash |
| ROOT_DIR="root to LLaVA-NeXT-Video" |
|
|
| if [ ! -e $ROOT_DIR ]; then |
| echo "The root dir does not exist. Exiting the script." |
| exit 1 |
| fi |
|
|
| cd $ROOT_DIR |
|
|
| export python3WARNINGS=ignore |
| export TOKENIZERS_PARALLELISM=false |
| |
| gpu_list="${CUDA_VISIBLE_DEVICES}" |
| GPULIST=(${(s:,:)gpu_list}) |
|
|
| |
| |
|
|
| CKPT=$1 |
| CONV_MODE=$2 |
| FRAMES=$3 |
| POOL_STRIDE=$4 |
| OVERWRITE=$5 |
| CHUNKS=${6:-1} |
|
|
| OPENAIKEY="INPUT YOUR OPENAI API" |
|
|
| if [ "$OVERWRITE" = False ]; then |
| SAVE_DIR=$(basename $CKPT)_${CONV_MODE}_frames_${FRAMES}_stride_${POOL_STRIDE}_overwrite_${OVERWRITE} |
|
|
| else |
| SAVE_DIR=$(basename $CKPT)_${CONV_MODE}_frames_${FRAMES}_stride_${POOL_STRIDE} |
| fi |
|
|
| echo $SAVE_DIR |
|
|
| |
| GPULIST=(0 1 2 3 4 5 6 7) |
|
|
| |
| NUM_GPUS=${#GPULIST[@]} |
|
|
| |
| GPUS_PER_CHUNK=$((NUM_GPUS / CHUNKS)) |
|
|
|
|
| for IDX in $(seq 1 $CHUNKS); do |
| START=$(((IDX-1) * GPUS_PER_CHUNK)) |
| LENGTH=$GPUS_PER_CHUNK |
| |
| CHUNK_GPUS=(${GPULIST[@]:$START:$LENGTH}) |
| |
| |
| CHUNK_GPUS_STR=$(IFS=,; echo "${CHUNK_GPUS[*]}") |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| echo "CUDA_VISIBLE_DEVICES=$CHUNK_GPUS_STR" |
| CUDA_VISIBLE_DEVICES=$CHUNK_GPUS_STR python3 llava/eval/model_video_chatgpt_general.py \ |
| --model-path $CKPT \ |
| --video_dir ./data/llava_video/video-chatgpt/evaluation/Test_Videos/ \ |
| --gt_file ./data/llava_video/video-chatgpt/evaluation/generic_qa.json \ |
| --output_dir ./work_dirs/eval_video_chatgpt/$SAVE_DIR \ |
| --output_name pred \ |
| --num-chunks $CHUNKS \ |
| --chunk-idx $(($IDX - 1)) \ |
| --overwrite ${OVERWRITE:-true} \ |
| --mm_spatial_pool_stride ${POOL_STRIDE:-4} \ |
| --for_get_frames_num $FRAMES \ |
| --conv-mode $CONV_MODE & |
| done |
|
|
| wait |
|
|
| python3 llava/eval/evaluate_benchmark_1_correctness.py \ |
| --pred_path ./work_dirs/eval_video_chatgpt/$SAVE_DIR \ |
| --output_dir ./work_dirs/eval_video_chatgpt/$SAVE_DIR/correctness_results \ |
| --output_json ./work_dirs/eval_video_chatgpt/$SAVE_DIR/correctness_results.json \ |
| --num_chunks $CHUNKS \ |
| --output_name pred \ |
| --num_tasks 16 \ |
| --api_key $OPENAIKEY \ |
|
|
|
|
| python3 llava/eval/evaluate_benchmark_2_detailed_orientation.py \ |
| --pred_path ./work_dirs/eval_video_chatgpt/$SAVE_DIR \ |
| --output_dir ./work_dirs/eval_video_chatgpt/$SAVE_DIR/detail_results \ |
| --output_json ./work_dirs/eval_video_chatgpt/$SAVE_DIR/detail_results.json \ |
| --num_chunks $CHUNKS \ |
| --output_name pred \ |
| --num_tasks 16 \ |
| --api_key $OPENAIKEY \ |
|
|
|
|
| python3 llava/eval/evaluate_benchmark_3_context.py \ |
| --pred_path ./work_dirs/eval_video_chatgpt/$SAVE_DIR \ |
| --output_dir ./work_dirs/eval_video_chatgpt/$SAVE_DIR/context_results \ |
| --output_json ./work_dirs/eval_video_chatgpt/$SAVE_DIR/context_results.json \ |
| --num_chunks $CHUNKS \ |
| --output_name pred \ |
| --num_tasks 16 \ |
| --api_key $OPENAIKEY \ |
|
|
|
|
|
|
| for IDX in $(seq 1 $CHUNKS); do |
| START=$(((IDX-1) * GPUS_PER_CHUNK)) |
| LENGTH=$GPUS_PER_CHUNK |
| |
| CHUNK_GPUS=(${GPULIST[@]:$START:$LENGTH}) |
| |
| |
| CHUNK_GPUS_STR=$(IFS=,; echo "${CHUNK_GPUS[*]}") |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| echo "CUDA_VISIBLE_DEVICES=$CHUNK_GPUS_STR" |
| CUDA_VISIBLE_DEVICES=$CHUNK_GPUS_STR python3 llava/eval/model_video_chatgpt_general.py \ |
| --model-path $CKPT \ |
| --video_dir ./data/llava_video/video-chatgpt/evaluation/Test_Videos/ \ |
| --gt_file ./data/llava_video/video-chatgpt/evaluation/temporal_qa.json \ |
| --output_dir ./work_dirs/eval_video_chatgpt/$SAVE_DIR \ |
| --output_name pred_temporal \ |
| --num-chunks $CHUNKS \ |
| --chunk-idx $(($IDX - 1)) \ |
| --for_get_frames_num $FRAMES \ |
| --overwrite ${OVERWRITE} \ |
| --mm_spatial_pool_stride ${POOL_STRIDE:-4} \ |
| --conv-mode $CONV_MODE & |
|
|
| done |
|
|
| wait |
|
|
|
|
| python3 llava/eval/evaluate_benchmark_4_temporal.py \ |
| --pred_path ./work_dirs/eval_video_chatgpt/$SAVE_DIR \ |
| --output_dir ./work_dirs/eval_video_chatgpt/$SAVE_DIR/temporal_results \ |
| --output_json ./work_dirs/eval_video_chatgpt/$SAVE_DIR/temporal_results.json \ |
| --num_chunks $CHUNKS \ |
| --output_name pred_temporal \ |
| --num_tasks 16 \ |
| --api_key $OPENAIKEY \ |
|
|
|
|
|
|
| for IDX in $(seq 1 $CHUNKS); do |
| START=$(((IDX-1) * GPUS_PER_CHUNK)) |
| LENGTH=$GPUS_PER_CHUNK |
| |
| CHUNK_GPUS=(${GPULIST[@]:$START:$LENGTH}) |
| |
| |
| CHUNK_GPUS_STR=$(IFS=,; echo "${CHUNK_GPUS[*]}") |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| echo "CUDA_VISIBLE_DEVICES=$CHUNK_GPUS_STR" |
| CUDA_VISIBLE_DEVICES=$CHUNK_GPUS_STR python3 llava/eval/model_video_chatgpt_consistency.py \ |
| --model-path $CKPT \ |
| --video_dir ./data/llava_video/video-chatgpt/evaluation/Test_Videos/ \ |
| --gt_file ./data/llava_video/video-chatgpt/evaluation/consistency_qa.json \ |
| --output_dir ./work_dirs/eval_video_chatgpt/$SAVE_DIR \ |
| --output_name pred_consistency \ |
| --num-chunks $CHUNKS \ |
| --chunk-idx $(($IDX - 1)) \ |
| --mm_spatial_pool_stride ${POOL_STRIDE:-4} \ |
| --for_get_frames_num $FRAMES \ |
| --overwrite ${OVERWRITE} \ |
| --conv-mode $CONV_MODE & |
| done |
|
|
| wait |
|
|
|
|
| python3 llava/eval/evaluate_benchmark_5_consistency.py \ |
| --pred_path ./work_dirs/eval_video_chatgpt/$SAVE_DIR \ |
| --output_dir ./work_dirs/eval_video_chatgpt/$SAVE_DIR/consistency_results \ |
| --output_json ./work_dirs/eval_video_chatgpt/$SAVE_DIR/consistency_results.json \ |
| --num_chunks $CHUNKS \ |
| --output_name pred_consistency \ |
| --num_tasks 16 \ |
| --api_key $OPENAIKEY \ |
|
|
|
|