no image
[Deep Learning] 3. 출력층 (항등함수, 소프트맥스함수)
이전 Deep Learning 포스팅 [Deep Learning] 1. 단층 퍼셉트론과 다층 퍼셉트론 [Deep Learning] 2. 신경망 (Sigmoid, ReLU) 기계학습 문제는 분류(Classification)와 회귀(Regression)로 나눌 수 있다. 분류는 데이터가 어느 클래스에 속하느냐의 문제이고, 회귀는 입력 데이터에서 연속적인 수치를 예측하는 문제이다. 이렇듯, 신경망의 출력층에서는 항등함수와 소프트맥스 함수를 이용하여 출력 값을 얻을 수 있다. 이는 분류와 회귀에 있어서 중요한 역할을 수행하게 된다. 또한, 기계학습의 문제풀이는 학습과 추론(Inference)의 두 단계를 거쳐 이뤄진다. 학습단계에서 모델을 학습하고, 추론 단계에서 앞서 학습 된 모델로 미지의 데이터에 대해서 추..
2017.06.12
no image
[Deep Learning] 2. 신경망 (Sigmoid, ReLU)
[Deep Learning] 1. 단층 퍼셉트론과 다층 퍼셉트론 단층 퍼셉트론과 다층 퍼셉트론에서 매개변수로 가중치와 편향 값을 사용자가 임의로 조정 하였는데, 신경망 개념을 도입한다면 이를 자동으로 학습하여 적절한 값을 대입 할 수 있다. 또한 신경망에는 입력 데이터가 무엇인지 식별하는 처리 과정도 포함된다. 1. 신경망의 개념 신경망에는 입력층, 은닉층, 출력층 으로 나누어진다. 은닉층의 뉴런은 사람의 눈에 보이지 않는다. 또한 이러한 신경망을 2층 신경망이라고 한다. (가중치를 갖는 층은 2개 뿐이기 때문에) (그림 1) 신경망 구조 2. 퍼셉트론 복습 신경망의 신호 전달 방법을 보기전에 퍼셉트론을 복습해 보자면 퍼셉트론은 다음과 같이 구성되어 있었다. x1과 x2의 두 신호를 입력 받아 y를 출력..
2017.05.26
no image
[Deep Learning] 1. 단층 퍼셉트론과 다층 퍼셉트론
퍼셉트론(Perceptron) 1. 퍼셉트론이란? 퍼셉트론은 프랑크 로젠블라트가 1957년에 고안한 알고리즘으로 신경망(딥러닝)에 기원이 되는 알고리즘이다. 그래서 퍼셉트론의 구조를 배우는 것은 신경망 딥러닝으로 나아가는 데 중요한 아이디어를 배우는 일이 된다. 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 여기서 말하는 신호란 전류나 강물처럼 흐름이 있는 것을 말한다. 신호가 흐를 때는 1, 신호가 흐르지 않을 때는0으로 간주한다. 위 그림은 입력으로 2개의 신호를 받은 퍼셉트론의 예시이다. x1, x2 : 입력신호 y : 출력신호 w1, w2 :가중치 그림의 원 : 뉴런 or 노드 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 정해진 ..
2017.05.25
[Stereo Vision] Kinect v1 과 Kinect v2 비교
출처 : http://noa99kee.tistory.com/entry/1-Kinect-v1%EA%B3%BC-Kinect-v2%EC%9D%98-%EC%B2%A0%EC%A0%80%ED%95%9C-%EB%B9%84%EA%B5%90 차세대 Kinect for Windows 2012 년 미국 마이크로 소프트에서 발매 된 Kinect v1은 Depth (= 심도)과 Skeleton (= 인물 자세) 등의 정보를 쉽게 얻을 수 있기 때문에 전세계의 개발자 및 연구자로부터 주목했다. 2014 년에 발매 된 Kinect v2는 하드웨어, 소프트웨어 모두 크게 진화했다. Kinect v1과 Kinect v2의 외관 비교 Kinect v1 (그림 1)과 Kinect v2 (그림 2)의 외관 사진을 나타낸다. 그림 1 Kin..
2017.05.24
no image
[Object Tracking] Optical Flow 비교
1. Block matching method OpenCV function : cvCalcOpticlFlowBM 원리 : Block matching 방식은 프레임을 일정한 크기의 블록으로 나누고 현재 블록과 가장 유사한 블록을 이전 프레임에서 찾아 그 블록으로 현재의 블록을 추정하는 방법 단점 : Block Matcing 방법의 움직임 벡터 추정 과정에서 가장 정확한 값을 알아내기 위해서는 블록 주변의 모든 변위에 대해 평균 절대값 차이를 계산해야 한느데, 이 때 윈도우 크기가 커질수록 많은 연산 시간을 요구한다. 또한 블록 크기에 따라 벡터의 크기가 한정적이 되므로 움직임 벡터를 찾는데 있어서 제약이 따른다. 장점 : 블록 움직임 추정 방법 중 탐색 영역 내에 후보 블록 과의 차이를 비교하여 유사한 블록..
2017.02.09
no image
[Object Tracking] SVM을 이용한 HOG 기반 객체 추적
People Detection with HOG(Histogram of Oriented Gradients) and SVM(Support Vector Machines) [그림 1] HOG+SVM을 이용한 보행자 검출[참고자료 1] 보통 SVM을 이용하여 HOG 기반 객체 추적을 실행하려면 실행하고자 하는 데이터에 맞게 학습된 SVM 분류기가 필요하고, HOG feature가 필요하다. 기본 내장되어있는 opencv 로도 해결이 가능하지만 좀 더 빠른 성능을 위해서라면 CUDA 라이브러리를 이용한 GPU 프로그래밍을 하는 것이 좋다. 그런데 CUDA 라이브러리는 아직 visual studio 2015 를 지원하지 않을 뿐만 아니라 opencv 만 쓰다가 다른걸 써보려니 적응이 안되고(?) 환경 설정에 예민한 ..
2017.02.01
no image
[Stereo Vision] kinect 설치하기 (Visual Studio 2015, Windows 10, 64 bit, usb 3.0)
[Kinect] kinect 설치하기 (Windows 10, 64 bit, usb 3.0) 환경은 Windows 10, 64bit, usb 3.0, Visual Studio 2015 이다. usb 3.0 버전은 키넥트 SDK 프로그램 다운로드가 안된다고 하여, 키넥트 SDK 1.8 버전을 다운받았다. 3.0 버전이 아니거나 최신버전 다운을 받고싶다면 아래 사이트에서 SDK를 다운하면 된다. http://www.kinectforwindows.com/ 2.0 버전이거나 낮은 버전을 다운 받고 싶다면 아래 사이트에서 적절한 SDK를 다운하면 된다. 나는 v1.8 을 다운받았다. https://www.microsoft.com/en-us/search/result.aspx?q=kinect+for+windows+sd..
2017.01.19
no image
[Image Processing] OpenCV Watershed를 이용한 영상 분할
OpenCV Watershed를 이용한 영상 분할 워터쉐드 변한은 영상을 빨리 분할하여 동일한 영역으로 만들기 위해 사용하는 영상처리 알고리즘이다. 영상이 위상적 입체감을 보여준다는 아이디어에서 착안하였으며 영상 분할을 위해 정의된 마커 집합을 사용하게 된다. 워터쉐드 함수는 마커 기반 영상 분할을 수행하게 된다. CV_8UC3인 8비트 3채널 컬러 영상 image에 사용자가 대략적으로 32비트 정수 1-채널 markers에 부분영역을 설정하면 영상을 분할하여 markers 행렬에 저장한다. 초기에 markers에 주어진 영역의 값을 씨앗(seed)으로 하여 나머지 영역을 분할한다. 함수가 반환 될 때 markers에 1 이상의 값을 가지며 markers의 값이 같으면 동일 특성을 갖는 분할 영역이며, ..
2017.01.18
no image
[3D Reconstruction] Trifocal tensor 정리
Trifocal tensor (그림 1) Trifocal tensor 컴퓨터 비전에서 Trifocal tensor (또는 tritensor) 는 3개의 View 사이의 모든 투영 기하학적 관계를 통트는 3 x 3 x 3 행렬이다. 이는 3개의 View에 있는 Line과 Point에 대응하는 좌표가 있고, 이는 Scene Structure에 영향을 받지 않고, 캘리브레이션 파라미터와 3개의 View 에 영향을 받는다. 따라서, Trifocal tensor는 3개의 View에서 기본 행렬의 일반화라고 할 수 있다. 27개의 요소들로 구성되어있으며, 18개 만 독립적으로 존재한다. (그림 2) Trifocal tensor Matrix 즉, 그림 1에서와 같이 공간상의 하나의 직선 L이 세 가지 View에 투영..
2016.12.27
no image
[Image Processing] Fourier Transform (푸리에 변환)
Fourier Transform (푸리에 변환) 푸리에 변환(Fourier Transform) 이란 어떤 시간 도메인(time domain)에서 표현된 신호를 주파수 도메인(frequency domain)에서의 표현으로 변환해주는 것을 말한다. 영상처리에서는 2차원 푸리에 변환을 사용하게 된다. 이는 영상을 x축 또는 y축 방향으로 따라가면서 픽셀의 밝기 변화를 파형 또는 신호로 보고 주파수 분석을 적용하는 것이다. 푸리에 변환을 통해 얻은 각 주파수 성분의 강도를 스펙트럼(spectrum)이라고 부른다. 이 스펙트럼도 이미지처럼 표현이 가능하다. 또한, 푸리에 변환은 신호를 주파수 영역에서 분석하기 위해 사용된다. 푸리에 변환의 기본 개념은 하나의 신호는 여러 개의 sin 신호와 cos 신호의 합으로 ..
2016.11.18
no image
[Image Processing] Superpixels (SEEDS / SLIC)
Superpixels (SEEDS and SLIC) 논문을 읽는데 심심치 않게 등장한 Superpixels 개념 때문에 조금 더 공부해보자는 차원에서 포스팅하게 되었다. Superpixels 이라는 개념을 영상에서 픽셀을 블록화 하는 걸로만 이해하고 있었다. Superpixels의 정확한 개념을 설명하고, 이에 대한 대표적인 방법인 SEEDS 와 SLIC 알고리즘을 설명하려고 한다. 영문을 번역하며 설명하는거라 다소 매끄럽진 않겠지만 최대한 매끄럽게 써보도록 하겠다.. 1. Superpixels (슈퍼픽셀) 슈퍼픽셀은 영상분할 및 Object Tracking 분야에서 자주 사용되는 방법이다. 영상분할은 입력영상으로부터 물체에 해당하는 영역을 추출하는 과정으로 영상해석을 위한 필수적인 단계라고 할 수 있다..
2016.11.11
[Image Processing] 영상처리 용어 정리
A. accumulator plane : 축적 평면 accumulator volume : 축적 공간 AdaBoost : 에이다 부스트 adaptive : 적응형, 적응적 algorithm : 알고르즘 aliasing : 에일리어싱 alpha blend : 알파 블렌드 alternative split : 대체 분기 anchor point : 고정점 anti-aliasing : 앤티 에일리어싱 aperture problem : 어퍼쳐 문제, 틈 문제, 구멍 문제, 틈새 문제 application : 응용 프로그램 area process : 영영 처리 aspect ratio : 영상 비 autocorrelation matrix : 자기 상관 행렬 average : 평균 B. background differen..
2016.11.10