본문 바로가기
반응형

개발 공부10

[Python 분산/병렬처리] Ray 설치 및 실행, Cluster 구성 방법 (Windows) 1. Python Ray 설치 분산/병렬 시스템 프레임워크인 Ray는 현재 Linux, MacOS, Windows 세개의 운영체제를 지원하며, Windows는 아직 베타 버전으로 Multi-Node Cluster 구성 및 사용에 잘 안되는 부분이 있을 수 있습니다. 본 포스팅에서는 Windows OS 에서 Ray 설치 및 단일 Ray Client 실행, Multi-Node Cluster Ray 실행 방법에 대해 알아보겠습니다. Ray 공식 사이트 (설치 페이지) 최신 버전 (현재 1.12.1) : https://docs.ray.io/en/latest/ray-overview/installation.html Master 버전 (Beta, 현재 3.0.0.dev0) : https://docs.ray.io/en.. 2022. 6. 6.
[최적화] 가중치 규제 L1, L2 Regularization의 의미, 차이점 (Lasso, Ridge) 1. 수학적 최적화(Optimization)와 과적합 (Overfitting) 수학에서 최적화란, 특정 집합에 대한 목적 함수(Objective Function)를 최소화 혹은 최대화시키는 최적해 (파라미터)를 찾는 것을 말합니다. 머신러닝 및 딥러닝 알고리즘은 모두 어떤 현상을 가장 잘 설명하기 위한 모델 함수를 찾는 방법입니다. 모델을 찾을 때, 모델의 예측 결과와 실제 결과 간 오차가 발생하게 되고 이를 표현한 함수를 손실 함수(Loss Function, Cost Function)이라고 합니다. 학습 기반의 머신러닝 및 딥러닝 알고리즘은 모델 성능을 높이기 위해 이 손실 함수를 최소화할 수 있는 방향으로 학습을 진행하게 됩니다. 즉, 손실 함수의 최적화 문제라고 볼 수 있습니다. 우리는 모델을 만들.. 2022. 6. 5.
이미지 변환(Image Transformations) 종류와 호모그래피 (Homography) 1. 이미지 변환 : Image Transformations 이미지의 변환이란 각 이미지 픽셀의 좌표 (x,y)를 다른 좌표 (x',y')로 매핑하는 것을 말합니다. 변환의 종류에는 변환 후 기존의 특성을 어느정도 보존하는가에 따라 크게 강체 변환, 유사 변환, 선형 변환, 아핀 변환, 투영 변환으로 나눌 수 있습니다. 2. 변환 종류 - 강체 변환 (Rigid-Body Transformation) 물체의 평행 이동(Translation), 회전(Rotation) 등 물체의 위치와 방향만 바꾸고 형태가 변하지 않는 (강체) 변환을 말합니다. 3자유도를 가지며, 각 변환에 대한 매핑 함수는 다음과 같습니다. $$이동 변환 (Translation) : \begin{bmatrix} x' \\ y' \end{b.. 2021. 9. 6.
[Bitmap] C# 비트맵 픽셀 처리 1. Bitmap 픽셀 접근 메서드 Bitmap 객체는 픽셀을 편하게 읽고 쓰기 위해 다음과 같은 메서드를 제공합니다. public System.Drawing.Color GetPixel (int x, int y);// 지정된 픽셀의 색을 가져옴 public void SetPixel (int x, int y, System.Drawing.Color color);// 지정된 픽셀의 색을 설정 그러나, 위의 방법은 매번 메서드를 호출해야하므로 고속 연산이 필요한 이미지처리에 적합하지 않습니다. 이를 해결하기 위해 unsafe 키워드와 Bitmap 클래스의 LockBits 메서드를 사용해 C/C++ 의 포인터 처럼 픽셀 배열에 직접 접근하여 처리할 수 있습니다. 1.1 unsafe/fixed 키워드 C#에서는 C.. 2021. 8. 11.
[카메라 노이즈] Fixed Pattern Noise(FPN)와 PRNU, DSNU 보정 1. Camera Noise 카메라로 영상을 촬영할 때 영상의 품질을 결정하는 중요한 요소는 해상도와 노이즈 입니다. 카메라의 노이즈란 카메라의 센서에 일정한 광량이 들어올때 기대되는 출력값과 다른 값이 나오는 것을 얘기합니다. 노이즈는 SNR과 Dynamic Range에 영향을 주고 이는 촬상한 실제의 이미지 값과 다른 값을 출력하는 요소가 될 수 있으므로 노이즈를 적절하게 제거하거나 보정해주어야 합니다. 카메라의 노이즈는 크게 두가지의 노이즈의 합으로 나타납니다. 하나는 카메라 센서의 특성 등으로 인해 일정한 값을 갖는 Fixed Pattern Noise (FPN, Spartial Noise)이고, 다른 하나는 시간에 따라 랜덤하게 값이 변하는 Temporal Noise (Random Noise) 입.. 2021. 8. 6.
[Database 분산처리] DB Sharding (DB 샤딩) 1. Database Sharding이란? DB에 데이터가 늘어나면 용량 이슈와 함께 성능이 저하되고 DB 시스템 전체에 문제가 생길 가능성이 높아지게 된다. 이를 방지하기 위해 여러 DB 분산처리 기법이 있는데, 그 중 Sharding 기법에 대해 알아보려고 한다. Sharding은 같은 테이블 스키마를 가진 데이터들을 다수의 DB에 분산하여 저장하는 Horizontal Partitioning 방법으로 해당 테이블의 인덱스 크기를 줄이고, 작업 동시성을 늘리는 방법이다. 다만 DB Sharding을 적용하면 프로그래밍 복잡도 및 운영 복잡도가 높아지기 때문에 다른 분산처리 방법을 먼저 고려한 후 대규모의 빅데이터 관리의 경우에만 사용하는 것이 좋다고 한다. 선고려할 분산처리 방법에는 다음 방법들이 있다.. 2021. 3. 28.
[차원 축소] Kernel-PCA 1. Kernel-PCA 1.1 Kernel 기법 PCA, SVM 등에서 사용되는 커널(kernel) 기법은 비선형 함수인 커널함수를 이용하여 비선형 데이터를 고차원 공간으로 매핑하는 기술입니다. 아래 좌측의 데이터 분포를 보면 어떠한 방향으로의 선형변환으로도 데이터 분포를 잘 분류할 수 없을 것 입니다. 그러나 이를 커널함수를 이용해 고차원 공간으로 매핑하여 PCA를 수행한다면 데이터 분포를 분류할 수 있는 결정 공간을 찾을 수 있게 됩니다. m차원을 n차원으로 매핑하는 매핑함수 $\Phi$에 대해 커널 $K$는 다음과 같이 정의할 수 있습니다. $$K(x_1, x_2) = {\Phi (x_1)}^T \Phi (x_2)$$ 매핑함수 $\Phi$는 선형변환 함수이며, 표준행렬 $A$에 대해 $\Phi (.. 2020. 3. 2.
[차원축소] Python 및 사이킷런을 이용한 PCA 1. Python을 이용한 PCA 1.1 Iris DataSet Iris DataSet을 이용해 PCA를 실행해 보겠습니다. Iris DataSet은 150개의 Iris 꽃 개체 대한 데이터로 구성되어있으며 사이킷런을 이용해 손쉽게 불러올 수 있습니다. from sklearn.datasets import load_iris import pandas as pd import numpy as np Iris = load_iris() iris_df = pd.DataFrame(data = np.c_[Iris['data'], Iris['target']], columns=Iris['feature_names']+['target']) iris_df['target'] = iris_df['target'].map({0:"seto.. 2020. 2. 23.
[차원 축소] 주성분 분석 (PCA, Principal Component Analysis) 1. 주성분 분석 (PCA) 주성분 분석은 고차원의 데이터를 분산이 최대로 보존되는 저차원의 축 평면으로 투영시키는 대표적인 차원 축소 방법입니다. 이때 데이터를 투영시킬 수 있는 각 축의 단위 벡터들을 주성분(Principal Component) 이라고 하며, 차원의 수만큼 존재하고 서로 직교하는 성질을 갖고 있습니다. (즉, 기존의 좌표계를 주성분을 축으로 하는 좌표계로 선형 변환한다고 생각하면 됩니다.) N개의 데이터 X에 대해 주성분벡터 P로의 선형변환(투영)은 아래와 같이 표현됩니다. $$ z_1 = p_{11} x_1 + p_{12} x_2 + \cdots + p_{1N} x_N = p_1^T X $$ $$ z_2 = p_{21} x_1 + p_{22} x_2 + \cdots + p_{2N} .. 2020. 2. 9.
[차원 축소] 차원 축소 개요 1. 차원 1.1 차원이란? 기하학적으로 차원은 공간 내에 있는 점의 위치를 나타내기 위해 필요한 축의 개수를 말합니다. 예를 들어 2차원 공간의 점은 두 개의 축 (x, y) 으로, 3차원 공간의 점은 세 개의 축 (x, y, z) 으로 표현이 가능하죠. 즉, 어떤 데이터(점)의 특징(위치)을 서술하는데 사용되는 독립적인 특성(차원)의 개수, 정보량이라고 생각할 수 있습니다. 따라서 차원의 크기가 커질 수록 데이터를 해석할 수 있는 정보를 더 많이 가지고 있다고 생각할 수 있습니다. 이러한 차원의 의미를 일상 생활의 데이터에 적용해볼까요? 이미지의 경우 이미지를 구성하는 각각의 픽셀들이 이미지를 나타내는 독립적인 특성들이 될 것 입니다. 따라서 이미지 전체의 픽셀 개수가 차원의 크기에 해당되며, 100.. 2020. 1. 27.
반응형