准备数据:
-
克隆代码仓库:
git clone https://github.com/CASIA-IVA-Lab/AnomalyGPT.git
-
安装所需的包:
pip install -r requirements.txt
-
下载ImageBind预训练模型:
- 从此链接下载ImageBind预训练模型
- 将下载的文件(imagebind_huge.pth)放在[./pretrained_ckpt/imagebind_ckpt/]目录中。
-
准备Vicuna检查点:
- 请按照此处提供的说明准备预训练的Vicuna模型。
-
准备PandaGPT权重:
- 您可以在下表中获取使用不同策略训练的PandaGPT权重。在我们的实验和在线演示中,由于计算资源的限制,我们使用了Vicuna-7B和
openllmplayground/pandagpt_7b_max_len_1024
。如果切换到Vicuna-13B,预计会有更好的结果。 - 请将下载的7B/13B delta权重文件(pytorch_model.pt)放在./pretrained_ckpt/pandagpt_ckpt/7b/或./pretrained_ckpt/pandagpt_ckpt/13b/目录中。
- 然后,您可以从下表下载AnomalyGPT权重,并将其放在./code/ckpt/目录中。
- 您可以在下表中获取使用不同策略训练的PandaGPT权重。在我们的实验和在线演示中,由于计算资源的限制,我们使用了Vicuna-7B和
3.2 Training Configurations:
有关如何配置训练设置的详细信息,请参阅./code/config.py中的注释。主要配置包括数据集路径、训练参数、模型设置等。
3.3 Training AnomalyGPT:
要训练您自己的AnomalyGPT,请运行以下命令:
cd ./code/
python train.py
训练过程包括数据准备、模型训练和评估等步骤。训练完成后,模型权重将保存在[./code/ckpt/]目录中。
你可以根据需要调整训练配置,并参考[./code/config.py]中的注释进行设置。如有任何疑问,欢迎随时与我们联系。 你可以从[此链接]下载MVTec-AD数据集, 并从[此链接]下载VisA。你也可以从[此处]下载PandaGPT的预训练数据。下载后,请将数据放置在[./data]目录下。
[./data]目录应该如下所示:
data
|---pandagpt4_visual_instruction_data.json
|---images
|-----|-- ...
|---mvtec_anomaly_detection
|-----|-- bottle
|-----|-----|----- ground_truth
|-----|-----|----- test
|-----|-----|----- train
|-----|-- capsule
|-----|-- ...
|----VisA
|-----|-- split_csv
|-----|-----|--- 1cls.csv
|-----|-----|--- ...
|-----|-- candle
|-----|-----|--- Data
|-----|-----|-----|----- Images
|-----|-----|-----|--------|------ Anomaly
|-----|-----|-----|--------|------ Normal
|-----|-----|-----|----- Masks
|-----|-----|-----|--------|------ Anomaly
|-----|-----|--- image_anno.csv
|-----|-- capsules
|-----|-----|----- ...
3.2 训练配置
下表显示了我们实验中使用的训练超参数。这些超参数是根据我们的计算资源(即2个RTX3090 GPU)进行选择的。
基础语言模型 | 纪元数量 | 批量大小 | 学习率 | 最大长度 |
---|---|---|---|---|
Vicuna-7B | 50 | 16 | 1e-3 | 1024 |
3.3 训练AnomalyGPT
要在MVTec-AD数据集上训练AnomalyGPT,请运行以下命令:
cd ./code
bash ./scripts/train_mvtec.sh
训练脚本的关键参数如下:
--data_path
: 用于pandagpt4_visual_instruction_data.json
文件的数据路径。--image_root_path
: PandaGPT训练图像的根路径。--imagebind_ckpt_path
: ImageBind检查点的路径。--vicuna_ckpt_path
: 保存预训练的Vicuna检查点的目录。--max_tgt_len
: 训练实例的最大序列长度。--save_path
: 保存训练后的delta权重的目录。这个目录将自动创建。--log_path
: 保存日志的目录。这个目录将自动创建。
请注意,纪元数量可以在./code/config/openllama_peft.yaml
文件的epochs
参数中设置,学习率可以在./code/dsconfig/openllama_peft_stage_1.json
文件中设置。