Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Ứng dụng AI trong Point Cloud

 Bài trước, tôi có giới thiệu về sử dụng LLM trong bài toán ASR



Bài này giới thiệu về một chủ đề khác, ứng dụng AI trong PointCloud. Đầu tiên thì phải xoá mù khái niệm Point Cloud là gì đã.

PointCloud là gì

Nếu xem mấy phim khoa học viễn tưởng, khi đội thám hiểm khám phá hang động, họ sử dụng drone quét laser 3D và kĩ thuật LIDAR.

Phát hiện và Đo khoảng cách bằng ánh sáng (LiDAR) là công nghệ cảm
biến từ xa dựa trên laser. Ý tưởng đằng sau LiDAR khá đơn giản:
chiếu một tia laser nhỏ vào một bề mặt và đo thời gian tia laser quay
trở lại nguồn phát.

Drone bay từng ngóc ngách rồi quét laser và trả về hình ảnh 3D để đội thám hiểm có cái nhìn tổng qua về địa hình

ỨNG DỤNG CỦA LIDAR - MÁY QUÉT 3D LASER - SKY3D

Tương tự như mặt phẳng đều tạo bởi nhiều điểm 2D (x,y), một hình ảnh 3D được tạo nên từ vô số điểm Point (x,y,z) và thêm giá trị màu (RGB), tập hợp những điểm ảnh 3D này gọi là Point Cloud

Mô hình đám mây điểm được tạo ra bởi máy quét 3D hoặc các phần mềm quan trắc học, đo nhiều điểm trên bề mặt của các vật thể xung quanh, với dữ liệu đầu ra được sử dụng cho nhiều mục đích, như tạo mô hình CAD 3D để đo lường và kiểm ta chất lượng, và vô số các ứng dụng trực quan hóa, ảnh động, kết xuất và tùy chỉnh hàng loạt.


Dữ liệu pointcloud được ứng dụng nhiều trong xây dựng, lập bản đồ địa hình , kiến trúc. Mấy phần mềm 3D như 3D studio hay CAD đều hỗ trợ pointcloud để thực hiện các phép đo đạc diện tích, chiều rộng chiều cao…

Các điểm riêng lẻ trong đám mây điểm chứa thông tin như tọa độ 3D (X, Y và Z), nhưng đó không phải là tất cả: cùng với tọa độ, cường độ tín hiệu phản hồi laser được ghi lại. Đây là thông tin có giá trị cho chúng ta biết thêm về mật độ của vật thể hoặc thành phần vật chất.

Ngoài ra, các điểm riêng lẻ có thể chứa các thuộc tính bổ sung như số lần trả về, góc quét, hướng quét, mật độ điểm, giá trị màu RGB và mốc thời gian. Ví dụ cùng 1 vật thể đó, nhưng quét từ trên xuống, hay từ dưới lên sẽ trả về tt khác nhau

Trực quan hóa đám mây điểm với màu sắc RGB

AI training model vào point cloud

Việc áp dụng AI training model vào point cloud thường dùng trong các bài toán như nhận dạng đối tượng 3D, phân đoạn (segmentation), tái tạo bề mặt (surface reconstruction), SLAM, AR/VR.

Autonomous driving: Các thiết bị xe tự lái dùng AI có thể nhận dạng người đi bộ, xe, vạch kẻ đường từ LiDAR (dùng PointNet++, PV-RCNN, CenterPoint).

Xây dựng/BIM: phân loại tường, trần, cửa từ scan 3D, cái này áp dụng trong kĩ thuật xây dựng. Bản vẽ AutoCad thông thường thì có 2D với tt kích thước, bản vẽ  BIM: đó là một “tường bê tông dày 200mm” với thông tin vật liệu, khối lượng, giá tiền, tiến độ thi công, chi tiết 4D luôn

Y tế: tái tạo mô hình 3D từ ảnh quét CT/MRI. Thanh niên nào đi chụp cắt lớp (CT) thì biết cái này.  Máy chụp CT sử dụng tia X chiếu qua cơ thể từ nhiều góc độ khác nhau. 
Các hình ảnh X-quang này được máy tính xử lý để tạo ra hình ảnh cắt ngang (2D hoặc 3D) của các khu vực cần kiểm tra. 
Cái này ưu điểm hơn so với chụp X-Quang chỉ có 2D, thì CT nó dựng luôn hình ảnh tim gan phèo phổi thành 3D luôn

