Giter VIP home page Giter VIP logo

lsc-systems's Introduction

산학협력프로젝트 - LSC 시스템즈

2020년도 성균관대학교 산학협력프로젝트, 2020.04 ~ 2020.12
Machine learning-based anomaly detection for smart factory


📚 Description

추가 문서화 예정


🔨 Guideline

git을 설치한 후, clone 명령어를 이용해 해당 repository를 받으세요.

git clone https://github.com/2020-iuc-sw-skku/LSC-Systems

clone이 끝나면, data 폴더에 LSWMD.pkl을 받아주세요.

내용 추가 예정


👍 Contributors


📘 Reference

WM-811K(LSWMD)

Paper

[0] A Voting Ensemble Classifier for Wafer Map Defect Patterns Identification in Semiconductor Manufacturing
[1] Wafer Map Failure Pattern Recognition and Similarity Ranking for Large-Scale Data Sets
[3] Wafer Map Defect Detection and Recognition Using Joint Local and Nonlocal Linear Discriminant Analysis
[4] Wafer defect patterns recognition based on OPTICS and multi-label classification
[5] Decision Tree Ensemble-Based Wafer Map Failure Pattern Recognition Based on Radon Transform-Based Features
[6] Research on Image-Based Automatic Wafer Surface Defect Detection Algorithm

lsc-systems's People

Contributors

dotoleeoak avatar illuminoplanet avatar jinu-lee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

lsc-systems's Issues

OPTICS+denoise

주영이가 WM을 OPTICS로 변환시켜주는 함수를 짜주었고 변환된 이미지에서 넓이가 넓은 순서대로 3번째까지만 표현되도록 denoising하였다.

SVM

SVM 설명
SVM관련 sklearn 설명(은수)

image

  • 각 그룹에서 결정 경계에 가장 가까운 data들 사이 공간을 margin이라고 함
  • 위 이미지에서 A와 B모두 결정 경계가 될 수 있지만 두 그룹으로부터 margin이 최대인 A를 선택 -> 새로운 데이터가 입력될 때 오분류될 가능성을 최소화(overfiiting 최소화)

image

  • 위 이미지는 결정 경계를 기준으로 2개의 그룹으로 나뉘었지만 각 그룹에 다른 그룹의 data가 들어가있지만 정확히 분류하려면 Overfitting의 문제가 발생하므로 위와 같이 어느정도의 오차는 Overfitting을 줄이기 위해서 필요하다.

image

  • regularization(정규화 / 일반화)
    overfitting을 피하기 위한 확실한 대책은 training data를 늘리는 것이지만 많은 시간과 비용을 요구하며 이때 사용하는 방식이 regularization이다.
    Regularization은 일종의 penalty 조건에 해당하며 2번째 그림처럼 최적의 조건을 찾기 위해 사용되는 것이 정규화
    정규화를 통해 데이터 모델의 복잡성을 튜닝하여 언더피팅과 오버피팅의 트레이드 오프를 찾아내는 것

[5]번 논문 Radon-based Feature 개수 확인

(주영)
(1) 라돈 변환
(2) -15° 부터 15° 까지의 투영 결과 추출 → 31개의 1차원 데이터
(3) 각 1차원 데이터에서 Max (최댓값), Min (최솟값), Average (평균), Standard
Deviation (표준편차) 추출 → 31x4 = 124 개의 특성

124 개의 특성
= Max 31개 + Min 31개 + Average 31개 + Standard Deviation 31개

Performance Evaluation

image

실제 정답과 분류 결과에 따른 4가지 경우

  • True Positive(TP) : 실제 정답 – T / 분류 결과 – T (O)
  • False Positive(FP) : 실제 정답 – F / 분류 결과 – T (X)
  • False Negative(FN) : 실제 정답 – T / 분류 결과 – F (X)
  • True Negative(TN) : 실제 정답 – F / 분류 결과 – F (O)
  1. Accuracy (정확도)

