OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  MiniSearch — 不合适,改为 AnomalyGPT:面向工业异常检测的多模态模型

MiniSearch — 不合适,改为 AnomalyGPT:面向工业异常检测的多模态模型

 
  cipherx ·  2026-07-07 11:00:19 · 10 次点击  · 0 条评论  

AnomalyGPT_logo

AnomalyGPT: 利用大型视觉语言模型检测工业异常

License

🌐 项目页面 • 🤗 在线演示 • 📃 论文 • 🤖 模型 • 📹 视频

Zhaopeng Gu, Bingke Zhu, Guibo Zhu, Yingying Chen, Ming Tang, Jinqiao Wang


目录


1. 介绍 [返回目录]

AnomalyGPT_logo

AnomalyGPT 是首个基于大型视觉语言模型(LVLM)的工业异常检测(IAD)方法,无需手动设定阈值即可检测工业图像中的异常。现有的 IAD 方法只能提供异常分数,需要手动设定阈值,而现有的 LVLM 无法检测图像中的异常。AnomalyGPT 不仅能指示异常的存在和位置,还能提供关于图像的描述信息。

AnomalyGPT

我们利用预训练的图像编码器和大型语言模型(LLM),通过模拟异常数据将 IAD 图像与其对应的文本描述对齐。我们采用轻量级的、基于视觉-文本特征匹配的图像解码器来获取定位结果,并设计了一个提示学习器,为 LLM 提供细粒度的语义信息,并使用提示嵌入对 LVLM 进行微调。我们的方法还能在仅提供少量正常样本的情况下,检测未见过的物品的异常。


2. 运行 AnomalyGPT 演示 [返回目录]

2.1 环境安装

克隆本仓库到本地:

git clone https://github.com/CASIA-IVA-Lab/AnomalyGPT.git

安装所需的依赖包:

pip install -r requirements.txt

2.2 准备 ImageBind 检查点

你可以通过此链接下载预训练的 ImageBind 模型。下载完成后,将文件 (imagebind_huge.pth) 放入 ./pretrained_ckpt/imagebind_ckpt/ 目录下。

2.3 准备 Vicuna 检查点

要准备预训练的 Vicuna 模型,请按照此处的说明进行操作。

2.4 准备 AnomalyGPT 的 Delta 权重

我们使用 PandaGPT 的预训练参数来初始化我们的模型。你可以从下方表格中获取使用不同策略训练的 PandaGPT 权重。由于计算资源限制,我们的实验和在线演示均使用 Vicuna-7B 和 openllmplayground/pandagpt_7b_max_len_1024。切换到 Vicuna-13B 预计可获得更好的结果。

基础语言模型 最大序列长度 Huggingface Delta 权重地址
Vicuna-7B (version 0) 512 openllmplayground/pandagpt_7b_max_len_512
Vicuna-7B (version 0) 1024 openllmplayground/pandagpt_7b_max_len_1024
Vicuna-13B (version 0) 256 openllmplayground/pandagpt_13b_max_len_256
Vicuna-13B (version 0) 400 openllmplayground/pandagpt_13b_max_len_400

请将下载的 7B/13B Delta 权重文件 (pytorch_model.pt) 放入 ./pretrained_ckpt/pandagpt_ckpt/7b/./pretrained_ckpt/pandagpt_ckpt/13b/ 目录。

之后,请从下方表格下载 AnomalyGPT 权重。

设置与数据集 权重地址
MVTec-AD 上的无监督训练 AnomalyGPT/train_mvtec
VisA 上的无监督训练 AnomalyGPT/train_visa
MVTec-AD, VisA, MVTec-LOCO-AD 和 CrackForest 上的有监督训练 AnomalyGPT/train_supervised

下载后,将 AnomalyGPT 权重放入 ./code/ckpt/ 目录。

在我们的在线演示中,我们使用有监督训练的模型作为默认模型,以获得更好的用户体验。你也可以在本地尝试其他权重。

2.5. 部署演示

完成以上步骤后,你可以在本地运行演示:

cd ./code/
python web_demo.py

3. 训练自己的 AnomalyGPT [返回目录]

前置条件: 在训练模型之前,请确保已正确安装环境,并已下载 ImageBind、Vicuna 和 PandaGPT 的检查点。

3.1 数据准备

你可以从此链接下载 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: JSON 文件 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 文件中设置。


4. 示例

一张有裂缝的混凝土图像。


一个有裂缝的胶囊。


一张切开的榛子图像。


一个损坏的瓶子。


一张正常地毯的照片。


一张有缺陷的木头的照片。


一块正常的织物。


许可协议

AnomalyGPT 采用 CC BY-NC-SA 4.0 许可协议


引用

如果 AnomalyGPT 对你的研究或应用有帮助,请使用以下 BibTeX 进行引用:

@article{gu2023anomalyagpt,
  title={AnomalyGPT: Detecting Industrial Anomalies using Large Vision-Language Models},
  author={Gu, Zhaopeng and Zhu, Bingke and Zhu, Guibo and Chen, Yingying and Tang, Ming and Wang, Jinqiao},
  journal={arXiv preprint arXiv:2308.15366},
  year={2023}
}

致谢

我们借鉴了 PandaGPT 的部分代码和预训练权重。感谢他们的出色工作!

Star History Chart

10 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 20 ms
Developed with Cursor