본 내용은 Anjul Tyagi님 (ph.D.student) 께서 Medium에 올린 기사 내용을 그대로 가져와
제가 공부하며 보기 쉽게 편집, 저희의 프로젝트 관련해서 고려해야할 점 등을 정리한 것입니다.
출처 :
Anjul Tyagi, "3D point clouds bounding box detection and tracking", Medium, Jul 17, 2020, https://medium.com/@a_tyagi/3d-point-clouds-bounding-box-detection-and-tracking-pointnet-pointnet-lasernet-point-pillars-9439af14dfba .
Anjul Tyagi, "Point Net", Medium, Jul 18, 2020, https://medium.com/@a_tyagi/3d-point-clouds-bounding-box-detection-and-tracking-pointnet-pointnet-lasernet-point-pillars-72b98b6a376e .
Anjul Tyagi, "PointNet++", Medium, Jul 18, 2020, https://medium.com/@a_tyagi/pointnet-3d-point-clouds-bounding-box-detection-and-tracking-pointnet-pointnet-lasernet-33c1c0ed196d .
Anjul Tyagi, "LaserNet", Medium, Jul 19, 2020, https://medium.com/swlh/lasernet-3d-point-clouds-bounding-box-detection-and-tracking-pointnet-pointnet-lasernet-c7ec5c2af78a .
Anjul Tyagi, "PointPillars", Medium, Jul 19, 2020, https://medium.com/swlh/lasernet-3d-point-clouds-bounding-box-detection-and-tracking-pointnet-pointnet-lasernet-c7ec5c2af78a .
목차
1. 3D point clouds bounding box detection
1. 3D point clouds bounding box detection
포인트 클라우드 학습은 자율주행 자동차와 로봇 공학에서 응용 프로그램이 발명된 후 관심이 높아지고 있다. LiDAR 장치(광 감지 및 범위)의 사용으로 도로의 3D 포인트 클라우드 데이터 세트가 생성되었다.
공공 연구에 사용할 수 있는 가장 일반적으로 사용되는 자율 주행 데이터 세트는 다음과 같다.
- 키티 데이터 세트([http://www.cvlibs.net/datasets/kitti/](http://www.cvlibs.net/datasets/kitti/)))
- NuScene 데이터 세트([https://www.nuscenes.org/](https://www.nuscenes.org/)))
- Lyft 레벨 5 데이터 세트([https://self-driving.lyft.com/level5/](https://self-driving.lyft.com/level5/)))
이 논문(3D 포인트 클라우드용 딥 러닝: 설문)은 3D 포인트 클라우드에서의 딥 러닝이 사용되는 세 가지 응용 프로그램, 즉 3D 형상 분류, 3D 객체 감지 및 추적 및 3D 포인트 클라우드 분할을 보여준다. 이 세 가지 중 3D 객체 감지를 위해 나열된 기술은 자율 주행 연구에서 널리 사용되고 있으며, 이 기사에서 논의의 초점이 되고 있다.
본 기사에서 소개하는 논문 : Deep learning for 3D point clouds, Yulan Guo et. al.
Region Proposal based methods
이러한 방법은 먼저 포인트 클라우드에서 여러 지역을 제안한 다음 지역별 특징을 추출하여 해당 특징에 레이블을 부여한다. 또한 Multi-view based, Segmentation based, Plastum based 및 Other method의 네 가지 유형으로 나뉩니다.
- Multi-View 기반 방식은 전면 카메라, 후면 카메라, LiDAR 장치 등에서 나오는 다양한 뷰를 융합합니다. 이러한 방법은 정확도는 높지만 추론 속도는 느리다.
- Segmentation based, Plastum based 방법은 기존 의미 분할 기반 방법을 사용하여 먼저 배경 포인트를 제거하고 전경 포인트를 클러스터링하여 더 빠른 객체 추론을 한다. 이러한 방법은 다중 뷰 기반 방법에 비해 객체 호출률이 높으며 폐쇄성이 높고 붐비는 객체가 있는 복잡한 장면에 더 적합하다.
- 한편, Plastum 기반 방법은 먼저 2D 객체 감지 기반 방법을 사용하여 가능한 객체에 대한 추정 영역을 얻은 다음 3D 포인트 클라우드 기반 분할 방법을 사용하여 이러한 영역을 추가로 분석한다.
Single Shot Methods 이러한 방법은 단일 단계 네트워크를 사용하여 클래스 확률을 직접 예측합니다.
- BEV(Bird's Eye View) 기반 방법은 상단 뷰(2D 표현)인 포인트 클라우드의 BEV에서 작동하며 경계 상자를 감지하기 위해 완전 컨볼루션 네트워크를 사용한다. 이는 이미지 작업과 유사합니다.
- 이산화 기반 방법은 먼저 포인트 클라우드에 이산 변환을 적용한 다음 FCN(Fully Convolutional Networks)을 사용하여 경계 상자를 예측하려고 한다.
- 포인트 기반 방법과 다른 방법들은 그다지 두드러지지 않으니, 자세한 내용은 논문을 참고하라고 합니다.
scone's comment : BEV, 이산화 기반 방법, 포인트 기반 방법 등에 대해 알기 위해서는 추가적인 조사가 필요할 것 같고, 아직은 조사할 단계가 아닌 것 같아 일단 넘어가겠습니다.
Kitti 데이터 세트에서 다양한 방법의 평균 정밀도(Easy, Moderate, Hard)
Cars에서 성능은 전체적으로 높아보인다.
scone's comment : 팀원분께서 Cars 데이터만 잘 나와있는건 Kitti 데이터가 아무래도 Car 위주의 데이터가 아닌가 싶어 그렇지 않을까 싶다는 말씀이 있었습니다.
scone's comment : 팀원분께서 fps(frames per seconds)의 경우 값이 높을 수록 속도가 빠른 것이며 따라서 앞서 예시로 나온 MV3D 같은 방식의 경우 fps가 2.8인걸 봤을 때 자율주행 자동차에 적용하기 어려운 수치라고 말하는게 타당할 것 같다는 말씀이 있었습니다.
2. Point Net
본 기사에서 소개하는 논문 : PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
Input
PointNet은 포인트 클라우드(x,y,z 좌표 데이터)를 신경 쓰고 산란된 포인트 클라우드에 end to end learning을 적용한다. 분류, 부분 분할 및 의미 분할에 사용할 수 있습니다. 그래서, PointNet에 대한 입력은 3차원 벡터입니다.
scone's comment : end to end learning 이란 처음부터 끝까지 처리하는 그런 learning process를 말하는 듯 합니다.
포인트 클라우드 데이터의 특정 속성은 원시 포인트 클라우드 데이터 세트에 직접 적용될 수 있도록 포인트넷 네트워크 아키텍처를 구성하는 동안 신중하게 고려되었다.
- Permutation Invariance: 점 구름은 데이터 집합의 점 순서에 따라 변하지 않습니다. 예를 들어, 데이터 세트에 3개의 포인트가 있는 경우, 그것들이 네트워크에 공급되는 순서는 중요하지 않아야 한다. 따라서 PointNet은 순열 불변성에 대한 입력 세트의 대칭 함수로 max-pooling을 사용한다.
scone's comment :
1, 1, 2, 4 가 먼저 들어오나 3, 2, 1, 0 이 먼저 들어오나 지정된 좌표에 찍히고.
이를 maxpooling 하면 들어온 순서에 상관 없이 각 영역에서 큰 feature들이 뽑히게 된다. 정도의 논의가 있었습니다.
PointNet의 기본 구조입니다. MLP(다층 퍼셉트론) 입력은 순열 불변성을 달성하기 위해 max-pool layer에 공급된다. ([출처](https://www.youtube.com/watch?v=Cge-hot0Oc0)))
- Geometric Transformation Invariance : 점 구름은 기하학적 변환에 불변합니다. i.e. rotation, translation, affine transformations, etc. 이를 위해 포인트넷은 특정 축을 따라 모든 입력 데이터 포인트를 회전하고 변환하여 고차원 표준 매개변수 공간에 입력 포인트를 정렬한다. 예를 들어, 아래 이미지는 입력 이미지의 변환이 (공간 변환) [ST-FCN](https://en.wikipedia.org/wiki/Symmetric_function) 네트워크를 사용하여 동일한 출력을 생성하는 방법을 보여줍니다.
이러한 회전 불변성을 달성하기 위해 포인트넷은 T-Net을 회귀 네트워크로 사용하여 입력을 기반으로 변환 행렬을 예측한 다음 데이터 포인트로 곱하여 기하학적 변환 불변성을 달성한다. T-Net은 the data-dependent features with globally trained (data-independent) features to generate a transformation matrix.
Final Architecture combining permutation and geometric transformation invariance schemes.
PointNet architecture. Combinations of Max-Pool (Permutation Invariance) and Input Transformations (Geometric Transformation Invariance).
따라서, 기하학적 변환과 순열 불변 네트워크를 결합함으로써, 포인트넷은 raw한 포인트 클라우드 데이터에서 직접 작업할 수 있다. Segmentation 목적을 위해 네트워크는 각 포인트에 대한 클래스 점수를 예측해야 하므로 로컬 임베딩은 세분화 네트워크의 글로벌 특징 벡터와 연결된다. PointNet의 정확도는 사용자가 선택한 글로벌 피처 벡터의 크기에 따라 달라지며, 피처 수가 많을수록 정확도가 높아진다. PointNet은 1024개 feature를 사용하여 클래스 레이블을 생성합니다.
scone's comment : size를 어느 정도 이상 충족하게 되면, points 수에 따른 성과(accuracy)는 병목현상을 띄게 되고, 따라서 굳이 2048 정도가 아니어도 1024 정도면 충분하게 되어 1024를 선택한 것 같다. 라는 팀간 논의가 있었습니다.
3. PointNet++
본 기사에서 소개하는 논문 : Point Net++
PointNet was great but …
PointNet은 the point cloud scenes에서 capture local structures에 실패했습니다. PointNet++는 입력 포인트 클라우드의 중첩된 파티션에 PointNet을 재귀적으로 적용하여 데이터의 세밀한 패턴을 캡처하는 계층적 네트워크입니다.
Architecture
PointNet++ 아키텍처.
보시다시피, PointNet++는 세 개의 레이어로 구성된 set-abstraction levels로 구성됩니다.
i.e. Sampling, Grouping, and a PointNet layer.
- Sampling layer 는 입력 포인트에서 포인트 세트를 선택합니다. 입력 포인트는 로컬 영역의 중심점을 정의합니다. FP(Farest Point Sampling)를 사용하여 포인트 클라우드에서 서로 가장 멀리 위치한 점의 하위 집합을 선택합니다. 이렇게 하면 적용 범위가 더 넓어집니다.
- 그런 다음 Grouping layer 은 중심 주변의 근접점을 찾아 국소 영역 집합을 구성한다. 이 도구는 Ball Query를 사용하여 중심점을 중심으로 특정 사전 정의된 반지름의 구 내에서 각 중심점을 중심으로 최대 K 포인트를 얻습니다. 이 하위 샘플링된 데이터는 PointNet으로 전달됩니다.
- PointNet layer은 PointNet을 사용하여 로컬 영역 패턴을 피쳐 벡터로 인코딩합니다. 예를 들어, 아래 이미지에서, 네트워크 끝에 있는 전역 형상 벡터에 주목하십시오. 이것은 입력 데이터의 서로 다른 로컬 영역에서 형상을 가져오기 위해 PointNet에서 사용하는 출력입니다. 로컬 영역에 있는 점의 좌표는 포인트넷에 공급하기 전에 중심 프레임으로 변환된다.
scone's comment : 국소 영역을 샘플링 후 그루핑 한 다음 PointNet을 사용해 출력하는 과정을 set-abstraction 이라고 하고, 이 과정을 재귀적으로 반복하여 세밀한 부분까지 다 캐치한다. 정도로 이해하였습니다. 그리고 관련한 결과는 아래 result 자료 사진을 통해 볼 수 있을 것 같습니다. 이 다음은 반복되는 설명인 것 같습니다.
Multi-Scale Grouping
multiple set abstraction layers을 사용하면 PointNet++가 다른 척도에서도 동일한 입력 데이터로 작동할 수 있습니다. 더 많은 set abstraction layers 가 추가됨에 따라, 해당 feature vectors는 각 레이어에서 매우 낮은 레벨에서 더 높은 레벨로 이동한다.
Classification
입력의 다양한 척도의 feature를 가진 후 classification 작업은 매우 간단해 집니다. PointNet 네트워크를 사용하여 이 벡터에서 클래스 점수를 생성할 수 있습니다.
Segmentation
Set abstraction layer 은 입력 데이터를 subsamples 합니다. 그러나 Segmentation 작업의 경우 모든 입력한 points에 대해 점수를 얻어야 합니다. PointNet++는 하위 샘플링된 값에서 입력의 원래 척도로 돌아가기 위해 계층적 접근 방식을 채택한다. 이 작업은 두 단계로 수행됩니다.
- 하위 샘플링된 데이터 세트의 특징은 역거리 가중 평균 kNN 방법을 사용하여 원래의 고차원 공간으로 다시 보간된다.
- 이전 단계의 형상은 스킵 링크를 사용하여 이전에 the set-abstraction layers에서 얻은 형상과 연결된다. 그런 다음 이 결합된 벡터는 각 포인트의 특징 벡터를 업데이트하기 위해 유닛 PointNet(완전 연결 및 ReLU 레이어 몇 개 공유)으로 전달된다. Notice the skip-connections in the original architecture, that’s this part..
Results and Visualizations
PointNet++는 포인트 클라우드에서 로컬 기능을 더 잘 감지합니다.
scone's comment :
결과는 매우 눈여겨볼만한 부분인 것 같습니다. 저희 팀은 PointNet++ 는 마치 앙상블과도 비슷한 원리인 것 같다. 정도로 이해하였습니다. 같은 자료를 가지고도 다르게 샘플링하여 결과를 뽑아내고, 나온 여러 결과들을 통해 더 나은 성과를 보이는 과정이 이와 유사하다고 판단하였습니다.
4. LaserNET
본 기사에서 소개하는 논문 : LaserNet by Gregory P. Meyer et.
이 영역에서 논의하는 다른 작업과 비교하여, LaserNet은 3D 경계 상자 객체 감지를 위한 유일한 확률론적 모델이며, 이는 이 모델이 정확한 경계 상자 치수를 예측하는 대신 이러한 차원의 확률을 예측하여 전반적인 감지 성능을 향상시킨다는 것을 의미한다.
(instead of predicting the exact bounding box dimensions, this model predicts the probabilities of these dimensions)
scone's comment : 보통 예측값은 기댓값으로 냅니다. 본 논문은 단순히 예측값 뿐만 아니라 variance 까지 측정하여 uncertainty 까지 보겠다 정도로 이해되어집니다.
Built for LiDARs and Self Driving Cars
일부 자율주행차에는 진행 중인 도로 조건의 3D 포인트 클라우드를 생성하는 LiDAR(Light Detection and Ranging)라는 장치가 장착되어 있습니다. 이러한 3D 포인트 클라우드는 카메라만으로는 얻기 힘든 교통의 깊이를 측정하는 데 유용합니다. LaserNet은 LiDAR로 생성된 이러한 포인트 클라우드에서 경계 상자의 빠른 추론(논문 보고에 따르면 83fps)을 위해 설계되었다고 합니다.
Leveraging the power of CNNs
CNN은 이미지 작업에 매우 적합하며, LaserNet은 잠재력을 사용하여 Point Cloud로 확장하는 경향이 있습니다. 그러나 일반적으로 3개의 채널이 있는 벡터인 이미지와 달리 LaserNet은 포인트 클라우드를 5 채널 벡터로 변환한다. 이러한 변환을 위해, 먼저, 레이저 ID(Velodyne LiDARs에서 64)를 행으로 사용하고 각 레이저에 대응하는 방위각을 열로 사용하여 포인트 클라우드의 2D 매트릭스를 구한다. ( LiDAR 장치는 수직으로 분리된 레이저 빔을 보내고 각 레이저 빔은 수평 영역을 스위프한다. )
방위각 측정
2D 영상은 레이저 id와 LiDAR 장치로부터 얻은 각 레이저 id에 대응하는 방위각을 사용하여 생성된다. ([출처](https://arxiv.org/abs/1903.08701)))
이제 이 2D 매트릭스의 각 셀에는 LaserNet에 대한 입력으로 사용되는 5개의 정보 세트가 들어 있습니다. 이 값은 높이, 강도, 범위, 방위각, isPointContained입니다. 원래 2D 매트릭스의 각 셀은 LiDAR 장치에 의한 실제 스위퍼 포인트이며 때때로 셀 내부에 스위프 포인트가 없을 수 있으므로 지시 변수 isPointContained가 있습니다.
LaserNet에 사용되는 CNN은 다중 스케일 기능을 효과적으로 추출하고 결합하기 위해 다양한 척도의 입력 이미지에서 형상을 추출하는 데 사용된다. 그들의 네트워크는 3개의 계층적 수준으로 구성되며 각 수준은 형상 추출기와 형상 집계기로 구성된다. 또한 이미지의 수평 해상도가 수직 해상도보다 상당히 크기 때문에 다운샘플링은 수평 차원에서만 수행됩니다.
scone's comment : 팀원분의 말씀으로는 LiDAR 촬영 하는 방식을 유투브로 확인해보면 수평우로 한칸 한칸 쏘아낸다고 합니다. 따라서 수직은 해상도가 낮다. 라는 말이 나오는 것 같습니다.
Prediction
scone's comment : Prediction과 관련해 자세한 설명이 기재되어 있지는 않아 저는 후루룩 읽고 넘겼습니다.
LaserNet은 각 점에 대해 다음과 같이 예측합니다.
- 분류에 대한 클래스 확률
- 각 클래스에 대해 경계 상자 매개 변수
- 각 경계 상자에 대한 표준 편차
*각 경계 상자 모수에 대해 공통 분산을 가정합니다. 따라서 각 경계 상자에 대해 표준 편차가 하나만 예측됩니다.* - 혼합물 무게 집합입니다.
*잘 모르겠으면 [가우스 혼합물 모델](https://towardsdatascience.com/gaussian-mixture-models-explained-6986aaf5a95)을 참조하십시오.*
Mean Shift Clustering : LaserNet은 각 포인트에 대한 클래스 확률을 예측하기 때문에 이러한 확률을 결합하여 각 클래스 객체에 대한 일반적인 확률과 표준 편차를 얻을 수 있습니다. *평균 이동 클러스터링*은 이러한 개별 예측을 객체 레벨로 확장하는 데 사용되는 기법입니다. 이는 또한 점당 예측에서 잡음을 줄이는 데 도움이 됩니다.
Adaptive Non-Maximum Suppression : 하향식 보기에서 경계 상자는 겹치지 않아야 합니다. 다만 전망의 불확실성으로 인해 일정 부분 중복이 예상된다. 적응형(NMS)은 겹치는 경계 상자에 별도의 정보가 포함되어 있는지 여부를 결정하는 데 사용됩니다. 이 기법의 더 나은 예와 예는 아래 이미지를 참조하십시오.
scone's comment : 팀원분께서 박스의 경계값이라는게 가령 어떤 차가 마치 분리된 듯한 그런 차일 때, 이를 하나의 박스로 볼 것인가 아니면 두 개의 박스로 봐야할 것인가. 그리고 택배 박스들이 이리저리 흩으러져 있을 때 각각의 박스들을 어떻게 인식할 수 있을까와 관련해 중요한 논제가 될거라는 말씀을 해주셨습니다. 만약 프로젝트를 진행하다가 관련하여 참고가 필요하다면, 위의 내용을 한번 찾아봐야할 수도 있을 것 같습니다.
Result
그들은 키티와 같은 작은 데이터 세트에서 멀티모달 분포를 학습하기 어렵다고 말하면서 키티 데이터 세트에서 평범한 성능을 내는 이유를 설명한다. 그러나 ATG4D의 경우처럼 데이터 세트 크기가 클 때 그들의 기술은 훌륭하다.
5. PointPillars
본 기사에서 소개하는 논문 : PointPillars
이 영역에서 논의하는 다른 작업과 비교할 때, PointPillars는 공개적으로 사용 가능한 자율주행차 데이터 세트에서 매우 정확한 가장 빠른 추론 모델 중 하나이다. PointPillars는 62fps로 실행되며, 이는 이 영역의 이전 작업보다 몇 배 더 빠르다.
Architecture
Feature Encoder (Pillar feature net) :
점 구름을 희소 유사 이미지로 변환합니다. 첫째, 점 구름은 x-y 좌표에서 그리드로 분할되어 기둥 집합을 생성합니다. 4차원 벡터(x,y,z,반사율)인 구름의 각 점은 다음과 같은 추가 정보를 포함하는 9차원 벡터로 변환된다.
- Xc, Yc, Zc = Distance from the arithmetic mean of the pillar c the point belongs to in each dimension.
scone's comment : Pillars on X-Y Grid 에서 확인 가능한 데이터 정도로 이해했습니다.
- Xp, Yp = Distance of the point from the center of the pillar in the x-y coordinate system.
scone's comment : X-Y Grid 에서 확인 가능한 데이터 정도로 이해했습니다.
따라서 점에는 D = [x,y,z,r,Xc,Yc,Zc,Xp,Yp] 라는 정보가 포함됩니다.
scone's comment : 채널, 차원, 벡터 관련하여 코멘트
저는 채널, 차원 등의 개념과 관련하여 '방향' 이라는 키워드로 이해하고 있습니다.
가령 x축과 y축 이 있다고 한다면 그 외의 것들은 x축이라는 방향과 y축이라는 방향을 합친 가능성인 것입니다. 이는 공간상 뿐만 아니라 feature내에서도 적용이 되는데 위의 9차원 벡터 같은 경우에는 9개의 방향에 대한 정보를 포함하고 있다 정도로 이해할 수 있을 것 같습니다. 그리고 우리가 흔히 벡터와 차원 등의 용어를 혼용하여 쓰는데 이는 아까의 예에서 x축, y축도 결국엔 각각이 벡터 이기 때문입니다. 따라서 점 D 내에 9개 벡터가 있다 라고 한다면 이는 행렬 D라기 보다는 9개 차원이 있구나 정도로 이해하면 될 것 같습니다. 표현 방식의 차이라고 생각합니다.
Feature Encoder는 점 구름에 기둥을 작성합니다. 그런 다음 각 점은 자신이 속한 기둥에 대한 정보를 캡슐화하는 9차원 벡터로 변환됩니다. ( 위의 점 D )
From Pillars to a dense tensor (Stacked Pillars) :
점 구름의 희소성 때문에 기둥 집합은 대부분 비어 있고, 비어 있지 않은 기둥은 일반적으로 점이 거의 없습니다. 이 희소성은 (D, P, N) 크기의 밀도 텐서를 생성하기 위해 non-empty pillars per sample (P)의 수와 points per pillar (N)의 수 모두에 제한을 가함으로써 활용된다. 표본이나 기둥에 너무 많은 데이터로 인해 이 텐서에 훈련 시키기 부적합 할 경우 데이터는 무작위로 샘플링된다. 반대로, 표본이나 기둥에 텐서를 채우기에는 데이터가 너무 적으면 패딩이 0으로 적용됩니다.
참고로 D = [x,y,z,r,Xc,Yc,Zc,Xp,Yp]
scone's comment :
point clouds 를 ( D, P, N ) 데이터로 만들어 사용한다고 이해했습니다.
scone's comment :
패딩이란 가령 maxpooling 등을 하게 되면 데이터의 차원이 줄어들게 되는데, 이때 원래의 차원과 대등한 input값이 필요한 경우. 양식을 맞춰주기 위해 넣는 값들 정도로 이해하면 될 것 같다고 팀원분께서 말씀해주셨습니다.
가령 0과 같이 유의미 하지 않은 값을 넣는것이 관련한 예라고 볼 수 있겠습니다.
From Stacked Pillars to Learned Features :
이 시리즈에 대한 후속 조치를 취했다면, 포인트 클라우드 유형의 feature를 추출해야 할 때마다 PointNet을 사용한다는 것이 매우 분명할 겁니다.
* 참고
PointNet은 기본적으로 각 포인트에 적용되며, a linear layer 과 BatchNorm 와 ReLU가 높은 수준의 특징을 생성하며, 이 경우 차원(C,P,N)이다. 그리고 이 (C,P,N) 차원 텐서를 (C,P) 차원 텐서로 변환하는 max pool operation이 뒤따른다
Generating the Pseudo Image from Learned features :
이것은 매우 간단하며, 생성된 (C, P) 텐서는 각 점에 대한 the Pillar index를 사용하여 원래 필러로 다시 변환된다. 그래서 원래, 점이 D차원 벡터로 변환된 곳에서, 지금은 포인트넷에서 얻은 특징인 C차원 벡터를 포함하고 있다.
scone's comment : 저는 다음과 같이 이해했습니다.
pointNet을 거치면 D가 C가 되고, max-pooling을 거치면 (C,P,N)이 (C,P)가 됩니다. 그리고 이를 가지고 원래의 필러로 변환합니다.
( D, P, N ) \( \longrightarrow \) ( C, P, N ) \( \longrightarrow \) ( C, P ) \( \longrightarrow \) Pseudo Image
Backbone
포인트 필러에 사용된 백본(RPN) Region Proposal Network used in Point Pillars. 이 이미지는 원래 이 네트워크를 제안한 [VoxelNet](https://arxiv.org/pdf/1711.06396.pdf) 논문에서 가져온 것이다.
백본은 서로 다른 규모의 변환된 입력으로부터 특징을 학습하기 위해 순차적 3D 컨볼루션 레이어로 구성된다. RPN에 대한 입력은 *Feature Net*에서 제공하는 기능 맵입니다. 이 네트워크의 아키텍처는 위의 그림에 설명되어 있습니다. 네트워크는 완전한 컨볼루션 레이어의 세 블록을 가지고 있다. 각 블록의 첫 번째 레이어는 스트라이드 크기가 2인 컨볼루션(convolution)을 통해 피처 맵을 절반씩 샘플링하고, 이어서 스트라이드 1(xq는 필터의 q 응용 프로그램을 의미한다)의 컨볼루션 시퀀스를 수행한다. 각 컨볼루션 레이어 이후에는 BN 및 ReLU 연산이 적용된다. 그런 다음 모든 블록의 출력을 고정된 크기로 업샘플링하여 고해상도 기능 맵을 구축한다.
* 참고
ConvMD(cin, cout, k, s, p)는 M차원 컨볼루션 연산자를 나타내며, 여기서 cin과 cout는 입력 및 출력 채널의 수이고 k, s, p는 각각 커널 크기, 스트라이드 크기 및 패딩 크기에 해당하는 M차원 벡터이다. M-차원의 크기가 같을 때, 우리는 스칼라를 사용하여 k = (k, k, k)에 대한 크기를 나타낸다
scone's comment :
이미지 참고 자료가 VoxelNet에서 가져온 자료라 본 PointPillars에서 어떻게 적용되는지에 대한 이해는 어려웠던것 같습니다. 일단은 기술이 사용된다는 것만 알고 넘어가겠습니다. 다만 팀원분 말씀처럼 기술이란게 쌓이고 쌓이고 쌓여 더 나은 성과를 도출하게 된다는 점을 이해했다는 점에서 의의가 있는 것 같습니다.
Detection Head (SSD)
이 구성 요소는 이 [포스트](https://towardsdatascience.com/understanding-ssd-multibox-real-time-object-detection-in-deep-learning-495ef744fab)에서 완벽하게 다루어진 완전히 별개의 연구입니다. 그러나 SSD 네트워크의 목표는 포인트 필러 네트워크의 백본 계층에서 생성된 기능에 대한 2D 경계 상자를 생성하는 것이다. SSD를 원샷 경계 상자 감지 알고리즘으로 선택하는 몇 가지 중요한 이유는 다음과 같습니다.
- 빠른 추론.
- VGG와 같이 잘 연구된 네트워크의 기능을 사용합니다.
- 대단한 정확성.
그들은 단순히 위 이미지의 축소된 부분인 원래의 VGG 네트워크를 수정하여 다른 규모의 특징을 연결한다. SSD는 경계 상자 위치를 회귀하는 데 이전 값을 사용한 다음 최대값이 아닌 억제를 사용하여 노이즈가 많은 예측을 필터링합니다.
만약 이해가 가지 않는다면,
를 참고할 것을 추천합니다.
그리고 당신이 모든 것을 이해할 때까지 많은 시간이 걸리지 않을 것이다. 또한 SSD는 원래 이미지용으로 개발되었기 때문에 3D 경계 상자의 예측을 수정하기 위해 높이와 표고를 네트워크에서 추가 회귀 대상으로 지정했습니다.
scone's comment :
위의 링크를 참고하면 쉽게 이해할 수 있다고 합니다. 후에 이해가 필요할 때 다시 돌아와서 봐볼 수 있을 것 같습니다.
Results
Point Pillars가 얼마나 좋은지 여전히 의심스럽다면, 아래 결과를 확인하십시오. 이것은 빠르고 매우 정확하며, 가장 좋은 점은 기존 네트워크를 사용하여 구축되었으며 엔드 투 엔드 훈련 가능한 네트워크라는 것이다.
6. 정리
저희는 본 기사들을 통해 몇 가지 모르는 용어들을 정리하고, point cloud와 관련해서 충분한 배경지식을 쌓을 수 있었습니다.
앞으로는 저희 프로젝트에 쓰일 모델인 Pose CNN에 좀 더 주력하여,
코드 리뷰를 하거나 또는 코드를 직접 짜보는 식으로 프로젝트에 관련해 기동성을 확보하여야겠습니다.
'Project > Pose Estimation' 카테고리의 다른 글
[개념 정리] Point Cloud (0) | 2022.08.18 |
---|