본문 바로가기

스터디

[머신러닝] Point cloud 머신러닝 이야기

 안녕하세요 이노도리입니다 :)

 정말 오랜만에 포스팅을 하는 것 같아요 ㅎㅎ 저는 그동안 머신러닝에 빠져 오랜만에 미친 듯이 공부를 하고 있었습니다. 요즘 공부하는 분야는 Point Cloud에 머신러닝 기법을 적용하는 방법인데요, 이전 포스팅에서 보여드린 PointNet이 이 분야의 시조 격인 방법이라고 할 수 있답니다 :)

 요즘 제가 열심히 파고 있는 분야는 point cloud에 오토인코더(autoencoder)를 적용해 point cloud의 latent space를 찾아내는 방법입니다. 너무 이해가 어렵나요? ㅎㅎ

 설명을 위해서 먼저 오토인코더에 대해 이야기를 해봐야 할 것 같습니다. 오토 인코더란 압축을 담당하는 인코더와 압축해제를 담당하는 디코더로 이루어져 있는데요, 인코더와 디코더가 합쳐져 있는 형태가 오토 인코더입니다. 

오토인코더를 아주 간략히 나타낸 모습입니다.

 인코더는 입력을 낮은 차원(그림에서는 5차원에서 4차원으로)으로 압축을 하게 되고 디코더는 낮은차원에서 높은 차원으로 데이터의 압축해제를 하게 됩니다. 그리고 디코더의 아웃풋은 입력과 같아야 합니다. 바로 이 과정으로 네트워크를 구성하게 되는데요, 한마디로 오토 인코더는 입력으로 주어지는 데이터에 대해 스스로 네트워크가 학습하는 방법이라고 할 수 있습니다.  그러면 이걸 어디다가 쓰는지 궁금하실 겁니다 ㅎㅎ 

 오토인코더는 정말 많은 분야에 사용할 수 있는데요, 오토 인코더에서 파생되는 형태의 네트워크를 통해 디코더를 일종의 생성자로 쓸 수 있습니다. 디코더가 압축된 데이터를 출력한다는 이야기는 앞에서 했습니다. 그럼 그 압축된 데이터에 따라 어떤 출력을 만들어낼 수 있겠죠? VAE와 같이 발전된 형태의 오토 인코더는 매우 그럴듯한 그림을 만들어내곤 한답니다. 또는 압축된 코드를 비슷한 코드끼리 모아 자동으로 데이터를 분류하는 작업도 가능합니다 ㅎㅎ (요게 요즘 제가 회사에서 하고 있는 일입니다!)

VAE로 얼굴을 생성한 모습

 


 그럼 point cloud에 오토인코더를 적용하면 어디에 쓸 수 있는 걸까요? 먼저 제가 일하고 있는 시뮬레이션의 경우에는 시뮬레이션의 모든 데이터는 3D 공간에 위치하고 있습니다. 따라서 3D 공간을 point cloud로 sampling 하면 시뮬레이션 데이터에 대해 머신러닝 기술을 적용할 수 있게 됩니다. 이것을 바탕으로 시뮬레이션의 결과를 머신러닝으로 유추한다거나 아티스트에게 유용한 데이터를 제공할 수 있답니다. 또는 최근 정말 핫한 자율주행 자동차의 라이다로부터 얻어지는 데이터들에도 적용이 가능합니다. 라이다는 무수히 많은 point cloud를 만들어내어 3D 공간을 mapping 하는데요, 라이다로부터 얻어지는 데이터들에 오토 인코더를 적용하고 classification 과정을 거치면 지금 라이다에 감지되는 것이 자동차인지 사람인지 자전거인지 건물인지 등을 알아낼 수 있습니다.

Lidar로 본 도로의 모습

 

 Point cloud에 오토인코더를 적용하면 이런 문제들을 풀 수 있게 되는 거랍니다 ㅎㅎ 정말 대단하죠? 요즘 이 분야에 너무 깊숙이 빠져서 이 기술로 할 수 있는 걸 생각하면 너무도 가슴이 두근거리고 신난답니다. 

 우리 모두 머신러닝의 세계로 가봐요!

'스터디' 카테고리의 다른 글

[머신러닝] PointNet 스터디  (6) 2021.01.23