| #!/bin/bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
|
|
| set -e |
| PYTHON=python |
| PROJECT=${PULSE_ROOT} |
| cd $PROJECT |
|
|
| EXP1_OUT=$PROJECT/results/published_baselines/exp1_tinyhar |
| EXP2_OUT=$PROJECT/results/published_baselines/exp2_asformer |
| EXP3_OUT=$PROJECT/results/published_baselines/exp3_asformer |
| mkdir -p $EXP1_OUT $EXP2_OUT $EXP3_OUT |
|
|
| echo "==========================================" |
| echo "Published Baselines - $(date)" |
| echo "==========================================" |
|
|
| |
| |
| |
| |
| ( |
| export CUDA_VISIBLE_DEVICES=0 |
|
|
| echo "" |
| echo "=== [GPU0] Exp1: TinyHAR Scene Recognition ===" |
|
|
| |
| for MOD in imu mocap emg eyetrack pressure; do |
| echo "--- TinyHAR / ${MOD} / early ---" |
| $PYTHON experiments/train_exp1.py \ |
| --model tinyhar --modalities $MOD --fusion early \ |
| --hidden_dim 32 --epochs 100 --batch_size 16 \ |
| --lr 1e-3 --weight_decay 1e-3 --downsample 5 \ |
| --seed 42 --output_dir $EXP1_OUT \ |
| --tag published 2>&1 | tail -5 |
| done |
|
|
| |
| for MOD in "emg,imu" "mocap,emg,imu" "mocap,emg,eyetrack,imu"; do |
| echo "--- TinyHAR / ${MOD} / early ---" |
| $PYTHON experiments/train_exp1.py \ |
| --model tinyhar --modalities $MOD --fusion early \ |
| --hidden_dim 32 --epochs 100 --batch_size 16 \ |
| --lr 1e-3 --weight_decay 1e-3 --downsample 5 \ |
| --seed 42 --output_dir $EXP1_OUT \ |
| --tag published 2>&1 | tail -5 |
| done |
|
|
| |
| for FUSION in late weighted_late feat_concat; do |
| echo "--- TinyHAR / emg,imu / ${FUSION} ---" |
| $PYTHON experiments/train_exp1.py \ |
| --model tinyhar --modalities emg,imu --fusion $FUSION \ |
| --hidden_dim 32 --epochs 100 --batch_size 16 \ |
| --lr 1e-3 --weight_decay 1e-3 --downsample 5 \ |
| --seed 42 --output_dir $EXP1_OUT \ |
| --tag published 2>&1 | tail -5 |
| done |
|
|
| echo "[GPU0] TinyHAR experiments complete." |
| ) & |
| PID_GPU0=$! |
|
|
|
|
| |
| |
| |
| |
| ( |
| export CUDA_VISIBLE_DEVICES=1 |
|
|
| echo "" |
| echo "=== [GPU1] Exp2: ASFormer Temporal Segmentation ===" |
|
|
| |
| for MOD in mocap emg "mocap,emg,eyetrack" "mocap,emg,eyetrack,imu" "mocap,emg,eyetrack,imu,pressure"; do |
| echo "--- ASFormer / ${MOD} ---" |
| $PYTHON experiments/train_exp2.py \ |
| --model asformer --modalities $MOD \ |
| --hidden_dim 64 --epochs 80 --batch_size 16 \ |
| --lr 5e-4 --weight_decay 1e-4 --downsample 2 \ |
| --seed 42 --output_dir $EXP2_OUT 2>&1 | tail -5 |
| done |
|
|
| echo "" |
| echo "=== [GPU1] Exp3: ASFormer Contact Detection ===" |
|
|
| |
| for MOD in mocap emg imu "mocap,emg" "mocap,emg,eyetrack" "mocap,emg,eyetrack,imu"; do |
| echo "--- ASFormer / ${MOD} ---" |
| $PYTHON experiments/train_exp3.py \ |
| --model asformer --modalities $MOD \ |
| --hidden_dim 64 --epochs 50 --batch_size 32 \ |
| --lr 1e-3 --weight_decay 1e-4 --downsample 2 \ |
| --seed 42 --output_dir $EXP3_OUT 2>&1 | tail -5 |
| done |
|
|
| echo "[GPU1] ASFormer experiments complete." |
| ) & |
| PID_GPU1=$! |
|
|
| |
| wait $PID_GPU0 |
| wait $PID_GPU1 |
|
|
| echo "" |
| echo "==========================================" |
| echo "All published baseline experiments complete - $(date)" |
| echo "==========================================" |
|
|
| |
| |
| |
| echo "" |
| echo "=== Results Summary ===" |
|
|
| echo "" |
| echo "--- Exp1: TinyHAR Scene Recognition ---" |
| for f in $EXP1_OUT/*/results.json; do |
| if [ -f "$f" ]; then |
| $PYTHON -c " |
| import json |
| with open('$f') as fp: |
| r = json.load(fp) |
| mods = ','.join(r.get('modalities', [])) |
| fus = r.get('fusion', 'early') |
| f1 = r.get('test_macro_f1', 0) |
| acc = r.get('test_accuracy', 0) |
| print(f' TinyHAR | {mods:<30} | {fus:<12} | F1={f1:.4f} Acc={acc:.4f}') |
| " |
| fi |
| done |
|
|
| echo "" |
| echo "--- Exp2: ASFormer Temporal Segmentation ---" |
| for f in $EXP2_OUT/*/results.json; do |
| if [ -f "$f" ]; then |
| $PYTHON -c " |
| import json |
| with open('$f') as fp: |
| r = json.load(fp) |
| mods = ','.join(r.get('modalities', [])) |
| m = r.get('test_metrics', {}) |
| print(f' ASFormer | {mods:<35} | Acc={m.get(\"frame_acc\",0):.4f} F1={m.get(\"frame_f1\",0):.4f} Seg@50={m.get(\"seg_f1@50\",0):.4f}') |
| " |
| fi |
| done |
|
|
| echo "" |
| echo "--- Exp3: ASFormer Contact Detection ---" |
| for f in $EXP3_OUT/*/results.json; do |
| if [ -f "$f" ]; then |
| $PYTHON -c " |
| import json |
| with open('$f') as fp: |
| r = json.load(fp) |
| mods = ','.join(r.get('input_modalities', [])) |
| m = r.get('test_metrics', {}) |
| print(f' ASFormer | {mods:<30} | R_F1={m.get(\"right_f1\",0):.4f} L_F1={m.get(\"left_f1\",0):.4f} Avg_F1={m.get(\"avg_f1\",0):.4f}') |
| " |
| fi |
| done |
|
|