2. 이상탐지를 적용할 알고리즘 선정 및 구현

2.1. 이상탐지 알고리즘을 선정 과정

  1. 딥러닝으로 해결하기 위해 Paperwithcode에 접속하여 Task에 관련된 키워드를 입력한다. -> Anomaly Detection 을 검색한다.
  2. Task와 유사한 데이터셋을 찾아 클릭한다. -> MVTec AD
  3. 유사한 데이터셋을 평가했을때 순위를 나타낸 리더보드에서 SOTA 알고리즘을 선정한다. -> PaDim 알고리즘 선정
  4. 선정한 알고리즘에 대해 학습과 추론할 수 있게 구현한다.
    • 해당 알고리즘에 대해 논문을 읽고 공부하고나서, github를 참고하여 해결하고자 하는 Task에 맞게 코드를 수정한다.
  5. 각자 환경에서 구동시켜 학습시킨다. -> 리눅스 서버로 가져와서 학습

2.2 이상탐지 알고리즘

1. PaDim을 선정한 이유

2021.08월 당시 MVTec 데이터셋으로 이상탐지를 하였을때, 4위(2021.11월 시점 6위)를 자치한 SOTA 모델이었고, 사전조사를 했을때 PaDim이라는 알고리즘이 One-Class Classification 방식으로 정상 데이터로 부터 학습 후 정상과 비정상을 판단한다는 점과 사전 학습된 CNN 모델을 가져와서 특성을 추출하고 뽑힌 특징을 가지고 평균과 공분산을 구하고, 정상 샘플에 대한 Gaussian distribution이 존재한다는 가정으로 비정상 샘플을 구별한다는 점에서 매력적으로 느껴졌고 주조 공정에서 발생한 임펠러 데이터에 적용해도 MVTec 데이터에서 보여주는 성능을 나타낼 것으로 기대되어 해당 알고리즘을 선정하였다.

2. PaDim 이란

  • One-Class Classification 방식으로 학습되고, 사전 학습된 CNN 모델을 통해 정상 샘플에 대한 Embedding 정보를 뽑아내고, Random Dimensionality Reduction을 진행하여 정상 샘플에 대한 평균과 공분산 정보를 추출한다.
  • 정상 샘플이 Gaussian distribution을 따른다는 가정하에, 테스트 데이터와 정상 샘플의 특징을 Mahalanobis distance를 사용해 정상과 비정상 샘플을 구별한다.

3. 주조 공정에 대해 평가한 성능 결과.

2.3 PaDim 코드 구현

1. custom_dataset.py
소스코드

프로젝트 개요

  • 제조 현장에서 지속적으로 활용 가능한 AI 기반 이상탐지 알고리즘 및 플랫폼 개발

프로젝트 목적

  1. 산업현장 속 이상탐지 문제를 해결하고, 이를 다방면으로 활용할 수 있는 Web 플랫폼 구축
  2. 수동으로 결합여부를 탐지하는 것보다 AVI를 적용하여 속도와 정확성을 높여 생산효율을 높이고 품질 관리 비용을 절감
    (* AVI : 이미지를 기반으로 하여 불량을 탐지하는 자동 육안 품질 검사)

프로젝트 워크 플로우


플랫폼 소개

플랫폼 개발 과정

  1. 제조 현장에서 발생한 양품, 불량품 이미지 데이터 조사 및 수집
  2. 이상탐지를 적용할 알고리즘 선정 및 구현
  3. 클라이언트가 사용 알고리즘을 사용가능하게 API 구현
  4. Streamlit을 활용해 Web GUI 구현
  5. Front와 Backend를 연동해 테스트 진행.
  6. Docker 컨테이너를 활용해 플랫폼 배포하기
  7. 더 나아가야 할점

1. 제조 현장에서 발생한 양품, 불량품 이미지 데이터 조사 및 수집

1.1 제조 현장에서 발생된 이미지 데이터셋 조사

  • MVTec AD
    • 산업 검사에 중점을 둔 이상탐지 방법을 벤치마킹하기 위한 데이터 세트이며[1], 15개 서로 다른 Object와 Texture 범주로 구분되어 있고 각각 10가지, 5가지 종류의 도메인 데이터로 구성되어있다. 그리고 총 3629장의 학습 데이터와 1725장의 테스트 데이터로 존재하며 위 데이터 중 결함 이미지는 실제 산업 현장의 검사 시나리오와 비슷한 결함들을 직접 발생시켜서 취득한 데이터라고 한다.[2]
  • casting product image data for quality inspection [3]
    • 주조는 원하는 모양을 중공 공동이 들어 있는 주형에 액체를 부은 다음 응고 시키는 제조 공정이다. 이 과정에서 주조 결함이 불규칙적으로 발생한다. 이 결함들은 원치 않은 결함이고 결함이 있는 제품을 제거하기 위해 모든 업계에는 품질 검사 부서가 있으며 검사 프로세스는 수동으로 진행하기에 매우 긴 시간이 걸리는 프로세스이며 사람이 육안으로 보기에 100% 정확하지 않을 수 있다. 그렇기에 검사 프로세스를 자동으로 만들기로 결정했고, 이렇게 수집된 데이터 셋은 수중 펌프 임펠러 데이터 셋이다.

1.2 데이터 수집

  • 2021년 8월 당시 Window 환경에서 MVTec AD 수집 방법 [4]

    1. aria2에 접속하여 aria2-1.35.0-win-64bit-build1.zip 파일을 다운로드한다.
    2. 설치 완료 후 압축 파일을 해제한다.
    3. CMD 창을 열어서 aria2 파일을 압축 해제한 파일 경로로 접속한다.
    4. MVTec AD Url에 접속한다.MVTec 링크
    5. MVTec Url에서 Download를 클릭한다.
      • 그러면 ftp url로 제공되는데 해당 url를 복사한다.
      • url : ftp://guest:GU.205dldo@ftp.softronics.ch/mvtec_anomaly_detection/mvtec_anomaly_detection.tar.xz
    6. CMD 창에 접속하여 aria2c.exe ftp://guest:GU.205dldo@ftp.softronics.ch/mvtec_anomaly_detection/mvtec_anomaly_detection.tar.xz 를 입력하고 Enter 키를 누른다.
    7. END
  • 2021년 11월 당시 Window 환경에서 MVTec AD 수집 방법

    1. MVTec AD Url에 접속한다.
    2. MVTec Url에서 Download를 클릭한다.
    3. mvtec_anomaly_detection.tar.xz 해당 파일을 압축 해제를 한다.
    4. END
  • casting product image data for quality inspection 수집 방법

    1. casting product image data for quality inspection 클릭한다.
    2. Kaggle에 로그인을 진행한다.
    3. Download 버튼을 클릭한다.
    4. 다운 받은 파일을 압축한다.
    5. END

참고 문헌

skt develope 공모전을 준비하면서

Flask는 웹서버를 만들수있습니다 그러면서 전 skt 플랫폼과 통신 할수있게 구현을 했습니다

이번에 제가 기획한건 기차와 국내선항공기 정보를 skt 기술과 점목시켜서 한번의 음성으로 알려주는 것을 기획하였습니다 

아래 코드는 서버와 연결하는 코드 입니다

 

< 실시간으로 항공기 정보를 가져와서 알려주는 코드입니다 >

 

이런 방식으로 기능을 구현하엿습니다

그리고 이렇게 만들어진 함수들을 불러와서 서버 router에 들어갈수있게 아래 코드 방식으로 구성되었습니다

 

 

 

 

app.run을 사용하여 서버를 실해하는 코드입니다

+ Recent posts