반응형

분류 전체보기 823

[OpenCV 머신러닝] 서포트 벡터 머신 알고리즘이란?

서포트 벡터 머신(SVM, Support Vectir Machine) 알고리즘 SVM 알고리즘은 머신러닝 알고리즘에서 가장 유명하고 많이 사용되고 있습니다. SVM 알고리즘은 기본적으로 두 개의 그룹(데이터)을 분리하는 방법으로 데이터들과 거리가 가장 먼 초평면(hyperplane)을 선택하여 분리하는 방법입니다. 데이터를 분리하기 위해 직선이 필요합니다. 직선이 한쪽 데이터로 치우쳐져 있으면 데이터에 변동이나 노이즈가 있을 때 제대로 구분 못할 수 있습니다. 이러한 문제점을 해결하기 위해 margin을 이용하게 됩니다. 이 직선을 초평면(hyperplane)이라고 합니다. Support Vector은 데이터를 의미합니다. margin은 초평면과 가장 가까이 있는 데이터와의 거리를 의미합니다. 마진을 최..

[OpenCV 머신러닝] OpenCV로 KNN 필기체 숫자 인식 프로그램 구현하기

k 최근접 이웃 알고리즘을 이용한 필기체 숫자 인식 만약 정해진 폰트로 인쇄된 숫자라면 템플릿 매칭으로도 숫자 인식이 가능합니다. OpenCV 필기체 숫자 데이터는 OpenCV 깃허브에서 제공하는 숫자 데이터를 이용했습니다. opencv/opencv Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub. github.com 데이터에는 20X20 숫자 영상이 가로 100개, 세로 50개 총 5000개의 숫자가 있습니다. 각 행에 100개의 데이터가 있고 각 숫자(0~9)는 5줄마다 구분 됩니다. 이 데이터를 이용해서 머신러닝 알고리즘을 학습시키고 추론까지 진행해 보..

[OpenCV 머신러닝] OpenCV로 k 최근접 이웃 알고리즘(KNN) 구현하기 - cv2.ml.KNearest_create

k 최근접 이웃 알고리즘 - KNN, k-Nearest Neighbor k 최근접 이웃 알고리즘은 특징 공간에서 테스트 데이터와 가장 가까이 있는 k개의 학습 데이터를 찾아 분류 또는 회귀를 수행하는 지도 학습 알고리즘의 하나입니다. 학습 데이터가 녹색이라고 가정하였을 때 원래 데이터(파랑색, 빨강색)중 가장 가까지 있는 데이터의 클래스를 부여합니다. 위 사진에서 녹색 데이터는 빨강색 데이터와 가까이 있지만 빨강색 데이터라고 판단하기에는 애매합니다. 이처럼 잘못 분류될 가능성이 있는데 이를 해결하기 위해 가장 가까이 있는 것을 k개 찾습니다. 선별한 k개 데이터에서 파랑색, 빨강색 데이터 개수를 세어 더 많이 선별된 데이터의 클래스를 부여하게 됩니다. 예를 들어 5개 데이터를 선별했을 때 3개가 파랑색,..

[OpenCV 머신러닝] OpenCV 머신러닝 클래스 - 객체 생성, 학습, 추론 - create, train, predict

OpenCV 머신 러닝 클래스 OpenCV에서 머신러닝과 관련된 클래스를 제공하고 있습니다. OpenCV 머신 러닝 클래스 설명 클래스 이름 설명 ANN_MLP 인공 신경망(artificial neural network) 다층 퍼셉트론(multi-layer perceptron) 입니다. 여러 개의 은닉층을 포함한 신경망을 학습시킬 수 있고, 입력 데이터에 대한 결과를 예측할 수 있습니다. DTrees 이진 의사 결정 트리(decision trees)알고리즘입니다. DTrees 클래스는 부스팅 알고리즘은 구현한 ml::Boost 클래스와 랜덤 트리(random tree) 알고리즘을 구현한 ml::RTree 클래스의 부모 클래스 역할을 합니다. Boost 부스팅(boostring) 알고리즘입니다. 다수의 약..

[선형대수학] ch1-2 선형방정식의 기하학 - 특이한 경우

gilbert strang 교수님의 linear algebra and its applications를 공부하면서 번역과 정리를 해보았습니다. 특이한 경우 - The Singular Case 3개의 평면이 한 점에서 교차하지 않을 때 특이한 경우(The SIngular Case)라고 합니다. 그 경우에 해가 없거나 해가 무수히 많게 됩니다. 하나하나 살펴보겠습니다. 1. 해가 없는 경우 (no solution) (1) 두 개의 평면이 평행할 때 위 경우에 3개의 평면은 한 점에서 교차하지 않습니다. 두 개의 평면이 평행하기 때문입니다. 2u+v+w=5와 4u+2v+2w=11는 일치하지 않습니다.(inconsistent) 이러한 경우 해가 없습니다. (2) 세 개의 평면이 평행하지 않는 경우 위 경우는 모든..

