Anomalib: 이상 탐지를 위한 딥 러닝 라이브러리 소개

박종영

Anomalib는 공개 및 비공개 데이터 세트를 통해 최신 이상 탐지 알고리즘을 집중적으로 벤치마킹하며, 딥 러닝 기반의 첨단 라이브러리입니다. 이 라이브러리는 최신 연구에서 제시된 다양한 이상 탐지 알고리즘의 사용자 친화적인 구현 뿐 아니라, 사용자 정의 모델의 개발 및 구현을 효율화 하는 풍부한 도구 세트를 제공합니다. Anomalib이미지 기반이상 감지에 특별히 초점을 맞추고 있으며, 그 목적은 이상한 이미지를 탐지하거나 데이터 세트의 이미지 내에서 이상한 픽셀 영역을 식별하는 것입니다. 이는 제조 산업에서 특히 유용하게 활용될 수 있으며, 특히 경남 제조 산업 분야에서 광범위한 응용으로 제조 혁신에 기여했으면 하며 소개 합니다.

 

이 논문은 anomalib 1 을 소개합니다.1https://github.com/openvinotoolkit/anomalib, 감독되지 않은 이상 징후 감지 및 현지화를 위한 새로운 라이브러리입니다. 재현성과 모듈성을 염두에 두고 이 오픈 소스 라이브러리는 문헌의 알고리즘과 플러그 앤 플레이 방식을 통해 맞춤형 이상 탐지 알고리즘을 설계하는 도구 세트를 제공합니다. Anomalib는 벤치마크에서 최고의 성능을 달성하고 기성품으로 사용할 수 있는 최첨단 이상 탐지 알고리즘으로 구성됩니다. 또한 라이브러리는 특정 요구 사항에 맞게 조정될 수 있는 사용자 정의 알고리즘을 설계하는 구성 요소를 제공합니다. 실험 추적기, 시각화 도구, 하이퍼 매개변수 최적화 도구를 비롯한 추가 도구를 사용하면 이상 감지 모델을 간단하게 설계하고 구현할 수 있습니다. 라이브러리는 또한 실시간 배포를 위한 OpenVINO 모델 최적화 및 양자화를 지원합니다. 전반적인,anomalib는 데이터에서 에지까지 감독되지 않은 이상 탐지 모델의 설계, 구현 및 배포를 위한 광범위한 라이브러리입니다.

Samet Akcay, Dick Ameln, Ashwin Vaidya, Barath Lakshmanan, Nilesh Ahuja, Utku Genc (키워드: 감독되지 않은 이상 탐지, 현지화)

 

1. 소개

변칙 검색은 기계 학습 문헌에서 증가하는 연구 영역으로, 목표는 데이터 세트에서 정상 샘플과 변칙 샘플을 구별하는 것입니다. 감독 방식은 일반적으로 변칙 클래스의 대표 샘플이 충분하지 않기 때문에 이러한 유형의 문제에 대해 비효율적입니다. 이 문제를 해결하기 위해 이상 탐지 알고리즘은 훈련 단계에서 정상 샘플에만 의존하고 학습된 정상 데이터 분포와 비교하여 이상 샘플을 식별합니다. 감독되지 않은 이상 감지의 이러한 특성으로 인해 명확하게 정의된 이상 클래스가 종종 부족한 산업, 의료 및 보안과 같은 실제 응용 프로그램에 매우 적합합니다.

최근에 릴리스되고 문헌에 게시된 변칙 검색 데이터 세트 및 논문의 수입니다.

그림 1: 최근에 릴리스되고 문헌에 게시된 이상 탐지 데이터 세트 및 논문의 수. 삼삼종이 통계는 https://paperswithcode.com 에서 가져온 것입니다.

이상 탐지 분야(그림 3 )에서 출판물과 사용 가능한 기술의 수가 증가함에 따라 벤치마킹 알고리즘을 위한 통합 라이브러리가 필요합니다. 감독 작업에서 지난 몇 년 동안 이러한 다양한 라이브러리 [ mmdetection ] [ detectron ] 가 등장한 반면, 감독되지 않은 이상 탐지 영역은 현재까지 유사한 노력이 부족합니다.

기존 이상 탐지 라이브러리는 단일 알고리즘에만 집중하거나 성능 최적화가 부족하거나 딥 러닝 기술을 포함하지 않습니다 [ Zhao2019PyOD:Detection ] . 이로 인해 주어진 데이터 세트에서 최신 알고리즘을 기본적으로 비교하기 위해 이러한 구현을 활용하는 것이 어렵습니다. 이러한 문제를 해결하기 위해 최신 딥 러닝 기반 이상 탐지 기술 및 도구의 완전한 컬렉션을 제공하는 것을 목표로 하는 새로운 라이브러리인 anomalib를 도입합니다.

