Skip to content

OpenCV:MachineLearning

Algorithms

  • ANN_MLP - 인공 신경망(artificial neural network) 다층 퍼셉트론(multi-layer perceptron) 입니다. 여러 개의 은닉층을 포함한 신경망을 학습시킬 수 있고, 입력 데이터에 대한 결과를 예측할 수 있습니다.
  • DTrees - 이진 의사 결정 트리(decision trees)알고리즘입니다. DTrees 클래스는 부스팅 알고리즘은 구현한 ml::Boost 클래스와 랜덤 트리(random tree) 알고리즘을 구현한 ml::RTree 클래스의 부모 클래스 역할을 합니다.
  • Boost - 부스팅(boostring) 알고리즘입니다. 다수의 약한 불류기(weak classifier)에 적절한 가중치를 부여하여 성능이 좋은 분류기를 만드는 방법입니다.
  • RTrees - 랜덤 트리(random tree) 또는 랜덤 포레스트(random forest) 알고리즘입니다. 입력 특징 벡터를 다수의 트리로 예측하고, 그 결과를 취합하여 분류 또는 회귀를 수행합니다.
  • EM - 기댓값 최대화(Expectation Maximizaion)를 의미합니다. 가우시안 혼합 모델(Gaussian mixture model)을 이용한 군집화 알고리즘입니다.
  • KNearest - k 최근접 이웃(K-Nearest Neighbors) 알고리즘입니다. K 최근접 이웃 알고리즘은 샘플 데이터와 인접한 k개의 학습 데이터를 찾고, 이 중 가장 많은 개수에 해당하는 클래스를 샘플 데이터 클래스로 지정합니다.
  • LogisticRegression - 로지스틱 회귀(logistic regression). 이진 분류 알고리즘의 일종입니다.
  • NormalBayesClassifier - 정규 베이즈 분류기 입니다. 정규 베이즈 분류기는 각 클래스의 특징 벡터가 정규 분포를 따른다고 가정합니다. 따라서 전체 데이터 분포는 가우시안 혼합 모델로 표현 가능합니다. 정규 베이즈 분류기는 학습 데이터로부터 각 클래스의 평균 벡터와 공분산 행렬을 계산하고, 이를 예측에 사용합니다.
  • SVM - 서포트 벡터 머신(sipport vector machine) 알고리즘 입니다. 두 클래스의 데이터를 가장 여유있게 분리하는 초평면을 구합니다. 커널 기법을 이용하여 비선형 데이터 분류에도 사용할 수 있으며, 다중 클래스 분류 및 회귀에도 적용할 수 있습니다.
  • SVMSDG - 통계적 그래디언트 하향(stochastic gradient descent) SVM. 통계적 그래디언트 하향 방법을 SVM에 적용함으로써 대용량 데이터에 대해서도 빠른 학습이 가능합니다.

APIs

머신 러닝 알고리즘 객체 생성

cv2.ml.XXX_create() 객체를 생성할 수 있습니다.

  • cv2.ml.SVM_create()
  • cv2.ml.KNearet_create()
  • etc ...

반환값으로 각 머신 러닝 알고리즘 객체를 생성합니다.

머신 러닝 알고리즘 학습

cv2.ml_SVM.train 과 같은 train 함수로 학습을 할 수 있습니다. 적절한 인자를 입력해줘야 합니다.

Arguments:

  • samples - 학습 데이터 행렬.
  • layout - 학습 데이터 배치 방법.
    • cv2.ROW_SAMPLE - 하나의 데이터가 한 행으로 구성됨
    • cv2.COL_SAMPLE - 하나의 데이터가 한 열로 구성됨
  • responses - 각 학습 데이터에 대응되는 응답(레이블) 행렬.
  • retval - 학습이 성공하면 True.

머신 러닝 알고리즘 예측

cv2.ml_SVM.predict 와 같은 predict 함수로 추론을 할 수 있습니다.

Arguments:

  • samples - 입력 벡터가 행 단위로 저장된 행렬.
  • results - 각 입력 샘플에 대한 예측(분류 또는 회귀) 결과를 저장한 행렬.
  • flags - 추가적인 플래그.
    • 기본값은 0.
    • cv2.ml.STAT_MODEL_RAW_OUTPUT을 지정하면 클래스 레이블이 아닌 실제 계산 결과 값을 출력.
  • retval - 알고리즘에 따라 다름

See also

Favorite site