우선 포인트클라우드 데이터 자체가 av에서 굉장히 중요한 역할을 하기도 하고 많이 쓰이는 데이터의 형태인데 여기서 문제가 이것을 어떻게 처리를 할것인지에 대한 연구가 많이 이루어졌다.
그래서 나온것이 이 데이터 자체를 입력으로 넣는 PointNet이 있었고 이것들을 그리드 격자로 나누어서 특징을 추출해내는 VoxelNet이 있는데 이것들의 결론적인 문제점은 결국에는 3d 컨볼루션 연산을 하기때문에 연산량이 증폭해서 실시간 적용에 속도가 딸린다는 문제가 있었다.
그래서 이것을 극복하기 위해서 우선 포인트 클라우드를 z축말고 x,y축으로만 쪼개고 z축은 한 기둥의 형태로 한꺼번에 처리를 하겠다는것이다. 이렇게 되면 z축 높이에 대한 Hyperparameter tunning의 과정도 없어지게 된다. 그리고 나서 이것을 내부 point특성을 simplified pointnet으로 학습해서 이 추출된 특징을 가지고 2D pseudo image를 만들어내고 이를 기반으로 2D 컨볼루션을 이용할수잇어 속도를 획기적으로 빠르게 할수있다.

이 section에서는 pointcloud를 어떻게 2D Pseudo-Image로 변환시킬것인지에 대한 얘기가 나온다.
우선 아까 만든 기둥을 가지고서 각각의 점들에 대해서 D=9인 차원의 점으로 표현을 한다. 이 안에는 원시 좌표 정보뿐만 아니라 기둥중심과의 거리정보, 점들의 높이 평균과의 차이 정도와 같은 것들이 들어있다. 그리고 기둥의 개수인 P, 기둥안에 넣을 점들의 개수 상한선인 N으로 DxPxN밀도 텐서로 표현한다.
그런 다음에 이것을 linear layer에 넣어서 1x1 convolution으로 d차원을 더 풍부한 차원인 c차원으로 확장을 시켜줌으로써 CxPxN인 텐서로 변환된다. 그런다음에 이것을 max operation을 해서 각 기둥중 가장 중요한 정보인 점들만 남김으로써 CxP인 텐서로 바뀌게 된다. 이과정은 linear layer에서 1x1 convolution으로 연산을 하기 때문에 매우 효율적이다. 그런다음에 이것을 다시 원래의 위치에 돌려놓기 위해서 각각의 점들을 (C,H,W)의 형태로 2D Pseudo Image로 최종적으로 만들어준다.
이 2D Pseudo Image를 가지고서 2D convolution을 진행하게 되면 다른 방법들보다 더욱 빠르고 효율적이게 연산을 하게 된다.
2D CNN에서 top-down network와 upsampling/concatenation을 진행하는데 업/다운샘플링이랑 원리가 거의 비슷하다. 처음에 top-down network를 할때 첫 stride 설정만 잘해주면 되는데 이것을 목표 해상도를 맞추기 위해서 stride를 얼마로 설정해야하는지에 대한 얘기다. 해당 stride 식은 s=S/S_in으로 계산이 되고 그 이후부터는 맞춰져 있어서 stride를 1로 설정해도된다.
그런 다음에 이것을 이제 upsampling을 하게되는데 이 특징들을 transposed 2D Convolution을 이용해서원래의 크기로 확장을 한다음에 최종 출력에 batchnorm이랑 ReLU를 적용하고 concatenation하여 마친다.
