일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Depth estimation
- Meta Learning
- REACT
- 머신러닝
- nlp
- FineGrained
- dl
- GAN
- math
- Vision
- Python
- SSL
- clean code
- Front
- Torch
- 알고리즘
- PRML
- 딥러닝
- ML
- 3d
- pytorch
- FGVC
- nerf
- 자료구조
- cs
- web
- algorithm
- CV
- computervision
- classification
- Today
- Total
목록Python (36)
KalelPark's LAB
Pytorch unfold란? Batched tensor에 대하여, 마치 Convolution처럼, Slidingg하면서, locl block을 구하는 것이다. 예를들면, 해당 MNIST의 경우 1, 1, 28, 28 사이즈의 경우 -> 1, 49, 16 으로 변환한 것이다. EX) import torch.nn as nn from matplotlib import pyplot as plt from torchvision import datasets, transforms if __name__ == '__main__': train_data = datasets.MNIST(root='./data/', train=True, download=True, transform=transforms.ToTensor()) test..
OpenCV에서는, 이미지를 단계적으로 축소하는 Module이 존재합니다. 이를, 이미지 피라미드(Image Pyramid)라고 하는데 피라미드처럼, 단계적으로 확대하거나 축소하는 작업을 말합니다. Pyramid 방식에는 2가지가 존재합니다. - Gaussian Filter (가우시안 Method) - Gaussian Filter를 적용한 뒤, 이미지 피라미드를 구성하는 것을 의미하고, 아래와 같이 활용합니다. * DownSampling의 예이며, 입력 영상을 dst parameter에 따라 이미지를 변환합니다. pyrDown()은 가우시안 필터를 적용한 뒤 모든 짝수 행과 열을 삭제하고, 입력 영상을 축소합니다. 반면 cv2.pyrUp()은 0으로 채워진 행정방행렬을 삽입하고 주변 픽셀과 유사한 값으로..
Point Cloud 아래의 코드를 보면, PLYPointCloud 객체를 한 곳에 지정해주고, point_cloud로 pcd파일을 읽고, pcd 파일을 출력하는 코드입니다. read point cloud : 파일로부터, point cloud를 읽고, 파일을 포인트 형태로 decoding을 합니다. draw geometries : mouse/trackpad를 활용하여, 여러 view를 생성하는 것이 가능합니다, import open3d as o3d import numpy as np import os import sys print("Load a ply point cloud, print it, and render it") ply_point_cloud = o3d.data.PLYPointCloud() pcd =..
Python에서의 일반적으로 자주 활용되는 메소드(Magic Method)인 __str__ 메서드와 __repr__ 메서드의 차이 두 메소드 간에는 미묘한 차이가 있습니다. 따라서 차이점을 명확하게 아는게 좋습니다. 공통점 - 두 메소드는 모두 "객체를 문자열로 반환"한다는 공통점이 존재 아래의 코드를 활용해보면 __repr__ 와 __str__이 겹친다는 것을 알 수 있습니다. import torch import torch.nn as nn class model(nn.Module): def __init__(self): super().__init__() self.linear1 = nn.Linear(10, 100) self.linear2 = nn.Linear(100, 100) self.linear3 = nn..
Pytorch에서 CUDA 호출은 asynchronize이기 때문에, 코드를 동기화 해줘야 합니다. 시간을 측정할 때, 사용됩니다. torch.cuda.Event()는 device의 progress를 모니터링하는데 사용할 수 있는 synchronization markers입니다. -> CUDA stream 내부 명령 흐름 중 특정 지점에 표시를 남기는 것입니다. 정확하기 시간을 측정하고자 한다면, synchronize를 해야한다고, 공식 문서에서 언급했습니다. 이벤트가 처음 record되거나, 다른 프로세스를 내보낼 때, 기본 CUDA 이벤트가 느리게 초기화 됩니다. 생성 후에는 동일한 장치의 stream만 event로 기록할 수 있습니다. 그러나 모든 장치의 stream은 이벤트를 기다릴 수 있습니다...
파이썬 프로그래밍의 상당 부분은 데이터를 포함하는 클래스를 정의하고, 클래스에 속하는 객체들이 서로 상호작용하는 방법을 기술하는 것으로 여겨집니다. 모든 파이썬 클래스는 함수와 attribute를 함께 캡슐화하는 일종의 컨테이너라고 할 수 있습니다. 파이썬은 데이터를 관리할 때 사용할 수 있도록, 리스트, 튜플, 집합, 딕셔너리 등에서 활용됩니다. * FrequencyList를 리스트(list)의 하위 클래스로 만듦으로써, 리스트가 제공하는 모든 표준 함수를 FrequencyList에서도 사용할 수 있습니다. class FrequencyList(list): def __init__(self, members): super().__init__(members) def frequency(self): counts ..
Pytorch에서의 Distributed Package 사용하기 - 규모가 큰 모델을 학습할 때는, 보통 분산 학습을 진행합니다. Multi-GPU 학습을 할 때, 분산 학습을 사용할 수 있습니다. 직접 구현할 수도 있지만, Pytorch에서 제공하는 기능을 사용합니다. - 아래의 코드는 ImageNet1K를 돌리는 경우를 보여줍니다. https://github.com/pytorch/examples/blob/main/imagenet/main.py main_worker에서 dist.init_process_group을 통하여, GPU마다 분산 학습을 위해서 초기화를 진행합니다. torch docs에 따르면, multi-gpu시, backend를 nccl로 설정하라고 되어 있습니다. DistributedDat..
코드에서 값을 관리하는 부분이 점점 복잡해지고 있음을 깨닫는 즉시 해당 기능을 클래스로 분리하는 것이 좋습니다. 이를 통하여, 데이터를 더 잘 캡슐화해주는 정의된 인터페이스를 활용하는 것이 가능합니다. 우선 기초 지식부터 다듬어 보도록 하겠습니다. 인터페이스와 구체적인 구현 사이에 잘 정의된 추상화 계층을 만들 수 있습니다. Tuple : Tuple 자료 구조는 불변한 순서가 있는 객체로 생성하여, 값을 변경할 수 없음 Tuple은 튜플에 있는 요소에 접근할 때, 순서로 기억하기 때문에, 순서로 접근해야 하는 단점이 있음. 그러므로, Namedtuple을 사용하면 더욱 편리해집니다. Namedtuple : Class가 아니고, collections 내 존재합니다. 사용 예시 - 위치 또는 키워드 Argu..