############## A. 创建conda环境 ##############
sudo apt install git
1. 
conda create -n SMP python==3.9
conda activate SMP
2. 
# pytorch安装网址：https://pytorch.org/get-started/locally/
e.g. pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu129
3. 
proxychains pip install git+https://github.com/qubvel/segmentation_models.pytorch
pip show segmentation-models-pytorch
4. 
python3 -m pip install -r requirements.txt

############## B. Train 训练程序 ##############
# A. 第一次训练开一个梯子【需要下载内容】
export https_proxy=http://127.0.0.1:1080 http_proxy=http://127.0.0.1:1080
CUDA_VISIBLE_DEVICES=4,5,6,7 python train.py -a Unet
{Unet,UnetPlusPlus,FPN,PSPNet,DeepLabV3,DeepLabV3Plus,Linknet,MAnet,PAN,UPerNet,Segformer,DPT}

# B. 运行单个训练程序
1. 在config.py 中修改 训练数据集；CUDA_VISIBLE_DEVICES修改使用显卡；-a 修改算法；
2. CUDA_VISIBLE_DEVICES=0 python ./train.py -a Unet

# C. 批量运行训练程序
1. train.sh 修改想让它使用的显卡、算法；
2. bash train.sh
3. 会生成 ./logs_parallel_DATE 的终端记录文件；结果先存储在 ../DataSet_Public_outputs/DATASET_outputs-SegModel 后自动移动到 ../Hardisk/DATASET_outputs-SegModel 中

############## C. Predict 推理程序 ##############
# A1. 预先步骤：将模型同步到 Nas_BackUp_Seg 或 ./Hardisk 文件夹中【cd .. && bash ./Back_Up.sh】
# A2. 如果需要处理自定义数据集，请保证数据仍然是 DATASET/images/[val/test] 格式
python ../Seg_Predict_Own_Video_V2/1_Save_Frame_V2.py --video ./Video_Name.mp4 --resize "1920x1080" --output_dir "../DataSet_Public/5_Predict_Video" --interval 0.5
# B1. 将最优模型文件从 ./Nas_BackUp_Seg 移动到 ./BestMode_Predict_Results_DataSet_Public 指定文件夹中
bash ./Tool_Copy_Best_Model.sh # 修改里面的路径
# B2. 如果需要处理自定义数据集，请将模型文件夹手动复制为 ./BestMode_Predict_Results_DataSet_Public/DATASET-Yolo 中
可以先对原有 ./BestMode_Predict_Results_DataSet_Public/ORI_DATASET_outputs-SegModel 改名
运行 bash ./Tool_Yolo_Copy_Best_Model.sh 
在将生成的 ./BestMode_Predict_Results_DataSet_Public/ORI_DATASET_outputs-SegModel 改为 ./BestMode_Predict_Results_DataSet_Public/DATASET_outputs-SegModel
# C. 运行单个推理程序
1. 在config.py 中修改 预测数据集 及 val/test 、 模型保存路径PREDICT_ALL_BEST_MODELS_DIR/PREDICT_BEST_MODEL_DIR；CUDA_VISIBLE_DEVICES修改使用显卡；-a 修改算法；
2. CUDA_VISIBLE_DEVICES=0 python 1_predict.py -a Unet/UnetPlusPlus/FPN/PSPNet/DeepLabV3/DeepLabV3Plus/Linknet/MAnet/PAN/UPerNet/Segformer/DPT
# D. 批量运行推理程序
1. predict.sh 修改想让它使用的显卡、算法；
2. bash 1_predict.sh
3. 会生成 ./predict_logs_parallel_DATE 的终端记录文件；结果存储在 ../BestMode_Predict_Results_DataSet_Public/DATASET_outputs-SegModel 中
# E. 预测模型 参数量、FLOPs、FPS
CUDA_VISIBLE_DEVICES=5 python 2_predict_params_and_FLOPs_V2.py # --shape 512 512

############## D. Predict_raw_img_Check 检测推理输出图片是否齐全 ##############
# 检测 config.TEST_IMAGE_DIR 和 config.PREDICT_BEST_MODEL_DIR/****/predicted_raw_masks 中图片是否匹配
1. 在config.py 中修改 config.DATA_DIR（即config.TEST_IMAGE_DIR） 及 config.PREDICT_BEST_MODEL_DIR；CUDA_VISIBLE_DEVICES修改使用显卡；
2. python 1_predict_raw_masks_check.py

############## E. 其他辅助脚本 ##############
1. 解决--resume 不能运行的问题
您可以直接修改mmengine源文件，使其torch.load可以加载完整的检查点
vim /home/wkmgc/miniconda3/envs/SMP/lib/python3.9/site-packages/mmengine/runner/checkpoint.py
转到第 347 行。您将看到以下代码：
checkpoint = torch.load(filename, map_location=map_location)
更改该行以添加weights_only=False参数
checkpoint = torch.load(filename, map_location=map_location, weights_only=False)