#!/usr/bin/env bash # Run on the server after upload: # bash run_trufor_remote.sh [gpu-id] set -Eeuo pipefail PROJECT_DIR="" for candidate in \ /data/users/summer2026/trufor/TruFor_train_test \ /data/users/summer2026/TruFor/TruFor_train_test; do if [[ -f "$candidate/train.py" ]]; then PROJECT_DIR="$candidate" break fi done GPU_ID="${1:-0}" ENV_NAME=trufor_cuda102 test -n "$PROJECT_DIR" || { echo "TruFor project directory was not found under /data/users/summer2026." >&2; exit 1; } # Server driver: NVIDIA 440.xx / CUDA 10.2. The repository YAML instead pins CUDA 11.3. source /opt/miniconda3/etc/profile.d/conda.sh if ! conda env list | awk '{print $1}' | grep -qx "$ENV_NAME"; then conda create -y -n "$ENV_NAME" python=3.7 pytorch=1.11.0 torchvision=0.12.0 torchaudio=0.11.0 cudatoolkit=10.2 -c pytorch -c conda-forge fi # jpegio is intentionally omitted: TruFor does not import it, and it needs # unavailable system headers (jpeglib.h) to build from source on this server. # Keep these outside the environment-creation block so a failed first setup # can be repaired simply by re-running this launcher. conda run -n "$ENV_NAME" python -m pip install numpy==1.21.5 pillow==9.0.1 tqdm==4.64.0 scipy==1.7.3 scikit-image==0.16.2 pandas==1.3.5 pyyaml==6.0 albumentations==1.2.1 yacs==0.1.8 tensorboardX==2.5.1 mmcls==0.23.1 mmsegmentation==0.25.0 timm==0.5.4 opencv-python==4.5.5.64 torch-dct==0.1.5 # Do not leave both OpenCV distributions installed: they each provide cv2. conda run -n "$ENV_NAME" python -m pip uninstall -y opencv-python-headless opencv-contrib-python conda run -n "$ENV_NAME" python -m pip install --force-reinstall --no-deps opencv-python==4.5.5.64 conda run -n "$ENV_NAME" python -m pip install mmcv-full==1.5.3 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.11.0/index.html cd "$PROJECT_DIR" exec conda run --no-capture-output -n "$ENV_NAME" python train.py -g "$GPU_ID" -exp trufor_ph2