클래식 CV 템플릿 일치에 대한 육안 검사 작업에 컨볼 루션 NN을 사용하는 이유는 무엇입니까?


9

우리가 작업하고있는 프로젝트를 바탕으로 흥미로운 토론을했습니다. 왜 템플릿 매칭 알고리즘보다 CNN 육안 검사 시스템을 사용합니까?

배경 : 특정 유형의 물체가 "깨지거나"결함이 있는지 여부를 감지하는 간단한 CNN 비전 시스템 (웹캠 + 랩톱)의 데모를 보여주었습니다.이 경우에는 PCB 회로 보드입니다. 내 CNN 모델에는 정적 배경에서 적절하고 파손 된 회로 기판 (각각 약 100 개 이미지)의 예가 표시되었습니다. 우리의 모델은 사전 훈련 된 VGG16 (imagenet)의 처음 몇 개의 conv / maxpool 레이어를 사용한 다음 몇 개의 밀도를 가진 훈련 가능한 conv / pool을 몇 개 더 추가하여 분류를위한 dim-3 1 개의 핫 인코딩 된 벡터 출력을 생성했습니다. : (is_empty, has_good_product, has_defective_product).

이 모델은 매우 쉽게 훈련되었으며 99 % 검증에 도달했습니다. 또한 데이터 세트가 작다는 것을 알기 때문에 다양한 데이터 확대에 대해 교육했습니다. 실제로는 10 개 중 9 회 정도 작동했지만 동일한 회로 보드의 몇 가지 임의의 변환 / 회전으로 인해 때때로 반대 클래스에 배치 될 수 있습니다. 아마도보다 적극적인 데이터 확대가 도움이되었을 것입니다. 어쨌든 프로토 타입 컨셉 프로젝트는 기뻤습니다.

이제 우리는 다른 엔지니어와 그의 동료에게 발표했고, 그는 NN이 너무 과도하다는 주장을 제기했습니다. 템플릿 일치 만 사용해야하는데 왜 CNN을 원할까요?

특정 응용 프로그램 (예 : 검사 할 다른 부품)에서 접근 방식이 더 나은 이유에 대해서는 큰 답을 얻지 못했습니다. 우리가 제기 한 몇 가지 사항 :

1) 불확실성 (예 : 데이터 확대)

2) 온라인 학습을 통해 시스템을 개선 할 수 있습니다 (예 : 사람이 소프트웨어에 잘못된 예를 알려줄 수 있음)

3) 기존의 컴퓨터 비전 알고리즘에서와 같이 임계 값을 설정할 필요가 없습니다. 이러한 유형의 검사 작업에 CNN 시스템의 장점이 더 있다고 생각하십니까? 어떤 경우에 템플릿 일치보다 낫습니까?

심층 NN이 작업 기술이 될 수있는 경우에 대한 몇 가지 무작위 아이디어 : 입력의 일부로 3D 심도 감지가 필요한 시스템 또는 변형 / 스트레칭 / 정지 될 수 있지만 여전히 "좋은"모든 유형의 개체 결함이 없음 (예 : 박제 된 동물, 전선 등). 당신의 생각을 듣고 궁금합니다 :)


나는 딥 러닝 접근법을 좋아하고 미래에 있다는 것을 알고 있습니다. 그러나 고정밀 결과가 필요할 때 정확한 회전과 정확한 스케일을 말하면 템플릿 일치는 여전히 더 나은 결과를 제공합니다. 0.1도 / 스케일 팩터 오류 이하에 대해 이야기하고 있습니다. 딥 러닝은 "최상의"결과에 대한 "확률"을 계속 제공하므로 높은 정밀도가 필요할 때 충분하지 않습니다. 딥 러닝을 사용하여 이러한 정확도를 얻는 방법을 찾고 싶지만 여전히 알고리즘을 찾을 수 없습니다. 딥 러닝을 이용한 고정밀 템플릿 매칭. 나는 어떤 의견 / 제언을 받거나
Pablo Gonzalez

답변:


3

응용 프로그램에 대한 기존 CV 방법을 제안한 문제의 엔지니어는 습관을 잃었습니다. 템플릿 일치를 사용하는 것은 매우 구식이며 성능이 매우 떨어지는 것으로 나타났습니다. 그러나 데이터 세트의 크기에 따라 CNN이 과도하다고 생각합니다.

템플릿 일치는 어떻게 작동합니까?

템플릿 일치 는 이미지에서 창을 슬라이드하여 템플릿과 일치 하는 비율을 제공합니다. 퍼센트 일치가 미리 정의 된 특정 임계 값을 초과하면 일치하는 것으로 간주됩니다. 예를 들어 개 이미지가 있고 이미지에 개가 있는지 확인하려는 경우 개 이미지를 전체 이미지 영역 주위로 슬라이드하고 일치하는 비율이 충분히 큰지 확인합니다. 템플릿 이 이미지와 동일하게 겹치도록 해야하므로 성능이 매우 저하 될 수 있습니다 . 실제로 그 가능성은 무엇입니까? 그리 높지 않습니다.