단일 라이브러리에 다양한 이상 감지 알고리즘과 모델 구성 요소를 수집함으로써 anomalib는 다음과 같은 이점을 제공합니다.

아키텍처

그림 2: 데이터에서 배포까지 Anomalib 라이브러리 의 아키텍처 .

 

공개 및 사용자 지정 데이터 세트에서 벤치마크를 실행하는 최신 이상 탐지 모델입니다.

플러그 앤 플레이를 통해 새로운 알고리즘을 설계하기 위한 모듈식 이상 모델 구성 요소.

교육, 테스트, 추론, 하이퍼파라미터 최적화 및 벤치마킹을 위한 CLI 기반의 구성 가능한 진입점입니다.

실시간 로컬 또는 에지 배포를 용이하게 하는 여러 내보낼 수 있는 모델 형식과 호환되는 추론 인터페이스.

전반적으로 anomalib는 이상 탐지 연구 및 생산에 사용할 수 있는 일련의 구성 요소 및 도구를 제공하는 통합 라이브러리입니다.

 

2. 설계 원칙

Anomalib는 네 가지 설계 원칙을 따르며 각 원칙은 아래에 설명되어 있습니다.

재현성

anomalib 라이브러리 의 주요 목표 중 하나는 공개 및 사용자 지정 벤치마크 데이터 세트에서 다양한 최첨단 이상 탐지 알고리즘의 성능을 비교하는 것입니다. 유효한 비교를 보장하기 위해 anomalib 의 알고리즘 구현은 원본 간행물에 보고된 결과를 재현하는 것을 목표로 합니다.

확장성

이상 탐지 분야의 빠른 발전 속도를 감안할 때 최소한의 노력으로 새로운 알고리즘을 라이브러리에 추가할 수 있는 것이 중요합니다. 이를 위해 anomalib는 개발자가 모델을 라이브러리의 교육 및 추론 진입점과 호환되도록 구현할 수 있는 여러 인터페이스를 제공합니다.

모듈성

라이브러리에는 새 알고리즘을 생성할 때 빌딩 블록 역할을 할 수 있는 바로 사용할 수 있는 여러 구성 요소가 포함되어 있습니다. 개발자와 연구원은 이러한 구성 요소를 플러그 앤 플레이 방식으로 재사용하여 구현 노력을 더욱 줄이고 새로운 아이디어의 프로토타입을 신속하게 만들 수 있습니다.

실시간 성능

anomalib 의 핵심 목표는 훈련된 모델로 추론을 수행하는 노력을 줄이는 것입니다. 따라서 라이브러리는 각각 PyTorch [ PyTorch ] 및 OpenVINO [ OpenVINO ] 배포 옵션 을 통해 GPU 또는 CPU를 사용하여 실시간으로 모델을 배포할 수 있는 인터페이스를 제공합니다 .

위에서 설명한 설계 원칙에 따라 anomalib는 기존 알고리즘의 결과를 재현하고 새로운 데이터 세트와 알고리즘을 추가할 수 있으며 모델을 실시간으로 배포할 수 있는 데이터에서 배포까지 전체 기계 학습 모델 수명 주기를 다루는 것을 목표로 합니다. .

 

3. Anomalib

이 섹션에서는 라이브러리를 구성 요소 수준으로 분류합니다. 44자세한 내용은 설명서를 참조하십시오 .각각은 그림 2 에 표시된 데이터-배포 워크플로의 기본 단계입니다 .

3.1 데이터

라이브러리는 문헌에서 널리 사용되는 이미지 및 비디오 도메인 모두에서 점점 더 많은 공개 벤치마크 데이터 세트에 대한 데이터 세트 어댑터를 제공합니다.

영상

Anomalib는 빠른 프로토타이핑을 위한 CIFAR-10 [ Cifar ] 과 실제 결함 감지 애플리케이션을 위한 MVTec [ MVTec ] , BTAD [ BTAD ] 및 Kolektor [ Kolektor ]를 지원합니다.

동영상

라이브러리는 ShanghaiTec [ Luo2017ShanghaiTech ] 과 같은 비디오 데이터 세트를 지원합니다 . 현재 비디오 데이터 세트는 기존 anomalib 모델이 이미지 도메인에 최적화되어 있기 때문에 프레임 수준에서만 지원됩니다 . 이 문제를 해결하기 위해 향후 릴리스에서 비디오 이상 탐지 모델을 지원할 계획입니다.

