본문 바로가기

분류 전체보기

HDMapGen: A Hierarchical Graph Generative Model of High Definition Maps, CVPR2021 Abstract - HD Map은 움직임을 예측하거나, 플래닝 등에 핵심 정보를 제공하한다. - 실제 도로 토폴로지와 기하 정보는 소수에 불가하여, 보지 못했던 시나리오를 일반화 하기 위한 정보는 부족하다. - 시퀀스, 일반 그래프, 계층적 그래프를 포함하여 다양한 데이터 표현을 사용하여 AutoRegressive 모델을 탐색한다. - HDMapGen을 제안한다. 본 모델은 고품질, 다양한 HD Map을 생성할 수 있는 계층적 그래프 생성 모델이다. - Argoverse 데이터 셋에서 실험을 수행하였다. 서론 - HD Map은 자율 주행에서 핵심이 되는 요소로 '3차원 공간 상에서 위치 인지', '다른 차량의 움직임 예측'. - HD Map은 도시 모델링 및 시뮬레이션의 중요한 구성 요소 - 아래의 2가.. 더보기
[1] Open3D 제공 기능 목록 정리(PointCloud) 시각화(Visualize point cloud) 복셀 다운 셈플링(Voxel downsampling) 정점 법선 추정(Vertex normal estimation) 포인트 클라우드 자르기(Crop point cloud) 포인트 클라우드 페인팅(Paint point cloud) 포인트 클리우드 거리 계산(Point cloud distance) 볼륨 바운딩(Bounding Volume) 컨벡스 헐(Convel Hull) DBSCAN 클러스터링 평면 세그멘테이션(Plane Segmentation) 숨겨진 점 제거(Hidden Point Removal) 시각화(Visualize point cloud) - 가장 기본적인 시각화 기능 복셀 다운 셈플링(Voxel downsampling) - point cloud에서.. 더보기
Prim's algorithm using priority_queue Prim 알고리즘 개요 가중치가 있는 무방향 그래프에서 MST(최소 스패닝 트리)를 구할 때 Prim's 알고리즘을 이용할 수 있다. 본 포스팅에서는 인접 리스트로 표현된 그래프에서 PQ 자료구조를 이용해 MST를 구하는 방법을 알아 본다. 시간 복잡도는 O(E log(V)) 가 된다. ※ 참고: 인접 행렬로 구한 Prim 알고리즘 : O(V^2) Prim 알고리즘에 PQ를 이용하기 위해서는 아래 두가지 연산이 필요하다. - ExtractMin: MST에 아직 포함되지 않은 모든 정점에서 최소 키 값을 가진 정점을 가져온다. - DecreaseKey: 정점을 추출한 후 인접한 정점의 키를 업데이트 해야 하며, 새 키가 더 작으면 업데이트 한다. 알고리즘 1) 모든 정점을 무한 값을 키 값으로 가지게 초기.. 더보기
Cylindrical and Asymmetrical 3D Convolution Networksfor LiDAR Segmentation 1. 초록 - 기존의 Lidar Segmentation 방법은 2D 프로젝션 후에 수행되며 이는 3D Topology와 기하학적 관계 정보를 버리게 된다. - 차선의 방법인 3D Voxelization과 3D Convolution은 개선이 제한적이다. 왜냐하면, Point Cloud의 희소성과 밀도의 다양성 때문. - 원기둥 형태의 비 대칭적 3D Convolution Network를 제안한다. 또한, point-wise 정제 모듈을 제안하여 Voxel 기반 레이블 인코딩에서 발생하는 간섭을 경감 시켰다. - SemanticKITTI와 nuScenes 에서 1st를 하였다. 기존 대비 4% 성능 개선. - 제안하는 방법은 LIDAR Panoptic Segmentation과 3D Detection도 잘 수.. 더보기
DBSCAN(밀도 기반 클러스터링) 개요 - K Means나 Hierarchical 클러스터링의 경우 군집간의 거리를 이용하여 클러스터링을 하는 방법이다. - 반면, DBSCAN((Density-based spatial clustering of applications with noise) 밀도 기반의 클러스터링은 점이 세밀하게 몰려 있어서 밀도가 높은 부분을 클러스터링 하는 방식이다. - DBSCAN은 밀도가 낮은 부분을 아웃라이어로 간주하기도 한다. - 사용 파라미터: e(epsilon), m(minPts) 군집화 사용 예시) : 만약 고객에게 제품을 추천해줄 때, 이미 구매한 제품 혹은 검색한 제품에 따라 고객을 군집화 할 수 있고 유사한 군에 속한 고객에게 같은 군에 속한 다른 고객이 구매한 제품을 추천해 줄 수 있다. 특징 - 거리.. 더보기
Triplet Loss 구현 Triplet Loss 구현은 아래 2가지로 구성된다. - Pair Wise Distance 계산 + Batch All Strategy 구하는 전략 - Pair Wise Distance 계산 + Batch Hard Strategy 구하는 전략 Pair Wise Distance 계산 - 임베딩 된 것 간의 거리 계산. 임베딩의 차원을 (B, 1) / (1, B)로 늘려 행렬 곱을 하면, 동일 임베딩 간의 제곱 값을 구할 수 있게 된다. tf.diag_part 참고. - Squared 옵션을 사용하지 않는다면, '0' 값을 가진 원소를 Epsilon을 더한 후 Sqrt 연산을 진행한다. def _pairwise_distances(embeddings, squared=False): """Compute the 2.. 더보기
CenterLoss의 구현 CenterLoss는 랜덤으로 정의한 각 클래스 중심으로 부터 샘플이 멀수록 패널티를 주어 클래스간 분리성과 클래스 내의 분산을 줄이는 방법으로 학습되도록 돕는다(Seperable Inter-Class differences and Minimizing Intra-Class variations) Center Loss의 식을 구성하는 각 원소는 아래와 같은 차원을 지닌다. x : (Batch_Size(32), feat_dim(2)) c_yi : (num_classes(10), feat_dim(2)) 의 사이즈를 지닌다. 각 원소의 사이즈가 위와 같을 때 아래의 빨간 박스 부분을 어떻게 코드로 구현하는지 살펴본다. 위의 식을 풀어 쓰면 아래와 같다 (1) 먼저 $x_i$(32 x 2)를 제곱한다 --> 열 방향.. 더보기
정올 1912 : 미로 탐색 문제: 정올 1912 풀이: - DFS 문제이다 - 다만, 가장 낮은 숫자의 방 부터 방문해야 하므로, 미리 인접 리스트를 정렬해 놓는다 (혹은 인접 리스트 대신에 힙을 써도 좋겠다. 즉, 힙을 원소로 가지는 벡터) - 본인의 경우 2차원 벡터를 선언하고, 노드 갯수(n)를 받자 마자 Resize를 수행해 주었는데 (왜냐하면 n을 받기 전에는 벡터를 n크기 만큼 초기화 할 수 없었으므로) 해당 방법은 실행 시간 169ms로 90점 밖에 받지 못하였고, 처음 부터 그래프 노드를 100001 만큼 늘리고 시작하니 실행시간 160ms로 통과되었다. 이상한 부분이다. #include #include #include using namespace std; int n, m; //vector v; vector v[10.. 더보기