러스트의 모듈 시스템 러스트의 모듈 시스템은 아래 4가지를 말합니다. 패키지(Packages) : cargo에서 제공하는 기능으로, crate를 빌드하고 생성할 수 있습니다. 크레이트(Crates) : 라이브러리 또는 바이너리를 생성하는 모듈 트리(a tree of modules)입니다. mod 와 use: 코드 안에서 다른 모듈들을 구성하고, 불러오거나 다른 모듈에 노출할 지 여부(private or public)를 결정합니다. 경로: 모듈에서 특정 요소(함수, 구조체, 변수 등)를 찾기 위한 방법 패키지 cargo.toml 파일 하나의 패키지에는 단 하나의 라이브러리 크레이트만 포함할 수 있습니다. 하지만 바이너리 크레이트는 여러 개를 넣을 수 있습니다. 크레이트 바이너리 크레이트 main.rs ca..
러스트는 객체지향 프로그래밍보다는 함수형 프로그래밍에 더 가깝습니다. 단적인 예로 러스트 코드는 이터레이터와 클로저를 적극적으로 사용합니다. 이러한 이유에서 클래스가 존재하지 않습니다. 대신 비슷한 역할을 구조체 struct를 통해서 구현 할 수 있습니다. 구조체 구조체의 정의 구조체 선언 먼저 파이썬에서 클래스를 하나 정의해 보겠습니다. Person 클래스는 객체화 시 name, age 두 변수를 파라미터로 받고, self.name, self.age 라는 인스턴스 프로퍼티에 할당됩니다. class Person: def __init__(self, name, age): self.name = name self.age = age 러스트에서 구조체를 선언하기 위해서는 struct 키워드 뒤에 구조체 이름을 명시..
2019년 CVPR(Computer Vision Pattern Recognition, IEEE주최)컨퍼런스 Action Recognition 분야 1등모델입니다. 기존 Two Stream Network 모델처럼 Optical Flow정보를 사용하지 않는 점이 특징입니다. biological 연구에서 영감을 받았다고 합니다. 영장류의 시각 시스템을 연구했더니 망막 신경세포가 두 종류가 있는데 세포가 시그널을 전파하는 path도 두가지가 있다고 합니다.(2종류 cells, paths) 아래쪽에 있는 패스가 대부분의 정보를 처리하는 부분인데 컬러 및 공간 디테일 정보(what) (slow) (P-cells), 윗부분 초록색부분은 흔히 운동선수들이 가지고있는 동체시력, 즉 움직임과 위치에 대한 정보를 주로 얻게..
NN(neural network) 신경망 위 그림은 신경망 기본모델 입니다.w는 가중치, b는 편향입니다. 입력(feature)과 출력은 데이터셋으로 알고있는 상황입니다. 뉴런에서 함수를 더하기로 정의합니다.그러면 출력은 y= xw+1 b가 될것입니다. 이 모델의 목표는 알고있는 y,x에 무작위 w값을 넣어보고 y값과 실제값을 비교한뒤 오차만큼 다시 w를 수정해서 y를 다시 출력해보고 최종적으로 제일 잘 맞는 w,b의 값을 찾는것 입니다. 그래서 모든 y,x에 맞는 식을 세우는것, 즉, 일반화 한다 생각하시면 될 것 같습니다. 하지만 모든 데이터들은 위와 같이 단순하게 일차원적이지 않습니다. 일상생활의 데이터들은 특징끼리 서로 연관되어있기도하고 여러가지 복합적입니다 마치 아주 복잡한 n차 다항식과 같습니..
a,b 두개의 벡터가 있습니다.두 함수를 연산하여 새로운 함수를 얻는 가장 간단한 방법 중 하나는 단순히 더하는 방법이 있습니다. f(x),g(x)를 이미지라 생각하고 a,b를 각각 픽셀값이라 생각하면 1234,5678을 더하면 새로운 이미지 6,8,10,12가 나옵니다. 이번에는 합성곱인데요. 라플라스 변환에 나오는 그 합성곱입니다. 앞선 두 연산과 달리 단순히 숫자 연산만 하는것이 아니고 새로운 함수를 만들어냅니다. 이미지 처리에서 기본이 되는 연산입니다. 미분방정식을 푸는데 많이 사용되고 다항식을 서로 곱하는 것과 같은 맥락입니다. 1,2,3과 4,5,6 합성곱하는 방법은 다항식을 푼다고 생각하시면 쉽습니다. 다항식으로 만들고 분배법칙으로 푼다음 계수만 갖고오면 합성곱 결과가 나타납니다. 필터(커널..
모든 이미지는 픽셀로 이루어져있습니다. 픽셀이란 Picture+Element의 합성어 입니다. 코부분을 확대하면 사각형 여러개가 모여있는것을 볼수 있는데 이 사각형 하나하나를 픽셀 or 화소라고 부릅니다. 100x100 이미지면 10000픽셀로 640*480은 307200픽셀 이루어져있습니다.FHD는 200만, qhd는 370만, uhd는 830만 픽셀입니다. 픽셀 및 해상도 개념은 이미지뿐만 아니라 모니터, 카메라에서도 쓰고있습니다. 그리고 픽셀의 색을 숫자로 표현하고 범위는 0~255으로 이루어져있습니다. 한 픽셀에 숫자가 한개 있으면 1채널이라 부르고 gray scale이라고 해서 흔히말하는 흑백사진입니다. 0은 black, 255는 white입니다. 한 픽셀에 숫자가 3개씩 있으면 3채널이라 부르..
데이터 구조와 이터레이터 데이터 구조(Data structure)란, 컴퓨터에서 어떠한 값의 모음을 효율적으로 나타내기 위한 방법을 의미합니다. 예를 들어, 정수 10개를 다음과 같이 변수 10개에 저장해 보겠습니다. let num1 = 1; let num2 = 2; let num3 = 3; ...생략... let num10 = 10; 이렇게 변수를 여러 개를 만들면 각 변수들이 독립적으로 존재하기 때문에 의미적으로 연결해서 생각하기가 어렵고, 다른 함수나 변수에 값들을 전달하려면 모든 변수를 전달해야 하기 때문에 번거롭습니다. 따라서 여러 개의 값을 하나로 묶어서 관리하면 편리합니다. let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 이번 챕터에서는 다양한 용도로 값들을 묶..