DeepLearning/Computer Vision

[ECCV 2024 Review] Multi-Class Anomaly Detection in ECCV'24

yooj_lee 2024. 10. 31. 22:16
300x250

오랜만의 포스팅으로는 24년도 eccv에 발표된 multi-class anomaly detection 논문에 대해 정리해보려고 합니다. 모든 페이퍼를 다 다루기에는 이제 anomaly detection도 꽤나 많이 나오네요!!

Stats

일단 간략하게 이번 eccv에 발표된 ad 논문의 stat을 요약해보았습니다. 총 14개 paper가 억셉이 되었습니다. 해를 거듭할 수록 CV 학회에서 꽤나 많은 anomaly detection 논문이 나오고 있습니다. 22년도 cvpr에 나온 patchcore 논문이 시발점이 되지 않았나 싶습니다 (벌써 인용 수가 800회가 넘었습니다..)

다들 아시겠지만, MVTec-AD 벤치마크는 이미 많이 정복된 상태이며 22년도 ECCV에 나온 VisA 역시 그렇습니다. SoTA 경쟁은 포화되어가고, AD 연구자들은 다양하게 주제를 넓혀나가고 있습니다. 그중, 22년도 neurips에 발표된 UniAD를 기점으로 Multi-Class AD 논문이 많이 발표되고 있는데요, ECCV'24에서도 역시 multi-class AD가 가장 많이 발표된 논문입니다. WinCLIP과 AnomalyCLIP을 기점으로 zero-shot 논문도 종종 보이고 있습니다 (물론, 저는 VisA 데이터셋이 발표가 되면서 AD task 내에서 zero-shot transfer 실험이 가능해졌기 때문이 가장 큰 요인으로 봅니다).

Zero-Shot 이외에도 Continual Learning이나 Task Unifying 등의 주제도 종종 등장합니다. 분야가 발전되기 위해서는 데이터셋 역시 풍부해져야 하는데, 데이터셋 논문도 종종 등장하고 있습니다 (Real-IAD 등 이전 학회에서도 데이터셋은 꾸준히 나옵니다).

 

Multi-Class AD

그렇다면 Multi-Class AD란 무엇이냐 라고 말을 해보자면, 기존의 AD 모델들은 대부분 클래스 별로 모델을 따로 구축하였습니다. 22년도에 UniAD라는 논문에서 처음으로 하나의 모델에서 여러 개의 클래스 이미지를 한꺼번에 학습하는 형태를 제안합니다. 아래의 그림에서 c와 d를 비교하시면 조금 더 이해가 쉽습니다.

