본문 바로가기
728x90

Quality control (Univ. Study)196

Algorithm Design - Tree Tree 우선 트리구조를 가볍게 살펴보자. 이미 자료구조론 수업에서 다뤘던 내용이기 때문에 간단하게만 살펴보려한다. Tree terminology 1. 루트(Root): 부모가 없는 노드 (A) 2. 자식(Child): 노드 u가 노드 v의 부모라면, v는 u의 자식입니다. 3. Siblings: 같은 부모를 가진 노드들 4. Internal node: 적어도 하나의 자식을 가진 노드 (A, B, C, F) 5. Leaf node: 자식이 없는 노드 (E, I, J, K, G, H, D) 6. 노드의 깊이(Depth of a node): ancestor의 수 7. Height of a tree: 어떤 노드의 최대 깊이 8. 차수(Degree): 노드의 자식 수 Traversal 종류 Preorder (.. 2024. 4. 4.
DIP 실습 - SpreadSalt Noise / Gradation / Editing Spread Color Salt 주어진 영상(img1.jpg)에 빨강, 파랑, 초록 색의 점을 각각 설정한 개수만큼 무작위로 생성하는 프로그램을 작성하고 생성한 영상에서 빨강,파랑, 초록색의 점을 각각 카운트하는 프로그램을 작성하고 카운트 결과가 실제와 일치하는지 검증하라. 처음에는 SpreadSalt함수를 그대로 변형하여 SpreadRed, SpreadBlue, SpreadGreen함수를 만들어서 이미 색이 있는 점을 찍은 곳에 또다시 점을 찍어서 count를 했을때 원하는 숫자만큼 세지지 않는 문제가 있었다. 이를 해결하기 위해 조건문 하나를 더 넣어줘서 빨간점, 파란점, 초록점이 이미 있는 곳에는 다시 찍지 않고 그냥 넘어가되 for문을 돌리는 횟수의 기준이 되는 n을 1감소 시켜서 찍지 않은 횟수.. 2024. 4. 3.
알고리즘 설계 실습 - 트리 순환 문제 위의 문제처럼 트리를 만들고 preorder, inorder, postoder함수를 짜서 실행시켜보면되는 단순한 문제이다. 이전에 자료구조론 수업을 들을 때 C++로 몇날 몇일을 고생하면서 B트리를 설계했던 기억이 있는데 비교적 간단한 트리 순환 문제였다. import sys input = sys.stdin.readline # 입력 받기 N = int(input()) # 빈 트리 정의 tree = {} for n in range(N): root, left, right = sys.stdin.readline().strip().split() tree[root] = [left, right] # preorder def preorder(root): if root != '.': print(root, end=''.. 2024. 4. 3.
Digital Image Processing - Denoising / Filter / Edge Detection Denoise 노이즈를 제거하는 과정을 denoise라고 하는데 우선 noise에 대서 알아보자. 다양한 노이즈의 종류가 있지만 대표적인 노이즈들을 한번 살펴보자. Salt-and-pepper noise: 흑백 픽셀의 무작위 발생이다. Impuse noise: 백색 픽셀의 무작위 발생이다. Gaussian noise: 가우시안 정규분포를 따르는 노이즈로 자연발생한 노이즈들이 자연적인 분포를 따르며 발생하는 노이즈이다. Gaussian noise를 Gaussian filter로 denoising하면 아래와 같이 standard한 denoising과정이 진행된다. 그러나 아래와 같은 Salt-and-pepper noise를 gaussian filter로 denoise를 하려하면 잘 진행이 되지 않는다. 다양.. 2024. 4. 3.
Softmax classifier Intro 인공지능 응용 수업을 수강하고 있는데 사실 인공지능 기초는 다양한 공개 강의들을 통해서 공부했고 몇몇 프로젝트도 진행했기에 아주 가법게 생각하고 듣기 시작했다. 그러나 생각보다 기초적인 부분에서 수식 증명과 같은 세부사항들에서 잊은 내용들이 있어서 기초를 다시 돌아보기 좋다는 생각이들어 블로그 정리도 간간히 하려고 한다. Express as Probability 추론의 결과를 0부터 1까지의 확률로 표현하기 위해서 sigmoid함수가 사용될 수 있다. Sigmoid함수를 미분하면 위와 같이 계산된다. 이를 간단하게 표현하면 P'=P(1-P)가 된다. Sigmoid함수를 이용하여 미분된 sigmoid 함수를 표현할 수 있는 것이다. 또한 P가 0 또는 1의 극단으로 갈 수록 미분의 결과는 0에 .. 2024. 3. 31.
알고리즘 설계 실습 - k번째 교환(heap sort) 문제 N개의 양의 정수가 저장된 배열 A가 있습니다. 아래 의사 코드 (pseudo-code)를 사용한 힙 정렬 로 배열 A를 정렬할 경우 K 번째 교환되는 수와 K 번 교환된 직후의 배열 A의 모든 원소를 출력 해 보세요. N개의 양의 정수가 저장된 배열에 대한 힙 정렬 의사 코드는 아래와 같습니다. heap_sort(A[1..n]) { # A[1..n]을 정렬한다. build_min_heap(A, n); for i 2024. 3. 30.
Digital Image Processing - Filtering in Spatial Domain Convolution 선현대수학 수업을 정리할 때도 기록했었고 CNN부터 시작해서 이미지를 처리하는 다양한 딥러닝 논문들을 공부할때 Convolution layer가 없는 논문을 찾기가 힘들 정도기 때문에 많이 다뤄봤으니 간단하게만 살펴보자. 우선 아래는 1D Convolution이다. 한 함수를 뒤집어서 이동시키며 겹치는 부분의 넓이를 구하는 개념이고 적분식은 바로 아래처럼 표현된다. 이를 확장한 2D Convolution이 본격적으로 이미지 처리를 위해 쓰이는 filter에서 사용되는 연산이다. 아까 봤던 개념처럼 filter인 g를 뒤집어서 겹쳐서 연산을 하는 과정이다. 참고로 f는 source image라고 보면 된다. 이런 뒤집는 관점이 마음에 안들면 아래와 같이 Correlation Filte.. 2024. 3. 29.
Digital Image Processing - Pixel Processing / 히스토그램 Pixel processing example Image negatives: 픽셀 값을 최대값에서 뺀다. 밝은 영역이 어둡게, 어두운 영역이 밝게 변한다. 공식:s = T(r) = L-1-r Log transform: 픽셀 값을 로그 함수에 적용한다. 어두운 영역의 명암 대비가 증가하고 밝은 영역은 덜 변한다. 공식: s = T(r) = clog(1+r) Contrast Stretching: 픽셀 값을 일정한 범위에 매핑하여 명암 대비를 조절한다. 어두운 영역을 더 어둡게, 밝은 영역을 더 밝게 만들 수 있다. Color transform: 색조, 채도, 명도를 조절하여 영상의 색상을 변환한다. 다양한 색상 효과를 만들 수 있다. Gamma correction: 영상의 밝기 비선형성을 보정한다. 어둡거나 .. 2024. 3. 26.
Algorithm Design - Parallel Sorting Algorithm / 바이토닉 정렬 / 홀짝 정렬 CPU vs GPUGPU는 CPU와 다르게 수천 수만개의 코어가 존재하여 hardware multithreading이나 SIMD(Single Input, Multiple Data)과 같은 병렬처리에서 강력한 모습을 보인다.CPU는 큰 캐시를 갖고 있어서  긴 대기 시간 메모리 액세스를 짧은 대기 시간 캐시 액세스로 변환하는 능력이 있다. 고도화된 제어능력이 있어서 분기 지연 시간 감소를 위한 분기 예측능력과 데이터 지연 시간 단축을 위한 데이터 포워딩도 할 수 있다. 또한 강력한 ALU로 작업 지연 시간을 단축한다.GPU는 작은 캐시가 특징이다. 메모리 처리량을 높이기 위한 것이다. 분기 예측이나 데이터 포워딩이 없다. 에너지 효율이 높은 ALU가 있어서 지연 시간이 길지만 높은 처리량을 위.. 2024. 3. 26.
728x90