학습 세트, 검증(Validation) 세트, 테스트 세트 준비
VisionPro Deep Learning에서 High Detail 도구 트레이닝 시, 먼저 3가지 이미지 데이터세트가 필요합니다: 트레이닝 세트, validation 세트, 테스트 세트입니다.
트레이닝 세트 준비
VisionPro Deep Learning 도구는, 네트워크 데이터를 공급하고 기계가 학습된 데이터로부터 어떠한 것을 달성할 수 있는지 추론하도록 가르치는 딥러닝에 기반하고 있습니다. 그러므로, 네트워크에 공급되는 데이터가 극히 중요합니다. 사용자가 네트워크 학습 단계에 영향을 주기 위해 할 수 있는 가장 큰 일은 학습 이미지 Set의 구성입니다. 다시 말해서, "쓰레기를 입력으로 넣으면, 쓰레기가 결과로 나온다"라는 기계 학습 분야에서 유명한 격언이 VisionPro Deep Learning 도구 학습 시에도 마찬가지로 적용됩니다. 적절하게 라벨링된 유의미한 이미지들이 신경망에 들어가면 학습 결과는 매우 좋을 수도 있지만, 만약 그렇지 않다면 좋은 결과를 얻을 확률은 거의 없습니다. 그래서, "내가 네트워크에 무엇을 학습시키고 있는가?"라는 질문을 스스로 해봐야 합니다.
사용자가 네트워크에 학습시키는 것은 학습 Set에 기초합니다. 학습 Set는 사용자가 네트워크에 공급하는 데이터를 대표합니다. VisionPro Deep Learning 도구에서 이미지는 도구를 학습시키기 위해 이용되는 데이터 Set의 근간입니다. 딥러닝에서는 방대한 데이터가 시스템에 공급되며, 시스템은 우리가 달성하고자 하는 바가 무엇인지 데이터로부터 추론합니다. 그러므로, 데이터(이 context에서는 이미지)가 극히 중요합니다.
딥러닝의 영역에서, 트레이닝 이미지 Set는 네트워크에 전달되는 데이터를 대표합니다. 트레이닝 이미지 Set를 구성할 때 다음을 검토하십시오.
-
트레이닝 이미지 Set가 런타임 이미지를 대표하는가? 여기에는 다음이 포함됩니다.
- 조명 – 조명의 변동이 있다면, 트레이닝 Set는 런타임에 예상되는 조명의 변동을 포함해야 합니다.
- 컬러 – 런타임에 부품의 컬러이 변경될 것입니까? 그렇다면, 모든 컬러 변동을 포함해야 합니다.
- 회전/크기 – 부품이 카메라 앞에 올 때, 회전되거나 크기가 조정됩니까? 그렇다면, 이러한 변동도 포함해야 합니다.
- 부품별 변동 – 검사되는 부품에 미묘한 변동이 있다면, 이러한 변동도 트레이닝 Set에 포함해야 합니다.
- 배경 – 부품 이미지는 책상에서 캡처되는 경우가 많습니다. 하지만, 실제 부품은 컨베이어 벨트에서 이동하는데, 이는 Deep Learning 도구의 입장에서는 훨씬 흥미 있는 배경입니다. 이러한 경우에는, 트레이닝 Set를 컨베이어 벨트에서 얻어야 합니다. 또한, 배경이 검사에 중요하지 않다면, 마스크로 지울 수 있습니다. 배경을 마스크로 지우면, 네트워크에게 관련 없는 정보에 대한 교육을 시키지 않아도 되므로 일반적으로 성능이 향상됩니다.
- 트레이닝 이미지 Set가 충분한 데이터를 제공하는가? Deep Learning 도구 프로그래밍 시 많이 발생하는 문제는, 이미지와 데이터를 더 많이 제공한 후 도구를 다시 트레이닝시킴으로써 해결할 수 있습니다.
이미지 샘플 Set 생성
이미지를 수집하고 나면, 이들을 이미지 샘플 Set로 정리할 수 있습니다. 이미지 샘플 Set는 이미지 데이터베이스를 관리하고 정리하는 데 유용한 메커니즘을 제공합니다. 이미지 Set를 이용하면 이미지 모음을 트레이닝, 테스트, 실험, 검증에 이용할 수 있는 범주로 나눌 수 있습니다. 이 Set들은 사용자가 정의한 특정 유형의 이미지에 도구를 적용함으로써, 결과에 확신을 갖는 데 도움이 됩니다.
예를 들어, 이미지 데이터베이스를 다음과 같은 범주로 나눌 수 있습니다.
- 트레이닝 – 라인 1 (04082019)
- 트레이닝 – 라인 1 (04222019)
- 트레이닝 – 라인 2 (03292019)
- 테스트 – 라인 1 (04092019)
- 테스트 – 라인 2 (03302019)
- 테스트 – 불량 부품
트레이닝 Set 생성
이미지를 범주화하고 수집하면, 이미지 샘플 Set를 만들 수 있으며, 이를 학습 Set에 이용할 수 있습니다. 모든 도구의 기본 행태는 이미지 Set에서 무작위로 선택한 이미지 50%를 이용해 트레이닝하는 것입니다. 테스트/트레이닝 이미지 Set의 분리는 라벨 지정된 이미지 중 트레이닝과 테스트에 쓰이는 이미지의 비율을 말합니다. 기본 값으로 VisionPro Deep Learning은 학습 Set 다이얼로그에서 50%를 테스트 / 학습에 사용합니다. 하지만, 이는 응용 프로그램의 필요에 따라 변경할 수 있습니다.
학습 Set 선택 대화 상자는 VisionPro Deep Learning 도구를 학습하는 데 이용할 샘플의 구성을 결정할 때 이용합니다. 이를 위해서, 학습 Set 선택 대화 상자를 이용해 이미지 데이터베이스에 있는 모든 뷰 또는 하나 이상의 이미지 Set와 해당 이미지의 백분율에 기초해 도구의 학습 Set를 정의할 수 있습니다. 도구는 지정된 선택 백분율을 이용해 학습에 이용할 라벨 지정 이미지의 부분을 무작위로 선택하며, 나머지 이미지는 도구의 통계량을 계산하는 데 이용됩니다. 이는 나머지 이미지들은 자동적으로 테스트 Set가 됨을 뜻합니다.
뷰가 학습 Set에 속하는지 여부는 이미지 디스플레이 뷰 최상단 우측에 학습 표시기(아래 참조)로 표시됩니다.
- 도구를 학습하려면, 모든 뷰에 라벨을 지정해야 합니다.
- 도구를 학습하기 전에 이미지 샘플 Set를 설정하는 것이 이상적입니다.
- 각 스트림이 자체의 이미지 데이터베이스를 가지므로, 학습 Set는 스트림 수준에서 설정됩니다.
- 또한, Default Display Filters(기본 디스플레이 필터) "trained"를 이용해서도 트레이닝 플래그가 설정된 모든 뷰를 볼 수 있습니다.
학습 Set를 만드는 방법은 아래와 같습니다:
-
처음 도구를 추가할 때는, 아직 트레이닝 Set를 정의하지 않은 상태이며, 트레이닝 아이콘을 클릭하면, 다음을 볼 수 있습니다.
Note: 학습 아이콘을 클릭하기 전에, 먼저 하나 이상의 뷰에 라벨을 지정하십시오.
-
이렇게 하면 '학습 Set 선택' 대화 상자가 표시됩니다.
Note: 도구 매개변수에 있는 Edit 링크를 눌러도 '학습 Set 선택' 대화 상자를 실행할 수 있습니다. - 이전에 이미지 샘플 Set를 정의하지 않았다면, 모든 뷰에서 학습 Set 선택 옵션을 선택하십시오.
- 이어서 도구를 트레이닝하기 위해 트레이닝 Set에서 무작위로 선택할 라벨 지정된 이미지/뷰의 백분율을 결정하는 '선택'을 정의하십시오.
-
이전에 이미지 샘플 Set을 정의하였다면, 이미지 Set에서 트레이닝 Set 선택 옵션을 이용하십시오.
- 목록에서 이전에 정의된 이미지 샘플 Set를 선택하십시오.
-
도구를 트레이닝하기 위해 트레이닝 Set에서 무작위로 선택할 라벨 지정된 이미지/뷰의 백분율을 결정하는 '선택'을 정의하십시오.
Note: 이미지 Sets에서 트레이닝 Set 선택 옵션을 이용할 때는, 선택 백분율이 개별 Set의 백분율이 아니고, 선택한 이미지 Set들의 전체 이미지/뷰 개수에 기초합니다. 선택은 트레이닝되는 모든 클래스를 포함하도록 이루어집니다. 예를 들어, 3개의 트레이닝 이미지 Set가 있고, A는 20개 샘플, B는 10개 샘플, C는 40개 샘플(총 70개)이 있다고 하고, 사용자의 '선택' 기본값이 50%라고 한다면, 도구는 A에서 5개, B에서 8개, C에서 22개(총 35개의 뷰)를 무작위로 선택할 것입니다. - 확인 버튼을 눌러 학습 Set 구성을 수락하십시오.
-
학습 Set에 포함된 이미지는 이미지 디스플레이 뷰 최상단 우측에 표시됩니다.
트레이닝 Set 수정
트레이닝 Set를 생성하면, 데이터베이스에 이미지/뷰를 추가해도 이들은 트레이닝 Set에 포함되지 않습니다. 이는 트레이닝 Set 선택' 대화 상자에서 확인 버튼을 누르고 나면, 데이터베이스에 이미지/뷰를 추가해도 이들은 트레이닝 Set에 포함되지 않음을 뜻합니다. 이미 구성된 트레이닝 Set를 수정하는 방법은 몇 가지가 있습니다. 새로 추가된 이미지/뷰를 트레이닝 Set에 포함하고자 하면, '트레이닝 Set 선택' 대화 상자를 다시 열고 확인 버튼을 다시 누르십시오. 이렇게 하면 현재 트레이닝 Set가 폐기되고, 새로 무작위로 선택된 Set가 생성됩니다. 아래 방법을 이용해 수동으로 이미지/뷰를 추가할 수도 있습니다.
다음 중 한 가지 방법으로 트레이닝 Set에 이미지/뷰를 명시적으로 더하거나 삭제할 수 있습니다.
-
이미지 디스플레이 영역에서 이미지/뷰를 마우스 우클릭한 후, 이미 트레이닝 Set에 들어 있지 않은 이미지/뷰를 선택적으로 추가할 수 있고, 트레이닝 Set에서 이용된 것이라면 선택적으로 삭제할 수 있습니다.
]
-
디스플레이 필터를 이용한다면, View Browser의 'N 뷰 작업 메뉴 옵션'에서 트레이닝 세트에 뷰 추가 또는 트레이닝 세트에서 뷰 삭제를 이용하여 다수의 뷰를 트레이닝 세트에 추가하거나 트레이닝 세트에서 삭제할 수 있습니다.
-
데이터베이스 메뉴에서, 트레이닝 Set 선택 대화 상자를 열어도 됩니다.
Validation 세트 준비
Validation Set은 Green 분류 도구 및 Red 분석 도구의 High Detail 모드에서만 사용됩니다. Validation Set(검증 Set)이란 트레이닝 Set을 학습하여 일정 iteration(반복 연산) 마다 생성되는 모델을 평가하기 위한 데이터 셋입니다. 딥러닝 모델을 사람에 비유하자면, 실전 시험 이전에 모의고사를 푸는 개념과 비슷합니다. 학습 중 일정 iteration 마다 validation set의 예측 결과를 바탕으로 Loss를 계산하고 최저 Loss를 기록한 모델을 최종 모델로 선정합니다.
Validation Set Ratio(Validation Set 비율)
Validation Set Ratio은 Green 분류 도구, Red 분석 도구의 High Detail 모드에서만 사용됩니다. Validation Set 비율은 트레이닝 set으로 지정된 이미지 중 validation set으로 사용될 이미지의 비율입니다. 트레이닝 버튼을 클릭할 때마다 트레이닝 set에서 설정된 비율 만큼을 랜덤하게 뽑아 validation set으로 사용합니다.
테스트 Set과 Validation Set의 차이는 validation set은 학습 과정에 관여하지만 테스트 set은 전혀 관여를 하지 않는다는 것입니다. 테스트 Set은 오직 학습이 다 끝난 뒤에 일반적인 데이터에 대해 좋은 성능을 보이는 모델을 선택할 때만 사용됩니다. 예를 들면, validation set 없이 epoch횟수를 너무 크게 설정한 경우 training set에 대해서 오버피팅(overfitting)된 모델이 생성될 수 있습니다. 만일 높은 epoch 횟수를 설정하고 validation set 없이 트레이닝을 시작했다면, 오버피팅이 일어나더라도 학습이 끝나기 전까지 이를 알 수 있는 방법이 없습니다 이 경우, 결국 오버피팅된 모델이 최종 모델로 생성되게 됩니다.
하지만 validation set을 설정하면, 학습이 진행되는 동안 트레이닝 set에서의 성능과 validation set에서의 성능을 비교하여 특정 시점 이후에서validation set의 성능이 지나치게 낮아질 경우 과적합이 발생했다고 판단할 수 있습니다. 그리고 전체 학습이 끝난 뒤, 과적합이 일어나기 전에 생성된 모델을 최종 모델로 선택할 수 있습니다. 이렇게 Validation Set은 학습 과정 중에 unseen data(보여지지 않은 데이터)에 대한 성능을 확인하여 모델을 보정하는데 관여합니다.
트레이닝 세트 선택 대화상자에서 트레이닝 세트 편집을 마쳤다면, validation 세트로 사용되는 뷰들은 자신들이 트레이닝 세트 이미지들 중 validation 세트로 사용됨을 표시하는 특별한 표시자를 가집니다.
'validated' 또는 'not validated'를 디스플레이 필터에 입력하여 뷰 브라우저와 이미지 디스플레이 영역에서 validation 세트에 속한 뷰들만을 표시하거나 이들만을 표시하지 않을 수 있습니다.
'validated' 또는 'not validated'를 데이터베이스 개요 필터에 입력하여 데이터베이스 개요에서 validation 세트에 속한 뷰들의 결과만을 표시하거나 이들만을 표시하지 않을 수 있습니다.
트레이닝 세트 준비
트레이닝 세트와 마찬가지로, 테스트 세트에도 런타임에 발생할 수 있는 대표적인 변동이 포함되는 것이 좋습니다. 트레이닝 세트와 테스트 세트의 핵심적인 차이는, 테스트 세트는 도구 트레이닝에 포함되지 않는다는 것입니다. 대신에, 테스트 세트는 트레이닝 결과를 평가하는 데에 사용되며 이러한 이유로 이들은 평가 세트로도 불립니다. 트레이닝 세트에서 제외된 나머지 이미지들은 자동적으로 테스트 세트가 됩니다.
또한, 트레이닝 세트와 동일하게 테스트 세트에도 라벨을 지정하는 것이 좋습니다. 이렇게 함으로써 트레이닝 세트에 대한 통계적 분석을 수행해, 해당 도구가 결과를 얼마나 잘 일반화하는지 판단할 수 있습니다.