일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Depth estimation
- PRML
- ML
- GAN
- 머신러닝
- algorithm
- nerf
- pytorch
- Torch
- clean code
- nlp
- math
- computervision
- 알고리즘
- FGVC
- 딥러닝
- classification
- Vision
- Python
- SSL
- 자료구조
- web
- REACT
- CV
- dl
- Front
- 3d
- Meta Learning
- FineGrained
- cs
- Today
- Total
목록dl (137)
KalelPark's LAB
기존 방법으로는 start_t - time.time() 으로 하였다.. 하지만 최근에 신기한 라이브러리를 찾았다. line_profile 사기다.. 예시 코드 # exist code ) start_t = time.time() print(f"# 1 : {time.time() - start_t}s") # recent code ) @profile def main(): # code if __name__ == __main__: main() bottleneck을 쉽게 확인하는 것이 가능하다 또한, lprof 파일이 생성되어, 자동 로깅이 가능합니다. Terminal 명령어를 사용하면, txt로 변환도 가능하다. python -m line_profiler test.py.lprof > results.txt Timer ..
Abstract Point cloud는 geometric data structure의 형태를 갖추고 있습니다. 본 논문에서는, Point clouds를 직접 다루는 Neural Network를 설계하였으며, Empty space가 아닌 input으로써 point의 불변성을 잘 다루게 됩니다. Segmentation, Detection, classification에서모두 활용될 수 있음을 보여줍니다. 이후, 우리는 어떤 Network가 무엇을 학습하는지 robust 한 이유에 대해서 언급합니다. Introduction 최근 방법론들은 Point cloud를 input으로 이용한 모델들을 제공합니다. Point cloud는 mesh처럼, 이뤄진 것이 아니기에 더 다루기 쉬운 모델일 수 있습니다. 하지만, P..
기존 3D point cloud와 관련된 방법론들은, grid-based method 방식이 대다수였습니다. grid-based 방식을 크게 발전시킨 방법으로는, SP Conv입니다. Sparse Convd 는 Computing cost를 매우 줄일 수 있는 방식으로, 실시간 detection에서 매우 효과적입니다. 기존 Grid-based Method는 point cloud에서는 대부분의 정보가 비어있기 때문에, 적합하지 않습니다. Sparse Conv는 매우 sparse한 data인 point cloud의 문제를 해결하는데 매우 효과적인 방식입니다. Rule book 즉, 정보가 존재하는 Rule에 따라, 해당부분만을 계산하여, 정보를 처리하는 연산입니다. 이러한 원리를 적용한다면 속도가 상당히 빠르..
Abstract Image에 대한 text로부터 학습하는 것은 Supervision에서 상당히 유망있는 분야입니다. Image 와 text 쌍을 pretraining 시킴으로써, 상당한 SOTA를 달성함을 본 논문에서는 증명합니다. NLP는 visual concept을 추론하는데 사용될 수 있으며, zero-shot transfer model로 사용되는 것이 가능합니다. Overview CNN 기반 모델들이, 강한 면모를 보여주기는 하지만, zero-shot에서는 매우 낮은 성능을 보입니다. 본 논문에서는 대규모 데이터셋(Image + text)로부터, 학습하여 상당히 좋은 결과를 얻습니다. Contrastive Learning과 유사하게, Image와 text를 하나의 공통된 space로 보낸 다음, ..
동치 좌표(homogeneous coordinates) - 변환 등 어떤 목적을 위해 3차원 좌표를 한 치수 올리거나, 한 치수 내릴 때 사용하는 표현 (2차원 좌표를 3차원 좌표에 뿌려도 동일하다는 것) = 동차 좌표계상 변환된 좌표 = 로컬 좌표계의 P * 월드 행렬 * 카메라 행렬 * 투영 행렬 - 동차 좌표계와 일반적인 3차원 좌표계의 관계 (x, y, z, w) = (x/w, y/w, z/w, 1) : 결국 3차원 좌표계도 w값이 1인 동차 좌표계 - 벡터를 포인트 혹은 벡터로 활용하기 위해서, 변환된 벡터를 3D 벡터의 동치벡터로 전환 Ref : https://m.blog.naver.com/jsjhahi/199987246 2D Lines 외적을 이용하여, 선분과 선분의 교차점 구하기 : htt..
Sparse Convolution LiDAR 신호 처리에서 필수적인 역할을 합니다. 기존 Convolution과 다르게, GPU 계산 스키마를 사용하는 방식입니다. 3D point cloud 신호의 경우 추가적인 차원은 계산을 크게 증가시킵니다. 반면, 일반적인 이미지와 다르게, 3D voxel point cloud 데이터는 종종 Sparse 신호가 됩니다. 문제는 모든 이미지 픽셀이나 공간을 스캔하는 대신 Sparse 데이터로만, 효율적으로 계산합니다. 아래의 내용을 참고하면 됩니다. Reference https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Liu_Sparse_Convolutional_Neural_2015_CVPR_paper..
Pytorch에서 CUDA 호출은 asynchronize이기 때문에, 코드를 동기화 해줘야 합니다. 시간을 측정할 때, 사용됩니다. torch.cuda.Event()는 device의 progress를 모니터링하는데 사용할 수 있는 synchronization markers입니다. -> CUDA stream 내부 명령 흐름 중 특정 지점에 표시를 남기는 것입니다. 정확하기 시간을 측정하고자 한다면, synchronize를 해야한다고, 공식 문서에서 언급했습니다. 이벤트가 처음 record되거나, 다른 프로세스를 내보낼 때, 기본 CUDA 이벤트가 느리게 초기화 됩니다. 생성 후에는 동일한 장치의 stream만 event로 기록할 수 있습니다. 그러나 모든 장치의 stream은 이벤트를 기다릴 수 있습니다...
Pytorch를 사용할 때, 모델을 빠르게 학습시켜야 할 경우가 있습니다. 이러한 경우, 병렬화를 사용하는 것이 좋습니다. - 학습을 더 빨리 끝내기 위해서, - 모델이 너무 커서 이를 분할하여, GPU에 올리기 위함입니다. * 기존 torch.nn.DataParallel의 문제점은 1) 멀티쓰레드 모듈을 사용하기에 Python에서 상당히 효율적이지 않습니다. - Python은 GIL (Global Interpreter Lock)에 의하여, 하나의 프로세스에서 동시에 여러개의 쓰레드가 작동할 수 없습니다. 그러므로, 멀티 쓰레드가 아닌 멀티 프로세스 프로그램을 만들어서 여러개의 프로세스를 동시에 실행하게 해야 합니다. 2) 하나의 모델에서 업데이트 된 모델이 다른 device로 매 step마다 복제해야 ..