이미지 인식으로 불량 품질의 자재(재료)를 제거하여 수율 향상
[ 고지 사항 (Disclaimer) ]
본 컨텐츠는 AI의 제조업 적용을 위한 이해와 스터디를 위해 제작, 제공된 것입니다. 만약 원본 내용과 컨텐츠 상에서 차이나 불일치가 있을 경우 원본이 우선합니다. 또한 한글 번역문과 영어 원문에 차이나 불일치가 있을 경우(번역의 지체로 인한 경우 등 포함), 영어 원문이 우선합니다. 또한 본 컨텐츠는 고객 사이의 어떠한 계약에도 속하지 않으며 계약을 변경하지도 않습니다.
본 문서는 Quality inspection in manufacturing using deep learning based computer vision 내용에 기반하여 작성 되었습니다.
제조 산업 자동화 :
오늘날 제조업의 자동화 수준이 높아짐에 따라 자재 품질 검사도 인력 개입이 거의 없이 자동화되어야 합니다. 자동화를 통한 품질 검사에서 사람 레벨의 정확도 이상에 도달하는 것이 추세입니다. 현대 산업 기업은 경쟁력을 유지하기 위해 자동화를 통해 양과 품질을 모두 달성하려고 노력하고 있습니다. 이 게시물은 사용자가 딥 러닝의 활용 사례를 살펴보고 최적의 성능을 얻기 위해 전체 스택(알고리즘, 추론 프레임워크 및 하드웨어 가속기)을 최적화할 필요성을 보여줍니다.
품질 검사를위한 딥 러닝 :
제조업체의 산업 표준 품질 검사관은 대개 제품 제조 후 제품 품질을 검사하기 위해 시간이 많이 소요되는 수동 작업이며 거부된 제품 때문에 업스트림 공장 용량, 소모품, 인건비 및 비용이 낭비됩니다. 인공지능의 현대적 추세에 따라 산업 기업들은 생산 주기 자체 동안 심층 학습 기반의 컴퓨터 비전 기술을 사용하여 재료 품질 검사를 자동화하는 방안을 모색하고 있습니다. 공장 용량, 인건비 등을 최적화하는 동시에 인간의 개입을 최소화하는 것을 목표로 합니다. 딥 러닝의 용도는 자율주행차의 물체 감지부터 의료 영상 심층 학습을 통한 질병 감지까지 다양합니다.
딥 러닝이란 무엇입니까?
딥 러닝은 딥 구조화되고 구조화되지 않은 데이터 표현을 학습하는 분야입니다. 딥 러닝은 데이터가 크고 복잡 할 때 더 나은 결과를 추출하기 위해 AI의 추세가 증가하고 있습니다. 딥 러닝 아키텍처는 입력 레이어, 숨겨진 레이어 및 출력 레이어와 같은 딥 레이어의 신경망으로 구성됩니다. 숨겨진 계층은 복잡한 데이터 구조를 이해하는 데 사용됩니다. 복잡한 작업을 수행하기 위해 신경망을 프로그래밍 할 필요는 없습니다. 기가 바이트에서 테라 바이트에 이르는 데이터는 신경망 아키텍처에 공급되어 스스로 학습합니다. 아래의 심층 신경망 샘플 :
Convolution neural Network(CNN, 컨볼루션 신경망) :
Convolution 신경망은 영상 분석에 일반적으로 적용되는 심층 신경망의 종류입니다. Convolution 레이어는 결과를 다음 레이어로 전달하는 입력에 convolution 작업을 적용합니다. 예를 들어 1000 x 1000 픽셀의 이미지는 100만 개의 피쳐를 가집니다. 만약 첫번째 숨겨진 층이 1000개의 뉴런을 가지고 있다면, 그것은 첫번째 숨겨진 층 다음에 10억개의 특징들을 가지게 됩니다. 이렇게 많은 기능을 가지고 있기 때문에 신경 네트워크가 더 적은 데이터로 오버피팅되는 것을 막기가 어렵습니다. 수십억 개의 기능을 가진 신경망을 훈련시키기 위한 컴퓨터 및 메모리 요구사항은 엄청납니다. convolution 작업은 사용 가능한 기능의 수를 줄이고 더 적은 기능으로 네트워크를 더 깊이 있게 하기 때문에 이 문제를 해결할 수 있습니다. 완전히 연결된 레이어에 비해 Convolution 레이어를 사용할 경우 두 가지 주요 이점이 있습니다. 즉, 파라미터 공유와 연결 간격입니다.
Convolution 신경 네트워크는 이미지에서 패턴을 찾습니다. 이미지는 더 작은 매트릭스로 결합되고 이 Convolution은 이미지에서 패턴을 찾습니다. 처음 몇 개의 레이어는 선/모서리/에지 등을 식별할 수 있으며, 이러한 패턴은 보다 복잡한 피쳐를 인식하기 위해 더 깊은 신경 네트워크 레이어로 전달됩니다. CNN의 이런 속성은 이미지에서 사물을 식별하는 데 매우 유용합니다.
Convolution 신경 네트워크(ConvNeta)는 계층의 순서에 지나지 않습니다. ConvNet 아키텍처를 구축하는 데 세 가지 주요 계층 유형이 사용됩니다. Convolutional Layer, Pooling Layer 및 Fully-Connected Layer입니다. 이러한 계층은 완전한 ConvNet 아키텍처를 형성하기 위해 쌓인 계층입니다.
Image Source: http://cs231n.github.io/convolutional-networks/
아래 이미지는 Convolution 레이어의 개념을 설명합니다.
아래 이미지는 풀링 계층 (평균 또는 최대 풀링)의 개념을 설명합니다.
다음은 원래 CNN 아키텍처 중 하나입니다.
CNN 시각화 :
다음은 평평한 표면에 균열이있는 이미지입니다.
위의 균열 이미지에 LENET-5 아키텍처와 유사한 Conv(하나의 3X3 필터), ReLU 및 Max Pooling(2X2)의 각 레이어가 적용됩니다. CNN 아키텍처가 균열 구역의 블록과 표면 전체에 걸친 확산에 초점을 맞추고 있다는 것을 아래에서 확인할 수 있습니다.
사례 연구 :
업무 기밀을 유지하기 위해 다음과 같은 추상 사용 사례를 제시합니다.
문제 설명 :
하드웨어 제조에서 불량 재료를 감지하는 것은 오류가 발생하기 쉽고 시간이 많이 걸리는 수동 프로세스이며, 잘못된 긍정(불량 물질을 양호한 것으로 감지)을 초래합니다. 생산 라인의 끝에서 결함이 발견되면 업스트림 노동력, 소모품, 공장 용량 및 매출에서 손실이 발생합니다. 반면, 감지되지 않은 불량 부품이 최종 제품에 들어갈 경우 고객 영향과 시장 반응이 동반될 수 있습니다. 이로 인해 조직의 평판에 회복 불가능한 손상이 발생할 수 있습니다.
요약 :
Seagate는 딥 러닝을 통해 하드웨어 제품에 대한 결함 감지를 자동화했습니다. 하드웨어 제조 공정 중에 이러한 긁힘/균열로 인해 생산 라인의 다음 공정에서는 제품을 사용할 수 없게 될 수 있습니다. Seagate의 딥 러닝 애플리케이션은 사람 수준 정확도와 열 지도로 영상의 결점 영역을 해석할 뿐만 아니라 균열/ 긁힘과 같은 결점을 밀리초 단위로 감지했습니다.
딥 러닝 아키텍처의 세부 사항 :
상황을 더 잘 설명하기 위해 아래 칩이 내장된 회로 보드의 예시 이미지를 사용하고 있습니다.
첫 번째 접근법 :
원래 컴퓨터 이미지에서 관심 영역 (ROI)을 추출하기 위해 순수한 컴퓨터 비전 접근법 (비 머신 러닝 방법)과 ROI의 결함을 감지하기위한 순수한 딥 러닝 접근법의 조합을 채택했습니다.
DL 전에 ROI 추출이 필요한 이유?
이미지를 캡처하는 동안 카메라 어셈블리, 조명 등이 회로 전체 영역에 초점을 맞췄습니다 (아래 이미지 예). 칩 영역에만 결함이 있는지 검사하고 회로의 다른 영역은 검사하지 않습니다. 신경망이 전체 영역이 아닌 관심 영역에만 집중할 때 DL 정확도가 크게 증가한다는 몇 가지 실험을 통해 발견했습니다.
- 먼저 Computer Vision (비 기계 학습 방법)으로 “관심 영역 (ROI)”을 추출하십시오. 여기서는 그레이 스케일링, 침식, 확장, 이미지 닫기와 같은 변환과 같은 이미지에 대한 여러 프로세스를 거쳐 결국 유스 케이스 유형 / 제품 유형 등에 따라 이미지에서 ROI를 곡선 화 합니다. 침식의 기본 아이디어 마치 토양 침식과 같습니다. 전경 물체의 경계를 침식합니다. 확장은 침식과 반대입니다. 전경 개체의 크기가 증가합니다. 일반적으로 노이즈 제거와 같은 경우 침식 후 팽창이 발생합니다. 개방은 침식과 팽창의 또 다른 이름 일뿐입니다. 노이즈를 제거하는 데 유용합니다. 폐쇄는 개방, 팽창, 침식의 역전입니다. 전경 개체 내부의 작은 구멍이나 개체의 작은 검은 점을 닫는 데 유용합니다. 그라디언트 변환은 이미지의 확장과 침식의 차이입니다. 전반적으로 이러한 단계는 원본 이미지에서 거의 눈에 띄는 균열 / 스크래치를 여는 데 도움이됩니다. 아래 그림을 참조하십시오.
- 둘째, Inception Net (일명 Google Net), Res Net, Dense Net과 같은 입증 된 CNN 토폴로지를 사용하여 딥 뉴럴 네트워크 (CNN (deep neural network) 기반 모델)를 사용하여 결함을 감지합니다.
최적의 아키텍처를 찾기 위해 실험이 필요한 다른 영역도 있습니다.
- 데이터 기능 보강 : 결함으로 분류 된 독특한 이미지가 수천 개이고 좋은 이미지로 분류 된 수천 개가 있습니다. 훈련 세트를 과도하게 맞추지 않기 위해서는 확대가 중요합니다. 우리는 X 무작위 자르기와 Y 회전을 수행했습니다 (원본 이미지 1 개는 X * Y 증강 이미지). 기능 보강 후 X * Y 천개의 결함 이미지와 X * Y 천의 좋은 이미지가 있습니다. 이 맥락에서 원본 CNN 논문 중 하나를 참조 하십시오. https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
- CNN 토폴로지의 초기화 전략 :
아래 그림과 같이 최종 연결된 레이어를 자체 FC 레이어 및 sigmoid 레이어 (이진 분류)로 교체했습니다.
각 계층에서 가중치를 무작위로 초기화하는 대신 각 CNN 토폴로지에 대해 ImageNet 초기화를 고려한 것보다 ImageNet 초기화를 사용할 때 DL 정확도가 무작위보다 크게 증가했습니다.
- 손실 기능 및 최적화 프로그램 :
교차 엔트로피 손실 : 교차 엔트로피 손실 또는 로그 손실은 출력이 0과 1 사이의 확률 값인 분류 모델의 성능을 측정합니다. 예측 된 확률이 실제 레이블에서 벗어날 때 교차 엔트로피 손실이 증가합니다. 따라서 실제 관측 레이블이 1 일 때 확률 0.01을 예측하는 것은 좋지 않으며 손실 값이 높습니다. 완벽한 모델의 로그 손실은 0입니다.
SGD와 Nesterov momentum : SGD 또는 확률적 그라디언트 디센트는 차별화 가능한 객관 함수 (손실 기능)를 최적화하는 반복적 방법입니다. 데이터에서 무작위 샘플을 사용하여 그라디언트 디센트 업데이트를 수행하기 때문에 확률적입니다. 모멘텀은 그라디언트의 이동 평균이며 네트워크의 가중치를 업데이트하는데 사용되며 올바른 방향으로 그라디언트를 가속화하는데 도움이 됩니다. Nesterov는 최근 인기를 얻고있는 운동량의 버전입니다.
두 번째 접근 방식 :
첫 번째 접근 비판 : 관심 영역을 추출하는 동안 제품 유형, 회로 보드 유형 / 칩 유형 (추상 예제의 경우), 카메라 설정 / 방향 등이 변경 될 때마다 코드를 다시 작성해야합니다.
해결 방법 : 엔드-엔드 2 단계 DL 아키텍처를 구축했습니다. 첫 번째 단계에서는 CV 방식 대신 DL 방식을 사용하여 ROI 자체를 예측했습니다. 경계 상자 도구를 사용하여 레이블이 지정된 데이터 세트를 수동으로 작성했으며 DL 아키텍처를 학습하여 ROI를 예측할 수 있습니다. 이 기술의 한 가지 단점은 심층 신경망이 보이지 않는 이미지에서 잘 일반화 될 수 있도록 레이블이 지정된 데이터 세트가 모든 제품 유형 (이 예제에서는 회로 보드 유형 / 칩 유형)을 포함 할 수있을 정도로 명확하고 광범위해야한다는 것입니다. 아래 그림을 참조하십시오.
- CNN ROI 발생기 손실 기능 :
처음에는 다음과 같이 제곱 거리 기반 손실 함수를 사용했습니다.
유효성 검사 세트에서 20 에포크에 대한 Resnet50 모델을 훈련 한 후 평균 누락 영역 및 IOU에서 다음 유효성 검사 메트릭을 달성했습니다.
Ave. missed area = 8.52 * 10–3
Ave. IOU (intersection over union) = 0.7817
여기서 최소한 IOU를 개선하고 싶습니다
여기에 면적 기반 손실을 생각해 냈습니다. 아래 그림을 참조하여 기본 수학을 사용하면 사실과 예측 레이블 사이의 교차 영역을 계산하는 방법에 대한 아이디어를 얻으십시오.
위의 손실 함수는 차별화 가능하므로 손실 함수에 대해 경사 하강 최적화를 수행 할 수 있습니다.
CNN ROI 생성기 기능 보강 : 예상 ROI에 대한 교육 시간 및 테스트 시간 동안 단순히 5 % (왼쪽 및 오른쪽) 여백을 추가했습니다.
CNN ROI 생성기 결과 : 위에서 설명한대로 영역 기반 손실에서 Resnet50 (ImageNet 초기화) 토폴로지 및 SGD + Nesterov 모멘텀 옵티마이저를 = 2, = 1로 사용했습니다. 20 에포크에 대한 훈련 후 우리는 검증 세트에 대해 다음을 달성했으며, 면적 기반 손실 및 확대로 누락 된 영역 및 IOU에 대한 검증 메트릭을 개선했습니다 (위에서 설명 함).
Ave. missed area = 3.65 * 10–3
Ave. IOU (intersection over union) = 0.8577
실험 및 벤치 마크 :
- 총 이미지 수 : 수천 이미지
- 데이터 분할 : 고유 한 이미지 만 사용하여 80에서 10에서 10으로 분할
- 사용 된 프레임 워크 : PyTorch & Tensorflow / Keras
- 가중치 초기화 : ImageNet에서 사전 훈련
- 옵티 마이저 : 학습 속도 = 0.001 인 SGD, 운동량 = 0.9 인 Nesterov 사용
- 손실 : 교차 엔트로피
- 배치 크기 : 12
- 총 에포크 수 : 24
- 이미지 모양 : 224x224x3 (299x299x3이 필요한 Inception V3 제외)
- 기준 : 최저 검증 손실
두 가지 접근 방식이 모두 포함 된 벤치 마크는 상당히 비슷하며 CV + DL (첫 번째) 접근 방식의 결과는 DL + DL (두 번째) 접근 방식보다 약간 나쁩니다. 광범위하고 명시적인 레이블이 지정된 경계 상자 데이터 집합을 만들 수 있으면 DL + DL이 더 나을 수 있습니다.
교육을 성공적으로 마치면 전체 엔드 투 엔드 솔루션을 완성하는 추론 솔루션을 찾아야합니다. 우리는 Intel OpenVino 소프트웨어를 사용하여 FPGA, Intel Movidius 등과 같은 CPU 이외의 다른 유형의 하드웨어에서 추론을 최적화 했습니다.