월간 데이콘 Computer Vision 이상치 탐지 알고리즘 경진대회

알고리즘 | CV | 분류 | 이상탐지 | Macro f1 score

  • moneyIcon Prize : 100만원 + ɑ
  • 1,389명 마감

 

Anomaly detection을 이용한 정상, 비정상 분류

2022.05.10 08:40 7,771 Views language

안녕하세요. 불균형이 심해서 바로 classification도 괜찮지만,  anomaly detection으로 정상, 비정상을 구분 후 비정상만을 가지고 Few shot 혹은 offline augmentation으로 weights를 강화하는 쪽이 어떨까도 생각해봤습니다
대회에 깊이 참여는 못할 것 같아서 코드 공유를 통해 의논을 했으면 합니다
mvtec ad는 image level에서는 0.99 이상의 ROCAUC를 보이고 있습니다
그 중 2021년 아마존 리서치에서 제안한 이미지 Patchcore를 이용했습니다
https://paperswithcode.com/sota/anomaly-detection-on-mvtec-ad
https://github.com/hcw-00/PatchCore_anomaly_detection

주요 특징으로는
1. weight 훈련은 따로 없고, imagenet pretrained 기반의 backbone 레이어의 feature map을 concat한 후 Feature bank를 만듭니다
2. 그 중 coreset 비율만 따로 추출한 memory bank는 정상의 분포를 가지고 있습니다
3. patch 기반의 ood는 padim이 먼저 제안됐지만 train, test 시 메모리 효율 뿐만 아니라 시간 또한 빠릅니다

다만, Sota 점수는 모든 데이터가 중앙으로 Align이 되어 있다는 가정 하에서 진행되긴 하지만, 테스트 데이터는 Affine 되어 있긴했습니다. 그래서 현재 코드는 다양한 각도의 이미지 patch 분포를 추출하니 이전 만큼의 rocauc는 나오지는 못합니다. 따라서 원본 코드와 다르게 transform을 flip, affine을 적용했습니다

모든 Class에서는 결과를 못봤지만, transform과 무관한 carpet, tile은 잘 나오지만, Align에 영향을 받는 것들은 성능이 떨어지는 것을 볼 수 있습니다. 이는 corset 비율을 높임으로써 보완이 가능하겠지만 훈련 시간이 많이 길어질 것입니다
감사합니다

Code