출처: You et al., A Unified Model for Multi-class Anomaly Detection (NeurIPS'22)

UniAD의 경우에는 Reconstruction 방식의 모델로 한정 지어서 문제를 좁힙니다. Reconstruction 기반의 AD 모델은 멀티 클래스 세팅에서 class distribution이 복잡해지면서 normality를 규정하는 특징을 학습하는 것이 아니라 자기 자신을 그대로 내뱉는 "Identity Shortcut"에 빠지기 쉽다고 주장합니다. 이러한 Identity Shortcut은 모든 multi-class AD 논문에서 주로 다루는 문제의식입니다. 이번 ECCV에 발표된 논문들도 역시 동일한 문제를 주요하게 다루고 있습니다. 이 포스트에서는 다음의 4가지 논문을 중점적으로 다뤄보려 합니다.

    1. Learning Unified Reference Representation for Unsupervised Multi-class Anomaly Detection
    2. Learning to Detect Multi-class Anomalies with Just One Normal Image Prompt
    3. Continuous Memory Representation for Anomaly Detection
    4. Hierarchical Gaussian Mixture Normalizing Flow Modeling for Unified Anomaly Detection

가로 task를 unifying하는 GeneralAD: Anomaly Detection Across Domains by Attending to Distorted Features 과 같은 논문도 발표되었습니다. 개인적으로 저의 연구 주제이기도 했던 터라 흥미롭게 보았지만, multi-class AD는 아니기에 이 포스트에선 다루지 않습니다.

Learning Unified Reference Representation for Unsupervised Multi-class Anomaly Detection (RLR)

첫번째 논문입니다. 간단하게 정리하면, Normality를 잘 표현할 reference를 학습시켜서 reconstruction할 때 활용하자는 논문입니다. 

Identity Shortcut을 해결하기 위해, input feature 대신에 learnable reference representation을 활용해서 복원하는 방향으로 방법론을 설계합니다. Masked learnable key attention (MLKA), local cross attention (LCA) 을 통해 reference representation이 normality를 잘 포함하는 형태로 학습하게끔 합니다. 

RLR은 feature reconstruction 기반의 논문으로, multi-scale feature map을 만든 후 encoder에 입력합니다. 최종적으로 encoder에서 나온 출력물과 multi-scale feature map을 비교하는 형식으로 학습이 진행됩니다. PatchCore를 따라, local-aware aggregation (쉽게 말하면 window 설정 후 mean pooling)으로 feature를 만들어줍니다. 이후에, 가우시안 노이즈를 넣어 feature jittering을 해준 형태로 인코더에 들어가게 됩니다.
 
 

Masked Learnable Key Attention (MLKA)

Encoder 구조의 아키텍처이지만, self-attention을 두는 게 아니라 cross-attention 비슷하게 설정하여 학습을 합니다. 특이한 건, Residual connection을 없앴습니다. Residual Connection을 넣으면 input에 대한 정보를 더 많이 참조하기 때문이라고 주장합니다. 대신, 흔히 encoder에서 self-attention을 활용하는 대신에 Key를 learnable reference로 변경하여 cross-attention을 모사하는 형태로 학습합니다. 이때, UniAD에서 활용했던 방식으로 주변영역을 masking하여 최대한 자기자신을 복제하는 shortcut을 방지하고자 합니다.

Local Cross Attention (LCA)

reference를 조금 더 양질로 학습시키기 위해 아까와는 반대로 오히려 local만 보게 하는 방향으로 학습을 시킵니다. 또한, 여기에서는 value를 reference로 대체하여 input feature token의 개입을 더 줄입니다.

마지막에, MLKA와 LCA의 output을 alpha의 가중치 파라미터로 두어서 가중합하여 해당 레이어의 output으로 출력합니다. MSE와 cosine similarity를 모두 활용하여 Reconstruction Error를 계산합니다.

실험 결과

위와 같은 방법으로 MVTec-AD과 VisA에서 multi-class SOTA를 기록하였습니다.

 

Learning to Detect Multi-Class Anomalies with Just One Normal Image Prompt (One-NIP)

Reconstruction을 할 때, 정상 이미지를 하나 더 사용하여 그걸 참고하여 reconstruction을 하자 라는 아이디어의 논문입니다. 다른 이미지를 참고하기 때문에, 자연스럽게 Identity Shortcut 문제가 완화될 것이라고 주장합니다.

해당 방법론은 총 3개의 입력 이미지를 요구로 합니다. 1) 원본 이미지 2) prompt 역할을 하는 정상 이미지 3) 비정상 이미지 (물론, 진짜 비정상 이미지가 아닌 pseudo anomaly 입니다). 이 3가지를 이용하여 reconstruction과 restoration을 수행하는데요, 1), 2)는 Reconstruction 과정에서 활용이 되고 2), 3)은 디노이징 태스크인 restoration 과정에서 활용이 됩니다.

정리하면, 이미지 3장에 대해서 backbone을 통과하여 feature를 얻어내면, 이를 다시 One-NIP의 encoder에 넣어 다시 총 3개의 feature를 얻어냅니다.

Reconstruction task의 경우, 원본 이미지와 prompt 이미지에 대한 feature를 얻어서 이를 decoder에 넣은 후, reconstruction loss를 계산하게 됩니다. Reconstruction 과정에서 본인 스스로를 참조하는 것이 아닌 다른 "정상" 이미지를 참조하면서 cross-attention으로 서로 정보를 주고 받게 됩니다. 

