gasharper / PyramidFlow

[CVPR 2023] PyramidFlow: High-Resolution Defect Contrastive Localization using Pyramid Normalizing Flow
MIT License
45 stars 8 forks source link

PyramidFlow

[CVPR 2023] The Official implementation of PyramidFlow. If you have any issues reproducing our work, please create a new issue, and we will reply as soon as possible.

PWC PWC

PyramidFlow is the first fully normalizing flow method, that can be trained end-to-end from scratch without external priors, which is based on the latent template-based contrastive paradigm, enabling high-resolution defect contrastive localization. poster

PyramidFlow: High-Resolution Defect Contrastive Localization Using Pyramid Normalizing Flow,
Jiarui Lei, Xiaobo Hu, Yue Wang, Dong Liu,
CVPR 2023 (arXiv 2303.02595)

Abstract

During industrial processing, unforeseen defects may arise in products due to uncontrollable factors. Although unsupervised methods have been successful in defect localization, the usual use of pre-trained models results in low-resolution outputs, which damages visual performance. To address this issue, we propose PyramidFlow, the first fully normalizing flow method without pre-trained models that enables high-resolution defect localization. Specifically, we propose a latent template-based defect contrastive localization paradigm to reduce intra-class variance, as the pre-trained models do. In addition, PyramidFlow utilizes pyramid-like normalizing flows for multi-scale fusing and volume normalization to help generalization. Our comprehensive studies on MVTecAD demonstrate the proposed method outperforms the comparable algorithms that do not use external priors, even achieving state-of-the-art performance in more challenging BTAD scenarios.

Requirements

Python packages

Quick Start

Installation

After installing the above requirement packages, run the below commands

git clone https://github.com/gasharper/PyramidFlow.git
cd PyramidFlow
wget https://raw.githubusercontent.com/gasharper/autoFlow/main/autoFlow.py

Training

run python train.py to train using default classes (tile) with default settings.

Citation

If you find this code useful, don't forget to star the repo โญ and cite the paper:

@InProceedings{Lei_2023_CVPR,
    author    = {Lei, Jiarui and Hu, Xiaobo and Wang, Yue and Liu, Dong},
    title     = {PyramidFlow: High-Resolution Defect Contrastive Localization Using Pyramid Normalizing Flow},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2023},
    pages     = {14143-14152}
}