당신이 찾고있는 것을 정확히 알고 주어진 클래스의 모든 예제에서 거의 동일하게 나타날 것이라고 확신한다면, 유일한 템플릿 매칭은 충분한 기술입니다.

기계 학습을 대신 사용하는 이유는 무엇입니까?

머신 러닝 기술은 엄격하지 않습니다. stmax가 말한 것과 달리 CNN은 데이터 세트를 매우 잘 일반화 할 수 있습니다 . 그래서 그들은 매우 강력합니다. 개 예제를 사용하여 CNN은 개로서 무엇이 구성되는지 이해하기 위해 존재하는 모든 개 그림을 볼 필요는 없습니다. 당신은 구글 검색에서 1000 이미지를 보여줄 수 있으며, 알고리즘은 당신의 개가 실제로 개임을 감지 할 수 있습니다. 머신 러닝 알고리즘이 일반화되어 있다는 사실은 모든 고대 CV 기술을 대체 한 이유입니다. 이제 문제는 CNN을 훈련시키는 데 필요한 데이터의 양입니다. 그들은 매우 데이터 집약적 입니다.

저는 100 개의 데이터 포인트가 강력한 CNN을 훈련시키기에 충분하다고 생각하지 않습니다. 편향을 제한하기 위해 모델의 깊이가 복잡하기 때문에 예제 수를 늘려야합니다. 일반적으로 깊은 모델의 경우 모든 기능에 대해 100 개의 예제를, 얕은 모델의 경우 모든 기능에 대해 10 개의 예제를 제안합니다. 실제로는 모든 기능 공간에 따라 다릅니다.

내가 제안하는 것.

당신이 진정으로하고있는 것은 이상 탐지 입니다. 그렇지 않으면 좋은 모양의 PCB에 대한 많은 예제가 있습니다. 깨진 것들을 감지하려고합니다. 따라서 몇 가지 이상 탐지 방법을 시도합니다. 그것들은 구현하기가 훨씬 간단하며 특히 기울어 진 데이터 세트에서 얕은 모델을 사용하여 좋은 결과를 얻을 수 있습니다 (1 클래스가 초과 표시됨).


포괄적 인 의견에 감사드립니다! 이상 탐지를 설명하는 프로젝트 또는 논문의 예를 제공 할 수 있습니까? 건배
JDS

1
다음은 이상 탐지 V. Chandola, A. Banerjee 및 V. Kumar, "이상 탐지 : 설문 조사", ACM Computing Surveys, vol. 41 번 3, p. 15, 2009
JahKnows

5

대답은 작업에 따라 다릅니다. 템플릿 일치는 일부 작업에는 적용 할 수 있지만 모든 작업에는 적용되지 않습니다. CNN은 잠재적으로 템플릿과 일치하지 않는 보이지 않는 입력으로 일반화 할 수 있으므로 잠재적으로 더 일반화 할 수 있습니다.

그러나 CNN이 템플릿 일치를 능가하는지 여부는 특정 작업과 달성하려는 목표에 따라 다릅니다. 이것은 실험적인 과학이다. 궁극적으로, 어느 쪽이 더 효과가 좋은지 알아내는 방법은 둘 다 시도해 보거나 시도한 다른 사람에게서 배우는 것입니다 (예 : 문학을 읽음). 실제 데이터에 대한 경험적 평가를 대신 할 이론이나 분류법을 찾을 것이라고 생각하지 않습니다.


5

NN (및 기타 분류 방법)에서 발생할 수있는 한 가지 문제점은 특정 결함 만 표시했기 때문에 향후 발생할 수있는 완전히 새로운 / 아직 보이지 않는 결함에 대응하는 방법을 모를 수 있다는 것입니다.

NN이 "결함이없는 PCB처럼 보이지 않는 것은 결함이있는 PCB"를 배우기를 원합니다. 그러나 "불완전한 PCB처럼 보이지 않는 것이 결함이없는 PCB"라는 것을 알게된다면 어떨까요?

임의의 위치에 작은 흰색 점 (또는 다른 작은 교란)을 추가하여 신경 결함이없는 PCB의 일부 이미지를 수정하고 신경망이 이러한 수정 된 이미지를 분류하도록 할 수 있습니다. 분명히 결함으로 분류해야합니까? 그러나 이전에는 그러한 결함을 본 적이 없기 때문에 일부 (또는 상당히 많은)를 놓칠 것입니다.

완전히 새로운 결함을 탐지하기 위해서는 이상 탐지 방법 / 한 개의 분류 기가 더 신뢰할 수 있습니다.

DW가 말했듯이 두 가지 방법을 모두 시도하고 어느 것이 더 잘 작동하는지 알아 내야합니다. 완전히 새로운 결함이 포함 된 테스트 세트를 갖추어야합니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.