Restoration task의 경우에는 prompt 이미지와 pseudo anomaly 이미지에 대해 feature를 얻고 pseudo anomalous feature를 원본 이미지에 대한 feature로 원복하는 형태로 최적화되는 restoration loss를 계산합니다. prompt feature와의 cross-attention을 통해 decoding을 하기 때문에, 보다 identity shortcut에서 자유롭습니다.

supervised refiner

제가 이 논문에서 가장 흥미롭게 생각한 부분인데요, fine-grained anomaly에 대한 정보를 학습하기 위해 feature reconstruction 이외에도 픽셀 단위로 존재하는 pseudo anomaly로부터 pixel-level supervision을 추가로 주어 학습하게 됩니다. 이때는 Dice Loss를 활용합니다. 다만, 특이했던 점(?)은 feature를 원본 이미지 scale까지 reconstruction을 수행하는 것이 아니라 어느 정도만 scale up을 하고 나머지는 그냥 interpolation 시킵니다 (이런 것까지 하이퍼파라미터로 작용할 수 있겠습니다).

실험 결과

 Table 1을 보시면 거의 대부분의 경우에서 SOTA 성능이 나왔습니다 (물론, RLR보다는 떨어집니다만). Table2는 조금 더 흥미로운 실험 세팅인데, 좀 더 복잡한 multi-class 상황을 모사하기 위해 아예 데이터셋 여러 개를 다 합쳐서 학습해서 평가를 수행합니다. 베이스라인인 UniAD 대비해서 단순 데이터셋 내부의 클래스 통합 시나리오보다 성능 하락이 적은 편입니다. 하지만, 동시에 산업 이상 탐지 데이터셋이 도메인 간극이 그리 크지 않은 것 같다 라는 생각도 동시에 들긴 합니다.

좋은 아이디어이지만 prompt에 대한 영향을 많이 받지는 않을까 하는 생각이 동시에 들기도 해서, ablation 결과를 가져와보았습니다. train 시에 하나의 프롬프트로만 고정을 하든 random하게 뽑아 사용하든 좋은 성능이 나옵니다. 신기하네요.

 

Continuous Memory Representation for Anomaly Detection (CRAD)

이 논문은 Reconstruction을 할 시에 representation을 grid representation으로 두자는 아이디어에서 나왔습니다. Memory Representation이라고 하고는 있지만, PatchCore 등에서 사용하는 메모리뱅크와는 결이 살짝 다릅니다. 그리드 좌표계가 normal 이미지를 바탕으로 학습이 되고, 이것을 메모리처럼 참조하여 활용하는 구조입니다. 오히려 "Hierarchical Vector Quantized Transformer for Multi-class Unsupervised Anomaly Detection" 에서 등장하는 codebook을 continuous하게 확장시킨 개념입니다. 따라서, nearest neighbor를 계산하기 위해 많은 시간복잡도를 요구하지 않고, 그리드 좌표계에서의 좌표를 찾아서 interpolation하는 형태로 동작하기 때문에 inference 시 메모리 참조 시간복잡도는 O(1), 즉 상수시간(!)이 됩니다.

vqgan codebook

기본적으로 feature를 이미지로부터 추출하고, 이를 grid 좌표로 변환하여 feature를 새롭게 얻어낸 다음에 이를 원본 feature와의 거리를 계산하여 reconstruction하는 구조입니다. Grid를 normal로만 학습하게 되면 inference 시 abnormal feature와의 차이가 벌어지는 구조로 Identity Shortcut 문제를 해결할 수 있습니다.

여기서 grid는 2d grid로 고정하였으며, local grid와 global grid로 여러 scale의 anomaly를 포착하게 됩니다. global의 경우에는 class-distribution을 학습하는 역할도 합니다 (그래서 multi-class가 가능하게 되는 시나리오).

