CG - Vertex Processing
2022. 7. 15. 19:54
☘️ Computer Graphics/Fundamental
지금까지 정점들로 이루어진 object가 어떻게 변환하는지 알아보았다. GPU에서 어떻게 렌더링이 되는지 보자. 삼각형이 스크린 안에서 여러 개의 픽셀들을 차지하고, 그 픽셀의 색상을 정하는 정보를 rasterizer가 모아서, 픽셀 위치마다 저장해 놓는다. 이를 fragment라고 한다. 그냥 예비 픽셀, 후보 픽셀이라고 이해하면 된다. fragment shader는 실제로 fragment color를 결정한다. 그리고 마지막으로 output merger가 어떻게 보여줄 건지를 결정해서 최종 스크린을 보여준다. 이번 장에서는 vertex shader가 하는 일을 하나하나 살펴볼 것이다. 이제 이러한 물체가 어떻게 화면에 표현되는지 알아보도록 하자. vertex shader는 object space에서 ..
CG - Spaces and Transforms
2022. 7. 14. 10:17
☘️ Computer Graphics/Fundamental
Affine Transform의 3가지 중요한 변환에 대해 알아보자. Scaling (확대,축소) 먼저 볼 것은 Scaling이다. Scaling은 우리말로 축소, 확대이다. 2차원에서의 scaling을 먼저 보자. 간단하게 행렬로 표현하면 아래와 같다. Rotation (회전) 다음으로 2차원 회전은 다음과 같다. p 벡터의 좌표가 나와있을 때, 회전이 이루어졌을 때도 p' 벡터의 좌표를 알 수 있다. 기본적으로 반시계 방향으로 회전했을 때를 구한다. Translation (이동) 지금까지 본 Scaling(확대/축소)와 Rotation(회전)은 선형변환이다. 하지만 이동(translation)은 선형 변환이 아니므로 위와 같은 행렬의 곱으로 표현할 수 없다. 선형 변환과 달리 이동은 일반적으로 행렬의..
CG - Modeling
2022. 7. 12. 22:37
☘️ Computer Graphics/Fundamental
모델링에서는 polygon mesh를 통해 물체를 표현한다고 하였다. 그렇다면 왜 polygon을 사용해 물체를 표현하는것일까? 컴퓨터 그래픽스는 물체를 표현하는데 굉장히 많은 병렬 연산을 필요로 한다. 이때 구를 예시로 들자면 무수히 많은 점들을 필요로 하고 각 점들에 대해서 연산을 한다면 구 하나를 표현하는데도 엄청난 연산을 필요로 할 것이다. 이러한 물리적 한계를 뛰어넘기 위해 일종의 해상도를 낮추는 방식으로(근사적 표현 방식으로) polygon mesh를 사용한다. 위의 구를 표현하기 위해서 모든 점을 표현하는 것이 아니라, 일정한 갯수의 점을 다각형으로 잇는다. 이러한 방법을 polygon mesh라고 한다. 대체로 일반적인 다각형은 처리하지 않고 삼각형 또는 사각형 mesh로 처리한다. 또한 ..
CG - Rendering pipeline 개요
2022. 7. 12. 16:49
☘️ Computer Graphics/Fundamental
먼저 랜더링 파이프라인에 대한 영상을 보고 시작하자. 아래 영상이 컴퓨터 그래픽스를 이해하는데에 최고의 영상인 것 같다. 1. Local space에서의 각각의 물체들을 Model Matrix로 변환해주어, 2. 하나의 우주인 World space 속에서 그 크기와 위치 회전 등이 적절하게 바뀌어 예쁘게 자리 잡고, (Local space -> World space) 새롭게 구성된 하나의 우주 속 물체를 앞에서 보느냐 옆에서 보느냐에 따라 3D 화면이 다르게 나타나듯, World space에서 어느 시선으로 보고있느냐에 따라 View Matrix로 카메라 시선에 따라 변환해 준다. (World space -> Camera space, View space) 3. 여기에서 모니터의 2차원 면에서 보았을 때의..
논문 읽기와 ML/DL 커리어 경력에 대한 조언 by 앤드류 응
2022. 6. 16. 15:01
🖼 Computer Vision/Paper Review
본 포스팅은 medium-ai 블로그에 있는 포스팅을 가져온 글입니다. 우리 모두의 ML/DL 선생님이신 앤드류응 교수님께서 스탠포트 CS 230 강의에서 ML/DL 커리어와 논문 읽기에 대한 강의를 하신 것을 정리한 포스팅이 있어서 같이 나누고자 정리했습니다. 애초의 수십분 강의를 요약한 내용이기 때문에 더 세줄요약 할 수는 없으니 이번에는 천천히 정독해주세요~ 그래도 긴 긁이 보기 부담스러우신 분들은 하단 핵심 정리란으로 가주세요! 오역이 있을 수 있으니 본 링크로 직접 보시면 더욱 정확합니다! 원 강의는 CS 230 강의(https://youtu.be/733m6qBH-jI)이며 내용 정리가 된 영어 포스팅은 다음 링크를 참조하세요! (https://blog.usejournal.com/advice-o..
GAN (Generative Adversarial Network)
2022. 6. 14. 20:29
💡 AI/토이 프로젝트
GAN (Generative Adversarial Network) GAN은 Data를 만들어내는 Generator와 만들어진 Data를 평가하는 Discriminator가 서로 대립(Adversarial)적으로 학습해가며 성능을 점차 개선해 나가자는 개념이다. 여기서 GAN의 목표는 Generator 를 잘 학습시키는 것이다. ML은 input이 데이터, output은 label 인 정형화된 틀이 있다. 그러나 input이 노이즈, output이 data 인 것도 있다. 그게 바로 GAN이다. 두 개의 네트워크가 경쟁을 해가면서 학습을 한다? 그 당시에 존재하지 않았던 개념이다. 딥러닝의 아버지라고도 불리우는 Yann Lecun 교수는 GAN을 가리켜 최근 10년 동안 머신러닝 분야에서 가장 혁신적인 아..
Python - Multithreading
2022. 6. 14. 09:49
📌 Python
프로세스와 쓰레드 프로세스(Process) 운영체제에서 할당 받는 지원 단위(실행 중인 프로그램) CPU 동작 시간, 주소공간이 독립적이다. 프로세스 영역인 Code, Data, Stack, Heap 영역이 독립적이다. 프로세스는 최소 1개의 메인 쓰레드를 보유한다. (구글 크롬 안에서 유튜브, 네이버, 넷플릭스 동작 중) 파이프, 파일, 소켓 등을 사용해서 프로세스간 통신이 가능하다. (Context Switching) 쓰레드(Thread) 프로세스 내의 실행 흐름 단위 (게임 안에서의 채팅, 음악, 아이템, 캐릭터 등) 프로세스의 자원을 사용 한다. Stack만 별도 사용하고 나머지는 공유한다. (Code, Data, Heap) 메모리를 공유한다. (변수 공유) 한 쓰레드의 결과가 다른 쓰레드의 영향..
CV - Mask RCNN
2022. 6. 11. 00:41
🖼 Computer Vision/Object Detection
📌 이 글은 권철민님의 딥러닝 컴퓨터 비전 완벽 가이드 강의를 바탕으로 정리한 내용입니다. Image Segmentation Image Segmentation은 영상/이미지에서 의미있는 부분들을 구별해내는 기술이다. 이미지를 영역별로 나눠준 후, 각 개체에 맞게 합쳐주는 task이다. Object Detection, Classfication 과 비교해봤을 때, 정확하게 개체들의 경계선까지 추출해 의미있는 영역들로 나누어져야하므로 더 어려운 작업이다. Image Segmentation는 Semantic과 Instance로 나뉜다. Semantic Segmentation Semantic Segementation은 동일한 객체들끼리는 한 번에 Masking을 수행하는 방법이다. 위의 사진과 같이 segment..
Kaggle - Home Credit Default Risk
2022. 6. 9. 00:53
💡 AI/Dacon | Kaggle
https://www.kaggle.com/competitions/home-credit-default-risk/data Home Credit Default Risk | Kaggle www.kaggle.com 데이터 모델 설명 메인 테이블 : application_{train|test}.csv 고객의 정보와 현재 대출에 대한 정보를 제공한다. 1이면 미납자, 0이면 성실한 사람 SK_ID_CURR 과거 대출 이력 : previous_application.csv 고객의 현재 대출 이전의 과거 대출 정보를 제공한다. SK_ID_PREV, SK_ID_CURR 타사 대출 이력 : bureau.csv 고객의 현재 대출 이전의 타사 대출 정보를 제공한다. SK_ID_BUREAU, SK_ID_CURR 타사 대출 월별 잔..
CV - EfficientDet
2022. 6. 2. 18:55
🖼 Computer Vision/Object Detection
📌 이 글은 권철민님의 딥러닝 컴퓨터 비전 완벽 가이드 강의를 바탕으로 정리한 내용입니다. 목차 EfficientNet EfficientNet Architecture 개요 EfficientNet 개별 Scaling 요소에 따른 성능 향상 테스트 EfficientNet Compound Scaling EfficientDet EfficientDet 성능 EfficientDet = BiFPN + Compound Scaling BiFPN (Bi directional FPN) Cross-Scale Connection Weighted Feature Fusion Compound Scaling Backbone network BiFPN network Box/class prediction network Input image..
CV - Focal loss
2022. 6. 2. 15:29
🖼 Computer Vision/Object Detection
목차 Focal Loss의 필요성 Focal Loss Cross Entropy Loss를 안쓰고 Focal Loss를 쓰는 이유 Balanced Cross Entropy Loss를 안쓰고 Focal Loss를 쓰는 이유 Focal Loss 적용 RetinaNet = Focal Loss + FPN FPN(Feature Pyramid Network) Object Detection : 여러 object들을 Bounding Box를 통해 Localization(위치를 찾고) 하고, Classification(어떤 물체인지 분류) 하는 작업 Object Detection의 2가지 종류의 알고리즘 R-CNN 계열의 two-stage detector YOLO, SSD 계열의 one-stage detector two-..
CV - Ultralytics YOLO v3 (Oxford Pet Dataset)
2022. 5. 27. 17:15
🖼 Computer Vision/Object Detection
📌 이 글은 권철민님의 딥러닝 컴퓨터 비전 완벽 가이드 강의를 바탕으로 정리한 내용입니다. 목차 Ultalytics YOLO Custom Dataset 만들기 Oxford Pet Dataset Download Ultralytics YOLO 포멧 디렉토리 구조 만들기 Oxford Pet Train / Valid 메타데이터 만들기 Oxford Pet annotation을 Ultralytics YOLO 포멧으로 만들기 전체 xml 파일들을 YOLO 포멧으로 변환 후 Ultralytics 디렉토리 구조로 입력하기 Oxford Pet Dataset yaml 파일 만들기 Oxford Pet Dataset 학습 수행 학습된 모델 파일을 이용하여 Inference 수행 test.py를 이용하여 Test 데이터를 Eva..
CV - Ultralytics YOLO v3 (coco128 Dataset)
2022. 5. 26. 19:45
🖼 Computer Vision/Object Detection
📌 이 글은 권철민님의 딥러닝 컴퓨터 비전 완벽 가이드 강의를 바탕으로 정리한 내용입니다. 목차 Ultralytics YOLO v3 설치하기 wandb(weight and bias) 모듈 설치 Ultralytics YOLO Train 개요 - coco128 Dataset Ultralytics YOLO Dataset 개요 Ultralytics YOLO Annotation 포맷 Config 개요 Dataset config와 Pretrained model을 사용할 때 weight 파일의 상대 경로, 절대 경로 Ultralytics YOLO v3 설치하기 colab 환경에서 진행하였다. !git clone https://github.com/ultralytics/yolov3 !cd yolov3;pip instal..
CV - YOLO V1, V2, V3 (You Only Look Once)
2022. 5. 19. 19:29
🖼 Computer Vision/Object Detection
📌 이 글은 권철민님의 딥러닝 컴퓨터 비전 완벽 가이드 강의를 바탕으로 정리한 내용입니다. 목차 YOLO - V1 YOLO V1 개요 YOLO V1 Prediction YOLO V1 Loss Bounding Box (x, y) 좌표 loss Bounding Box 너비(w), 높이(h) loss Object Confidence loss Classification loss NMS로 최종 Bounding Box 예측 YOLO V1의 한계 YOLO - V2 YOLO V2 개요 YOLO V2 Architecture 1개의 그리드 Cell이 가지고 있는 정보 크기가 서로 다른 Anchor Box 5개 - Direct Location Prediction YOLO V2 Loss Passthrough module을 통..
CV - SSD (Single Shot Detector)
2022. 5. 17. 16:01
🖼 Computer Vision/Object Detection
📌 이 글은 권철민님의 딥러닝 컴퓨터 비전 완벽 가이드 강의를 바탕으로 정리한 내용입니다. 목차 SSD 개요 SSD(Single Shot Detector) 란? Multi-Scale Feature Layer Default Box(=Anchor Box) SSD Architecture Anchor Box를 활용한 Convolution Predictors for detection SSD의 마지막은 NMS SSD의 Loss function SSD 개요 그동안 우리가 배웠던 RCNN, SPP, Fast RCNN, Faster RCNN 모델은 Two-Stage Detector 모델이었다. 여기서 Two란, Region Proposal과 Object Detection 단계를 분리해 전개되는 모델들이다. 이번에 설명할..
CV - 60분 컷 Image Classifier 파이토치 튜토리얼
2022. 5. 13. 15:29
🖼 Computer Vision/Object Detection
Deep Learning with PyTorch: A 60 Minute Blitz — PyTorch Tutorials 1.11.0+cu102 documentation Shortcuts pytorch.org 목차 Tensors torch.autograd Neural Network (with PyTorch) 신경망 학습은 2단계로 이루어진다. nn(Neural Networks) General Training Process 손실 함수 (Loss Function) 역전파(Backprop) Optimizer : Gradient Descent 최적화 Classifier 학습하기 CIFAR10 Data Load CNN 정의하기 Loss function & Optimizer 정의하기 Training Neural Net..