반도체 소자 이상 탐지 AI 경진대회

[Private 15th, 0.98039] patchcore 논문 pytorch로 구현

공동작성자

stroke
2024.03.08 17:49 631 조회 language

patchcore 논문을 pytorch로 구현했고, private score 0.98039을 달성했습니다.

순수 patchcore 만으로는 작동이 잘 안되는데, 그 이유는 다음과 같습니다.
  1. threshold를 구하지 못합니다.
  2. 소자가 포함되지 않은 이미지는 오히려 anomaly score가 낮게 나옵니다.

해결한 방법은 다음과 같습니다.
  1. K-Fold CV처럼 train.csv를 여러 개로 분할한 다음, 일부는 훈련에 사용하고 일부는 임계값을 구하는데 사용합니다.
  2. 소자가 포함되지 않은 이미지는 AE를 사용하여 이상치로 분류합니다.

faiss라는 라이브러리를 사용하면 sampling을 효율적으로 할 수 있는 것 같지만, 그것까지는 구현하지 않았습니다.
즉 샘플링을 하지 않고 memory bank에 있는 모든 patch를 다 비교했습니다. 그래서 실행 시간은 대략 30분~1시간 30분 정도 됩니다...
또한 200개의 train 데이터와 100개의 test 데이터의 순서쌍을 모두 고려하다보니까 메모리를 많이 잡아먹습니다.
그래서 각각의 데이터를 따로 파일로 저장해서 필요하면 그때그때 불러쓰는 방식을 택했습니다. 

PDF
코드
로그인이 필요합니다
0 / 1000
파이썬초보만
2024.03.15 00:37

대단하십니다