관습

앞서 언급한 공개 데이터 세트 외에도 anomalib는 사용자가 새로운 및 기존 anomalib 모델을 교육할 수 있는 사용자 지정 데이터 세트를 구현할 수 있는 데이터 세트 인터페이스를 제공합니다.

3.2 전처리

사전 처리는 훈련 전에 입력 이미지에 변환을 적용하고 선택적으로 이미지를 (비)겹침 타일로 나누는 것으로 구성됩니다.

변환

Anomalib는 이미지 변환을 위해 albumentations [ Buslaev2020Albumentations ] 라이브러리를 활용하며 , 입력 이미지와 함께 ground truth 픽셀 맵의 변환을 관리할 수 있는 이점이 있습니다. 확장 가능한 Python API 외에도 알부멘테이션을 사용하면 실험 및 HPO에 유용한 기능인 구성 파일에서 변환 설정을 읽을 수 있습니다.

이미지를 대상 입력 크기로 바둑판식 배열과 크기 조정.

그림 3: 이미지를 대상 입력 크기로 바둑판식 배열과 크기 조정.

기와

많은 실제 데이터 세트의 높은 이미지 해상도로 인해 일반적으로 입력 이미지를 모델에 제공하기 전에 크기를 조정해야 합니다. 부작용으로 이미지 내의 작은 비정상 영역은 세부 정보를 잃을 수 있으므로 모델이 이러한 영역을 감지하기가 더 어려워집니다. 입력 이미지를 타일링하면 이상 영역의 크기가 일정하게 유지되므로 문제가 완화됩니다(그림 3 ).

3.3 모델

Anomalib에는 맞춤형 알고리즘을 구성하기 위한 빌딩 블록 역할을 하는 일련의 모듈식 구성 요소뿐만 아니라 최첨단 이상 탐지/현지화 알고리즘이 포함되어 있습니다.

알고리즘

라이브러리는 최신 이상 탐지 모델로 주기적으로 업데이트됩니다. 현재 사용 가능한 모델은 밀도 추정 [ Ahuja2019ProbabilisticDetection , Defard2021PaDiM:Localization , Gudovskiy2021CFLOW-AD:Flows , Roth2021TowardsDetection ] , 재구성 [ Akcay2018Ganomaly ] 및 지식 증류 모델 [ Wang2021Student-TeacherDetection ] 으로 분류할 수 있습니다 .

구성품

모델 구성 요소는 일반적으로 사용되는 작업을 구현하는 즉시 사용 가능한 여러 모듈로 구성됩니다. Scikit Learn [ ScikitLearn ] 과 유사하게 모델 구성 요소는 이상 탐지 모델(예: 기능 추출, 차원 축소, 통계 모델링)에서의 역할에 따라 분류됩니다. 모든 모델 구성 요소는 GPU에서 모든 작업을 실행하고 모델을 ONNX 및 OpenVINO로 내보낼 수 있는 PyTorch에서 구현됩니다.

모델 구성 요소를 사용하여 사용자 지정 이상 탐지 알고리즘을 구현하는 것은 간단합니다. 예를 들어, 초기에 CNN을 통해 기능을 추출하고 PatchCore [ Roth2021TowardsDetection ] 와 유사한 Coreset Sampling [ Sener2018Coreset ] 을 통해 차원 감소를 수행하는 이상 모델을 고려하십시오 . 다음과 같이 구성 요소를 가져올 수 있습니다.

{민트}

[fontsize= ]anomalib.models.components 가져오기( FeatureExtractor, KCenterGreedy )의 파이썬

 

3.4 사후 처리

표준화

추론 중에 anomalib 의 모델에서 예측한 이미지 수준 또는 픽셀 수준 이상 점수의 범위는 모델 및 데이터 세트에 따라 다를 수 있습니다. 원시 이상 점수를 표준화된 형식으로 변환하기 위해 anomalib는 예측된 이상 점수를 [0,1] 범위로 정규화합니다. 기본적으로 anomalib는 유효성 검사 중에 관찰된 값과 관련하여 최소-최대 정규화를 사용하지만(그림 4 ) 정규화 방법을 완전히 구성하거나 비활성화할 수 있습니다.

유효성 검사 세트에 대해 정규화하면 개별 이미지에 대해 정규화하는 것보다 더 나은 시각화 결과를 얻을 수 있습니다.

