Byn's Research Note

AI based Mixed Reality, Human-Computer Interaction

↓ My Web CV & Portfolio 자세히보기

전체 글 53

AI Programming [0] : AI 학습을 위한 가상 환경 세팅 (Virtual Environment Settings for AI)

1. MiniConda   Anaconda는 데이터 분석과 AI 학습에 필요한 다양한 패키지를 한 번에 설치하고 관리할 수 있는 프로그램 관리 도구로, 창고와 같은 역할을 한다. 이를 통해 사용자는 필요한 도구들을 쉽게 설치하고 업데이트할 수 있다. 여러 프로젝트를 진행하다 보면 각 프로젝트마다 다른 버전의 라이브러리나 파이썬을 요구할 때가 많다. 이런 경우, 가상 환경이 유용하다. 가상 환경은 컴퓨터의 독립적인 가상 폴더와 같아서 각 프로젝트가 독립적인 공간을 가지며, 서로 다른 버전의 패키지들을 설치하고 사용할 수 있다. 예를 들어, 프로젝트 A에서 numpy 1.21이 필요하고 프로젝트 B에서 numpy 1.23이 필요할 때, 같은 환경에서 작업하면 버전 충돌이 일어날 수 있지만, 가상 환경을 사용..

Deep Learning [3] : 트랜스포머 (Transformer)

Attention 모델은 자연어 처리에서 중요한 역할을 하며, Encoder와 Decoder라는 두 개의 주요 구성 요소로 이루어져 있다. 예를 들어, 영어를 한국어로 번역할 때, Encoder는 영어 문장을 받아들여 이를 압축된 형태인 **문맥 벡터(context vector)**로 변환한다. 이 문맥 벡터는 문장의 중요한 정보를 요약한 것으로, Decoder는 이를 입력 받아 한국어 문장을 생성한다. 이는 전화기의 원리와 비슷한데, 음성 신호를 압축하여 전송하고, 수신 측에서는 이를 다시 풀어 원래의 음성을 재생하는 방식과 같다. 이렇게 문맥 벡터를 사용하면 연산량이 줄어드는 장점이 있지만, 정보가 한 곳에 집중되어 일부 중요한 세부 사항이 손실될 수 있다. 예를 들어, 영어 문장에서 'The cat..

Unity Programming [4] : 유니티와 인공지능 모델 (Unity & AI Model)

유니티(Unity)는 실시간 3D 시뮬레이션 환경을 제공하여 AI 모델의 훈련과 테스트를 효과적으로 지원한다. 특히, 물리 기반 시뮬레이션을 통해 로봇 제어, 자율주행차, 가상 환경에서의 사용자 행동 예측과 같은 다양한 AI 응용 사례를 개발할 수 있다. 이를 통해 유니티는 높은 확장성과 유연성을 바탕으로 AI 기술과의 통합을 가능하게 한다. 유니티에서 인공지능 모델을 활용할 수 있는 방법은 센티스, 바라쿠다, ML Agent 등이 있다. 센티스(Sentas)는 유니티 내에서 AI 및 머신러닝 모델의 실행을 지원하는 도구로, TensorFlow, PyTorch와 같은 프레임워크로 학습된 모델을 가져와 유니티 환경에서 빠르게 추론을 실행할 수 있다. 바라쿠다(Barracuda)는 유니티에서 제공하는 경량화..

Unity Development [4] : 애니메이션 (Animation)

유니티(Unity)에서 애니메이션은 캐릭터, 객체, UI 요소 등의 움직임을 제어하고 시각적 효과를 추가하는 데 사용된다. 유니티는 기본적으로 애니메이터 컨트롤러(Animator Controller)와 애니메이션 클립(Animation Clip)이라는 두 가지 주요 요소를 통해 애니메이션 시스템을 관리한다. 애니메이터 컨트롤러는 각 애니메이션 클립 간의 전환을 설정하고, 복잡한 상태 전환 논리를 구성할 수 있도록 돕는다. 애니메이터 컨트롤러는 상태 머신(state machine) 기반으로 동작하며, 각 상태는 특정 애니메이션 클립을 나타낸다. 예를 들어, 게임 캐릭터라면 '대기', '걷기', '달리기', '점프' 등의 상태가 있을 수 있고, 각 상태에 해당하는 애니메이션 클립을 연결할 수 있다. 이를 통..

Unity Programming [3] : 유니티 시스템 로직 (Unity System Logics)

