改进超参数 #25

Merged
hnu202326010204 merged 3 commits from hufan_branch into develop 1 month ago

File diff suppressed because it is too large Load Diff

@ -0,0 +1,64 @@
#需要环境conda activate simac
export HF_HUB_OFFLINE=1
export MODEL_PATH="../../static/hf_models/diffusers/models--stabilityai--stable-diffusion-2-1-base/snapshots/5ede9e4bf3e3fd1cb0ef2f7a3fff13ee514fdf06"
export TASKNAME="task001"
# ------------------------- Train ASPL on set CLEAN_ADV_DIR -------------------------
export CLEAN_TRAIN_DIR="../../static/originals/${TASKNAME}"
export CLEAN_ADV_DIR="../../static/originals/${TASKNAME}"
export OUTPUT_DIR="../../static/perturbed/${TASKNAME}"
export CLASS_DIR="../../static/class/${TASKNAME}"
# ------------------------- 自动创建依赖路径 -------------------------
echo "Creating required directories..."
mkdir -p "$CLEAN_TRAIN_DIR"
mkdir -p "$CLEAN_ADV_DIR"
mkdir -p "$OUTPUT_DIR"
mkdir -p "$CLASS_DIR"
echo "Directories created successfully."
# ------------------------- 训练前清空 OUTPUT_DIR -------------------------
echo "Clearing output directory: $OUTPUT_DIR"
# 确保目录存在,避免清理命令失败
# 注意:虽然前面已经创建,但这里保留是为了代码逻辑清晰,也可以删除
mkdir -p "$OUTPUT_DIR"
# 查找并删除目录下的所有文件和子目录(但不删除 . 或 ..
find "$OUTPUT_DIR" -mindepth 1 -delete
find "$CLASS_DIR" -mindepth 1 -delete
accelerate launch ../algorithms/simac.py \
--pretrained_model_name_or_path=$MODEL_PATH \
--enable_xformers_memory_efficient_attention \
--instance_data_dir_for_train=$CLEAN_TRAIN_DIR \
--instance_data_dir_for_adversarial=$CLEAN_ADV_DIR \
--instance_prompt="a photo of <sks> person" \
--class_data_dir=$CLASS_DIR \
--num_class_images=100 \
--class_prompt="a photo of person" \
--output_dir=$OUTPUT_DIR \
--center_crop \
--with_prior_preservation \
--prior_loss_weight=1.0 \
--resolution=384 \
--train_batch_size=1 \
--max_train_steps=100 \
--max_f_train_steps=3 \
--max_adv_train_steps=6 \
--checkpointing_iterations=20 \
--learning_rate=5e-7 \
--pgd_alpha=0.005 \
--pgd_eps=10 \
--seed=0
# ------------------------- 训练后清空 CLASS_DIR -------------------------
# 注意:这会在 accelerate launch 成功结束后执行
echo "Clearing class directory: $CLASS_DIR"
# 确保目录存在,避免清理命令失败
mkdir -p "$CLASS_DIR"
# 查找并删除目录下的所有文件和子目录(但不删除 . 或 ..
find "$CLASS_DIR" -mindepth 1 -delete
echo "Script finished."

@ -20,8 +20,12 @@ echo "Directories created successfully."
# ------------------------- 训练前清空 OUTPUT_DIR -------------------------
echo "Clearing output directory: $OUTPUT_DIR"
# 确保目录存在,避免清理命令失败
# 注意:虽然前面已经创建,但这里保留是为了代码逻辑清晰,也可以删除
mkdir -p "$OUTPUT_DIR"
# 查找并删除目录下的所有文件和子目录(但不删除 . 或 ..
find "$OUTPUT_DIR" -mindepth 1 -delete
find "$CLASS_DIR" -mindepth 1 -delete
@ -30,9 +34,9 @@ accelerate launch ../algorithms/simac.py \
--enable_xformers_memory_efficient_attention \
--instance_data_dir_for_train=$CLEAN_TRAIN_DIR \
--instance_data_dir_for_adversarial=$CLEAN_ADV_DIR \
--instance_prompt="a photo of sks person" \
--instance_prompt="a photo of <sks> person" \
--class_data_dir=$CLASS_DIR \
--num_class_images=200 \
--num_class_images=100 \
--class_prompt="a photo of person" \
--output_dir=$OUTPUT_DIR \
--center_crop \
@ -40,13 +44,13 @@ accelerate launch ../algorithms/simac.py \
--prior_loss_weight=1.0 \
--resolution=384 \
--train_batch_size=1 \
--max_train_steps=50 \
--max_train_steps=60 \
--max_f_train_steps=3 \
--max_adv_train_steps=6 \
--checkpointing_iterations=10 \
--learning_rate=5e-7 \
--learning_rate=2e-6 \
--pgd_alpha=0.005 \
--pgd_eps=8 \
--pgd_eps=10 \
--seed=0
# ------------------------- 训练后清空 CLASS_DIR -------------------------

