Programming Principles [8] : 정렬 알고리즘 (Sortion Algorithms)
·
Computer Scinece/Programming Principles
계산 복잡도 분석은 문제를 해결할 수 있는 모든 알고리즘의 효율성을 평가하고, 해당 문제의 하한(Ω)을 결정하는 과정이다. 예를 들어, 행렬 곱셈 문제의 일반 알고리즘은 Θ(n3)의 시간복잡도를 가지며, 개선된 알고리즘으로는 쉬트라쎈 알고리즘 (Θ(n2.81))과 위노그라드 알고리즘 (Θ(n2.38))이 존재한다. 하지만, 이 문제의 계산 복잡도 하한은 Θ(n2)로 알려져 있으나, 이만큼 효율적인 알고리즘은 아직 발견되지 않았다. 이는 하한보다 효율적인 알고리즘을 만드는 것이 불가능함을 의미하며, 예를 들어 3×3 행렬 곱셈에서는 기존 방식으로는 27번의 연산이 필요하지만, 개선된 알고리즘은 이를 줄일 수 있음을 보여준다. 계산 복잡도에서 문제의 복잡도 하한이 Ω(f(n))인 경우, 시간 복잡도가 Θ(f..
Development Report : 미세 중력 핸드트레킹 상호작용 시뮬레이션
·
카테고리 없음
해당 논문은 Leap Motion의 핸드 트레킹과 Unity의 물리 엔진을 결합하여 사용자가 미세 중력의 가상 환경에서 손으로 객체를 조작하는 몰입감 있는 상호작용을 제공하는 연구이다. Leap Motion은 손의 위치, 속도, 회전 데이터를 실시간으로 추적하며, Unity의 물리 엔진은 충돌 감지, 접촉 지점 계산, 임펄스와 마찰력 적용을 통해 현실감 있는 물리적 반응을 시뮬레이션한다. 또한, 노이즈 필터링 기법을 적용해 손의 움직임을 안정적으로 처리하며, 사용자가 가상 객체를 잡고, 이동하며, 놓는 등의 섬세한 상호작용을 수행할 수 있도록 설계되었다.  God Object 접근법을 사용하여 손이 가상 객체를 뚫고 지나가는 문제를 해결하고, 손과 객체 간의 접촉을 유지하며 자연스러운 시각적 피드백을 제..
Development Report : IMU 센서 기반 핸드트레킹 LSTM 예측 모델
·
카테고리 없음
경희대학교 수업 프로젝트로 진행했던  전체 코드는 다음과 같다. 1. 필요한 라이브러리 불러오기import numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitimport torchimport torch.nn as nnfrom torch.utils.data import DataLoader, TensorDataset, ConcatDatasetimport globfrom tqdm import tqdmfrom LSTMModel import LSTMModel 코드의 첫 번째 단계는 데이터 처리와 모델 학습에 필요한 라이브러리를 불러오는 것이다. numpy와 pandas는 데이터를 다루고 전처리하는 데 사용되며 skle..
AI Programming [2] : 가우시안 스플래팅 (Gaussian Splatting)
·
카테고리 없음
가우시안 스플래팅(Gaussian Splatting)은 3D 공간에서 장면을 표현하기 위해 사용되는 기법으로, 가우시안 분포를 활용하여 데이터를 효과적으로 압축하고 렌더링하는 방식이다. 이 기법은 포인트 클라우드(Point Cloud) 데이터를 3D 가우시안 분포로 변환하여 각 포인트를 하나의 가우시안으로 표현한다. 가우시안 분포는 중심점 μ, 공분산 행렬 Σ, 및 가중치 w로 정의되며, 특정 위치 x에서의 가우시안 값은 다음과 같이 계산된다. 이 방식을 통해 가우시안 형태로 데이터를 표현하면, 기존의 포인트 클라우드보다 더 부드럽고 연속적인 장면 표현이 가능하다. 가우시안 스플래팅은 공분산 행렬을 활용해 각 포인트의 크기와 방향성을 조절할 수 있어, 더욱 자연스럽고 디테일한 렌더링을 지원한다. 또한, ..
AI Programming [1] : 하버드 트랜스포머 (Harvard Transformer)
·
카테고리 없음
Transformer는 문장이나 텍스트를 처리하는 데 사용되는 모델로, 주로 Encoder와 Decoder라는 두 큰 구성 요소로 나뉜다. Encoder는 입력된 문장을 이해하고 중요한 정보를 추출하는 역할을 하며, Decoder는 그 정보를 바탕으로 새로운 문장을 생성한다. 각 Encoder와 Decoder는 여러 층으로 이루어져 있고, 각 층은 Multi-Head Attention으로 입력의 중요 부분을 분석하고, Normalization으로 데이터의 변동성을 줄이며, Residual Connection으로 각 층의 출력을 더 원활하게 연결하며, Feed Forward network로 데이터를 처리한다. 입력된 단어는 Embedding이라는 과정을 통해 숫자 벡터로 변환되어 컴퓨터가 이해할 수 있도록..
AI Programming [0] : AI 환경 세팅 (Environment Settings for AI)
·
Development/Artificial Intelligence Models
1. MiniConda   Anaconda는 데이터 분석과 AI 학습에 필요한 다양한 패키지를 한 번에 설치하고 관리할 수 있는 프로그램 관리 도구로, 창고와 같은 역할을 한다. 이를 통해 사용자는 필요한 도구들을 쉽게 설치하고 업데이트할 수 있다. 여러 프로젝트를 진행하다 보면 각 프로젝트마다 다른 버전의 라이브러리나 파이썬을 요구할 때가 많다. 이런 경우, 가상 환경이 유용하다. 가상 환경은 컴퓨터의 독립적인 가상 폴더와 같아서 각 프로젝트가 독립적인 공간을 가지며, 서로 다른 버전의 패키지들을 설치하고 사용할 수 있다. 예를 들어, 프로젝트 A에서 numpy 1.21이 필요하고 프로젝트 B에서 numpy 1.23이 필요할 때, 같은 환경에서 작업하면 버전 충돌이 일어날 수 있지만, 가상 환경을 사용..
Deep Learning [3] : 트랜스포머 (Transformer)
·
Artificial Intelligence/Artificial Intelligence Theory
Attention 모델은 자연어 처리에서 중요한 역할을 하며, Encoder와 Decoder라는 두 개의 주요 구성 요소로 이루어져 있다. 예를 들어, 영어를 한국어로 번역할 때, Encoder는 영어 문장을 받아들여 이를 압축된 형태인 **문맥 벡터(context vector)**로 변환한다. 이 문맥 벡터는 문장의 중요한 정보를 요약한 것으로, Decoder는 이를 입력 받아 한국어 문장을 생성한다. 이는 전화기의 원리와 비슷한데, 음성 신호를 압축하여 전송하고, 수신 측에서는 이를 다시 풀어 원래의 음성을 재생하는 방식과 같다. 이렇게 문맥 벡터를 사용하면 연산량이 줄어드는 장점이 있지만, 정보가 한 곳에 집중되어 일부 중요한 세부 사항이 손실될 수 있다. 예를 들어, 영어 문장에서 'The cat..
XR & Spatial Computing SDK [1] : 스냅 드래곤 스페이스 (SnapDragon Spaces by Qualcom)
·
Toolkit/Software Development Toolkit
Unity Setup Guide | Snapdragon Spaces™ Unity and Unreal SDKsThis guide will explain in detail how to get started with the Snapdragon Spaces SDK in Unity.docs.spaces.qualcomm.com
Unity Programming [4] : AI 통합 게임 엔진 (AI-Integrated Game Engine)
·
Development/3D Engine Programming
유니티(Unity)는 실시간 3D 시뮬레이션 환경을 제공하여 AI 모델의 훈련과 테스트를 효과적으로 지원한다. 특히, 물리 기반 시뮬레이션을 통해 로봇 제어, 자율주행차, 가상 환경에서의 사용자 행동 예측과 같은 다양한 AI 응용 사례를 개발할 수 있다. 이를 통해 유니티는 높은 확장성과 유연성을 바탕으로 AI 기술과의 통합을 가능하게 한다. 유니티에서 인공지능 모델을 활용할 수 있는 방법은 센티스, 바라쿠다, ML Agent 등이 있다. 센티스(Sentas)는 유니티 내에서 AI 및 머신러닝 모델의 실행을 지원하는 도구로, TensorFlow, PyTorch와 같은 프레임워크로 학습된 모델을 가져와 유니티 환경에서 빠르게 추론을 실행할 수 있다. 바라쿠다(Barracuda)는 유니티에서 제공하는 경량화..
Unity Development [4] : 애니메이션 (Animation)
·
Development/3D Engine Development
유니티(Unity)에서 애니메이션은 캐릭터, 객체, UI 요소 등의 움직임을 제어하고 시각적 효과를 추가하는 데 사용된다. 유니티는 기본적으로 애니메이터 컨트롤러(Animator Controller)와 애니메이션 클립(Animation Clip)이라는 두 가지 주요 요소를 통해 애니메이션 시스템을 관리한다. 애니메이터 컨트롤러는 각 애니메이션 클립 간의 전환을 설정하고, 복잡한 상태 전환 논리를 구성할 수 있도록 돕는다. 애니메이터 컨트롤러는 상태 머신(state machine) 기반으로 동작하며, 각 상태는 특정 애니메이션 클립을 나타낸다. 예를 들어, 게임 캐릭터라면 '대기', '걷기', '달리기', '점프' 등의 상태가 있을 수 있고, 각 상태에 해당하는 애니메이션 클립을 연결할 수 있다. 이를 통..