False Positive를 방지하기 위해, grid에서 샘플링하여 얻은 feature와 x 간의 similarity map으로 가중합해주게 됩니다. 즉, similarity가 적은 곳에서는 x를 많이 반영하고 similarity가 높은 곳에서는 grid에서 샘플링된 feature를 많이 반영하게 됩니다.

추가로, feature의 한 픽셀에 해당하는 부분을 grid로 매핑한다고 가정했을 때에 하나의 좌표에만 collapse되는 현상이 발생할 수 있습니다. 따라서, 이를 여러 좌표로 mapping할 수 있도록, coordinate jittering을 추가해줍니다. 이렇게 되면 비슷한 곳으로 여러 곳으로 매핑이 되면서도 확률적으로 mode 근처에 좌표 매핑이 집중되게 됩니다.

실험 결과

MVTec-AD와 VisA에서 모두 좋은 성능을 보여주었습니다. MVTec-AD 같은 경우에는 거의 one-class SOTA에 맞먹는 성능입니다. 강력한 image level 성능 대비 localization 성능이 상대적으로 조금 떨어져보이긴 하는데 큰 문제는 아닙니다.

Hierarchical Gaussian Mixture Normalizing Flow Modeling for Unified Anomaly Detection (HGAD)

이 논문은 normalizing flow를 multi-class로 확장한 논문입니다. normalizing flow의 경우에는 정상 데이터로부터 gaussian 분포를 추정해내고, 비정상 이미지의 경우 낮은 확률이 나오는 형태로 이상 탐지를 수행합니다.

Reconstruction에서의 multi-class 확장 시 문제가 되는 부분이 identity shortcut이라면, normalizing flow는 homogeneous mapping이 문제가 됩니다. homogeneous mapping은 여러 클래스의 데이터로부터 단일 gaussian 분포로 추정하는 문제에서 비롯됩니다. 여러 클래스의 데이터는 높은 확률로 multi-modal distribution을 따를 것이기 때문입니다. 따라서, 분포 추정이 제대로 이루어지지 않아 이상 탐지 역시 부정확해질 것입니다. 논문에서는 multi-modal 특성을 반영할 수 있도록 gaussian mixture model로 mapping하면 된다고 주장합니다. 이를 위해 intra-class, inter-class의 hierarchical guassian mixture modeling을 제안합니다.

Hierarchical Gaussian Mixture Modeling

변별력 있는 class boundary를 위해 각 class center 간의 mutual information을 최대화하는 방향으로 학습합니다. 또한, 클래스 내부적으로도 다양한 normal이 분포할 수 있기 때문에 intra-class 측면에서도 역시 mixture로 모델링하여 학습합니다.

실험 결과

실험 결과를 보면, MVTec-AD를 비롯한 다양한 벤치마크에서 높은 성능을 보여줍니다. 기존 normalizing flow 방법론 대비해서는 성능 차이가 꽤 큽니다.

Summary

  • Multi-Class AD는 Feature Reconstruction 기반이 주를 이루며, 해당 갈래에서 가장 문제되는 것은 Reconstruction 시 발생하는 Identity Shortcut. Normalizing Flow까지 multi-class 세팅이 확장되고 있음.
  • UniAD가 발표된 이후로, 코드북 기반의 prototype을 활용하거나 (HVQ-Trans, NeurIPS'23) shortcut에 빠지지 않도록 pseudo anomaly를 복잡하게 설계하거나 하는 방식이 나옴 (OmniAL, CVPR'23).
  • 소개된 논문들도 비슷하게, 학습 내부에서 자기 자신의 영향력을 줄이거나 (RLR, One-NIP), normal에 대한 정보를 추가로 reduced memory에 저장해두는 형태 (CRAD) 로 극복하려는 듯함.
  • 전체적으로 성능 개선이 많이 이루어짐. MVTec-AD에서는 AUROC 99% 내외를 보이면서 점차 성능이 포화되는 것이 보임. 또 다른 돌파구가 필요하지 않을까?

 

300x250