@ -1,34 +1,23 @@
#需要环境conda activate pid
### Trianing model
# 需要环境conda activate pid
export HF_HUB_OFFLINE=1
# 强制使用本地模型缓存,避免联网下载模型
### SD v2.1
# export HF_HOME="/root/autodl-tmp/huggingface_cache"
# export MODEL_PATH="stabilityai/stable-diffusion-2-1"
### SD v1.5
# export HF_HOME="/root/autodl-tmp/huggingface_cache"
# export MODEL_PATH="runwayml/stable-diffusion-v1-5"
# SD v1.5 本地路径
export MODEL_PATH="../../static/hf_models/hub/models--runwayml--stable-diffusion-v1-5/snapshots/451f4fe16113bff5a5d2269ed5ad43b0592e9a14"
export TASKNAME="task001"
export TYPE="clean" #clean or perturbed
export TYPE="perturbed" # clean or perturbed
if [ "$TYPE" == "clean" ]; then
export INSTANCE_DIR="../../static/originals/${TASKNAME}"
else
export INSTANCE_DIR="../../static/perturbed/${TASKNAME}"
fi
export DREAMBOOTH_OUTPUT_DIR="../../static/hf_models/fine_tuned/${TYPE}/${TASKNAME}"
export OUTPUT_INFER_DIR="../../static/model_outputs/${TYPE}/${TASKNAME}"
export CLASS_DIR="../../static/class/${TASKNAME}"
export COORD_DIR="../../static/eva_res/position/${TASKNAME}"
export DREAMBOOTH_OUTPUT_DIR="../../static/hf_models/fine_tuned/${TYPE}/${TASKNAME}"
export OUTPUT_INFER_DIR="../../static/model_outputs/${TYPE}/${TASKNAME}"
export CLASS_DIR="../../static/class/${TASKNAME}"
export COORD_DIR="../../static/eva_res/position/${TASKNAME}"
# ------------------------- 自动创建依赖路径 -------------------------
echo "Creating required directories..."
mkdir -p "$INSTANCE_DIR"
mkdir -p "$DREAMBOOTH_OUTPUT_DIR"
@ -36,52 +25,43 @@ mkdir -p "$OUTPUT_INFER_DIR"
mkdir -p "$CLASS_DIR"
mkdir -p "$COORD_DIR"
# ------------------------- 自动清除旧文件 -------------------------
echo "Clearing output directory: $DREAMBOOTH_OUTPUT_DIR and $OUTPUT_INFER_DIR and $COORD_DIR"
# 查找并删除目录下的所有文件和子目录(但不删除 . 或 ..
find "$DREAMBOOTH_OUTPUT_DIR" -mindepth 1 -delete
find "$OUTPUT_INFER_DIR" -mindepth 1 -delete
find "$COORD_DIR" -mindepth 1 -delete
# ------------------------- Fine-tune DreamBooth on images -------------------------
CUDA_VISIBLE_DEVICES=0 accelerate launch ../finetune_infras/train_db_gen_trace.py \
--pretrained_model_name_or_path=$MODEL_PATH \
--pretrained_model_name_or_path=$MODEL_PATH \
--instance_data_dir=$INSTANCE_DIR \
--class_data_dir=$CLASS_DIR \
--output_dir=$DREAMBOOTH_OUTPUT_DIR \
--validation_image_output_dir=$OUTPUT_INFER_DIR \
--with_prior_preservation \
--prior_loss_weight=1.0 \
--instance_prompt="a photo of sks person" \
--class_prompt="a photo of person" \
--train_text_encoder \
--prior_loss_weight=0.4 \
--instance_prompt="a selfie photo of <sks> person" \
--class_prompt="a selfie photo of person" \
--resolution=512 \
--train_batch_size=1 \
--gradient_accumulation_steps=1 \
--learning_rate=2e-6 \
--lr_scheduler="constant" \
--lr_warmup_steps=0 \
--num_class_images=200 \
--max_train_steps=1000 \
--checkpointing_steps=500 \
--center_crop \
--learning_rate=5e-7 \
--lr_scheduler="constant_with_warmup" \
--lr_warmup_steps=50 \
--num_class_images=100 \
--max_train_steps=800 \
--checkpointing_steps=400 \
--mixed_precision=bf16 \
--prior_generation_precision=bf16 \
--sample_batch_size=5 \
--validation_prompt="a photo of sks person" \
--num_validation_images 10 \
--validation_steps 500 \
--sample_batch_size=5 \
--validation_prompt="a selfie photo of <sks> person, head-and-shoulders, face looking at the camera, Eiffel Tower clearly visible behind, outdoor daytime, realistic" \
--num_validation_images=5 \
--validation_num_inference_steps=120 \
--validation_guidance_scale=7.0 \
--validation_image_output_dir=$OUTPUT_INFER_DIR \
--coords_save_path=$COORD_DIR \
--coords_log_interval=10
# ------------------------- 训练后清空 CLASS_DIR -------------------------
# 注意:这会在 accelerate launch 成功结束后执行
echo "Clearing class directory: $CLASS_DIR"
# 确保目录存在,避免清理命令失败
mkdir -p "$CLASS_DIR"
# 查找并删除目录下的所有文件和子目录(但不删除 . 或 ..
find "$CLASS_DIR" -mindepth 1 -delete
echo "Script finished."
Loading…
Cancel
Save