59 lines
2.0 KiB
Bash
Executable File
59 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
TASK_ENV="${SEG_TASK_CONDA_ENV:-seg_smp}"
|
|
MMSEG_ENV="${SEG_MMSEG_CONDA_ENV:-seg_mmcv}"
|
|
|
|
env_exists() {
|
|
conda env list | awk '{print $1}' | grep -Fxq "$1"
|
|
}
|
|
|
|
create_task_env() {
|
|
if ! env_exists "${TASK_ENV}"; then
|
|
conda create -n "${TASK_ENV}" python=3.11 -y
|
|
fi
|
|
conda run -n "${TASK_ENV}" python -m pip install -U pip
|
|
conda run -n "${TASK_ENV}" python -m pip install -r "${ROOT_DIR}/backend/requirements.txt"
|
|
conda run -n "${TASK_ENV}" python -m pip install \
|
|
torch==2.6.0 torchvision==0.21.0 \
|
|
'numpy<2' 'opencv-python<4.12' albumentations segmentation-models-pytorch ultralytics \
|
|
mmengine mmsegmentation==1.2.2 mmcv-lite \
|
|
matplotlib pandas scikit-learn scipy seaborn tqdm tensorboard
|
|
}
|
|
|
|
create_mmseg_env() {
|
|
if ! env_exists "${MMSEG_ENV}"; then
|
|
conda create -n "${MMSEG_ENV}" python=3.10 -y
|
|
fi
|
|
conda run -n "${MMSEG_ENV}" python -m pip install -U pip
|
|
conda run -n "${MMSEG_ENV}" python -m pip install \
|
|
torch==2.1.2 torchvision==0.16.2 \
|
|
--index-url https://download.pytorch.org/whl/cu121
|
|
conda run -n "${MMSEG_ENV}" python -m pip install \
|
|
mmengine==0.10.7 mmsegmentation==1.2.2 'mmcv==2.1.0' \
|
|
-f https://download.openmmlab.com/mmcv/dist/cu121/torch2.1/index.html
|
|
conda run -n "${MMSEG_ENV}" python -m pip install \
|
|
'numpy<2' 'opencv-python<4.12' ftfy regex matplotlib pandas scikit-learn scipy seaborn tqdm tensorboard
|
|
}
|
|
|
|
case "${1:-all}" in
|
|
all)
|
|
create_task_env
|
|
create_mmseg_env
|
|
PYTHONPATH="${ROOT_DIR}/backend" conda run -n "${TASK_ENV}" python "${ROOT_DIR}/scripts/verify_runtime_envs.py" --refresh
|
|
;;
|
|
task)
|
|
create_task_env
|
|
echo "Created or repaired ${TASK_ENV}. Run '$0 all' for full runtime verification."
|
|
;;
|
|
mmseg)
|
|
create_mmseg_env
|
|
echo "Created or repaired ${MMSEG_ENV}. Run '$0 all' for full runtime verification."
|
|
;;
|
|
*)
|
|
echo "usage: $0 [all|task|mmseg]" >&2
|
|
exit 2
|
|
;;
|
|
esac
|