File size: 2,226 Bytes
919865e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash
# Master Launch Script — runs entire pipeline when GPU frees
# Usage: nohup bash Scripts/launch_all.sh > logs/launch_all.log 2>&1 &

source ~/miniconda3/etc/profile.d/conda.sh
conda activate dairygoat
cd ~/goat

echo "=========================================="
echo " FULL PIPELINE LAUNCH"
echo " Start: $(date)"
echo "=========================================="

# Step 0: Wait for GPU
echo "[Step 0] Waiting for GPU > 18GB free..."
while true; do
    FREE=$(nvidia-smi --query-gpu=memory.free --format=csv,noheader | head -1 | awk '{print $1}')
    if [ "$FREE" -gt 18000 ]; then
        echo "  GPU free: ${FREE}MiB — STARTING!"
        break
    fi
    echo "  $(date +%H:%M:%S) GPU free: ${FREE}MiB — waiting..."
    sleep 300
done

# Step 1: CPU Analysis
echo "[Step 1] Running CPU analysis..."
python3 -u Scripts/analyze_cameras.py 2>&1 | tail -20
python3 -u Scripts/analyze_annotations.py 2>&1 | tail -20
echo "  Analysis done."

# Step 2: Cross-Validation
echo "[Step 2] Running cross-validation..."
python3 -u Scripts/eval_crossval.py 2>&1 | tee logs/eval_crossval.log
echo "  Cross-val done."

# Step 3: Checkpoint Ensemble
echo "[Step 3] Running checkpoint ensemble..."
python3 -u Scripts/checkpoint_ensemble.py 2>&1 | tee logs/checkpoint_ensemble.log
echo "  Checkpoint ensemble done."

# Step 4: Adaptive WBF Master Pipeline
echo "[Step 4] Running adaptive WBF pipeline..."
python3 -u Scripts/pipeline_master.py 2>&1 | tee logs/pipeline_master.log
echo "  Adaptive WBF done."

# Step 5: Final Summary
echo "[Step 5] Generating final summary..."
python3 -u -c "
import json, os
results = {}
for name in ['crossval', 'checkpoint_ensemble', 'pipeline_master', 'kitchen_sink_v2']:
    path = f'logs/{name}_results.json'
    if os.path.exists(path):
        with open(path) as f: results[name] = json.load(f)
with open('logs/ALL_RESULTS.json', 'w') as f:
    json.dump(results, f, indent=2)
print('All results saved to logs/ALL_RESULTS.json')
for name, data in sorted(results.items()):
    print(f'  {name}: {json.dumps(data)[:200]}')
"

echo ""
echo "=========================================="
echo " FULL PIPELINE COMPLETE"
echo " End: $(date)"
echo "=========================================="