1. Numpy 배열 Numpy 배열은 값들이 동일한 데이터 타입을 갖는 그리드 형태의 데이터 구조입니다. 여기서 그리드 형태란 Numpy 배열 요소들이 행(row)과 열(column)로 이루어진 구조를 말합니다. 각 값은 양의 정수로 색인(index)화됩니다. 배열의 차원 수는 배열의 rank로 표현되며, 배열의 모양은 각차원에 따라 몇 개의 항목이 있는지를 나타내는 정수의 튜플로 표현됩니다. Numpy 배열은 파이썬의 기본 리스트와는 다른 형태를 가집니다. Numpy 를 공부하다보면 ndarray라는 단어를 듣게됩니다. ndarray는 "N-dimensional array"의 줄임말로, 임의의 차원으로 구성된 배열을 의미합니다. N차원 배열은 단순한 배열로, 1차원이나 2차원부터 시작하여 임의의 수의..
1. Numpy 란? Numpy는 "Numerical Python"의 줄임말로, Python에서 과학 계산을 위한 핵심 라이브러리입니다. Numpy는 파이썬의 기본 데이터 구조를 확장하여, 다차원 배열을 효과적으로 처리할 수 있는 기능을 제공합니다. Numpy의 가장 큰 특징은 다차원 배열 객체인 ndarray를 제공한다는 점입니다. 이 배열은 동일한 유형의 원소들로 구성되며, 파이썬의 리스트에 비해 빠른 연산과 더 적은 메모리를 사용합니다. 1.1 Numpy 장점 1.1.1 효율적인 메모리 사용 Numpy 배열은 동일한 데이터 타입을 가진 원소들로 이루어져 있어, 메모리를 효율적으로 활용합니다. 그 결과, 대용량 데이터를 다룰 때에도 높은 성능을 보장합니다. 1.1.2 빠른 연산 속도 Numpy는 내부..
1. UI 역시 메시이다. - 3D 그래픽에서 신경써야 하는 병목이 모두 똑같이 적용된다. Draw Call, Overdraw 등 드로우 콜(Draw Call) : 그래픽스 API가 GPU에게 화면에 무언가를 그리라고 명령하는 것, 드로우 콜이 많을 수록 CPU와 GPU 간의 통신 부하가 증가하여 게임의 렌더링 성능이 저하될 수 있음, 따라서 게임 개발에서는 도로우 콜의 수를 줄이기 위해 다양한 최적화 기법을 사용 오버드로우(Overdraw) : 화면의 특정 픽셀이 한 프래임 내에서 여러 번 렌더링되는 현상을 말함, 보통 여러 오브젝트가 같은 화면 공간을 공유할 때 발생하며, 특히 뒤에 있는 오브젝트가 앞에 있는 오브젝트에 의해 가려지는 경우에도 뒤에 있는 오브젝트가 렌더링되어 자원을 낭비하게 됨 - C..
1. Onnx란? ONNX(Open Neural Network Exchange)는 딥러닝 모델을 표현하기 위한 개방형 형식입니다. Microsoft와 Facebook이 주도하여 개발하였고, 이 형식은 여러 딥러닝 프레임워크에서 모델을 공유하기 위한 표준입니다. ONNX는 여러 프레임워크에서 딥러닝 모델을 생성하고 훈련시킬 수 있도록 하며, 각각의 프레임워크가 제공하는 도구 및 기능을 활용할 수 있습니다. ONNX 형식을 사용하여 모델을 다른 프레임워크로 쉽게 이동할 수 있습니다. 예를 들어, 연구자는 PyTorch에서 모델을 프로토타입하고 개발할 수 있으며, ONNX를 통해 모델을 TensorFlow 또는 Caffe2로 변환하여 서버에서 배포할 수 있습니다. ONNX는 계산 그래프(computation ..
1. 접근 지정자와 접근자의 기본 이해 1.1 접근지정자 or 접근제어자(Access Modifiers)의 개념 설명 유니티에서 사용되는 접근지정자는 클래스 멤버의 접근 수준을 정의하는데 사용됩니다. 각 접근 제한자는 클래스, 변수, 메서드 및 다른 멤버의 가시성과 접근성을 다르게 설정합니다. 여기서 클래스 멤버란 변수, 메서드(함수), 프로퍼티, 이벤트 등을 의미합니다. 다음은 각각의 접근 제한자에 대한 설명입니다. public : 어떤 클래스에서든 접근할 수 있습니다. public 멤버는 어디서든, 즉 같은 어셈블리(프로젝트) 내부 또는 다른 어셈블리에서도 접근할 수 있습니다. private : 오직 같은 클래스 내부에서만 접근할 수 있습니다. 다른 클래스에서는 접근할 수 없습니다. private은 ..
1. Unity Editor Interface Unity Editor는 유니티 엔진의 주요 개발 환경으로, 게임과 같은 콘텐츠를 만들기 위한 툴입니다. Unity Editor를 사용하여 3D 및 2D 게임 환경을 시각적으로 구성하고, 오브젝트를 배치하고, 스크립트를 적용하고, 게임을 테스트하고, 빌드할 수 있습니다. Unity Editor에는 6개의 주요 창이 있습니다. Scene View, Game View, Hierarchy, Inspector, Project, Console 입니다. 이 창들은 아래 이미지와 같은 기본형태를 가지고 있지만 사용자가 편하게 레이웃을 변경할 수도 있습니다. 1.2 프로젝트(Project) 창 프로젝트 창은 유니티에서 프로젝트에 포함된 모든 에셋을 보여주는 창입니다. 이 ..
1. 차원에 따른 좌표계 1.1. 1차원 좌표계 1차원 좌표계는 실질적으로 직선 상의 위치를 나타냅니다. 이 좌표계는 단일 축, 종종 x축이라고 부르는 값에 따라 결정됩니다. 가장 단순한 형태의 이 좌표계에서는, 단일 수치(스칼라) 값으로 표현됩니다. 예를 들어, 온도 변화를 측정하는 것은 1차원 좌표계에서 이루어질 수 있습니다. 가령 어떤 곳의 기온이 낮부터 늦은 밤까지 어떻게 변하는지 보려면, 당신은 시간(1차원)에 따른 온도(측정 값)을 추적하면 됩니다. 1.2. 2차원 좌표계 2차원 좌표계는 평면좌표계라고도 하며, 점들은 두 개의 값을 갖습니다. 값은 x와 y로 표현되며, 각각 수평축과 수직축을 나타냅니다. 예를 들어 당신이 지도를 사용하여 특정 도시의 위치를 찾는다고 할 때, 도시의 위치는 지도..
1. 유니티 생명 주기란? 컴포넌트들과의 상호작용 그리고 사용자 입력에 대한 반응들을 통해 오브젝트를 제어 할 수 있다고 했습니다. 이러한 상호작용과 반응은 순차적이고 구조화된 방식으로 이루어집니다. 이를 가능하게 하는 것이 바로 유니티의 생명 주기(Life-cycle) 입니다. 이는 객체가 생성되고 활성화되며, 업데이트되고, 종료되는 과정을 의미합니다. 이 생명주기에는 여러 이벤트 메서드가 존재하며, 이를 통해 게임 오브젝트의 동작을 제어할 수 있습니다. 아래 이미지는 유니티의 생명 주기의 흐름도를 보여줍니다. 생명 주기는 주요 이벤트 메서드들로 구성되며, 각 메서드는 필요한 각 단계에서 호출됩니다. 1.1 Awake() Awake()는 게임 오브젝트가 비활성 상태에서도 호출되며, 씬(Scene)이 로..
1. COCO Data Set이란? COCO Data Set은 "Common Objects in Context"의 약자로 Object detation, Segmentation, image capsion과 같은 컴퓨터 비전 작업을 위해 널리사용되는 대규모 이미지 데이터셋입니다. COCO Data Set은 오픈 라이선스를 가지고 있어 학술 연구와 상업적인 목적을 포함한 다양한 분야에서 활용됩니다. 특히 논문에서 성능 평가 목적으로 많이 사용됩니다. COCO Data Set은 다양한 카테고리에 속하는 약33만 개의 이미지로 구성되어 있으며, 이들 이미지에는 약 80개 이상의 일상적인 객체가 포함되어 있습니다. 각 이미지에는 bbox, segmentation, caption, keypoint 정보가 제공됩니다...
1. 프로젝트 요청 사항 약 4평 정도의 전시 공간에 사람이 들어오면 사람을 인식하고, 사람의 아바타를 벽면에 프로젝션 하고, 특정한 행위를 하면 이벤트가 발생되는 형태의 시스템 해결 문제 : 사람 인식, 사람의 위치와 벽면에 투영된 아바타와의 위치 매핑, 특정한 행위 추정과 이벤트 발생 2. 사용 하드웨어 및 소프트웨어 유니티, Azure Kinect / 카메라 설치와 프로젝션 설치는 하드웨어 팀 진행함 3. 후기 Azure kinect를 유니티에서 사용할 때 에셋을 구매해서 사용하면 편리하게 기능들을 구현할 수 있음, 에셋은 2개가 있는데 왼쪽에 있는 에셋이 기능이 더 많음, 코드 공부를 해도 왼쪽이 더 공부할게 많음, 처음부터 구현하기보다 그냥 돈 주고 사는 게 편함 Azure Kinect의 경우 ..