그림 4: 유효성 검사 세트와 관련하여 정규화하면 개별 이미지와 관련하여 정규화하는 것보다 시각화가 더 좋아집니다.

임계값

사용자가 훈련된 모델에 대한 변칙 점수 임계값을 선택할 수 있도록 anomalib는 유효성 검사 중에 F1 점수를 기반으로 임계값 값을 최적화하는 적응형 임계값 메커니즘을 제공합니다. 또는 사용자가 수동 임계값을 지정할 수 있습니다. 이것은 불충분한 대표 검증 데이터를 사용할 수 있는 경우에 유용합니다.

심상

검증 및 테스트 중에 예측된 이상 히트맵 및 분할 마스크의 시각화를 표시하고 저장하도록 anomalib를 구성할 수 있습니다(그림 5 ).

3.5 배포

최적화

양자화 및 최적화를 통해 더 빠른 추론 및 처리량을 달성하기 위해 라이브러리는 OpenVINO [ OpenVINO ] 및 신경망 압축 프레임워크(NNCF) [ nncf ] 를 활용합니다 .

추론

학습된 모델은 라이브러리의 추론 유틸리티에만 의존하여 배포할 수 있으며, 이를 통해 사용자는 창에서 추론 결과를 시각화하거나 예측된 이상 점수를 파일 시스템에 저장할 수 있습니다.

 양탄자그리드가죽타일목재케이블캡슐개암메탈넛알약나사칫솔트랜지스터지퍼평균
DFM [ Ahuja2019ProbabilisticDetection ]0.8470.4960.9300.9810.9570.9970.9270.8760.9850.9460.8160.7610.9640.9360.9450.891
STFPM [ Wang2021Student-TeacherDetection ]0.9210.9830.9210.9610.9940.9980.9460.7170.9960.9840.4920.5500.6380.8520.8370.853
PADIM [ Defard2021PaDiM:현지화 ]0.9450.8570.9820.9500.9760.9940.8430.9010.7500.9610.8630.7590.8890.9200.7800.891
CFLOW [ Gudovskiy2021CFLOW-AD:흐름 ]0.9810.9631.0000.9970.9911.0000.9690.9701.0000.9910.9810.7670.9110.9500.9860.964
PatchCore [ Roth2021TowardsDetection ]0.9790.9621.0001.0000.9921.0000.9930.9761.0000.9960.9340.9470.9471.0000.9820.981

표 1: MVTec [ MVTec ] 데이터 세트 범주에 대한 이미지 수준 AUROC 점수.

 양탄자그리드가죽타일목재케이블캡슐개암메탈넛알약나사칫솔트랜지스터지퍼평균
STFPM [ Wang2021Student-TeacherDetection ]0.9730.9870.9760.9640.9580.9680.9400.9570.9790.9650.8670.9380.1480.7590.9830.891
PADIM [ Defard2021PaDiM:현지화 ]0.9840.9180.9940.9340.9470.9830.9650.9840.9780.9700.9570.9780.9880.9680.9790.968
CFLOW [ Gudovskiy2021CFLOW-AD:흐름 ]0.9850.9690.9950.9660.9260.9840.9650.9880.9880.9820.9870.9820.9850.9300.9800.974
PatchCore [ Roth2021TowardsDetection ]0.9880.9690.9910.9610.9350.9850.9880.9880.9870.9890.9810.9890.9880.9820.9830.980

표 2: MVTec [ MVTec ] 데이터 세트 범주에 대한 픽셀 수준 AUROC 점수.

3.6 유용

Anomalib는 다양한 유틸리티와 도우미 모듈을 사용하여 완전한 교육 및 추론 파이프라인을 촉진합니다.

콜백

라이브러리는 정규화, OpenVINO/NNCF 압축, 타이머 및 시각화와 같은 비모델 특정 작업에 PyTorch Lightning의 콜백 클래스 [ Falcon2020PyTorchLightning ] 를 활용하여 모델 구현에서 상용구 코드를 줄입니다.

측정항목

AUROC, F1 및 PRO와 같이 일반적으로 보고되는 성능 지표는 각 교육 실행 후에 보고됩니다. 메트릭은 GPU에서 계산을 실행할 수 있는 TorchMetrics [ Falcon2020PyTorchLightning ] 를 사용하여 구현됩니다.

벌채 반출

