분류 전체보기

    OpenCV :: Mat Class (1)

    행렬을 표현하는 클래스, 2차원 행렬 및 고차원 행렬까지 표현 할 수 있다. 정수, 실수, 복소수 등으로 구성된 행렬 또는 벡터를 저장하거나 그레이 스케일과 컬러 영상도 저장할 수 있다. 2차원 영상 데이터를 저장하고 처리하는 용도로 가장 많이 쓰이고 있음. 멤버 변수 Mat::dims : 행렬의 차원 Mat::cols : 열 개수 (가로 픽셀 크기) Mat::rows : 행 개수 (세로 픽셀 크기) Mat::size : 3차원 이상 행렬의 크기 정보 Mat::data : 행렬의 원소 데이터가 저장된 메모리 공간을 가리키는 포인터형 멤버 변수 자료형 매크로 상수 CV_8U : uchar, usigned char CV_8S : schar, signed char CV_16U : ushort, unsigned..

    OpenCV :: 기본 자료형 클래스

    Point Class 2차원 평면에 있는 점의 좌표를 표현하는 클래스 2차원 좌표를 나타내는 x와 y라는 멤버 변수를 가진다 Point pt; // 각 좌표는 0으로 초기화 pt.x = 10; // x 좌표 설정 pt.y = 20; // y 좌표 설정 Point pt1(20,40); // x,y 좌표 설정 Size Class 사각형 영역 및 영상 (이미지)의 크기를 표현할 때 사용한다 멤버변수 : width (가로), height (세로) Size sz, sz2(10, 20); // sz1 = [0 x 0] , sz2 = [10 x 20] sz1.width = 5; sz2.height = 10; // sz1 = [5 x 10] Rect_ Class 사각형의 위치와 크기 정보를 표현할 때 사용 좌측 상단 ..

    넘파이 (NumPy) - ndarray , 관련 함수들

    NumPy는 Numerical Python을 의미한다. 파이썬에서 선형대수 기반의 프로그램을 쉽게 만들 수 있도록 지원하는 대표적인 패키지다. NumPy는 C/C++과 같은 저수준 언어 기반의 호환 API를 제공한다. NumPy는 빠른 배열 연산을 보장하지만, 파이썬 언어 자체가 가지는 수행 성능의 제약으로 중요한 부분은 C/C++ 기반의 코드로 작성하고 이를 NumPy에서 호출하는 방식으로 통합한다. (Tensorflow가 대표적인 예시) ndarray 개요 array1 = np.array([1, 2, 3]) print('array1 type:', type(array1)) print('array1 array 형태:', array1.shape) array2 = np.array([[1, 2, 3], [2,..

    Machine Learning (with Python)

    본 카테고리 글들은 "파이썬 머신러닝 완벅 가이드" 라는 책을 보고 작성하였습니다. + 강의 내용 및 책 내용을 요약하여 정리하였음. 머신러닝의 개념 머신러닝이란, 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭한다. 머신러닝의 분류 지도학습 분류 회귀 추천 시스템 시각/음성 감지/인지 텍스트 분석, NLP 비지도학습 클러스터링 자원 축소 강화 학습 파이썬 머신러닝 주요 패키지 머신러닝 패키지 사이킷런(Scikit-Learn) DL Library : Tensorflow, Keras, Pytorch 행렬/선형대수/통계 패키지 머신러닝의 이론적 백그라운드는 선형대수와 통계로 이뤄져 있다 NumPy : 행렬과 선형대수를 다루는 패키지 SciPy : 자연과학과 통계를 위한 패키지 데이터 ..

    영상의 밝기 조절 과 산술 연산

    영상의 화소 처리 기법 화소 처리 (Point processing) 입력 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산 \( dst(x,y) \ = \ f(src(x,y)) \quad f \) : 변환함수 결과 영상의 픽셀 값이 정해진 범위 (e.g. 그레이 스케일)에 있어야 한다 반전, 밝기 조절, 명암비 조절 등등 영상의 밝기 조절 밝기 조절 수식 \( dst(x,y) \ = \ saturate(src(x,y) + n) \) 밝기 조절을 위한 덧셈 연산 (함수) cv2.add(src1, src2, dst=None, mask=None, dtype=None) src1: (입력) 첫 번째 영상 또는 스칼라 src2: (입력) 두 번째 영상 또는 스칼라 dst: (출..

    히스토그램 (Histogram)

    ▶ OpenCV Python 관련 글은 황선규 박사님의 강의내용을 정리하였음. Histogram 영상의 픽셀 값 분포를 그래프의 형태로 표현한 것 그레이 스케일 영상에서 각 그레이 스케일 값에 해당하는 픽셀의 수를 구하고, 막대 그래프 형태로 표현한다. $$ h(g) = N_g $$ Normalized histogram 각 픽셀의 수를 영상 전체 픽셀 개수로 나눠준 것 그레이 스케일 값을 갖는 픽셀이 나타날 확률 \( p(g) = \frac{N_g}{w\times h} \) ☞ \(\displaystyle \sum _{g=0} ^{L-1} {p(g) = 1}\) 히스토그램 구하기 cv2.calcHist(images, channels, mask, histSize, ranges, hist=None, accu..

    경사 하강법 (Gradient decsent)

    경사 하강법(Gradient descent)이란? 1차 미분 계수를 이용하여 함수의 최소값을 찾아가는 반복적인 방법이다. 함수의 기울기를 구하고 경사의 반대 방향으로 계속 이동시켜 극값에 이를때 까지 반복하여 제시된 함수의 기울기로 최소값을 찾아내는 머신러닝의 알고리즘이다. 인공지능 모델이 데이터를 잘 표현 하도록 기울기를 사용해 모델을 조금씩 조정하여 최적화 하는 방법이다. 경사 하강법을 사용하는 이유 미분 계수를 구하는 과정을 컴퓨터가 구현하는 상황에서는 경사하강법으로 비교적으로 쉽게 구현할 수 있다. 데이터 양이 큰 경우에는 경사하강법과 같은 반복적인 방법을 통하여 값을 구하면 더 효율적으로 구할 수 있다. 경사 하강법 수식 표현 기울기가 양수면 \(x\) 값이 커질 수록 함수 값이 커진다는 것을 ..

    Activation Function : Step/Linear Function

    활성화 함수 (Activation Function)는 신경망의 출력을 결정하는 식이다. 기존 Perceptron 수식 $$ y= \begin{cases} 0 \quad (w_1x_1 + w_2x_2 \leq \theta) \\ 1 \quad (w_1x_1 + w_2x_2 > \theta) \end{cases} $$ 변형된 Perceptron 수식 $$ X = w_1x_1 + w_2x_2 + b $$ $$ h(x) = \begin{cases} 0 \quad x \leq 0 \\ 1 \quad x>0 \end{cases} $$ 입력 신호의 합 \(h(x)\)를 거쳐 변환되어 \(y\)를 출력. \(h(x)\) 함수는 입력 값이 0을 초과하면 1을 리턴하고, 0을 초과하지 않으면 0을 리턴한다. \(X\) :..

    Perceptron

    Perceptron 개념 인간의 신경 세포를 알고리즘화 한 것, 딥러닝의 기본 개념 N개의 입력을 받아 1개의 신호를 출력한다 신호가 임계값보다 크면 1을 출력, 임계값보다 작으면 0을 출력한다. (정보 전달 기능은 없음) 위위 그림에서 원은 Node or Neuron 라 지칭하며, 선은 Edge라고 지칭한다. Node에서 다음 Node로 정보가 전달될 때 가중치 /(w_1 \ w_2/)가 곱해져 전달된다. 전달되는 값과 가중치가 곱해진 값 /(w_1 \ x_1/)의 합 /(w_1 \ x_1 +w_2 \ x_2/)이 임계값 \(\theta\)보다 크면 1, 작으면 0이 출력된다. 퍼셉트론 수식 표현 $$ y= \begin{cases} 0 \quad (w_1x_1 + w_2x_2 \leq \theta) \..

    Quantization

    원문 출처 양자화는 연속 데이터를 이산 숫자로 변환하는 과정이다. 신경망 훈련 계산은 일반적으로 Floating point type (16bit, 32bit)를 사용하여 수행된다. 딥러닝에서 양자화는 일반적으로 부동 소수점에서 고정 소수점 정수로 변환하는 것을 말한다. 딥러닝에서 사용되는 양자화 기술은 Dynamic Quantization, Static Quantization 등이 존재한다. Quantization Mapping 양자화는 부동 소수점 값 \(x ∈ [ \alpha, \beta ]\)를 b-bit 정수 \(x_q ∈ [\alpha_q, \beta_q]\)에 맵핑한다. de-Quantization 프로세스 수학적 정의 $$ x = c(x_q + d) $$ Quantization 프로세스 수학..