Scene Flow
Tìm hiểu cách scene flow ước tính chuyển động 3D qua các khung hình, khác với optical flow và ước tính độ sâu ra sao, cũng như cách scene flow hỗ trợ lái xe tự hành, robot và workflow thị giác YOLO26.
Luồng chuyển động cảnh là trường chuyển động ba chiều của một cảnh động theo thời gian. Luồng này mô tả cách các điểm nhìn thấy được di chuyển trong không gian 3D thực giữa các khung hình, bao gồm chuyển động sang ngang, theo chiều dọc và hướng về phía hoặc ra xa camera. Trong thị giác máy tính, luồng chuyển động cảnh giúp các hệ thống hiểu không chỉ những gì có vẻ đang di chuyển trong ảnh, mà còn cả cách hình học xung quanh thực sự thay đổi.
Cách luồng chuyển động cảnh biểu diễn chuyển động 3D#
Một phép ước tính luồng chuyển động cảnh gán một vector độ dịch chuyển hoặc vận tốc 3D cho mỗi điểm cảnh được quan sát. Ví dụ, nếu một người đi bộ băng qua đường và tiến lại gần camera, các vector tương ứng mô tả cả chuyển động ngang lẫn khoảng cách ngày càng giảm đến camera.
Điều này khác với luồng quang học, vốn biểu diễn chuyển động pixel biểu kiến trên mặt phẳng ảnh hai chiều. Như dự án Scene Flow của Carnegie Mellon giải thích, có thể hiểu luồng quang học là hình chiếu của luồng chuyển động cảnh 3D lên ảnh camera. Do đó, hai điểm có thể có chuyển động ảnh tương tự nhau nhưng lại di chuyển khác nhau theo chiều sâu.
Luồng chuyển động cảnh dày đặc ước tính chuyển động của hầu hết các điểm nhìn thấy được, trong khi luồng chuyển động cảnh thưa chỉ bao phủ các đặc trưng, điểm được theo dõi hoặc điểm trả về LiDAR đã chọn. Kết quả dày đặc cung cấp chi tiết hình học phong phú hơn nhưng đòi hỏi nhiều tính toán hơn và cần có sự tương ứng đáng tin cậy giữa các khung hình.
Luồng chuyển động cảnh so với các khái niệm thị giác liên quan#
Luồng chuyển động cảnh kết hợp cấu trúc không gian với chuyển động theo thời gian, nằm giữa một số tác vụ liên quan:
- Ước tính luồng quang học bằng OpenCV: Ước tính độ dịch chuyển pixel theo chiều ngang và chiều dọc. Phương pháp này không thể tự xác định liệu một đối tượng di chuyển theo chiều sâu hay camera gây ra chuyển động biểu kiến.
- Ước tính độ sâu: Xác định khoảng cách từ các bề mặt đến camera, thường là trong một khung hình. Luồng chuyển động cảnh còn mô tả cách các vị trí 3D đó thay đổi theo thời gian.
- Thị giác stereo: Sử dụng các pixel tương ứng từ camera được đồng bộ để khôi phục độ sâu. Quy trình xử lý độ sâu stereo bằng OpenCV giải thích cách độ lệch giữa các góc nhìn hỗ trợ tái tạo 3D.
- Theo dõi đối tượng: Duy trì danh tính đối tượng qua các khung hình, thường bằng cách sử dụng bounding box hoặc mask. Ngược lại, luồng chuyển động cảnh ước tính chuyển động ở cấp độ điểm hoặc pixel và có thể biểu diễn các chuyển động khác nhau bên trong một đối tượng biến dạng.
- Chuyển động đám mây điểm: Các hệ thống LiDAR và RGB-D có thể ước tính trực tiếp luồng chuyển động cảnh giữa các tập hợp điểm 3D. Hướng dẫn về đám mây điểm của Open3D giới thiệu biểu diễn hình học được sử dụng trong nhiều pipeline như vậy.
Luồng chuyển động cảnh cũng phụ thuộc vào hình học camera. Hiệu chuẩn camera bằng OpenCV chính xác giúp phân biệt chuyển động thực của cảnh với những thay đổi do camera xoay, tịnh tiến hoặc méo ống kính.
Ứng dụng thực tế#
-
Lái xe tự hành: Hệ thống perception có thể ước tính liệu một phương tiện gần đó đang chuyển làn, tiến lại gần nhanh chóng hay di chuyển cùng dòng xe. Không giống như chỉ xét chuyển động 2D, luồng chuyển động cảnh hỗ trợ suy luận thời gian đến va chạm vì luồng này bao gồm chuyển động dọc theo trục chiều sâu. Luồng chuyển động cảnh có thể bổ trợ cho các thành phần phát hiện, theo dõi và ước tính độ sâu trong các giải pháp thị giác máy tính cho ngành ô tô. Bộ benchmark luồng chuyển động cảnh KITTI minh họa việc đánh giá trên các cảnh đường phố có chuyển động của camera và các đối tượng chuyển động độc lập, trong khi hướng dẫn an toàn xe tự động của NHTSA cung cấp bối cảnh rộng hơn cho các hệ thống perception chú trọng an toàn.
-
Robot học: Robot di động có thể sử dụng luồng chuyển động cảnh để phân biệt một kệ đứng yên với một công nhân đang di chuyển, ước tính quỹ đạo 3D của chướng ngại vật và cập nhật đường đi trước khi xảy ra va chạm. Trong các giải pháp thị giác cho robot, thông tin này có thể được kết hợp với camera, cảm biến độ sâu và LiDAR. Tài liệu về thông điệp cảm biến ROS định nghĩa các giao diện phổ biến để trao đổi hình ảnh, thông tin camera và đám mây điểm giữa các thành phần robot.
Thách thức trong ước tính và dữ liệu#
Có thể suy ra luồng chuyển động cảnh từ video stereo, camera RGB-D, chuỗi dữ liệu LiDAR hoặc video đơn mắt với các tín hiệu độ sâu và chuyển động được học. Stereo và cảm biến đo độ sâu chủ động cung cấp phép đo hình học mạnh hơn, trong khi các hệ thống đơn mắt phải suy ra tỷ lệ và giải quyết các điểm mơ hồ dựa trên ngữ cảnh hình ảnh.
Các trường hợp lỗi phổ biến bao gồm che khuất, nhòe chuyển động, bề mặt phản chiếu, vùng không có kết cấu, cấu trúc mảnh, ánh sáng thay đổi và chuyển động nhanh giữa các khung hình. Chuyển động của camera tạo thêm thách thức vì hệ thống phải tách chuyển động của chính camera khỏi chuyển động của các đối tượng độc lập. Lỗi có thể tạo ra quỹ đạo 3D không chính xác, khiến các hệ thống điều hướng hoặc dự đoán va chạm ở các bước sau đánh giá sai tốc độ và khoảng cách.
Dữ liệu huấn luyện có thể bao gồm các khung hình RGB, độ sâu hoặc độ lệch, luồng quang học, phân đoạn và thông số camera. Các bộ dữ liệu Scene Flow Freiburg minh họa cách các nhãn bổ trợ này có thể mô tả đồng thời hình học và chuyển động.
Quy trình thực tế#
Ultralytics YOLO26 có thể cung cấp thành phần độ sâu trong pipeline luồng chuyển động cảnh thông qua tác vụ ước tính độ sâu đơn mắt được ghi trong tài liệu. Ví dụ sau tạo bản đồ độ sâu dày đặc cho một khung hình:
from ultralytics import YOLO
# Ước tính cấu trúc 3D của cảnh ở từng pixel.
model = YOLO("yolo26n-depth.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
result.save(filename="depth_result.jpg")
print(result.depth.data.shape)Quy trình làm việc với YOLO26 này không tự tính luồng chuyển động cảnh. Quy trình cung cấp độ sâu ở từng pixel; một pipeline hoàn chỉnh có thể kết hợp dữ liệu này với các khung hình liên tiếp, sự tương ứng theo thời gian và tư thế camera đã hiệu chuẩn để ước tính độ dịch chuyển 3D. Trên thực tế, các nhóm nên xác thực riêng từng thành phần trước khi đánh giá toàn bộ trường chuyển động, đặc biệt là quanh vùng bị che khuất và ranh giới độ sâu.









