|
|
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| set -e |
|
|
| echo "π Starting MIMO installation..." |
|
|
| |
| echo "π§ Installing system dependencies..." |
| if [[ "$OSTYPE" == "darwin"* ]]; then |
| |
| if ! command -v ffmpeg &> /dev/null; then |
| echo "π¦ Installing ffmpeg via Homebrew..." |
| if command -v brew &> /dev/null; then |
| brew install ffmpeg |
| else |
| echo "β οΈ Please install Homebrew first: https://brew.sh/" |
| echo " Then run: brew install ffmpeg" |
| echo " Or run: ./install_system_deps.sh" |
| fi |
| else |
| echo "β
ffmpeg already installed" |
| fi |
| elif [[ "$OSTYPE" == "linux-gnu"* ]]; then |
| |
| if ! command -v ffmpeg &> /dev/null; then |
| echo "π¦ Installing ffmpeg..." |
| if command -v apt-get &> /dev/null; then |
| sudo apt-get update && sudo apt-get install -y ffmpeg |
| elif command -v yum &> /dev/null; then |
| sudo yum install -y ffmpeg |
| else |
| echo "β οΈ Please install ffmpeg manually for your Linux distribution" |
| fi |
| else |
| echo "β
ffmpeg already installed" |
| fi |
| fi |
|
|
| |
| if [[ -n "$CONDA_DEFAULT_ENV" ]]; then |
| echo "π Conda environment detected: $CONDA_DEFAULT_ENV" |
| if [[ "$CONDA_DEFAULT_ENV" == "mimo" ]]; then |
| echo "β
Using MIMO conda environment" |
| ENVIRONMENT="local" |
| PYTHON_CMD="python" |
| PIP_CMD="pip" |
| else |
| echo "β οΈ Warning: Expected 'mimo' conda environment, but found '$CONDA_DEFAULT_ENV'" |
| ENVIRONMENT="local" |
| PYTHON_CMD="python" |
| PIP_CMD="pip" |
| fi |
| elif [[ -n "$SPACE_ID" ]] || [[ -n "$HF_HOME" ]]; then |
| echo "π¦ Detected HuggingFace Spaces environment" |
| ENVIRONMENT="hf" |
| PYTHON_CMD="python3" |
| PIP_CMD="pip3" |
| else |
| echo "π» Detected local development environment (non-conda)" |
| ENVIRONMENT="local" |
| PYTHON_CMD="python3" |
| PIP_CMD="pip3" |
| fi |
|
|
| |
| echo "π Checking Python version..." |
| $PYTHON_CMD --version |
|
|
| |
| echo "π§ Fixing typing-extensions version conflicts..." |
| $PIP_CMD install --upgrade "typing-extensions>=4.12.0" |
|
|
| |
| if [[ "$ENVIRONMENT" == "local" ]]; then |
| |
| |
| echo "β‘ PyTorch will be installed from requirements file for better compatibility" |
| else |
| |
| echo "βοΈ Installing PyTorch for HuggingFace Spaces..." |
| $PIP_CMD install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu |
| fi |
|
|
| |
| echo "π Installing core dependencies..." |
|
|
| |
| echo "π§Ή Cleaning existing installations to prevent conflicts..." |
| set +e |
| $PIP_CMD uninstall -y torch torchvision torchaudio tensorboard tensorflow accelerate diffusers transformers huggingface-hub 2>/dev/null || true |
| set -e |
|
|
| if [[ -f "requirements.txt" ]]; then |
| echo "Using main requirements (MIMO-compatible versions)..." |
| $PIP_CMD install -r requirements.txt |
| elif [[ -f "requirements_stable.txt" ]]; then |
| echo "Using stable requirements..." |
| $PIP_CMD install -r requirements_stable.txt |
| else |
| echo "No requirements file found!" |
| exit 1 |
| fi |
|
|
| |
| echo "π§ Ensuring MIMO-compatible HuggingFace ecosystem versions..." |
| $PIP_CMD install huggingface-hub==0.17.3 diffusers==0.23.1 transformers==4.35.2 accelerate==0.20.3 --force-reinstall |
|
|
| |
| |
|
|
| |
| if [[ "$ENVIRONMENT" == "local" ]]; then |
| |
| echo "οΏ½ Installing optional performance enhancements..." |
| set +e |
|
|
| |
| if [[ $(uname -m) == "arm64" && $(uname -s) == "Darwin" ]]; then |
| echo "β οΈ Skipping xformers on Apple Silicon (known compilation issues)" |
| echo " MIMO will work without xformers, just with slightly slower performance" |
| else |
| |
| $PIP_CMD install xformers==0.0.16 |
| if [ $? -eq 0 ]; then |
| echo "β
xformers installed successfully" |
| else |
| echo "β οΈ xformers installation failed, continuing without it" |
| echo " This is optional - MIMO will work fine without it" |
| fi |
| fi |
| set -e |
|
|
| |
| echo "π Installing TensorFlow (required for human segmentation)..." |
| set +e |
| $PIP_CMD install tensorflow==2.13.0 |
| if [ $? -eq 0 ]; then |
| echo "β
TensorFlow installed successfully" |
| else |
| echo "β οΈ TensorFlow installation failed - MIMO may not work fully without it" |
| fi |
| set -e |
| else |
| |
| echo "π Installing HuggingFace Spaces dependencies..." |
| $PIP_CMD install spaces --upgrade |
| |
| $PIP_CMD install gradio>=3.40.0 --upgrade |
| fi |
|
|
| |
| echo "β
Verifying installation..." |
| $PYTHON_CMD -c "import torch; print(f'PyTorch version: {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}')" |
| $PYTHON_CMD -c "import transformers; print(f'Transformers version: {transformers.__version__}')" |
| $PYTHON_CMD -c "import diffusers; print(f'Diffusers version: {diffusers.__version__}')" |
| $PYTHON_CMD -c "import gradio; print(f'Gradio version: {gradio.__version__}')" |
| $PYTHON_CMD -c "import accelerate; print(f'Accelerate version: {accelerate.__version__}')" |
|
|
| |
| set +e |
| $PYTHON_CMD -c " |
| try: |
| import xformers |
| print(f'xformers version: {xformers.__version__}') |
| except ImportError: |
| print('xformers: Not installed (optional)') |
| " |
| set -e |
|
|
| echo "π Installation completed successfully!" |
| echo "Environment: $ENVIRONMENT" |
|
|
| |
| echo "" |
| echo "π₯ Do you want to download the MIMO model from ModelScope? (y/n)" |
| read -r download_model |
| if [[ "$download_model" =~ ^[Yy]$ ]]; then |
| echo "π½ Downloading MIMO model..." |
| $PYTHON_CMD -c " |
| from modelscope import snapshot_download |
| import os |
| print('Downloading MIMO model from ModelScope...') |
| model_dir = snapshot_download(model_id='iic/MIMO', cache_dir='./pretrained_weights') |
| print(f'Model downloaded successfully to: {model_dir}') |
| " |
| if [ $? -eq 0 ]; then |
| echo "β
Model download completed!" |
| else |
| echo "β οΈ Model download failed. You can download it later using:" |
| echo " python -c \"from modelscope import snapshot_download; snapshot_download(model_id='iic/MIMO', cache_dir='./pretrained_weights')\"" |
| fi |
| else |
| echo "βοΈ Skipping model download. You can download it later using:" |
| echo " python -c \"from modelscope import snapshot_download; snapshot_download(model_id='iic/MIMO', cache_dir='./pretrained_weights')\"" |
| fi |
|
|