Để hiểu hơn về training model, thì có lấy ví dụ về hệ thống xe tự hành.
Xe tự lái phải biết môi trường 3D thật chính xác: người, xe, cột điện, vỉa hè, làn đường, biển báo. Camera gắn trên xe có thể nhìn thấy màu sắc & ký hiệu, nhưng khó ước lượng khoảng cách.
Và lúc này Point Cloud 3D được áp dụng, thiết bị LiDAR tạo ra Point Cloud 3D: mỗi điểm có (x, y, z, intensity) → cho biết hình dạng, kích thước, khoảng cách của người xe, cột đèn…
Data generate từ LiDAR được dùng để train model, giúp AI nhận biết được thực thể 3D. Ví dụ như có 1 tập PointCloud data đưa vào train, gán nhãn (kiểu data này là hình ảnh 3D của cái cột đèn đó, nhớ đi, lần sau gặp thì nhớ mà tránh)
Có mấy model thông dụng PointNet++, KPConv, SparseConv U-Net (Minkowski Engine).
Nhiều nguồn Dataset đã được publish trên mạng, nổi tiếng là bộ KITTI

Lấy tạm ChatGPT giải thích cho nhanh 

Bộ dữ liệu nổi tiếng nhất về xe tự lái (autonomous driving dataset), thu thập tại thành phố Karlsruhe (Đức).

Nguồn gốc: do Đại học Karlsruhe và hãng Toyota tạo ra (2012).

Mục đích chính: đánh giá và huấn luyện thuật toán computer vision & robotics trong bối cảnh lái xe ngoài trời.

Nội dung dataset:

Camera: ảnh stereo, ảnh màu, ảnh grayscale.
LiDAR: point cloud từ Velodyne HDL-64E.
GPS/IMU: để gán ground-truth quỹ đạo xe.
Ground-truth: bounding box 2D/3D, nhãn đối tượng (car, pedestrian, cyclist…).

Các benchmark trong KITTI:

3D Object Detection: phát hiện xe/người/xe đạp từ point cloud và/hoặc camera.
Semantic Segmentation: phân loại từng pixel/điểm.
Optical Flow: ước lượng chuyển động giữa 2 frame.
Visual Odometry / SLAM: định vị xe dựa vào camera/LiDAR.
Depth Estimation: từ ảnh 2D suy ra bản đồ độ sâu.
Ví dụ ứng dụng: Huấn luyện AI để phát hiện “người đi bộ băng qua đường” trong point cloud LiDAR → dùng KITTI 3D detection benchmark để đánh giá.

Dự án

Bối cảnh dự án tôi làm cũng tương tự như trên. huấn luyện model tuy nhiên Data lần này ko phải có sẵn, hoặc lấy pre-trained model publish trên mạng. KH cung cấp data riêng của họ, cho nên sẽ phải training from scratch

Đội AI engineer sẽ viết code thực hiện training model từ data của KH
Đội MLOps sẽ dựng infrastructure (dùng ml.g6e.2xlarge) instance. Một loại instance trong AWS dành cho SageMaker (máy học) 1 GPU – NVIDIA L40S Tensor Core , 48 VGRAM GPU để chạy train model
Loại này phù hợp để

Huấn luyện mô hình AI/ML quy mô vừa – lớn

Các ứng dụng cần nhiều VRAM như mô hình generative, xử lý dữ liệu 3D/point cloud, simulation

Lúc đầu các sếp tiết kiệm tiền nên muốn thử nghiệm mấy provider rẻ tiền hơn như Vultr, hay chơi hàng Azure, nhưng sau khi tâm sự các cụ là công ty mình infra trên AWS thì cứ full hàng trên AWS SageMaker là bao uy tín. Em sẽ dựng nguyên 1 MLOps infra trên AWS để mấy chú AI engineer vào chạy train deploy model thoả mãn đúng yêu cầu của các chú

Data training cập nhật thường xuyên, nên phải control version như github, áp dụng [DVC]
MLOps infra là phải launch trong 1 nốt nhạc, nên build everything by terraform IaC
SageMaker pipeline jobs sẽ được tạo tự động bằng python code, execute bằng CI/CD codepipeline
Trước khi code thì cần ngồi phân tích đống data KH cung cấp để xem viết code training model thế nào.

Bộ data khoảng hơn chục GB, dạng file NPY format.

.npy point cloud chỉ đơn giản là một mảng NumPy lưu danh sách các điểm 3D (và các thuộc tính của điểm đó), rất tiện khi huấn luyện AI.

Ví dụ
1 điểm pointcloud lưu toạ độ và mật độ và màu RGB

(N, 4) → [x, y, z, intensity]
(N, 6) → [x, y, z, r, g, b]

Dạng NPY này nhiều ưu điểm

  • ⚡ Nhanh: Load và save nhanh hơn .pcd hay .ply
  • 📦 Gọn nhẹ: Không dư text, chỉ lưu dữ liệu
  • 🔗 Tương thích: Trực tiếp dùng cho NumPy, PyTorch, TensorFlow
  • 🎯 Linh hoạt: Có thể thêm label, màu sắc, intensity tuỳ mục đích training

OK như vậy đã hiểu cấu trúc về training data, bước tiếp theo là viết code execute training
Đón đọc phần sau

Đăng nhận xét

0 Nhận xét