1. 유니티 이벤트 프로그램에서 이벤트(Event)는 시스템 내에서 발생하는 특정 동작이나 상태 변화를 처리하는 메커니즘이다. 예를 들어, 사용자가 웹 페이지에서 버튼을 클릭하거나 화면을 터치하는 것과 같은 행동이 이벤트로 간주된다. 이벤트 시스템에서 "제공자"는 이와 같은 사용자 행동을 감지하고, 이를 구독자에게 알리는 역할을 한다. 제공자는 버튼 클릭, 마우스 이동, 키보드 입력 등 다양한 이벤트를 발생시키며, 구독자는 이러한 이벤트를 미리 "구독"하고 있다가, 이벤트가 발생할 때마다 반응을 한다. 예를 들어, 자바스크립트에서 addEventListener 메서드는 구독자 역할을 하며, 버튼 클릭 이벤트를 처리할 때마다 제공자가 발생시킨 클릭 정보를 받아서 지정된 함수를 실행한다.  using Uni..

Deep Learning [2] : 시계열 데이터 신경망 모델 (Time Series Data Learning Models)

시계열 데이터(Time Series Data)는 특정 시간 순서에 따라 발생하는 데이터를 의미한다. 시계열 데이터의 주요 특징은 데이터의 각 값이 시간이라는 차원에 따라 순차적으로 배열된다는 점이다. 이러한 데이터는 순서가 중요하며, 각 데이터 포인트는 이전 값과 연관이 있다. 즉, 독립적인 데이터가 아니라 시간적으로 연결된 데이터라는 점에서 특수하다. 예를 들어, 주식 가격, 기온 변화, 경제 지표 등의 데이터는 모두 시간에 따라 변화하는 순차적인 특성을 지닌다.순차 데이터(sequential data)는 단순히 데이터가 일정한 순서로 배열된 것만을 의미하지만, 시계열 데이터는 각 데이터 포인트가 시간이라는 차원에 맞춰 배열된 데이터를 말한다. 이때 중요한 점은, 시계열 데이터에서 각 데이터 포인트가 ..

Unirt Programming [2] : 데이터 전송 및 수신

유니티에서 도출한 데이터를 기록하는 방법에는 여러 가지가 있다. 첫 번째로, StreamWriter를 사용하여 로컬 시스템에 데이터를 저장하는 방법이 있다. 이를 통해 텍스트 파일로 데이터를 기록하거나 로그를 남길 수 있다. 두 번째로, HTTP 요청을 통해 서버와 통신하여 데이터를 전송하고, 서버 측에서 이를 처리하여 데이터베이스나 파일 시스템에 저장하는 방식이다. 마지막으로, 클라우드 저장소를 이용해 데이터를 기록하는 방법도 있다. 클라우드 서비스를 활용하면, 인터넷을 통해 언제 어디서나 데이터에 접근할 수 있으며, AWS, Google Cloud, Azure와 같은 서비스를 통해 데이터를 안정적으로 저장하고 관리할 수 있다. 이 외에도 각 저장 방식은 데이터의 크기, 보안 요구 사항, 접근성 등에 ..

Vision Theory [5] : 영상 분할

Mathematical morphology (모폴로지)​Thresholding에 의해 얻어진 binary image를 좀 더 가공하여 완성도를 높이기 위해서는  morphology를 이용한다. 가공의 의미는 noise나 너무 작은 feature들을 제거하는 것을 의미한다.   Morphology는 structuring element (SE)라는 것을 이용하는데, 이것은 마치 bit mask와 같은 것이다. Bit-mask가 1차원인데 반해, SE는 2차원이다. SE를 이미지 위에 슬라이딩 시켜가면서 logical operation을 수행하여 결과 이미지를 만든다. original image는 변하지 않고, 새로운 이미지가 만들어진다. 이 분야는 독자적인 학회를 가지고 있을 정도로 이론적으로 정립되어 있다..

Programming Principles [7] : 탐색 (Search)

1. 백트레킹 (Back Tracking) 백트래킹(backtracking) 알고리즘은 탐색 문제를 해결하는 기법으로, 상태공간트리를 깊이우선탐색(DFS) 방식으로 탐색하면서 유망하지 않은 노드(non-promising node)를 가지치기(pruning) 하여 탐색 범위를 줄인다. 이 알고리즘은 탐색 중간에 해답이 나올 가능성이 없는 경로를 제거해 효율성을 극대화한다. 더보기깊이 우선 탐색 (Depth-First Search, DFS)  깊이우선탐색(Depth-First Search; DFS)은 트리나 그래프 구조에서 루트 노드(또는 시작 노드)부터 시작하여, 자식 노드를 깊게 탐색한 후 더 이상 자식 노드가 없을 때 부모 노드로 되돌아오는 방식으로 진행하는 탐색 알고리즘이다. 이는 주로 재귀적으로 구..