image

  1. Precision (정밀도)

image

  1. Recall (재현율)

image

  1. F-measure (Precision, Recall 조화평균)

image

  1. AUC (Area Under Curve)

다음은 Recall, Fallout(실제정답이 False인 것 중에서 분류결과가 True인 비율)의 변화를 시각화한
ROC (Receiver Operation Characteristic) curve
image
x축 : Fallout, y축 : Recall
좌측 상단으로 그래프가 가까울수록 높은 성능을 의미
그래프 아래의 면적 값이 AUC이고, 최댓값은 1이며 1에 가까울수록 높은 성능을 의미

CNN

논문에 나온 여러 CNN(Convolutional Neural Network) 모델의 구현과 정확도 등

공정택 교수님이 올려주신 논문들 정리중.. 구현 예정

Geometry-based Feature

Comparison of Geometry-based Feature of Paper [0] and Notebook

[0]번 논문:

Most salient region (가장 두드러진 부분): 면적이 가장 큰 구성요소를 선정

Perimeter (둘레).
Area (면적)
Length of minor axes (단축의 길이)
Length of major axes (장축의 길이)
Solidity (견고성)
Eccentricity (이심률)

Notebook:

Most salient region (가장 두드러진 부분): 면적이 가장 큰 구성요소를 선정
→ 서로 연결된 구성요소마다 다른 숫자로 라벨링 한 후 그중 최빈값을 찾고 이 값을 라벨로 가지는 부분만 남김

Perimeter (둘레) / Norm Perimeter (노름 둘레)
Area (면적) / Norm Area (노름 면적)
Length of minor axes (단축의 길이) / Norm Perimeter (노름 둘레)
Length of major axes (장축의 길이) / Norm Perimeter (노름 둘레)
Solidity (견고성)
Eccentricity (이심률)

  • Norm Perimeter (노름 둘레): sqrt(w^2 + h^2)
  • Norm Area (노름 면적): np.prod(x.shape)

차이점:

[0]번 논문과 달리 Notebook에서는 면적 및 길이 관련 요소에 대해 노름 값을 나눠주는 방식으로 정규화를 함.
이는 웨이퍼 맵 크기에 따른 부작용을 예방하기 위함으로 보인다.

단, [0]번 논문에서 정규화를 시도하지 않았는지는 불분명.
논문 내용에서 특별히 언급한 바가 없으므로 정규화를 하지 않았다고 추측할 뿐.

Cubic Interpolation

[0]번 논문과 Notebook interpolation 비교

[0]번 논문과 Notetbook코드의 interpolation 방법은 동일한 것으로 확인(진우)

def cubic_inter_mean(img):
    theta = np.linspace(0., 180., max(img.shape), endpoint=False)
    sinogram = radon(img, theta=theta)
    xMean_Row = np.mean(sinogram, axis = 1)
    x = np.linspace(1, xMean_Row.size, xMean_Row.size)
    y = xMean_Row
    f = interpolate.interp1d(x, y, kind = 'cubic')
    xnew = np.linspace(1, xMean_Row.size, 20)
    # 아래에서 100으로 나눈 이유는 overfitting을 막기 위해서이다
    ynew = f(xnew)/100   # use interpolation function returned by `interp1d`
    return ynew

def cubic_inter_std(img):
    theta = np.linspace(0., 180., max(img.shape), endpoint=False)
    sinogram = radon(img, theta=theta)
    xStd_Row = np.std(sinogram, axis=1)
    x = np.linspace(1, xStd_Row.size, xStd_Row.size)
    y = xStd_Row
    f = interpolate.interp1d(x, y, kind = 'cubic')
    xnew = np.linspace(1, xStd_Row.size, 20)
    # 아래에서 100으로 나눈 이유는 overfitting을 막기 위해서이다
    ynew = f(xnew)/100   # use interpolation function returned by `interp1d`
    return ynew 

