본문 바로가기
728x90

전체 글429

Digital Image Processing - Intro Intro 디지털 영상 처리란 x,y라는 공간좌표를 이용한 f(x,y)함수로 표현된 2D 이미지를 다루는 것이다. 과정을 살펴보면 이미지를 sensor를 통해 sampling하고 quantization하여 matrix로 표현하여 처리하는 것이다. matrix를 다루는 단순한 코드를 살펴보면 아래와 같다. int i, j, k; int nr, // number of rows nc, // number of columns nchan; // number of channels nr = 128; nc = 128; nchan = 3; for (i=0; i 2024. 3. 13.
Algorithm Design - 복잡도 분석 Big O Big O notation으로 어떻게 표현되는 알고리즘이느냐에 따라 아예 수행이 불가능한 알고리즘이 될 수도 있다. 점근적 상한(Asymptotic Upper Bound) 방법을 이용하여 정의되고 표현한다. 주어진 복잡도 함수 f(n)에 대해서 g(n)∈O(f(n)) 이면 다음을 만족한다. n≥N인 모든 정수n에 대해서 g(n) ≤ c x f(n)이 성립하는 실수 c>0와 음이 아닌 정수 N이 존재한다. 이는 아래와 같이 그래프를 통해 살펴볼 수 있다. 어떤 함수 g(n)이O(n^2)에 속한다는 말은 그 함수는 어떤 임의의 N값보다 큰 값에 대해서는 어떤 2차함수 cn^2 보다는 작은 값을 가지게 된다는 것을 뜻한다. (그래프 상에서는 아래에 위치) 반대로 어떤 알고리즘의 시간복잡도가 O(f(.. 2024. 3. 13.
[논문 리뷰] DDPM (Denoising Diffusion Probabilistic Models) Intro DDPM은 고품질 샘플을 생성할 수 있는 새로운 접근 방식으로 주목받는 생성 모델의 한획을 그은 논문이다. 순수한 노이즈에서 시작하여 점차적으로 구조를 추가하면서 신호를 점진적으로 제거하는 방식으로 작동한다. 이 과정은 일련의 노이즈 수준에 대한 학습된 분포에 의해 전개되기 때문에, 이 모델들은 샘플의 품질과 다양성에 영향을 받는다. 최근 VR기기와 XR시장이 커지면서 3D generative model도 굉장히 각광받는 시장일 것이라고 생각이 되어 이미지 생성형 모델의 시초가 되는 diffusion model에 대해서 공부해보고 싶었다. Background Knowledge - VAE VAE는 컴퓨터 비전 분야에 한 획을 그은 방법론이다. 특히 이미지 생성 분야에서는 그 임팩트가 엄청났다. .. 2024. 3. 12.
[논문 리뷰] Auto-Encoding Variational Bayes(VAE) Intro 연속적인 또는 이산적인 독립변수 x를 N개 가지고 있는 Dataset X를 정의하고 이때 data는 관찰되지 않은 랜덤한 연속변수 z에 의해서 생성된다고 하자. 그렇다면 해당 process는 2단계로 이루어질 수 있다. 1. 랜덤변수 z는 사전분포 P_θ(z)에 의해서 생성된다. 2. data x는 조건분포 P_θ(x|z)에 의해 생성된다. (추가적으로 해당 함수들은 미분가능하다) 위 문제를 기존의 방법으로는 다루기가 어렵다. 첫번째로 marginal likelihood의 수식을 보면 알 수 있다. 당연히 data X가 P_θ function으로부터 나와야 하지만, 해당 수식은 정의되지 않은 분포 z를 이용하기 때문에 추정하기 매우 어렵다. (그렇기 때문에 MAP(maximum a poster.. 2024. 3. 9.
Algorithm Design - Intro/Data structure Intro 이전에도 타과의 알고리즘 강의를 청강해서 들었으나 실습이 포함된 실습과목을 통해 직접 코드 설계하는 실력도키우고 설계학점도 채울겸 알고리즘 설계 수업을 수강하게 되었고 해당 수업 내용을 정리하는 시리즈가 될 것이다. 우선 알고리즘이란 특정문제를 해결하기 위해 기술한 일련의 명령문이다. 본격적으로 구체적인 알고리즘들을 학습하기전에 복습겸 간단한 기초와 데이터 구조에 대해서 살펴보자. 알고리즘의 요건으로는 크게 세가지 정도로 볼 수 있다. - 완전성과 명확성: 수행결과와 순서가 완전하고 명확하게 명세되어야하고 순수하게 알고리즘이 지시하는대로 실행하기만하면 의도한 결과가 얻어져야하는 것이다. - 입력과 출력: 입력은 알고리즘이 처리해야할 대상으로 제공되는 데이터이고 출력은 입력데이타를 처리하여 얻은.. 2024. 3. 9.
[논문 리뷰] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis Abstract 이 논문은 Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, Ren Ng이 공동으로 진행한 연구에 관한 논문으로, 신경 방사성 필드(Neural Radiance Fields, NeRF)를 사용하여 3D 장면을 표현하고, 이를 바탕으로 높은 품질의 뷰 합성(view synthesis)을 달성하는 새로운 방법을 제시한다. 복잡한 장면의 새로운 시점을 합성하기 위해, 소수의 입력 뷰를 사용하여 연속적인 볼륨 장면 함수를 최적화함으로써 최첨단 결과를 달성하는 방법을 제시한다. 이 알고리즘은 장면을 Fully Connected(비컨볼루셔널) 깊은 네트워크를 사용하여 표현하며, 이 네.. 2024. 3. 2.
Google Solution Challenge 2024 - Voice-Bridge Review 약 한달반간의 팀원과의 협업의 결과로 Voice Bridge라는 농인을 위한 양방향 통역 어플을 완성하였다. 간단한 소개는 아래의 2분짜리 데모영상에 나와 있다. https://youtu.be/2Yceyr7ussU 우리 팀의 깃허브 링크이다. 프론트 파트 1명 ,백엔드 파트 1명, 인공지능 파트 2명이서 열심히 지지고 볶아서 완성된 프로젝트이다. 내가 모은 팀원들이 모두 고생하여 완성을 해내서 기특하단 말을 해주고 싶다. https://github.com/GSC-voice-linker VOICE LINKER Communication App for the Deaf. VOICE LINKER has 4 repositories available. Follow their code on GitHub. .. 2024. 2. 28.
Google ML crash course (9) 특성 교차 특성 교차는 두 개 이상의 특성을 곱하여 (교차하여) 구성되는 합성 특성이다. 특성 조합을 교차하면 이러한 특성이 개별적으로 제공할 수 있는 것 이상의 예측 기능을 제공할 수 있다. 위와 같은 상태에서 선형 모델로 구분을 해내는 것은 불가능하다. 이떄 x1과 x2의 곱인 x3을 추가적인 feature로 이용하면 곱이 양수인 blue dot과 곱이 음수인 red dot을 구분해낼 수 있다. 선형 모델로 비선형성을 학습 시킬 수 있는 것이다. 이렇게 다른 변수의 곱으로 합성 특성을 만드는 과정을 일반적으로 특성 교차 곱이라고 부른다. 특성 교차와 대량의 데이터 사용은 매우 복잡한 모델을 학습할 수 있는 효율적인 전략 중 하나이다. 원-핫 벡터 교차 지금까지는 두 개의 개별 부동 소수점 특성을 특성.. 2024. 2. 19.
Pandas(5) 인덱싱 pandas의 인덱싱에 대해서 알아볼 것이다. 레이블기반 인덱싱, 정수기반 인덱싱, 앞에서 또는 뒤에서 n행 인덱싱, 멀티 인덱싱에 대해서 차근차근 알아보자. 레이블기반(스칼라) 기본적으로 DataFrame.at의 형태를 띈다. at 함수는 loc 함수와 같이 레이블 기반으로 인덱싱을 하지만, DataFrame과 Series에 상관없이 하나의 스칼라값에 접근한다는 차이가 존재한다. 행/열 한쌍에 대한 단일 값에 엑세스한다는 특징이 있다. 사용법은 아래와 같이 단순하게 이용할 수 있다. 값 가져오기 : result = df.at['행', '열'] 값 설정하기 : df.at['행', '열'] = value 예시 먼저 아래와 같이 기본적인 2x2 행렬을 만든다. df = pd.DataFrame([[1,.. 2024. 2. 4.
딥러닝 직접 구현하기 - (word2vec 보충) 확률적인 관점 우선 CBOW 모델을 확률적인 개념을 적용하여 개선을 해보고자 한다. 확률의 표기법을 간단히 살펴보자. 확률의 표기법을 간단하게 살펴보자. 확률은 P(.)이라고 한다. A의 확률은 P(A)라고 표기한다는 것이다. P(A,B), A와 B가 동시에 일어날 확률을 말한다. P(A|B), 사건이 일어난 후의 확률 즉 사후확률인데 이는 다시 말해서 B라는 정보가 주어졌을 때, A가 일어날 확률을 말한다. 그럼 CBOW 모델을 확률 표기법으로 기술해보자. CBOW 모델이 하는 일은, 맥락을 주면 타깃 단어가 출현할 확률을 출력하는 것이다. 이번에는 아래와 같이 말뭉치를 w1, w2, w3, .... wt로 단어 시퀀스를 표기하고 t번째 단어에 대해 윈도우 크기가 1인 맥락을 고려하도록 하자. 이를 w.. 2024. 2. 4.
딥러닝 직접 구현하기 - (word2vec 학습) 학습 데이터 준비 word2vec에서 이용하는 신경망의 입력은 맥락이다. 그리고 정답 레이블은 맥락에 둘러싸인 중앙의 단어, 즉 타깃이다. 우리가 해야 할 일은 신경망에 맥락을 입력했을 때 타깃이 출현할 확률을 높이는 것이다. 말뭉치에서 맥락과 타깃을 만드는 작업을 진행해보자. 우선 말뭉치 텍스트를 단어 ID 로 변환해야 한다. import sys sys.path.append('..') from common.util import preprocess text = 'You say goodbye and I say hello.' corpus, word_to_id, id_to_word = preprocess(text) print(corpus) print(id_to_word) 그런 다음 단어 ID의 배열인 corp.. 2024. 2. 2.
딥러닝 직접 구현하기 - (word2vec) 단순한 word2vec 지금까지 살펴본 모델을 신경망으로 구축하도록 하자. 사용해볼 신경망은 word2vec에서 제안하는 CBOW(continuous bag-of-words)모델이다. CBOW 모델은 맥락으로부터 타깃을 추측하는 용도의 신경망이다. 타깃은 중앙 단어이고, 그 주변 단어들이 맥락이다. 이 CBOW 모델이 가능한 한 정확하게 추론하도록 훈련시켜서 단어의 분산 표현을 얻어내는 것이 목표이다. CBOW 모델의 input은 맥락이다. 따라서 맥락을 one-hot 표현으로 변환하여 CBOW 모델이 처리할 수 있도록 한다. 위 그림은 CBOW 모델의 신경망이다. 입력층이 2개 있고, 은닉층을 거쳐 출력층에 도달한다. 두 입력층에서 은닉층으로 변환은 똑같은 FCN이 처리한다. 그후 은닉층에서 출력층 뉴.. 2024. 2. 1.
728x90