라이브러리는 TensorBoard [ Abadi2015TensorFlow:Systems ] 및 wandb [ Biewald2020ExperimentBiases ] 와 같은 여러 로깅 대상을 지원하여 실험을 추적합니다. 라이브러리는 로거의 구현 세부 정보가 사용자로부터 추상화된 상태로 유지되도록 인터페이스를 제공합니다.

 

4. 라이브러리 도구

4.1 CLI(명령줄 인터페이스)

Anomalib는 모델을 훈련 및 내보내고, 훈련된 PyTorch 또는 OpenVINO 모델에서 추론을 실행하고, 벤치마킹 및 하이퍼파라미터 최적화 실험을 실행하기 위해 바로 사용할 수 있는 몇 가지 스크립트를 제공합니다.

교육, 테스트 및 추론

Anomalib는 기본 교육( train.py ), 테스트( test.py ) 및 추론( inference.py ) 기능을 위한 Python 스크립트 세트를 제공합니다 . 각 스크립트에는 데이터 세트, 모델 및 하이퍼파라미터 설정을 구성하는 데 사용할 수 있는 명령줄 인수 집합이 있습니다. 시각화 결과 및 모델 파일은 사용자가 지정한 파일 시스템 위치에 저장됩니다. 추론 진입점 스크립트는 지정된 모델 파일의 확장자에 따라 PyTorch( .ckpt ) 및 OpenVINO( .bin , .xml ) 모델을 모두 지원합니다.

하이퍼파라미터 최적화

라이브러리는 Weights & Biases(wandb) [ Biewald2020ExperimentBiases ] 플러그인을 사용하여 하이퍼파라미터 최적화(HPO) 지원을 제공합니다. 포함된 매개변수, 모니터링된 성능 메트릭 및 실험 수와 같은 HPO 스윕 설정은 제공된 sweep.yaml 파일에서 구성할 수 있습니다.

벤치마킹

라이브러리에는 여러 모델 또는 데이터 세트에서 통계 및 계산 지표를 수집하기 위한 일련의 벤치마킹 스크립트가 포함되어 있습니다. 진입점은 그리드 검색을 수행하고 결과를 TensorBoard, wandb 또는 로컬 .csv 파일 에 기록하는 데 사용되는 Python 스크립트( 기준점.py )입니다.

4.2 파이썬 API

CLI 진입점 외에도 라이브러리를 보다 유연하게 사용하거나 사용자 지정 알고리즘을 설계할 때 Python API를 사용할 수도 있습니다. 다음 코드 블록은 MVTec 병 [ MVTec ] 범주에서 PatchCore [ Roth2021TowardsDetection ] 모델을 훈련하고 테스트하는 방법을 보여줍니다 . {minted} [fontsize= ]python from anomalib.data import Mvtec from anomalib.models import Patchcore from pytorch_lightning import Trainer

datamodule = Mvtec(category=”병”, …) model = Patchcore(backbone=”resnet18”, …) trainer = Trainer(…) trainer.fit(datamodule, 모델) trainer.test(datamodule, model)

 

5. 벤치마크

12 는 MVTec [ MVTec ] 범주 에서 벤치마킹되고 평균화된 이미지 수준 및 픽셀 수준 AUROC 점수를 보여줍니다. 55더 많은 벤치마크 결과는 anomalib를 참조하십시오.현재 anomalib 에 구현된 다양한 공개 모델에 대해 . 결과는 anomalib 의 벤치마킹 도구를 사용하여 얻었으며 서로 다른 모델과 데이터 세트 범주 간의 비교 연구를 수행하는 데 anomalib를 사용할 수 있는 방법을 보여줍니다.

에 의해 생성된 모범 출력

그림 5: anomalib 시각화 도구 로 생성된 예시 출력 .

 

 

6. 결론

딥 러닝 기반 이상 탐지 모델의 교육, 벤치마킹, 배포 및 개발을 위한 포괄적인 라이브러리인 anomalib를 소개합니다 . 이 라이브러리는 이 백서에 설명된 벤치마킹 실험에서 설명한 것처럼 모든 데이터 세트에서 다양한 이상 탐지 모델을 빠르고 재현 가능하게 비교할 수 있는 도구 세트를 제공합니다. 우리는 해당 분야의 최신 첨단 기술로 지속적으로 업데이트하는 것을 목표로 오픈 소스 패키지로 출시하고 커뮤니티 기여를 환영합니다. 향후 작업에서 오디오, 비디오 및 3차원 데이터와 같은 다른 도메인으로 anomalib를 확장할 계획입니다 .

 

기업 홍보를 위한 확실한 방법
협회 홈페이지에 회사정보를 보강해 보세요.