더북(TheBook)

머신 러닝 클래스에서 학습을 수행하는 StatModel::train() 함수 원형은 다음과 같습니다.2

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

samples

훈련 데이터 행렬

layout

훈련 데이터 배치 방법. ROW_SAMPLE 또는 COL_SAMPLE를 지정합니다.

responses

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

반환값

정상적으로 학습이 완료되면 true를 반환합니다.

 

StatModel::train() 함수는 samples에 저장된 다수의 훈련 데이터를 사용하여 머신 러닝 알고리즘을 학습합니다. 이때 훈련 데이터에 대한 정답 또는 레이블 정보는 responses 인자로 전달합니다. 보통 samplesresponses 인자는 Mat 타입 객체로 전달합니다. Mat 행렬에 훈련 데이터가 어떠한 방식으로 저장되어 있는지를 layout 인자로 설정합니다. layout에는 표 15-1에 나타난 SampleTypes 열거형 상수 중 하나를 지정할 수 있으며, 많은 경우 ROW_SAMPLE 방법을 사용합니다. StatModel::train() 함수는 가상 함수로 선언되어 있으므로, StatModel 클래스를 상속받은 클래스 객체에서 train() 함수를 호출하면 각 머신 러닝 알고리즘에 해당하는 방식으로 학습을 진행합니다.

▼ 표 15-1 SampleTypes 열거형 상수

SampleTypes 열거형 상수

설명

ROW_SAMPLE

각 훈련 데이터가 samples 행렬에 행 단위로 저장되어 있습니다.

COL_SAMPLE

각 훈련 데이터가 samples 행렬에 열 단위로 저장되어 있습니다.

 

2 StatModel::train() 함수는 StatModel::train(const Ptr<TrainData>& trainData, int flags = 0) 형식도 지원합니다. 여기서 TrainData는 OpenCV에서 훈련 데이터를 표현하는 클래스이며, 이 책에서는 설명의 간소화를 위해 Mat 행렬을 이용한 학습 방법만 설명합니다. TrainData 클래스를 사용하는 방식은 OpenCV 문서 사이트를 참고하기 바랍니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.