[선형대수학] ch1.2 선형방정식의 기하학 - n=3인 경우 row picture과 column picture, 선형 결합

gilbert strang 교수님의 linear algebra and its applications를 공부하면서 번역과 정리를 해보았습니다. 선형방정식의 기하학을 예제 문제를 통해 이해하도록 하겠습니다. n=3인 경우(미지수 3개, 방정식 3개) n=3인 경우를 살펴보겠습니다. 1. row 관점으로 선형방정식을 기하학적으로 표현하기(row picture) 각 방정식은 3차원에서 평면으로 서술할 수 있습니다. 첫 번째 평면은 2u+v+w=5이고 아래 그림처럼 표현할 수 있습니다. 또한 (5/2, 0, 0), (0, 5, 0), (0, 0, 5)를 지나가게 됩니다. 2u+v+w=5에서 5를 10으로 바꾸면 2u+v+w=10이 됩니다. 이는 첫 번째 평면과 평행하게 됩니다. 이처럼 오른쪽 항을 변경하는 것은 ..

[선형대수학] ch1.2 선형방정식의 기하학 - n=2일 때 행관점과 열관점

gilbert strang 교수님의 linear algebra and its applications를 공부하면서 번역과 정리를 해보았습니다. 1.2 선형방정식의 기하학 - The Geometry of Linear Equations 선형방정식의 기하학을 이해하기 위한 방법으로 예시를 보겠습니다. 이 방정식을 rows와 columns 두 가지 관점에서 볼 수 있습니다. 1. 행(rows) 관점으로 접근 위 방정식은 2차원에 간단하게 표시할 수 있습니다. 2x - y = 1를 x-y평면에서 직선으로 표시됩니다. 이 직선은 (x=1, y=1), (x=1/2, y=0), (x=2, y=3)을 지나갑니다. x + y = 5는 기울기가 -1인 직선이며 이 직선은 첫번째 직선과 해(solution)에서 교차하게 됩니다..

[선형대수학] ch1.1 개요 - Introduction - 소거법과 행렬식과 4가지 핵심내용

gilbert strang 교수님의 linear algebra and its applications를 공부하면서 번역과 정리를 해보았습니다. Ch 1 행렬과 가우시안 소거법 1.1 개요 - Introduction 선형 방정식을 풀 때, 미지수와 방정식의 수가 같으면 가장 간단하고 쉽습니다. 미지수가 2개 방정식이 2개 인 경우를 보겠습니다. 미지수는 x와 y입니다. 위 선형방정식을 풀기 위해 소거법과 행렬식 두 가지 방법을 소개하겠습니다. 1. Elimination - 소거법 방정식2 - 4 X 방정식1을 하면 방정식2에서 x가 소거됩니다. 그러면 방정식2는 y에 대한 방정식이됩니다. 이것을 방정식1에 대입하면 x를 구할 수 있습니다. 2. Determinants - 행렬식 행렬식을 이용하면 위 선형방정..

[파이썬 OpenCV] 영상의 객체 추적 - OpenCV 트래커 - cv2.TrackerXXX_create, cv2.Tracker.init

OpenCV 트래커(Tracker) 옵티컬플로우, 배경 차분, 평균 이동 등 전에 공부했었던 방법들은 이전 프레임에 있는 객체가 현재 프레임에 어떻게 이동했는지에 대한 정보를 추출하는 방법이었습니다. OpenCV에서 좀 더 고차원적인 알고리즘 집합체를 클래스 형태로 구현해서 제공하고 있는 것들이 있습니다. extra 모듈에 있으며 추가 모듈이 포함되어 있는 OpenCV를 설치해야 합니다. Tracker 클래스 사용 방법 (1) 클래스 객체 생성 cv2.TrackerXXX_create() -> XXX = Boosting, CSRT, GOTURN, KCF, MedianFlow, MIL, MOSSE, TLD KCF : 빠르게 작동 MOSSE : 빠르게 작동 CSRT : 연산은 느리지만 강인하게 추적 GOTUR..

[파이썬 OpenCV] 영상의 모션 벡터 - 밀집 옵티컬플로우 - cv2.calcOpticalFlowFarneback

밀집 옵티컬플로우 - 밀집 옵티컬 플로우는 모든 픽셀에 대해 옵티컬플로우를 계산하는 방법입니다. 주로 파네백 알고리즘(Farneback's algorithm)을 이용하여 구현하게 됩니다. 옵티컬 플로우에 대한 설명은 여기 포스팅을 참조할 수 있습니다. [파이썬 OpenCV] 영상의 모션 벡터 - 루카스 카나데 옵티컬 플로우 - cv2.calcOpticalFlowPyrLK 옵티컬플로우 - Optical flow 옵티컬플로우는 연속하는 두 프레임(영상)에서 카메라 또는 객체의 움직임에 의해 나타나는 객체의 이동 정보 패턴을 의미합니다. 픽셀이 어떻게 움직였는지를 화 deep-learning-study.tistory.com 밀집 옵티컬 플로우 계산 함수 - cv2.calcOpticalFlowFarneback ..

반응형