#### 0. 准备工作 ####
# 清理旧文件
rm -r ./Label/* ./ORI/* 
rm -r ./result_stack_*透明度 ./Data
rm -r ./ORI_GT_label_fold ./ORI_pro_label_fold ./__pycache__
conda activate SMP

# A. 图像移动
cp 磁辅助分割图像-有效图/* Label/ # TODO TODO 将标注后图片放入Label中 # 保证Label中图片与ORI中图片一一对应，且命名相同 
cp 磁辅助分割-原图/* ORI/ # TODO TODO 将原始图片放入ORI中
# B.1 修改类别颜色
vim Tool_Classes_And_Palette.py # 修改 Annotate_CLASSES、Annotate_PALETTE 以匹配标注时的类别与颜色
# B.2 将bmp、jpg图片转为png
python Tool_convert_bmp_jpg_to_png.py ./Label --delete-source 
python Tool_convert_bmp_jpg_to_png.py ./ORI --delete-source
# B.3 将图片转为最大边限制为1080
python Tool_resize_pics.py ./Label # -s 1080
python Tool_resize_pics.py ./ORI # -s 1080
# C. 检测图片是否匹配
python 0_1_check_picture_pair.py # -i "./ORI" -l "./Label" -p "" -s ""
# python 0_1_check_picture_pair.py # -i "../../DataSet_Public/6_CWK_2_cfz/images/train" -l "../../DataSet_Public/6_CWK_2_cfz/labels_GT/train" -p "" -s ""
# D. 生成堆叠图片(可视化标签效果)
bash 0_2_TOOL_stack_pics.sh -i "./ORI" -l ./Label -r ./result_stack_0.3透明度 -a 0.3 -p "" -s "_label"
# E. ※下载图片，查看匹配的是否有问题※

#### 1. 批量化生成训练、测试集图片 ####
# A. 将图片转为GT图片
python 1_deal_labels.py -src_fold ./Label 
# B. 新建数据最终存储文件夹
rm -r ./Data
mkdir -p Data/images/train Data/images/val
cp ORI/* Data/images/train/
cp ORI/* Data/images/val/ # 或根据需要分配训练集、验证集
mkdir -p Data/labels/train Data/labels/val
mkdir -p Data/labels_GT/train Data/labels_GT/val
# C. 生成labels 、 labels_GT图片到 Data/labels_GT/train 中
# Way 1：※推荐※（将类别压缩）
python 2_Check_and_Gen_Txt_Label_sort_label.py 
# Way 2：（使用原始类别）
# python 2_Check_and_Gen_Txt_Label_ori_label.py # Way 2
# cp ORI_GT_label_fold/* Data/labels_GT/train/ # Way 2
# cp ORI_GT_label_fold/* Data/labels_GT/val/ # Way 2

#### 2. 纳入到Yolo训练体系 ####
# A. 移动数据
cp -r ./Data ../../DataSet_Public/8_Haze_Baidu_Plus # TODO TODO 将 Data 文件夹改名后 放入 ../../DataSet_Public 下
# B. 设置输出颜色参考
将 程序输出的信息存入 ../../Seg_All_In_One_YoloModel/dataset.yaml 的 color中作为最终输出颜色的参考
# C. 根据 Seg_All_In_One_YoloModel 中的使用手册新增数据集、进行配置、训练
修改 dataset.yaml 中 训练数据集、修改 yolo_config.py 中 EPOCHS、PATIENCE

############################## 进行训练推理（整体流程） ############################################
# 1. 批量化训练
conda activate SMP
cd ~/Desktop/Seg/Seg_All_In_One_YoloModel
bash yolo_train.sh
# 2. 复制最优模型到预测文件夹
bash ./Tool_Yolo_Copy_Best_Model.sh --pt_name "best.pt" && bash ./Tool_Yolo_Copy_Best_Model.sh --pt_name "epoch100.pt" && bash ./Tool_Yolo_Copy_Best_Model.sh --pt_name "epoch50.pt" && bash ./Tool_Yolo_Copy_Best_Model.sh --pt_name "epoch150.pt"
# 3. 批量化预测+热度图可视化
bash yolo_predict.sh --conf 0.2 --pt_name "epoch100.pt" && bash yolo_predict.sh --conf 0.2 && bash yolo_predict.sh --conf 0.2 --pt_name "epoch50.pt"  && bash yolo_predict.sh --conf 0.2 --pt_name "epoch150.pt"
bash ./yolo_predict.sh --pt_name "best.pt" --heatmap_method "All" # && bash ./yolo_predict.sh --pt_name "epoch100.pt"  --heatmap_method "All"
# 4. 横向对比结果
python yolo_predict_V2_compare_all.py 
# 5. 打包预测结果(不包含*.pt模型文件)
cd /home/wkmgc/Desktop/Seg/BestMode_Predict_Results_DataSet_Public/
zip -r /home/wkmgc/Desktop/8_Haze_Baidu_Plus-Yolo.zip 8_Haze_Baidu_Plus*-Yolo -x "*.pt" # TODO TODO
# 6. 打包训练结果(只有.png、.jpg、.csv文件)
cd /home/wkmgc/Desktop/Seg/Hardisk/
zip -r /home/wkmgc/Desktop/8_Haze_Baidu_Plus-Yolo_train.zip 8_Haze_Baidu_Plus-Yolo -i \*.png \*.jpg \*.csv # TODO TODO