전체 글
-
합성곱 계층 CNN의 합성곱 연산 기본 사항 입력데이터에 필터(커널)를 이동하면서 반복적으로 적용해 출력(특징맵) 생성 이동방향: 동일 차원에서는 낮은 인덱스에서 높은 인덱스 & 낮은 차원에서 높은 차원 (좌->우, 상->하) 필터는 입력데이터의 경계를 넘지 않음 (Only fully-overlapped) 스트라이드 합성곱은 차원별로 필터를 동일한 간격(Stride)으로 이동시키며 각각 실행 패딩 (Padding) 입력 이미지 둘레에 일정한 크기의 데이터를 덧붙이는 것 합성곱으로 인해 출력 크기가 작아지는 현상을 피하기 위한 방안 패딩과 스트라이드 고려 시의 출력 크기 패딩(P)은 출력을 증가, 스트라이드(S)는 출력 감소시키는 효과 합성곱 계층 합성곱 계층 구성 입력특징맵을 받아 내장 필터로 합성곱을 ..
합성곱 신경망의 이해(Part2)합성곱 계층 CNN의 합성곱 연산 기본 사항 입력데이터에 필터(커널)를 이동하면서 반복적으로 적용해 출력(특징맵) 생성 이동방향: 동일 차원에서는 낮은 인덱스에서 높은 인덱스 & 낮은 차원에서 높은 차원 (좌->우, 상->하) 필터는 입력데이터의 경계를 넘지 않음 (Only fully-overlapped) 스트라이드 합성곱은 차원별로 필터를 동일한 간격(Stride)으로 이동시키며 각각 실행 패딩 (Padding) 입력 이미지 둘레에 일정한 크기의 데이터를 덧붙이는 것 합성곱으로 인해 출력 크기가 작아지는 현상을 피하기 위한 방안 패딩과 스트라이드 고려 시의 출력 크기 패딩(P)은 출력을 증가, 스트라이드(S)는 출력 감소시키는 효과 합성곱 계층 합성곱 계층 구성 입력특징맵을 받아 내장 필터로 합성곱을 ..
2023.12.10 -
딥러닝과 CNN 이해 (Part1) 다층신경망(FNN)의 근본적인 문제점 계층의 개수가 커지면 신경망의 학습이 제대로 이뤄지지 않음. 원인은 기울기 소실(gradient vanishing) 또는 기울기 폭증(gradient explosion)현상 실제로는 기울기 폭증은 잘 안일어남. 기울기 소실이 주로 일어남. 딥러닝 등장 배경 2006년 힌튼(Hinton) 교수가 심층신경망(Deep Neural Netowork)의 학습 가능성 데모 (층이 많은 경우에도 기울기 소실 문제를 잘 하면 회피할 수 있다는 가능성을 보여줬다.) 딥러닝 개요 딥러닝이란? 다층 구조의 신경망 딥러닝의 장점 End to End 학습 Raw data를 입력으로 특징 자동추출 -> 전문가 개입 배제. 초기 딥러닝의 기반 모델 다양한 망..
딥러닝과 CNN 이해 (Part1)딥러닝과 CNN 이해 (Part1) 다층신경망(FNN)의 근본적인 문제점 계층의 개수가 커지면 신경망의 학습이 제대로 이뤄지지 않음. 원인은 기울기 소실(gradient vanishing) 또는 기울기 폭증(gradient explosion)현상 실제로는 기울기 폭증은 잘 안일어남. 기울기 소실이 주로 일어남. 딥러닝 등장 배경 2006년 힌튼(Hinton) 교수가 심층신경망(Deep Neural Netowork)의 학습 가능성 데모 (층이 많은 경우에도 기울기 소실 문제를 잘 하면 회피할 수 있다는 가능성을 보여줬다.) 딥러닝 개요 딥러닝이란? 다층 구조의 신경망 딥러닝의 장점 End to End 학습 Raw data를 입력으로 특징 자동추출 -> 전문가 개입 배제. 초기 딥러닝의 기반 모델 다양한 망..
2023.12.10 -
Luna의 DX11책은 절판됨, 코드가 현재 호환이 안됨(오래돼서) Visual Studio 프로젝트 생성시 템플릿에 DirectX라고 입력하면 DirectX 11, DirectX 12 등의 템플릿이 나옴 이 템플릿 역시 공부하기에 좋은 코드는 아님. 예제의 구조 main.cpp 예제 코드에서 main 함수는 오직 초기화와 실행 기능만 있음. 나중에 실제 프로그램을 만들때는 win main을 사용할 가능성이 높음. 그러나 대부분 게임 프로그래밍을 하면 그건 엔진에서 처리해주는 부분이기 때문에 윈도우즈 프로그래밍에 집중할 것은 아님. #include #include #include #include "ExampleApp.h" using namespace std; // main()은 앱을 초기화하고 실행시키는..
D3D 시작 [2/4], [3/4] - 예제 프레임워크, 초기화Luna의 DX11책은 절판됨, 코드가 현재 호환이 안됨(오래돼서) Visual Studio 프로젝트 생성시 템플릿에 DirectX라고 입력하면 DirectX 11, DirectX 12 등의 템플릿이 나옴 이 템플릿 역시 공부하기에 좋은 코드는 아님. 예제의 구조 main.cpp 예제 코드에서 main 함수는 오직 초기화와 실행 기능만 있음. 나중에 실제 프로그램을 만들때는 win main을 사용할 가능성이 높음. 그러나 대부분 게임 프로그래밍을 하면 그건 엔진에서 처리해주는 부분이기 때문에 윈도우즈 프로그래밍에 집중할 것은 아님. #include #include #include #include "ExampleApp.h" using namespace std; // main()은 앱을 초기화하고 실행시키는..
2023.11.26 -
Graphics APIs DirectX?: 그래픽스 드라이버를 프로그래머가 더 쉽게 사용할 수 있도록 만들어 놓은 것. Nvidia 그래픽카드, AMD 그래픽카드, 인텔 그래픽카드, 기타 모바일 칩 GPU등 각각의 GPU에 대해 서로 다른 그래픽 드라이버를 프로그래머가 모두 알아야 되는가? -> 알아야 한다면 너무 힘들다. DirectX, OpenGL같은 인터페이스만 알면 되게 만든것. DirectX DirectX에는 다양한 것들이 포함되어 있는데 보통 그래픽스에서 얘기하는 DirectX는 Direct3D. 공부 방법 DX API 사용법 앞에서 공부한 개념들 연결 예제 구조가 조금 더 복잡 실시간 렌더링 알고리즘 쉐이더 프로그래밍이 중요 창의성 발휘
D3D 시작 [1/4] - Direct3D 개요Graphics APIs DirectX?: 그래픽스 드라이버를 프로그래머가 더 쉽게 사용할 수 있도록 만들어 놓은 것. Nvidia 그래픽카드, AMD 그래픽카드, 인텔 그래픽카드, 기타 모바일 칩 GPU등 각각의 GPU에 대해 서로 다른 그래픽 드라이버를 프로그래머가 모두 알아야 되는가? -> 알아야 한다면 너무 힘들다. DirectX, OpenGL같은 인터페이스만 알면 되게 만든것. DirectX DirectX에는 다양한 것들이 포함되어 있는데 보통 그래픽스에서 얘기하는 DirectX는 Direct3D. 공부 방법 DX API 사용법 앞에서 공부한 개념들 연결 예제 구조가 조금 더 복잡 실시간 렌더링 알고리즘 쉐이더 프로그래밍이 중요 창의성 발휘
2023.11.25 -
최근 나온 DirectX 예제를 보다보면 COM이라는 것을 자주 보게 될 것이다. ComPtr 은 COM object에서 사용하는 스마트 포인터라고 생각하면 된다. 우리가 DirectX API를 사용해 렌더링 하면, 우리가 직접적으로 렌더링을 하는게 아니라, Direct3D의 인터페이스를 통해 간접적으로 렌더링하는 것이다. 이때 우리가 편하게 프로그래밍할 수 있도록 제공하는 기능 중 하나이다. 스마트 포인터에서 포인터를 만들때는 make_shared, make_unique 등으로 만들었다. 그런 것 처럼 Mircrosoft::WRL::COMPtr device; 를 사용할때는 D3D11CreateDevice() 라는 함수를 이용해서 생성한다. 옵션이 굉장히 많은데 하나씩 보면서 천천히 익숙해지면 된다. 예..
COM (Component Object Model)최근 나온 DirectX 예제를 보다보면 COM이라는 것을 자주 보게 될 것이다. ComPtr 은 COM object에서 사용하는 스마트 포인터라고 생각하면 된다. 우리가 DirectX API를 사용해 렌더링 하면, 우리가 직접적으로 렌더링을 하는게 아니라, Direct3D의 인터페이스를 통해 간접적으로 렌더링하는 것이다. 이때 우리가 편하게 프로그래밍할 수 있도록 제공하는 기능 중 하나이다. 스마트 포인터에서 포인터를 만들때는 make_shared, make_unique 등으로 만들었다. 그런 것 처럼 Mircrosoft::WRL::COMPtr device; 를 사용할때는 D3D11CreateDevice() 라는 함수를 이용해서 생성한다. 옵션이 굉장히 많은데 하나씩 보면서 천천히 익숙해지면 된다. 예..
2023.11.25 -
Row-Major: DirectX, Maya, PBRT 에서 사용 Column-Major: 대부분의 학술적인 곳, opengl, Vulkan, HLSL에서 사용. 왜 불편하게 굳이 Column-Major를 사용하는가? -> 속도가 약간 더 빠르다고 한다. 더보기 direct3d - HLSL mul and D3DXMATRIX order mismatch - Stack Overflow HLSL mul and D3DXMATRIX order mismatch I'm trying to multiply the transformation matrix in shader with vectors directly without doing unnecessary transportation. According to HLSL's mu..
Row-Major order vs Column-Major orderRow-Major: DirectX, Maya, PBRT 에서 사용 Column-Major: 대부분의 학술적인 곳, opengl, Vulkan, HLSL에서 사용. 왜 불편하게 굳이 Column-Major를 사용하는가? -> 속도가 약간 더 빠르다고 한다. 더보기 direct3d - HLSL mul and D3DXMATRIX order mismatch - Stack Overflow HLSL mul and D3DXMATRIX order mismatch I'm trying to multiply the transformation matrix in shader with vectors directly without doing unnecessary transportation. According to HLSL's mu..
2023.11.23 -
VSOutput MyVertexShader(const VSInput vsInput) { VSOutput vsOutput; // 여기서 여러가지 변환 가능 // vsOutput.position = // RotateAboutX( // RotateAboutY(vsInput.position * constants.transformation.scale, // constants.transformation.rotationY), // constants.transformation.rotationX) + // constants.transformation.translation; // 마지막에 1.0f 추가 Vector4 point = Vector4(vsInput.position.x, vsInput.position.y, vsI..
조명(SimpleMath)VSOutput MyVertexShader(const VSInput vsInput) { VSOutput vsOutput; // 여기서 여러가지 변환 가능 // vsOutput.position = // RotateAboutX( // RotateAboutY(vsInput.position * constants.transformation.scale, // constants.transformation.rotationY), // constants.transformation.rotationX) + // constants.transformation.translation; // 마지막에 1.0f 추가 Vector4 point = Vector4(vsInput.position.x, vsInput.position.y, vsI..
2023.11.23 -
DirectXMath 를 직접 사용하기 보다는 directxtk/SimpleMath 를 통해서 간접적으로 DirectXMath를 사용하는 것을 권장. simple math는 directxMath 의 wrapper이다. 참고로 쉐이더에서는 수학연산을 코딩 하는 방식이 또 다르다. XMVECTOR vs XMFLOAT XMVECTOR SIMD 가속 사용 클래스 멤버로는 XMFLOAT2, 3, 4 사용 연산하기 전에 XMVECTOR로 변환 Type Usage Guidelines https://learn.microsoft.com/en-us/windows/win32/dxmath/pg-xnamath-getting-started#type-usage-guidelines 요약 1. XMVECTOR: 지역 또는 전역 변수 ..
DirectXMath(SimpleMath)DirectXMath 를 직접 사용하기 보다는 directxtk/SimpleMath 를 통해서 간접적으로 DirectXMath를 사용하는 것을 권장. simple math는 directxMath 의 wrapper이다. 참고로 쉐이더에서는 수학연산을 코딩 하는 방식이 또 다르다. XMVECTOR vs XMFLOAT XMVECTOR SIMD 가속 사용 클래스 멤버로는 XMFLOAT2, 3, 4 사용 연산하기 전에 XMVECTOR로 변환 Type Usage Guidelines https://learn.microsoft.com/en-us/windows/win32/dxmath/pg-xnamath-getting-started#type-usage-guidelines 요약 1. XMVECTOR: 지역 또는 전역 변수 ..
2023.11.22 -
복잡한 변환을 여태까지 배운 어파인 변환을 이용해서 행렬 하나로 처리할 수 있다. mat4 modelMatrix // worldMatrix 라고도 부른다. mat4 invTranspose // Normal 벡터에 사용한다. https://www.scratchapixel.com/lessons/mathematics-physics-for-computer-graphics/geometry/transforming-normals.html Geometry We briefly mentioned what normals were in the first chapter of this lesson. A surface normal from a surface at P is a vector perpendicular to the tan..
조명(GLM행렬), 노멀 벡터 변환복잡한 변환을 여태까지 배운 어파인 변환을 이용해서 행렬 하나로 처리할 수 있다. mat4 modelMatrix // worldMatrix 라고도 부른다. mat4 invTranspose // Normal 벡터에 사용한다. https://www.scratchapixel.com/lessons/mathematics-physics-for-computer-graphics/geometry/transforming-normals.html Geometry We briefly mentioned what normals were in the first chapter of this lesson. A surface normal from a surface at P is a vector perpendicular to the tan..
2023.11.22 -
참고자료: https://en.wikipedia.org/wiki/Row-_and_column-major_order Row- and column-major order - Wikipedia From Wikipedia, the free encyclopedia Array representation in computer memory Illustration of difference between row- and column-major ordering In computing, row-major order and column-major order are methods for storing multidimensional arrays in linear s en.wikipedia.org GLM(Opengl, Vulkan, ..
행렬 (GLM)참고자료: https://en.wikipedia.org/wiki/Row-_and_column-major_order Row- and column-major order - Wikipedia From Wikipedia, the free encyclopedia Array representation in computer memory Illustration of difference between row- and column-major ordering In computing, row-major order and column-major order are methods for storing multidimensional arrays in linear s en.wikipedia.org GLM(Opengl, Vulkan, ..
2023.11.22