REMOTE SENSING

QGIS 3.4 Orfeo ToolBox(OTB) - (5) 머신러닝 분류기

유병혁 2019. 1. 14. 09:08

안녕하세요? 훈련 데이터를 기반으로 분류기를 직접 다뤄 보겠습니다.


'Learning > TrainVectorClassifier'를 실행합니다.


TrainVectorClassifier 실행 창은 아래와 같습니다. 어떤 파라미터가 있는지 살펴볼까요?!


Input Vector Data는 앞서 제작한 train.shp(훈련용)을 지정해 줍니다.


Field names for training features에는 train.shp 필드값 중 훈련에 사용할 필드명을 적어주시면 됩니다.


참고로, train.shp의 속성 테이블은 아래와 같습니다.



Validation Vector Data는 validation.shp(검증용) 데이터를 지정합니다.


Field containing the class integer label for supervision에는 C_ID, 즉 분류 ID가 저장된 필드명을 입력해 줍니다.


Classifier to use the training에서는 분류기를 선택해주시면 되는데요, 아래와 같이 다양한 분류기들이

제공되고 있습니다. 저는 최근 공부하고 있는 랜덤 포레스트(random forest: rf) 분류기를 선택해 주겠습니다.


선택된 분류기에 따라 그 분류기에 해당하는 매개변수 설정이 안내됩니다. rf에 대한 설정값들은 아래와 같습니다.


Output model은 분류기에 훈련 데이터를 통해 학습시킨 모델 파일로써, 확장자는 txt를 쓰시면 됩니다.

Output confusion matrix(오차행렬) or contingency table(분할표)는 검증 데이터를 통해 확인한 결과입니다.  



아래와 같이 훈련이 종료되었습니다. 결과를 전체 세그먼테이션에 적용해볼까요?!


'Learning > VectorClassifier'를 실행합니다.


VectorClassifier 창은 아래와 같습니다. 일단 Name of the Input vector data에 세그먼테이션 파일을 지정하고,


Model file에 앞서 훈련시킨 모델 파일을 지정합니다.


Field names to be calculated는 앞서 훈련 단계와 동일하게 필드값을 지정해주시면 됩니다.


Confidence map은 체크해두시는 편이 좋은데요, 이 값의 의미는 선택한 분류기마다

차이가 있습니다. 랜덤 포레스트(rf) 분류기에서는 다수를 점한 클래스의 투표 비율을 나타냅니다.


이제 분류기 결과를 추출해볼까요?!


결과 파일의 속성 테이블을 열어보시면 predicted와 confidence 필드값이 추가된 것을 보실 수 있습니다.


레이어 속성에서 '기호 > 분류값 사용'을 선택하고 각 값에 범례를 적용해 보겠습니다.


결과는 아래와 같습니다. 썩 좋지 않은데요, 이후에 이 분류기를 개선하는 방법을 정리해 보겠습니다.