Trước khi robot làm gì với thị giác, nó cần chia bức ảnh thành những phần có ý nghĩa: đây là sàn, đây là tường, đây là cái bàn, đây là vật cần nhặt. Bước này gọi là phân vùng, và chất lượng của nó quyết định mọi thứ phía sau.
Ba loại phân vùng
Phân vùng ngữ nghĩa. Gán cho mỗi điểm ảnh một lớp: sàn, tường, người, bàn. Không phân biệt hai cái bàn khác nhau. Đủ cho điều hướng — robot chỉ cần biết chỗ nào đi được.
Phân vùng thực thể. Tách riêng từng vật cụ thể. Ba cái cốc trên bàn là ba vùng riêng biệt. Cần cho thao tác vì robot phải nhặt một cái cụ thể.
Phân vùng toàn cảnh. Kết hợp cả hai — vật đếm được thì tách riêng, nền thì gán lớp. Đầy đủ nhất và tốn nhất.
Chọn loại nào theo việc. Điều hướng dùng ngữ nghĩa. Thao tác dùng thực thể. Xây bản đồ ngữ nghĩa dùng toàn cảnh.
Sai lầm thường gặp. Dùng phân vùng thực thể cho bài toán chỉ cần ngữ nghĩa, tốn tính toán vô ích. Với robot chạy phần cứng nhúng thì lãng phí này rất đáng kể.
Mô hình phân vùng tổng quát
Thay đổi lớn trong lĩnh vực này vài năm gần đây.
Cách cũ. Huấn luyện mô hình cho một tập lớp cố định đã định nghĩa trước. Muốn thêm lớp mới phải thu dữ liệu có nhãn và huấn luyện lại.
Cách mới. Mô hình huấn luyện trên dữ liệu rất lớn có thể tách ra bất kỳ vật thể nào trong ảnh mà không cần biết trước nó là gì. Cho một điểm hoặc một khung, mô hình trả về mặt nạ vật thể ở đó.
Vì sao quan trọng với robot. Robot gặp vật chưa từng có trong dữ liệu huấn luyện là chuyện thường. Mô hình tổng quát tách được chúng ra, dù không biết tên.
Ghép với ngôn ngữ. Kết hợp mô hình phân vùng với mô hình thị giác ngôn ngữ cho phép tìm vật theo mô tả bằng chữ — cái cốc màu xanh bên trái. Rất hữu ích cho robot nhận lệnh tự nhiên.
Ràng buộc thực tế. Các mô hình này nặng. Chạy trên máy chủ thì được, chạy trên robot thời gian thực thì phải dùng bản rút gọn và chấp nhận kém hơn.
Cách dùng thực dụng. Chạy mô hình nặng một lần để lập danh mục vật thể trong cảnh, rồi dùng mô hình nhẹ để theo dõi chúng theo thời gian.
Phân vùng cho điều hướng
Ứng dụng đơn giản nhất và có giá trị thực tế cao nhất.
Bài toán cơ bản. Chỗ nào robot đi được. Nghe đơn giản nhưng cảm biến khoảng cách không trả lời được — nó chỉ biết có vật cản hay không, không biết vũng nước hay bậc hụt.
Phát hiện mặt sàn đi được. Phân vùng ảnh thành sàn và không phải sàn. Bắt được những thứ cảm biến khoảng cách bỏ sót: sàn ướt, thảm dày, mép bậc.
Phát hiện bậc xuống và hố. Nguy hiểm nghiêm trọng nhất với robot di động vì cảm biến quét ngang không thấy. Kết hợp phân vùng với chiều sâu giải quyết được.
Phân biệt vật cản tạm và cố định. Người và thùng hàng thì có thể chờ hoặc nhờ dịch; tường thì phải đi vòng. Robot xử lý khác nhau cho hai loại.
Nhận vùng đặc biệt. Cửa, thang máy, lối ra. Cho phép hành vi riêng ở những chỗ này.
Chi phí phải cân nhắc. Chạy phân vùng liên tục tốn điện và tính toán. Nhiều hệ thống chỉ chạy vài lần mỗi giây và dựa vào cảm biến khoảng cách cho phản ứng nhanh — đây là cách chia hợp lý.
Phân vùng cho thao tác
Yêu cầu cao hơn nhiều so với điều hướng.
Cần độ chính xác ở ranh giới. Robot cầm vào mép vật. Mặt nạ lệch vài điểm ảnh có thể làm tay kẹp trượt hoặc đè lên vật bên cạnh.
Cần tách được vật chạm nhau. Đống đồ chồng lên nhau là tình huống khó nhất. Ranh giới giữa hai vật cùng màu chạm nhau thường mờ với cả mô hình lẫn mắt người.
Cần ổn định theo thời gian. Mặt nạ nhấp nháy giữa các khung hình làm ước lượng vị trí dao động. Phải làm mượt theo thời gian hoặc theo dõi vật qua các khung.
Cần biết vật nào ở trên. Trong đống đồ, nhặt vật bị đè sẽ kéo theo vật khác. Phân vùng kết hợp chiều sâu cho biết thứ tự lớp.
Vật biến dạng là ngoại lệ khó. Vải, dây, túi. Hình dạng đổi liên tục nên khái niệm mặt nạ ổn định không còn ý nghĩa.
Cách thực dụng trong công nghiệp. Cấu trúc hoá môi trường để né bài toán — vật đặt riêng lẻ trên nền tương phản, không chồng lên nhau. Kém thanh lịch nhưng đưa tỷ lệ thành công lên mức dùng được.
Dữ liệu và gán nhãn
Phần tốn công nhất và ít được nói tới.
Gán nhãn phân vùng rất tốn. Vẽ đường viền chính xác quanh vật mất hàng phút mỗi ảnh. Một bộ dữ liệu vài nghìn ảnh là hàng trăm giờ công.
Cách giảm — gán nhãn bán tự động. Dùng mô hình tổng quát sinh mặt nạ trước, người chỉ sửa chỗ sai. Giảm thời gian rất nhiều và là cách nên dùng mặc định.
Cách giảm — sinh dữ liệu trong mô phỏng. Mô phỏng cho nhãn phân vùng miễn phí và hoàn hảo. Vấn đề là khoảng cách với ảnh thật, giảm bằng ngẫu nhiên hoá kết cấu và ánh sáng.
Cách giảm — dán ảnh vật lên nền khác nhau. Chụp vật trên nền đơn, tách ra, ghép lên nhiều nền. Rẻ và hiệu quả bất ngờ cho bài toán hẹp.
Chú ý về phân bố dữ liệu. Dữ liệu phải phủ đúng điều kiện triển khai — cùng loại đèn, cùng góc camera, cùng loại nền. Bộ dữ liệu công khai đẹp nhưng chụp ở nơi khác thường không chuyển giao tốt.
Kinh nghiệm. Hai trăm ảnh thu đúng tại chỗ triển khai thường cho kết quả tốt hơn hai mươi nghìn ảnh từ bộ dữ liệu công khai. Đây là điều bất ngờ với nhiều người mới vào nghề.
Câu hỏi thường gặp
Ba loại phân vùng khác nhau thế nào?
Phân vùng ngữ nghĩa gán lớp cho mỗi điểm ảnh, phân vùng thực thể tách riêng từng vật cụ thể, phân vùng toàn cảnh kết hợp cả hai. Điều hướng dùng loại đầu, thao tác cần loại thứ hai.
Mô hình phân vùng tổng quát mang lại gì cho robot?
Nó tách được vật thể chưa từng có trong dữ liệu huấn luyện, dù không biết tên. Ghép với mô hình ngôn ngữ thì tìm được vật theo mô tả bằng chữ.
Phân vùng giúp gì cho điều hướng mà cảm biến khoảng cách không làm được?
Phát hiện sàn ướt, thảm dày, mép bậc và đặc biệt là bậc xuống hoặc hố — những thứ cảm biến quét ngang không thấy nhưng rất nguy hiểm.
Nên ưu tiên nhiều dữ liệu hay dữ liệu đúng chỗ?
Đúng chỗ. Hai trăm ảnh thu đúng tại nơi triển khai thường cho kết quả tốt hơn hai mươi nghìn ảnh từ bộ dữ liệu công khai chụp ở điều kiện khác.
Đọc thêm trong Phòng lab & nhóm nghiên cứu và Học tăng cường cho robot.