Programing/OpenCV

#OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 21

CouqueD'asse 2022. 8. 19. 14:06

15장 머신 러닝

 

15.1 머신 러닝과 OpenCV

 

15.1.1 머신 러닝 개요

머신 러닝 : 주어진 데이터를 분석하여 규칙성, 패턴 등을 찾고, 이를 이용하여 의미 있는 정보를 추출하는 과정

학습 (훈련) : 규칙을 찾아 가는 과정

모델 : 학습에 의해 결정된 규칙

예측 (추론) : 새로운 데이터를 학습된 모델에 입력으로 전달하고 결과를 판단하는 과정

 

지도 학습 : 정답을 알고 있는 데이터를 이용하여 학습을 진행하는 방식

레이블 : 훈련 데이터에 대한 정답에 해당하는 내용

주로 회귀와 분류에 사용

회귀 : 연속된 수치 값을 예측하는 작업

분류 : 이산적인 값을 결과로 출력하는 머신 러닝

비지도 학습 : 훈련 데이터의 정답에 대한 정보 없이 오로지 데이터 자체만을 이용하는 학습 방식

두 사진 집합에서 서로 구분되는 특징을 이용하여 분리하는 작업만 수행

군집합에 사용

 

머신 러닝 알고리즘 종류에 따라서는 내부적으로 사용하는 많은 파라미터에 의해 성능이 달라짐

k-폴드 교차 검증 : 훈련 데이터를 k개의 부분 집합으로 분할하여 학습과 검증을 반복하면서 최적의 파라미터를 찾을 수 있음

머신 러닝 알고리즘으로 훈련 데이터를 학습할 경우 훈련 데이터에 포함된 잡음 또는 이상치의 영향을 고려해야 함

 

15.1.2 OpenCV 머신 러닝 클래스

주로 ml 모듈에 포함됨

cv::ml::StatModel 추상 클래스를 상속받음

StatModel::train()머신 러닝 알고리즘을 학습시키는 멤버 함수

virtual bool StatModel::train(InputArray samples, int layout, InputArray responses);

samples : 훈련 데이터 행렬

layout : 훈련 데이터 배치 방법, ROW_SAMPLE 또는 COL_SAMPLE

responses : 각 훈련 데이터에 대응되는 응답(레이블) 행렬

samples와 responses 인자는 Mat 타입 객체로 전달, Mat 행렬에 훈련 데이터가 어떤 방식으로 저장되어 있는지를 layout 인자로 설정

 

StatModel::predict()학습된 모델을 이용하여 테스트 데이터에 대한 결과를 예측하는 멤버 함수

virtual float StatModel::predict(InputArray samples, OutputArray results = noArray(),
		int flags = 0);

순수 가상 함수로 선언되어 있음

각각의 머신 러닝 알고리즘 구현 클래스는 자신만의 알고리즘을 이용한 예측을 수행하도록 재정의