HMM

은닉마코프모델 (설명)
높은 성능은 기대되지 않지만 시도해보기로...
앙상블 기법 적용도 가능할 듯?

Gray Features

Gray features는 이미지의 컬러 색상을
흑백 색상으로 변환시켜주는 grayscale 변환을 통해 얻음

image
(grayscale 변환 과정을 거친 이미지)

image
(Local의 이미지와 히스토그램)

히스토그램의 x좌표는 0부터 255까지의 픽셀 값,
y좌표는 이미지에서 각 픽셀 값을 갖는 픽셀의 수

Angle-based Features

Divide the wafer map in radial shape then get the density of each sector. Following features will be extracted:

  1. Density of each sector
  2. Proportion of failure points in each sector comparing to whole
  3. Density of each sector sorted
  4. Proportion of failure points in each sector comparing to whole sorted

Distance-based Features

Align the failure points according to their Euclidean distance from the center. Then extract following features:

  1. Frequency by the interval of distance, 10 bins were made but was cubic interpolated to extract 20 features
  2. Mean
  3. Standard Deviation
  4. Max
  5. Min
  6. Arg max
  7. Arg min

Altogether 26 features were extracted.

LNPP accuracy

image
(Defect detection results of LNPP-based H chart)
image
(Defect detection rates (%) of LNPP-based H chart)

97.3% 확인

단, 이는 단순히 정상 웨이퍼 맵과 비정상 웨이퍼 맵을 구분할 때 얻는 정확도.
LNPP만으로는 비정상 웨이퍼 맵의 라벨까지는 확인 불가 -> JLNDA 사용

LNPP는 JLNDA를 사용하기 위한 준비 단계에 가까움.
즉, LNPP와 JLNDA의 정확도를 비교하는 것은 무의미.
LNPP와 PCA를 서로 비교하는 것이 바람직.

Wafer Map Similarity Ranking

WMSR은 주어진 웨이퍼 맵과 유사한 웨이퍼 맵을 검색하는데 사용됨. 유사한 결함 패턴을
가지면 동일한 결함 원인을 갖는 경향이 있어서 근본 원인을 식별하는데 도움이 됨.

• 1 단계 : 추출된 특징의 유클리드 거리를 기반으로 상위 n개의 웨이퍼 맵을 검색
• 2 단계 : 1위 후보에서 상위 n개 후보 순위 결정
2D 정규화 된 상관계수(즉, 이미지 처리 분야에서 템플릿 매칭으로 알려짐)에 기초

image

(25)에서의 유사성 점수가 모든 후보 웨이퍼 맵에 대해 계산 된 후,
유사성 점수는 내림차순으로 정렬되어 유사성 순위 획득.

Physics-based Features

Physical properties of the wafer map if each failure points are assumed as point-like mass. Following features will be extracted:

  1. Distance of the center of mass from the center
  2. Moment of inertia when regarding the center as the rotational axis

Weighted mean

연립방정식으로 확인 결과,
평균을 구할 때 전체 대비 비율만큼 가중치를 둔 것을 확인할 수 있었음.

ex) LR의 Precision
image

다른 항목도 계산시 거의 비슷한 수치가 나옴.
(표에서는 소수점 자릿수 문제로 완벽하게 같게 나오진 않음)
None의 크기가 상대적으로 매우 크기 때문에, None의 분류결과가 좋으면 전체 정확도가 매우 높아짐
=> 크게 신뢰할만한 수치가 아님.

Denoise

noise는 defect recognition에 도움을 별로 주지 못하기 때문에 denoise

Texture Feature/ Denoising

Texture feature
on paper [3]

Using GLCM(Gray Level of Co-occurrence Matrix)

skimage.feature.greycomatrix
skimage.feature.greycoprops

measure type: contrast, energy, correlation, dissimilarity, ASM, homogeneity

my option) distance: 1 / angle: 0,45,90,135

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.