一、 代码结构

github链接:https://github.com/gathierry/FastFlow

# FastFlow 代码架构思维导图
## 1. 核心目标
- 无监督异常检测与定位(基于2D归一化流)
- 复现FastFlow论文,在MVTec-AD数据集验证性能

## 2. 整体架构
├── 数据处理模块
│   ├── dataset.py
│   │   ├── MVTecDataset类
│   │   │   ├── 加载MVTec-AD数据集(train/test)
│   │   │   ├── 图像预处理(Resize、Normalize、ToTensor)
│   │   │   ├── 异常标签/掩码生成(test集)
├── 模型核心模块
│   ├── fastflow.py
│   │   ├── 特征提取(Backbone)
│   │   │   ├── 支持ResNet18/WideResNet50/DeiT/CaiT
│   │   │   ├── 冻结Backbone参数(仅训练归一化流)
│   │   │   ├── LayerNorm归一化(ResNet系列)
│   │   ├── 2D归一化流(Normalizing Flows)
│   │   │   ├── subnet_conv_func:卷积子网络构造函数
│   │   │   ├── nf_fast_flow:构建AllInOneBlock流结构
│   │   │   ├── 多尺度特征流处理(对应Backbone不同输出层)
│   │   ├── 前向传播
│   │   │   ├── 训练模式:计算流的损失(MSE + 对数雅可比行列式)
│   │   │   ├── 测试模式:生成异常热力图(上采样+多尺度融合)
├── 训练/评估模块
│   ├── main.py
│   │   ├── 命令行参数解析(配置文件、数据集路径、类别等)
│   │   ├── 数据加载器构建(build_train/test_data_loader)
│   │   ├── 模型构建(build_model)
│   │   ├── 优化器构建(Adam)
│   │   ├── 训练逻辑(train_one_epoch)
│   │   │   ├── 单轮训练、损失回传、参数更新
│   │   │   ├── 损失监控(AverageMeter)
│   │   ├── 评估逻辑(eval_once)
│   │   │   ├── 计算AUROC指标(异常检测性能)
│   │   │   ├── 加载 checkpoint 验证
│   │   ├── 断点保存(checkpoint)
├── 配置模块
│   ├── configs/
│   │   ├── 不同Backbone配置文件(resnet18.yaml/deit.yaml等)
│   │   │   ├── input_size/flow_step/hidden_ratio等超参数
│   ├── constants.py
│   │   │   ├── 全局常量(数据集类别、Backbone列表、训练超参)
│   │   │   ├── 路径常量(CHECKPOINT_DIR)
├── 工具模块
│   ├── utils.py
│   │   ├── AverageMeter类:监控损失均值/当前值
├── 环境依赖
│   ├── requirements.txt:timm/FrEIA/torch等版本约束
├── 文档/许可
│   ├── README.md:安装/训练/性能说明
│   ├── LICENSE:Apache 2.0协议

二、数据集相关资源

1 MVTec数据集介绍

2 核心数据集(百度网盘)

2.1 MVTec AD 完整包,失效

  • 链接:https://pan.baidu.com/s/1Jh55ufXZZpusg7Vhn4ZYdQ
  • 提取码:tp22
  • 说明:包含15个类别(bottle/cable等),提供像素级标注,训练集仅包含正常样本

2.2 MVTec AD 分卷版本,感觉不是

  • 分卷1链接:https://pan.baidu.com/s/13H2EzxUqHwgqOlvCLg_mnQ
  • 提取码:TxJ1
  • 说明:数据集体积较大,采用分卷下载方式,下载后需解压合并

2.3 MVTec AD 备用链接,密码错误

  • 链接:https://pan.baidu.com/s/1bAKoSG7VHE98JdHJPGJvcw
  • 提取码:8g89
  • 说明:适配Anomalib/PatchCore等主流异常检测框架

https://www.modelscope.cn/datasets/OpenDataLab/MVTecAD/files

3 配套项目代码资源

3.1 Anomalib(PyTorch框架)

  • GitHub仓库:链接1(open-edge-platform/anomalib)
  • 功能特点
    • 集成PatchCore、SPADE等SOTA异常检测算法
    • 支持MVTec AD数据集全流程训练与推理
    • 提供ONNX模型部署脚本
  • 预训练权重
    • 百度网盘链接:https://pan.baidu.com/s/1ZzGwCSFLbr_sCiN1ZLGdzw
    • 提取码:1234

3.2 PatchCore 复现代码

  • 代码+模型资源:https://pan.baidu.com/s/1sARkEgcWt4tpatAqGLXWEA
  • 提取码:6eu6
  • 功能特点
    • 专为MVTec AD数据集优化适配
    • 包含完整训练脚本与推理demo
    • 支持CUDA加速推理
    • 可直接运行predict.py进行预测

3.3 FastFlow-Paddle(百度飞桨版本)

  • GitHub仓库:链接2
  • 预训练权重
    • 百度网盘链接:https://pan.baidu.com/s/1mSwGbeieyKQcj8JAWNQ92g
    • 提取码:yyds
  • 功能特点:基于无监督学习的异常检测方法,提供完整的PaddlePaddle推理部署方案

4 快速使用指南

4.1 数据准备步骤

  1. 下载MVTec AD数据集并完成解压
  2. 按照标准目录结构组织数据:train/test/ground_truth

4.2 环境安装

pip install anomalib torchvision opencv-python

4.3 模型训练示例(Anomalib)

python tools/train.py --config configs/patchcore/mvtec.yaml --data_path /path/to/mvtec

4.4 模型推理示例

python tools/inference.py --model_path weights/patchcore.pth --image_path test_img.png

5 补充说明

5.1 数据集结构规范

  • 每个类别包含三个关键文件夹:
    • train:仅包含正常样本
    • test:包含正常样本和异常样本
    • ground_truth:提供异常区域的像素级标注

5.2 框架选择建议

  • Anomalib:适合快速验证多种SOTA算法性能
  • PatchCore:适用于对召回率要求较高的工业场景
  • FastFlow:适合无监督学习场景的部署需求

5.3 资源更新说明

  • 数据集结构:每个类别含train(正常)、test(正常+异常)、ground_truth(异常标注)文件夹。
  • 代码适配:Anomalib适合快速验证SOTA算法,PatchCore适合高召回率场景,FastFlow适合无监督部署。
  • 若链接失效,优先访问GitHub/Gitee搜索“MVTec AD 异常检测”获取最新资源。

三、环境配置

使用docker部署环境,方便复现

开始 main()

解析命令行参数

检查是否为评估模式

执行 evaluate()

执行 train()

加载配置文件

构建模型 build_model()

加载检查点参数

构建测试数据加载器

将模型移到GPU

执行评估 eval_once()

计算AUROC指标

结束

创建检查点目录

加载YAML配置

构建模型 build_model()

构建优化器 build_optimizer()

构建训练数据加载器

构建测试数据加载器

将模型移到GPU

循环训练 NUM_EPOCHS 次

训练一个epoch train_one_epoch()

检查评估间隔

执行评估 eval_once()

检查保存检查点间隔

保存检查点

是否到达最后轮次

进入下一轮训练

训练完成

结束

四、编写推理程序,绘制热力图

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