Tổng quan về thị giác máy tính xử lý ảnh sử dụng công nghệ học sâu
Tổng quan về thị giác máy tính
Từ những năm 70, nghiên cứu về hệ thống thị giác máy đã bắt đầu, với mục tiêu giúp máy móc mô phỏng con người và thực hiện các hành vi thông minh Vấn đề đặt ra là làm thế nào để máy tính có thể mô tả những gì nó nhìn thấy thông qua camera, và ngày nay, chúng ta nhận ra rằng đây là một thách thức không hề đơn giản.
Hình 1.1 Thị giác máy tính và những ứng dụng trong xu thế công nghệ
Gần đây, ngành thị giác máy đang phát triển mạnh mẽ nhờ vào sự gia tăng năng lực tính toán của máy tính và sự tiến bộ trong trí tuệ nhân tạo, đặc biệt là học máy Hiện nay, chúng ta đã có các kỹ thuật đáng tin cậy để tính toán mô hình không gian 3 chiều của môi trường từ hàng trăm bức ảnh có phần trùng lặp Việc này yêu cầu một tập hợp đủ lớn các góc nhìn của vật thể để đạt được độ chính xác cao.
Thị giác máy đang phát triển mạnh mẽ tại Việt Nam, cho phép tạo ra bề mặt 3D chính xác của đối tượng và theo dõi chuyển động của con người trong bối cảnh phức tạp Công nghệ này còn có khả năng xác định tên của mọi người trong bức ảnh với độ chính xác vừa phải, nhờ vào các kỹ thuật phát hiện và nhận diện khuôn mặt, quần áo, và tóc Mặc dù còn mới mẻ, thị giác máy đã được áp dụng trong một số tổ chức quân đội và viện nghiên cứu, đánh dấu bước khởi đầu quan trọng cho sự phát triển của lĩnh vực này trong các trường đại học.
1.1.1 Định nghĩa thị giác máy tính
Thị giác máy tính là một lĩnh vực đa ngành, giúp máy tính hiểu thông tin ngữ nghĩa từ ảnh và video Nó bao gồm nhiều nhánh như tái tạo khung cảnh, phát hiện sự kiện, theo vết, nhận diện đối tượng, ước lượng chuyển động và khôi phục hình ảnh Đối tượng nghiên cứu của thị giác máy rất rộng, với nhiều cách tiếp cận và giải pháp khác nhau cho từng bài toán cụ thể, làm cho việc so sánh độ hiệu quả của các giải pháp trở nên khó khăn Lĩnh vực này tập trung vào lý thuyết và kỹ thuật nhằm phát triển hệ thống nhân tạo có khả năng nhận diện thông tin từ hình ảnh và dữ liệu đa chiều.
Máy móc ngày càng trở nên thông minh, không chỉ giúp con người thực hiện các công việc nặng nhọc và nhàm chán mà còn có khả năng bắt chước hành vi của động vật và con người Một trong những khả năng nổi bật của chúng là nhận biết thế giới qua "mắt" của mình.
Bằng cách kết hợp với các mô hình như máy học và mạng nơ-ron, hệ thống này tiến gần hơn tới một trí tuệ nhân tạo, giúp đưa ra những quyết định linh hoạt và chính xác hơn.
Nghiên cứu thị giác máy bao gồm nhiều lĩnh vực phong phú, với đặc điểm chung là không có yêu cầu hay phương pháp giải quyết cố định Mỗi giải pháp đưa ra sẽ mang lại kết quả cụ thể cho từng tình huống nhất định.
Hình 1.2 Mối quan hệ giữa thị giác máy với các ngành liên quan
1.1.2 Các ứng dụng của thị giác máy tính
Một số ứng dụng của thị giác máy tính vào lĩnh vực như:
- Điều khiển tiến trình (ví dụ: trong các robot công nghiệp, các thiết bị xe tự hành…)
- Phát hiện sự thay đổi (ví dụ: các thiết bị giám sát…)
- Tổ chức thông tin (ví dụ: chỉ số kho dữ liệu của các ảnh hoặc chuỗi ảnh liên tục …)
- Mô hình hóa đối tượng (ví dụ: quá trình kiểm tra trong môi trường công nghiệp, xử lý ảnh in 3D và y học …)
- Tương tác (đóng vai trò làm đầu vào cho thiết bị trong quá trình tương tác giữa người và máy
Thị giác máy có nhiều ứng dụng quan trọng trong ngành công nghiệp, bao gồm nhận dạng chữ viết tay, kiểm tra cơ khí, ứng dụng trong hệ thống bán lẻ hàng hóa, phân tích ảnh y tế, hỗ trợ hệ thống lái xe tự động và hệ thống camera giám sát giao thông.
Các bài toán xử lý ảnh
1.2.1 Phát hiện đối tượng (Object Detection)
Bài toán phát hiện đối tượng nhằm xác định vị trí của tất cả các đối tượng trong bức hình Đầu vào của bài toán bao gồm ảnh và danh sách các đối tượng quan tâm, trong khi đầu ra là các vị trí cùng với nhãn của từng đối tượng.
Hình 1.4 Đầu ra của bài toán phát hiện đối tượng
Phát hiện đối tượng đã được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm chú thích hình ảnh, phát hiện khuôn mặt, nhận diện biển số xe và đếm số lượng người.
1.2.2 Bài toán định vị vật thể (Object Localization)
Bài toán định vị vật thể xác định vị trí của đối tượng trong hình ảnh thông qua việc sử dụng hộp bao quanh (bounding box) Điều này cho phép bài toán phân lớp xác định chính xác vị trí của đối tượng quan tâm trong bức hình.
Hình 1.5 Đầu ra bài toán định vị vật thể
1.2.3 Phân lớp ảnh (Image Classification)
Phân lớp ảnh là quá trình xác định nhãn cho một bức ảnh dựa trên đầu vào là hình ảnh và danh sách các nhãn Kết quả của bài toán này có thể được áp dụng rộng rãi trong nhiều lĩnh vực, chẳng hạn như phân loại động vật và phân loại biển báo giao thông.
Hình 1.6 Ví dụ bài toán phân lớp ảnh
Phân lớp ảnh là một bài toán cơ bản trong lĩnh vực thị giác máy tính (CV), đóng vai trò quan trọng cho nhiều bài toán khác Tập dữ liệu ImageNet, với hơn 1 triệu hình ảnh và 1000 nhãn phân loại, là nguồn tài nguyên chính mà cộng đồng nghiên cứu tập trung vào Mặc dù đã đạt được nhiều kết quả khả quan với độ chính xác cao trên tập dữ liệu này, nhưng thực tế vẫn còn nhiều thách thức cần giải quyết trong bài toán phân lớp ảnh.
- Đa dạng về góc nhìn
- Đa dạng về tỉ lệ - kích thước
- Đa dạng về biến thể trong một nhãn
1.2.4 Phân đoạn ảnh (Image Segmentation)
Bài toán phân đoạn ảnh (Image Segmentation) không chỉ xác định vị trí mà còn làm rõ đối tượng bằng cách vẽ đường biên xung quanh chúng Cụ thể, Image Segmentation là quá trình gán nhãn cho từng điểm ảnh (pixel) trong ảnh, giúp nhóm các pixel có cùng nhãn lại với nhau Ví dụ, trong lĩnh vực Computer Vision, việc xác định kích thước vùng bị ung thư là rất quan trọng trong quá trình chữa bệnh.
Hình 1.7 Đầu ra bài toán Segmentation
Bài toán Image Segmentation có thể được chia làm 2 loại:
- Semantic Segmentation: Phân tách các lớp, các đối tượng cùng một lớp thì gom vào một nhóm
- Instance Segmentation: Phân tách từng đối tượng trong cùng một lớp
Khi Semantic Segmentation gom chung các đối tượng cùng lớp thì bài
15 toán Instance Segmentation sẽ có sự phân biệt giữa các đối tượng trong cùng một lớp
Hình 1.8 Kết quả bài toán Semantic Segmentation và Instace Segmentation
Cơ sở lý thuyết xử lý ảnh
Thông tin về vật thể hay quang cảnh được chiếu sáng mà con người quan sát và cảm nhận bằng mắt và hệ thần kinh thị giác
Ảnh số là kết quả của quá trình số hoá ảnh tự nhiên, biến đổi ảnh liên tục thành tập hợp các điểm ảnh (pixel) theo vị trí và độ sáng Mỗi pixel tương ứng với một cặp toạ độ (x,y) trong không gian hai chiều Ảnh số được biểu diễn dưới dạng ma trận mức xám [ƒ], trong đó các phần tử có giá trị tính theo hàm mức xám ƒ(x,y).
(x,y) là vị trí của phần tử trong ma trận [ƒ], đồng thời là toạ độ của pixel tương ứng trong ảnh (x,y là các số tự nhiên)
Hình 1.9 Ma trận ảnh số
Ma trận mức xám [ƒ] của ảnh số có kích thước M×N
Không gian màu là mô hình toán học mô tả màu sắc thực tế qua các giá trị số Trong số nhiều không gian màu khác nhau, RGB là không gian màu phổ biến nhất trong xử lý ảnh.
RGB: là sự kết hợp của 3 màu sắc cơ bản: màu đỏ (R, Red), xanh lục (G, Green) và xanh lơ (B, Blue)
Hình 1.10 Không gian màu RGB
Mức xám là kết quả của việc mã hóa cường độ ánh sáng của từng điểm ảnh thành giá trị số dương Thang đo mức xám phụ thuộc vào số bit sử dụng để biểu diễn màu sắc của điểm ảnh.
Độ phân giải của ảnh, được xác định bởi kích thước n × m (pixel × pixel), là mật độ điểm ảnh phân bố theo hai chiều trong ma trận Nó thể hiện số pixel trên mỗi hàng ngang (n) và hàng dọc (m) của ảnh Độ phân giải càng cao, khoảng cách giữa các điểm ảnh càng nhỏ, dẫn đến độ liên tục cao hơn, giúp mắt người cảm nhận hình ảnh gần gũi với thực tế hơn.
Hình 1.11 Độ phân giải của ảnh
Độ sâu màu sắc (Bit Depth) là thước đo số lượng màu sắc mà một bức ảnh có thể hiển thị, được xác định bởi số bit dùng để định danh màu sắc của mỗi điểm ảnh Bức ảnh với độ sâu màu lớn sẽ có khả năng biểu thị dải màu rộng hơn; ví dụ, ảnh 8 bit chỉ có 256 màu, trong khi ảnh 24 bit có thể hiển thị lên tới 16 triệu màu.
Hình 1.12 Độ sâu màu sắc
Ảnh xám, ảnh nhị phân và ảnh màu Ảnh xám (Gray Image): hay còn gọi là ảnh đơn sắc Mỗi điểm ảnh biểu diễn bởi
8 bit, tức là có 256 mức xám khác nhau
( , ) 0, 255 f x y ƒ(x,y) = 0 => pixel (x,y) có màu đen ƒ(x,y) = 255 => pixel (x,y) có màu trắng
Hình 1.13 Ma trận biểu diễn ảnh xám
Giá trị pixel trong ảnh số thể hiện độ sáng tối, với giá trị gần 0 biểu thị màu tối và gần 255 biểu thị màu sáng Ảnh nhị phân, hay còn gọi là ảnh đen trắng, chỉ sử dụng hai mức độ phân biệt, tương ứng với 1 bit để mô tả hai trạng thái khác nhau Điều này có nghĩa là mỗi điểm ảnh trong ảnh nhị phân chỉ có thể có giá trị là 0 hoặc 1.
Ảnh màu RGB là một ma trận pixel, trong đó mỗi pixel đại diện cho một điểm màu thông qua bộ ba số (r, g, b) Để thuận tiện cho việc xử lý ảnh, ma trận pixel được tách thành ba kênh riêng biệt: đỏ, xanh lá cây và xanh dương.
Hình 1.15 Ma trận biểu diễn ảnh màu
Kết luận chương 1
Chương 1 giúp tác giả giải quyết được một số vấn đề sau:
- Tổng quan về thị giác máy tính và ứng dụng trong cuộc sống cũng như trong công nghiệp
- Đưa ra và làm rõ đầu vào và đầu ra của các bài toán xử lý ảnh
- Nêu được cơ sở lý thuyết xử lý ảnh
Phân đoạn vật thể cho Robot gắp vật
Sự phát triển của thuật toán
2.1.1 Thuật toán dựa vào dữ liệu 2D
Phân đoạn đối tượng là một nhiệm vụ quan trọng và khó khăn, bao gồm cả phát hiện và phân đoạn chính xác đối tượng trong ảnh Mạng nơ-ron liên kết dựa trên khu vực (R-CNN) mang lại độ chính xác cao trong việc phát hiện đối tượng bằng cách sử dụng mạng phức hợp sâu để phân loại các đề xuất đối tượng Đầu tiên, các đề xuất được tạo ra bằng cách áp dụng thuật toán Selective Search cho toàn bộ hình ảnh đầu vào, loại trừ gần 2000 đề xuất khu vực cho mỗi hình ảnh Sau đó, từng đề xuất vùng đơn lẻ được sử dụng làm đầu vào cho mạng nơ-ron phức hợp (CNN) để trích xuất đối tượng địa lý và phân loại vùng.
Fast R-CNN cải tiến quy trình phát hiện đối tượng bằng cách sử dụng một mạng CNN duy nhất cho toàn bộ hình ảnh, giúp tiết kiệm thời gian so với R-CNN, vốn tính toán riêng cho từng vùng trong 2000 đề xuất Sau khi xử lý qua CNN, bản đồ đặc trưng có kích thước nhỏ hơn hình ảnh đầu vào, và RoI pooling được giới thiệu để đồng nhất kích thước các bản đồ đối tượng, giảm bớt không gian tính toán Tuy nhiên, thuật toán Search Selective vẫn cần nhiều thời gian để lấy các đề xuất và thường trích xuất quá nhiều vùng Faster R-CNN tiếp tục cải tiến bằng cách sử dụng Mạng đề xuất khu vực để tối ưu hóa quy trình đề xuất khu vực trên toàn bộ hình ảnh.
21 khả năng bao hàm các đối tượng Nó nâng cao độ chính xác và tốc độ của các nhiệm vụ phát hiện đối tượng một cách đáng kể
Mask R-CNN, dựa trên Faster R-CNN, đã cải tiến phương pháp phân loại bằng cách giới thiệu ROI Align thay vì RoI Pooling Mặc dù ROI Align không ảnh hưởng đáng kể đến hộp giới hạn, nhưng nó khắc phục được vấn đề căn chỉnh pixel- to-pixel mà RoI Pooling gặp phải, từ đó nâng cao độ chính xác của mặt nạ Việc sử dụng ROI Align giúp giải quyết vấn đề phân loại sai các pixel ở cạnh đối tượng, cải thiện đáng kể độ chính xác trong việc làm mờ mặt nạ Ngoài ra, nhãn hiệu phát hiện đối tượng và nhãn hiệu mặt nạ được thêm vào để phục vụ cho các nhiệm vụ phân đoạn ngữ nghĩa Dưới đây là cấu trúc mạng của Mask R-CNN.
Hình 2.1 Ứng Mask R-CNN để phân đoạn vật thể
Mask R-CNN thường gặp khó khăn trong việc phân đoạn đầy đủ các vùng đối tượng do các cạnh của đối tượng bị nhầm lẫn với nền Điều này đặc biệt rõ rệt trong lĩnh vực nắm bắt của robot, nơi có nhiều sự che khuất giữa các vật thể, dẫn đến việc tạo ra mặt nạ đối tượng không chính xác.
Mặt nạ 22 thường không bao phủ hoàn toàn đối tượng, khiến nó chỉ có thể đại diện cho đối tượng một cách hạn chế Do đó, mặt nạ này không thể đưa ra một cách kẹp chính xác và định vị vật thể tốt trong quá trình gắp vật.
Ưu điểm: Tốc độ xử lý ảnh nhanh, mạnh mẽ và đạt hiệu quả cao
Nhược điểm: Cho kết quả không tốt ở phần biên, cạnh Đặc biệt khi các vật bị che khuất nhau
2.1.2 Thuật toán dựa vào dữ liệu 3D Để giải quyết bài toán phân đoạn vật thể trong ảnh, bên cạnh các phương pháp sử dụng dữ liệu ảnh 2D, còn có các phương pháp sử dụng dữ liệu đám mây điểm 3D PointNet đã đề xuất một cấu trúc mạng nơ-ron hoàn toàn mới vào năm 2017, trực tiếp xử lí các điểm ảnh trong đám mây điểm cho các nhiệm vụ như xác định vật thể, phân đoạn các phần của vật thể Cấu trúc mạng nơ ron hoàn toàn mới này đã đạt được những kết quả tốt hơn so với những kiến trúc tốt nhất trong cùng tiêu chuẩn Để đạt được các kết quả đó, ngoài xem xét những thông tin tọa độ x, y, z trong không gian, mạng PoinNet còn sử dụng thêm các kích thước bổ sung như vecto pháp tuyến hay những đặc tính nội bộ cũng như tổng thể của các điểm Với dữ liệu đầu vào dạng point cloud, các điểm của vật, các thông tin chi tiết ở vùng biên, cạnh của vật thể không bị mất mát bởi sự che khuất hay độ kém về ánh sáng Tuy nhiên chỉ dựa vào những đặc điểm 3D này dẫn đến một lỗ hổng trong sự thể hiện của mô hình đó là không thể phân đoạn toàn bộ vật mà chỉ có thể phân đoạn từng phần của vật
Mạng nơ ron này xử lý dữ liệu point cloud, lưới đa dạng và lưới khối 3D, những loại dữ liệu không phổ biến, gây ra nhiều thách thức trong quá trình hoạt động.
Chúng tôi kết hợp ảnh màu và ảnh độ sâu để khắc phục những hạn chế của từng phương pháp trong việc triển khai và phát triển mô hình ứng dụng cụ thể Cách tiếp cận này không chỉ nâng cao tốc độ xử lý mà còn cải thiện độ chính xác của các mạng nơ ron dựa trên đặc tính 2D, đồng thời cho phép nghiên cứu các điểm khó xử lý ở khu vực biên thông qua các phương pháp 3D.
Ưu điểm: Không bị phụ thuộc vào điều kiện chiếu sáng, vật thể bị che khuất
Có thể lấy được hết phần biên cạnh
Nhược điểm: Dữ liệu đầu vào phức tạp Khó khăn trong việc chuẩn bị dữ liệu
Thời gian tính toán lâu.
Phân đoạn vùng biên cạnh của vật thể
- Nội dung: Tái tạo và biểu diễn đối tượng 3D sử dụng Mạng nơ-ron ứng dụng cho robot gắp vật
+ Đầu vào: Các đối tượng 3D được đặt ngẫu nhiên
+ Đầu ra: Tách vật và tạo 3D trong đống vật
Camera RGB-D, như Kinect của Microsoft, kết hợp hai loại cảm biến: cảm biến ảnh màu RGB và cảm biến độ sâu Qua quá trình xử lý, camera này tạo ra dữ liệu 3D dưới dạng đám mây điểm (point cloud).
+B1: Thu thập ảnh RGB, RGB-D (ảnh depth)
+B2: Calib ảnh RGB và RGB-D: Sử dụng thư viện Kinect SDK V1.8
Hình 2.2 Dữ liệu thu được từ camera Kinect V1 (a) Ảnh RGB, (b) Ảnh Gray scale, (c) Ảnh RGB-D, (d) Ảnh Depth
2.2.2 Tái tạo đám mây điểm 3D (Generate 3D point cloud)
Sau khi cập nhật ảnh RGB và RGB-D, mỗi điểm trên ảnh RGB-D thể hiện khoảng cách từ camera đến vật thể tương ứng với vị trí điểm trên ảnh RGB Việc kết hợp hai loại dữ liệu này cho phép tạo ra point cloud của các vật thể xung quanh.
2.2.3 Phân đoạn (Segmentation) và ghép nhóm (Clustering)
Phân đoạn là quá trình kết nối các điểm trong một đám mây điểm với các mô hình học đơn giản như mặt phẳng, mặt trụ và mặt cầu, đảm bảo rằng khoảng cách giữa các điểm và mô hình nằm trong giới hạn cho phép Những điểm thuộc mô hình sẽ được đánh dấu, cho phép thay thế các điểm bằng một mô hình đơn giản hơn.
25 trình này có tác dụng đơn giản hoá dữ liệu đám mây điểm, giúp nâng cao hiệu quả xử lý của hệ thống
Ghép nhóm là kỹ thuật phân chia các điểm trong một đám mây điểm thành các nhóm nhỏ, giúp giảm đáng kể thời gian xử lý dữ liệu Phương pháp này cho phép tối ưu hóa quy trình phân đoạn, nâng cao hiệu quả trong việc quản lý và phân tích thông tin.
Một cảnh ảnh P từ cảm biến RGB-D sẽ hiển thị các vật thể dưới dạng đám mây điểm Trong điều kiện lý tưởng, các mô hình vật thể đã có trong cơ sở dữ liệu sẽ giúp đơn giản hóa P Các điểm trong P sẽ được thay thế bằng mô hình tương ứng, kèm theo các thông số về vị trí, tư thế và kích thước thực tế Quá trình này sẽ áp dụng cho tất cả các điểm trong dữ liệu P, cho phép lưu trữ một bộ thông số mô tả các mô hình xuất hiện trong P thay vì lưu trữ toàn bộ đám mây điểm.
Cảnh ảnh quét từ cảm biến 2.5D hoặc 3D luôn xuất hiện nhiễu, do nhiễu lượng tử ảnh hưởng đến cảm biến, làm lệch giá trị điểm so với thực tế một khoảng σ tùy thuộc vào loại cảm biến và khoảng cách từ vật đến cảm biến Trong những khung cảnh phức tạp với nhiều đồ vật, hiện tượng che khuất và các hiện tượng vật lý như phản xạ, tán xạ ánh sáng gây khó khăn trong việc kết hợp ảnh RGB và ảnh Depth, dẫn đến sự không chính xác ở một số vị trí Hơn nữa, các vật thể trong khung cảnh phức tạp thường chỉ xuất hiện một phần hoặc từ một phía dưới cảm biến.
Hình 2.3 Ví dụ về phân đoạn trong đám mây điểm
Kỹ thuật phân đoạn đám mây điểm phổ biến nhất là đơn giản hóa dữ liệu bằng cách thay thế các điểm bằng các hình 3D cơ bản như mặt phẳng, mặt trụ, mặt cầu, mặt nón, hoặc các hình 3D với đa thức bậc cao.
Việc thay thế các điểm trong đám mây điểm bằng các bề mặt hình học 3D đơn giản là khả thi trong nhiều trường hợp thực tế Sử dụng cảm biến RGB-D để quét các khung cảnh trong nhà và ngoài trời cho thấy hầu hết các vật thể đều là sự kết hợp của các hình 3D cơ bản, như bức tường, sàn nhà và mặt tủ là các mặt phẳng, trong khi chướng ngại vật và đồ đạc thường là các hình trụ, hình nón hoặc hình cầu kết hợp.
Quá trình thay thế trong việc tính toán đường đi của robot di chuyển trong nhà có thể được hiểu rõ hơn qua các ví dụ cụ thể Khi môi trường xung quanh được mô tả bằng đám mây điểm với hàng ngàn điểm, việc tính toán khoảng cách đến từng điểm trở thành một nhiệm vụ nặng nề và tốn kém tài nguyên Tuy nhiên, nếu chúng ta đơn giản hóa môi trường, điều này sẽ giúp giảm bớt khối lượng công việc và tối ưu hóa quá trình di chuyển của robot.
Việc sử dụng các mô hình hình khối 3D trong tính toán khoảng cách giúp việc xác định vị trí robot trở nên dễ dàng hơn, nhờ vào các phép tính khoảng cách từ điểm đến các bề mặt giới hạn.
Phương pháp RANSAC (Random Sample Consensus) là một thuật toán lặp nhằm ước lượng các thông số của mô hình toán học từ bộ dữ liệu, bao gồm cả các điểm phù hợp và không phù hợp Các điểm phù hợp được gọi là điểm trong, trong khi các điểm không nằm trong mô hình được gọi là điểm ngoài.
Thuật toán RANSAC, được giới thiệu bởi Fischler và Bolles, hoạt động dựa trên nguyên tắc ước lượng thông số bằng cách chọn ngẫu nhiên các mẫu từ dữ liệu Với dữ liệu đầu vào bao gồm cả các điểm thuộc và không thuộc mô hình, RANSAC thực hiện nhiều lần thử nghiệm để xác định mô hình tối ưu nhất Cơ chế của thuật toán này bao gồm hai quá trình lặp đi lặp lại.
Chọn ngẫu nhiên một số lượng tối thiểu dữ liệu từ đầu vào để lấy mẫu, sau đó tiến hành tính toán các thông số của mô hình dựa trên các điểm mẫu này.
Thuật toán kiểm tra các điểm còn lại để xác định vị trí của chúng trong hoặc ngoài mô hình Một điểm được xem là nằm trong mô hình khi sai số giữa điểm đó và mô hình nhỏ hơn mức sai số quy định.
Thuật toán RANSAC thực hiện quá trình lặp lại cho đến khi số lượng điểm trong bộ dữ liệu đạt kích thước tối ưu hoặc khi đạt được giá trị lớn nhất sau một số lần lặp xác định trước.
Kết luận chương 2
Trong phạm vi của luận văn, tác giả không thể nghiên cứu một cách toàn diện, mà chỉ tập trung vào một số nội dung chính.
- Nêu được quá trình phát triển của thuật toán phân đoạn vật
- Đưa ra quy trình các bước thực hiện phân đoạn vật thể
- Xây dựng được thuật toán phân đoạn vật thể 3D dựa trên phương pháp 2D, 3D và Mask R-CNN
Thiết kế hệ thống robot và camera, tích hợp phần mềm điều khiển
Bài toán
- Nội dung: Gắp vật 3D (hình hộp, khối trụ, cốc…) được đặt thẳng đứng, liền kề với các đối tượng khác trong không gian 80 x 30 cm
+ Đầu vào: Các đối tượng 3D được xếp liền kề, vị trí ngẫu nhiên trong không gian
+ Đầu ra: Tách vật và gắp được vật 3D trong đống vật trong không gian làm việc 80x30 cm
Hình 3.1 Kích thước không gian làm việc của Camera
Chọn camera
Với yêu cầu bài toán đặt ra chúng tôi quyết định sử dụng Camera Kinect V1
Tên thiết bị Kích thước Thông số
640×480 pixels @ 30 Hz (RGB camera) 640×480 pixels @ 30 Hz (IR depth-finding camera)
Hình 3.2 Cấu trúc Camera Kinect V1 a) Camera RGB
Camera này sở hữu 3 kênh dữ liệu với độ phân giải 1280x960, cho phép chụp ảnh màu sắc sống động Để thu thập thông tin về độ sâu, camera sử dụng cảm biến kết hợp giữa bộ phát hồng ngoại và camera hồng ngoại, giúp tính toán chính xác độ sâu từ các tín hiệu phản hồi Ngoài ra, thiết bị còn được trang bị một dãy microphone, nâng cao khả năng thu âm.
Dãy Micro trên Kinect của Microsoft XBOX 360 bao gồm 4 microphone được sắp xếp dọc theo thân máy, có khả năng thu âm thanh và xác định hướng âm thanh một cách đồng thời.
Kinect được sử dụng trong các ứng dụng điều khiển bằng giọng nói và tích hợp cảm biến đo gia tốc để xác định hướng, cùng với động cơ điều khiển góc ngẩng camera Trong số các cảm biến của Kinect, cảm biến độ sâu có tiềm năng ứng dụng cao trong lĩnh vực robot tránh mục tiêu.
Chọn robot phù hợp góc nhìn
Động học là lĩnh vực nghiên cứu mô tả cấu trúc hình học của robot, bao gồm mối quan hệ giữa hệ tọa độ khớp và hệ tọa độ của khâu cuối Nó xác định vị trí, vận tốc và gia tốc của các khâu trong robot Mục tiêu của bài toán động học là tìm ra vị trí tương đối của hệ tọa độ mới so với hệ tọa độ ban đầu.
Hình 3.3 Quy trình tính động học
Các tham số động học DH (Denavit Hartenberg)
Robot nhiều khâu được cấu thành từ các khâu nối tiếp nhau qua các khớp động Gốc chuẩn (Base) của robot là khâu số 0, không được tính vào tổng số khâu Khâu 1 kết nối với khâu chuẩn thông qua khớp 1 và khâu cuối cùng không có khớp ở đầu mút Mỗi khâu được đặc trưng bởi hai kích thước riêng biệt.
- Độ dài pháp tuyến chung: an
(qn) Động học thuận Động học ngược
- Góc giữa các trục trong mặt phẳng vuông góc với an: αn
Thông thường, người ta gọi an là chiều dài và αn là góc xoắn của khâu Phổ biến là hai khâu liên kết với nhau ở chính trục của khớp
Mỗi trục có hai pháp tuyến, một cho mỗi khâu trước và sau khớp Vị trí tương đối giữa hai khâu liên tiếp được xác định bởi dn, khoảng cách giữa các pháp tuyến dọc theo trục khớp n, và θn, góc giữa các pháp tuyến trong mặt phẳng vuông góc với trục dn và θn thường được gọi là khoảng cách và góc giữa các khâu.
Hình 3.4 Chiều dài và xoắn của một khâu
Hình 3.5 Các thông số của khâu
Để mô tả mối quan hệ giữa các khâu, chúng ta gán cho mỗi khâu một hệ tọa độ Nguyên tắc chung khi gắn hệ tọa độ lên các khâu là rất quan trọng để đảm bảo tính chính xác và nhất quán trong việc phân tích.
Gốc của hệ tọa độ được xác định tại giao điểm của pháp tuyến an với khớp thứ n+1 Trong trường hợp hai trục khớp cắt nhau, gốc tọa độ sẽ nằm tại điểm cắt Nếu các trục khớp song song, gốc tọa độ sẽ được chọn trên trục khớp của khâu kế tiếp, tại điểm thích hợp.
Trục z trong hệ tọa độ được gắn lên khâu thứ n và đặt dọc theo trục khớp thứ n+1 Trục x thường được định vị dọc theo pháp tuyến chung, hướng từ khớp n đến khớp n+1 Khi các trục khớp cắt nhau, trục x được chọn theo tích vectơ Đối với khớp quay, θn được xem là các biến khớp, trong khi đối với khớp tịnh tiến, dn là biến khớp và an được xác định bằng 0.
=> Các thông số an, αn, dn và θn được gọi là bộ thông số DH
Thiết lập các tham số động học Denavit – Hartenberg
Hình 3.6 Hệ toạ độ của robot
Bảng 3.2 Bảng Denavit Hartenberg các tham số động học của robot
Trong đó 1 , 2, 3 , 4 , 5 là các biến khớp, còn dn , an là hằng số
Và X x x x 1 , 2 , 3 T là vector biểu diễn vị trí của bàn kẹp trong hệ cố định
1 , 2 , 3 , 4 , 5 T q q q q q q với q 1 1 , q 2 2 , q 3 3 , q 4 4 , q 5 5 là các góc xoay các biến khớp
Mô hình Robot trên phần mềm Solidworks
Robot được cấu thành từ năm khâu quay, mỗi khâu kết nối với nhau qua hệ thống động cơ và dây đai hoặc xích, tạo thành các bậc tự do cho robot Khâu 1 sử dụng bộ truyền động đai răng trên mặt phẳng nằm ngang với động cơ ở phía sau, đồng thời gắn mount cho động cơ khâu 2 Khâu 2 áp dụng bộ truyền đai trên mặt phẳng đứng, với hệ căng đai ở phía sau Khâu 3 thiết kế dạng hình hộp, có lỗ trụ để lắp trục khâu 4, và cả hai khâu này đều sử dụng bộ truyền đai răng Cuối cùng, động cơ khâu 5 được đặt ở cuối khâu 3, với trục 8mm dài 200mm xuyên qua ống trục khâu 4.
Hình 3.7 Các khâu chuyển động của robot
Tất cả các bộ phận được lắp ráp thành một tay máy hoàn chỉnh, với các khớp động được trang bị ổ bi Điều này giúp chuyển đổi ma sát trượt thành ma sát lăn, mang lại sự chuyển động mượt mà hơn cho tay máy.
Hình 3.8 Mô hình cánh tay robot trên SolidWorks
Không gian làm viược lắ Không gian làm viược lắ
Không gian làm viược lắ Không gian làm việc OXYZ
Hình 3.9 Không gian làm việc các hướng trong không gian
Vật liệu và phương pháp chế tạo Robot
Thay vì sử dụng nhôm tấm, thanh nhôm định hình và nhựa mica, các mô hình robot thường được chế tạo bằng phương pháp gia công cắt gọt Cánh tay robot 5 bậc được sản xuất bằng công nghệ in 3D, sử dụng nhựa PLA để in các chi tiết cần thiết cho cánh tay.
Có 2 loại như phổ biến được sử dụng rộng rãi trong in 3D vì đặc tính và giá thành hợp lý là nhựa PLA và nhựa ABS
Nhựa ABS là một loại vật liệu cứng rắn, không giòn, nổi bật với sự cân bằng hoàn hảo giữa độ bền kéo, khả năng chịu va đập, độ cứng bề mặt và độ chịu nhiệt ở nhiệt độ thấp Với đặc tính cơ học cao, nhựa ABS mang lại độ bền và khả năng chống va đập tốt, làm cho nó trở thành lựa chọn lý tưởng cho nhiều ứng dụng.
Nhựa ABS có nhược điểm lớn là độc hại, không phân hủy và giải phóng khói độc hại khi gặp nhiệt độ cao, kèm theo mùi khó chịu Bên cạnh đó, bề mặt nhựa ABS dễ bị mòn, do đó không phù hợp cho các chi tiết thường xuyên chịu ma sát như bánh răng.
Hệ thống điều khiển robot
Sơ đồ hệ thống điều khiển
Hình 3.10 Sơ đồ điều khiển vòng hở robot
Cánh tay robot 5 bậc tự do hoạt động dựa trên động cơ bước mà không cần sử dụng encoder để phản hồi vị trí Điều này dẫn đến việc áp dụng hệ thống điều khiển hở (One-loop system) và không có cơ chế bù tác động ngoài, tức là không có bù nhiễu trong quá trình điều khiển.
Hình 3.11 Sơ đồ nối mạch điều khiển cánh tay robot
Hệ điều khiển ROS a) ROS là gì ?
ROS là hệ điều hành mã nguồn mở dành cho ứng dụng robot, sở hữu các đặc điểm quan trọng như khả năng thực hiện tác vụ song song, giao tiếp và quản lý dữ liệu hiệu quả Để phục vụ cho lĩnh vực robotics, ROS được phát triển với các thư viện và công cụ chuyên biệt cho việc thu thập, xử lý, hiển thị và điều khiển Hệ thống này cũng có khả năng tương tác với nhiều framework robot khác như Player, YARP, Orocos, CARMEN, Orca, Moos và Microsoft Robotics Studio.
ROS là hệ điều hành chuyên dụng cho ứng dụng điều khiển robot, cho phép lập trình, biên dịch và thực thi chương trình điều khiển trên nhiều máy tính và hệ thống robot khác nhau.
Trong ROS, đồ thị được xem như một cây (tree graph) thể hiện mối quan hệ giữa các thành phần như nodes, topics, messages và services ROS hỗ trợ nhiều chuẩn giao tiếp, bao gồm giao tiếp đồng bộ qua các services, truyền dữ liệu bất đồng bộ qua topics, và lưu trữ dữ liệu trên Parameter Server Việc lựa chọn ROS mang lại nhiều ưu điểm, giúp giảm thiểu công việc lập trình và thiết lập hệ thống nhờ vào nguồn tài nguyên mã nguồn mở phong phú từ cộng đồng Sự hiệu quả của ROS cho phép giảm thời gian cho các công việc kỹ thuật cơ bản, từ đó tăng cường thời gian cho nghiên cứu chuyên sâu, nâng cao hàm lượng khoa học trong các đề tài.
Một số đặc điểm làm cho ROS là một hệ điều hành nên được sử dụng, đó là:
- ROS là hệ điều hành mã nguồn mở
- Các tài liệu kỹ thuật, tài liệu hướng dẫn và các kênh hỗ trợ đầy đủ
Một trong những yếu tố quan trọng giúp Robot Operating System (ROS) trở nên mạnh mẽ là tính cộng đồng lớn mạnh Nguồn tài nguyên phong phú của ROS chủ yếu được phát triển và xây dựng từ các viện nghiên cứu và trường đại học hàng đầu, góp phần nâng cao khả năng điều khiển robot hiệu quả.
MoveIt là một bộ công cụ và gói dữ liệu trên nền tảng ROS, cho phép người dùng thực hiện chuyển động trên robot cụ thể Nó cung cấp phần mềm hỗ trợ cho việc lập kế hoạch và điều khiển chuyển động của robot một cách hiệu quả.
- Lập phương án hành trình chuyển động
- Điều hướng robot Ngoài giao diện dòng lệnh, MoveIt còn có một giao diện người dùng rất thuận tiện để tương tác với một robot mới
Dưới đây là cấu trúc của MoveIt
Hình 3.12 Cấu trúc của MoveIt
Move_group là phần quan trọng nhất của MoveIt!, đảm nhiệm việc tích hợp các thành phần khác nhau của robot và cung cấp hành động cũng như dịch vụ theo yêu cầu của người dùng.
Khối move_group trong MoveIt! thu thập thông tin từ các Topic, bao gồm đám mây điểm (Point Cloud) và giá trị khớp của robot (joint state) Khi đã có đủ thông tin về robot, người dùng có thể thực hiện các lệnh điều khiển thông qua giao diện người dùng bằng ngôn ngữ Python, C++, hoặc thông qua giao diện Rviz.
Hình 3.13 Giao diện của MoveIt
Hình 3.14 Mô phỏng robot trên Rviz
Giao tiếp giữa ROS và Arduino
Vi điều khiển Arduino ATmega trong hệ thống có vai trò nhận tín hiệu điều khiển từ chương trình chính trên máy tính qua giao tiếp Serial và chuyển đổi tín hiệu đó thành xung để điều khiển 6 drivers TB6560 Để lập trình cho Arduino, người dùng sử dụng phần mềm Arduino IDE.
Để thiết lập giao tiếp giữa ROS và Arduino, người dùng có thể sử dụng gói Rosserial, một giao thức giúp đóng gói các tin nhắn theo tiêu chuẩn của ROS Giao tiếp này diễn ra thông qua các Topic qua cổng kết nối serial, và cần chú ý đến các thông số quan trọng như baudrate để đảm bảo kết nối ổn định và hiệu quả.
53 truyền tin giữa arduino và ROS, bộ nhớ DRAM của arduino, do bộ nhớ nào có dung lượng không quá
Hình 3.16 Giao tiếp giữa phần mềm ROS và Arduino
Kết luận chương 3
Trong chương 3 tác giả đã giải quyết được vấn đề sau:
- Đưa ra yêu cầu của bài toán gắp vật và lựa chọn camera cho robot gắp vật làm việc trong không gian 80 x 30 cm
- Xây dựng sắp xếp và lựa chọn được hệ thống robot gắp vật dựa trên tính toán vị trí lắp đặt camera, đèn chiếu sáng, căn chuẩn
- Lựa chọn và tích hợp được hệ điều khiển robot
Kết quả thực nghiệm
Mô hình thực nghiệm
Bố trí cánh tay robot, các đối tượng 3D và camera như trong hình sau:
Hình 4.1 Mô hình thực nghiệm
Thuật toán
Thử nghiệm sử dụng camera Kinect V1 để thu thập dữ liệu từ các vật thể như hộp đỏ, cốc, khối trụ, hộp trắng và máy tính với phần cứng Intel Core i7 thế hệ thứ 10 Các vật thể được sắp xếp trong khoảng cách từ 0.4 m đến 3.5 m so với camera, do giới hạn thu nhận khoảng cách của camera Ứng dụng được phát triển trên nền tảng C# và sử dụng thư viện Kinect cho Windows SDK 1.8 để kết nối với camera, thu thập ảnh màu và ảnh độ sâu, phục vụ cho các thuật toán 3D.
Bộ dữ liệu đầu vào của Mask R-CNN bao gồm 55 ảnh màu có độ phân giải 640 x 480, nhưng trước khi sử dụng, các ảnh này cần được căn chỉnh để ghép nối tọa độ giữa ảnh màu và ảnh độ sâu, do camera 2D và cảm biến độ sâu trên Kinect V1 được bố trí khác nhau và có độ phân giải không giống nhau (640 x 480 cho camera 2D và 320 x 240 cho camera 3D) Để nâng cao kết quả nhận diện phần cạnh và biên, chúng tôi đã thực hiện thí nghiệm với 4 loại vật thể và sử dụng thư viện Keras ImageData Generator để tạo ra các ảnh mới thông qua các phương pháp xoay và thay đổi độ sáng Bộ dữ liệu cuối cùng bao gồm 1000 ảnh của 4 loại vật thể: hộp xanh, cốc, khối trụ và hộp trắng Chúng tôi huấn luyện mô hình với tập COCO đã được huấn luyện trước, sử dụng 30 epoch cho mỗi 100 bước huấn luyện, tốc độ học 0.001, mini-batch 1 ảnh trên CPU, với 11k vòng lặp, weight decay 0.0001, learning momentum 0.9 và Gradient norm clipping rate 5.0 Quá trình huấn luyện mất khoảng 4 giờ trên hệ thống GTX 1650 GPU với 12GB VRAM, và chúng tôi tiến hành thí nghiệm trên cả hai mạng backbone Resnet.
50 và Resnet 101 để xem xét rang mạng nơ-ron nào sẽ hiệu quả trong quá trình kết hợp với thuật toán 3D
Hình 4.2 Quá trình huấn luyện với Resnet 101 và Resnet 50 b) Kết quả và đánh giá
Phương pháp Mask R-CNN không cung cấp đủ thông tin về vật thể, trong khi nghiên cứu của chúng tôi có khả năng nhận diện hầu hết toàn bộ vật thể, ngay cả khi chúng bị che khuất Các vùng biên, cạnh và vùng có ít ánh sáng thường là thách thức đối với các phương pháp 2D, nhưng chúng đã được giữ lại trong nghiên cứu của chúng tôi Độ chính xác trong việc nhận diện các vùng này sẽ giúp ước lượng tư thế và xác định góc gắp cũng như vị trí gắp vật.
(a) mặt nạ (b) Mask R-CNN (c) Kask R-
Hình 4.3 Hình ảnh so sánh giữa ảnh gốc – Mask R-CNN và Kết quả
Phương pháp tiếp cận này cho phép thu được và phân đoạn các vùng góc, cạnh của vật thể, với kết quả cho thấy khả năng phân loại phần biên cạnh và bổ sung vào mặt nạ do Mask R-CNN tạo ra Những vùng này hoàn toàn có thể áp dụng cho việc tính toán lộ trình gắp vật Tuy nhiên, mặt nạ nghèo nàn thường không thể chứa hết thông tin của vật thể, đặc biệt khi các vật được đặt sát nhau Để chứng minh tính hiệu quả của phương pháp, chúng tôi thực hiện 50 thí nghiệm với các vật chồng chéo, như minh họa trong hình 2.10(a) Hình 2.10(b) cho thấy mặt nạ nguyên bản từ Mask R-CNN không đầy đủ thông tin, và những thông tin bị bỏ qua này được tách biệt sau bước loại trừ, như thể hiện trong hình 2.10(c).
Chúng tôi đã thực hiện quy trình phân đoạn ảnh bằng cách sử dụng Mask R-CNN, một framework mạnh mẽ trong lĩnh vực này Qua việc áp dụng thuật toán Euclidean Cluster Extraction trên 58 đoạn dữ liệu, phương pháp của chúng tôi có khả năng phân loại cả những phần khó khăn nhất Mặc dù kích thước tập dữ liệu nhỏ và có những giới hạn nhất định, chúng tôi không tập trung nhiều vào độ chính xác của việc phát hiện vật thể Mục tiêu chính là đạt được phần biên cạnh để nâng cao sự hiểu biết về toàn bộ vật thể, với chỉ số IoU (area of overlap) được sử dụng để đánh giá thành công của phương pháp.
Phương pháp của chúng tôi vượt trội hơn nguyên bản Mask R-CNN với chỉ số IoU cao hơn, được xác nhận qua việc sử dụng cả hai mạng backbone Resnet 101 và Resnet 50 Bảng 4.1 trình bày sự so sánh chỉ số IoU giữa các vật thể như cốc, hộp xanh, khối trụ và hộp trắng, cho thấy phương pháp của chúng tôi áp dụng với Resnet 50 đạt hiệu quả tốt hơn Mặc dù mạng nguyên bản Mask R-CNN với các mạng backbone khác nhau cho kết quả IoU tương đương, phương pháp của chúng tôi vẫn đạt được kết quả cao hơn Đặc biệt, khi so sánh với phương pháp phân đoạn 3D truyền thống, chỉ số IoU của chúng tôi cho thấy sự cải thiện đáng kể.
Bảng 4.1 Kết quả so sánh giữa các phương pháp
Model Cup IoU Blue box IoU Cylinder IoU White box
Hình 4.4 So sánh giữa phương pháp Mask R-CNN và phương pháp được đề xuất qua bốn đối tượng (a) Cup IoU, (b) Blue box IoU, (c) Cylinder IoU, (d) White box IoU
Mask R-CNN cho thấy kết quả không ổn định, với chỉ số IoU của mỗi vật thể thỉnh thoảng vượt quá 0,9 Cụ thể, chỉ số IoU của chiếc cốc đạt trên 0,9 bốn lần, trong khi khối trụ cũng đạt bốn lần, hộp màu trắng chỉ hai lần và hộp màu xanh không đạt lần nào Các chỉ số này có xu hướng thấp và dao động mạnh.
Chỉ số IoU của các vật thể như cốc và hộp màu xanh thường không ổn định, với giá trị dưới 0,8, và nhiều lần dưới 0,7 hoặc 0,6 Trong khi đó, khối trụ và hộp màu trắng có chỉ số IoU cao hơn 0,7 nhưng vẫn có sự dao động lớn giữa các lần lấy mẫu Nguyên nhân của sự dao động này chủ yếu do sự chồng chất, che khuất và sắp xếp gần nhau của các vật thể Sau khi áp dụng phương pháp của chúng tôi, chỉ số IoU đã cải thiện đáng kể, với hộp màu xanh dao động quanh 0,8 và các vật thể khác như khối trụ, cốc và hộp màu trắng đều đạt khoảng 0,85 Mặc dù ở một số điểm thí nghiệm, kết quả của chúng tôi không đạt độ chính xác cao như mạng nguyên bản, nhưng vẫn rất gần với kết quả ban đầu Nguyên nhân của sự khác biệt này liên quan đến việc xếp chồng của các đường biên vật thể trong quá trình xử lý đám mây điểm Tuy nhiên, phương pháp của chúng tôi đã nâng cao khả năng của Mask R-CNN trong việc phát hiện và phân đoạn các phần góc, cạnh của vật thể một cách chính xác và ổn định hơn, ngay cả trong những tình huống khó khăn.
Thực nghiệm gắp vật và đánh giá sai số của robot
Quá trình thực nghiệm robot được thực hiện theo sơ đồ như sau:
Training Đưa ra tâm của vật theo x, y, z Segment Động học ngược gắp vật với toạ độ x, y, z
Khởi tạo kết nối ROS với Arduino
Khởi tạo môi trường ROS
Hình 4.5 Sơ đồ thực nghiệm gắp vật
Hình 4.6 Ảnh gốc các vật thể 3D để training và phân đoạn (Segment)
Hình 4.7 Vật thể 3D sau khi phân đoạn (Segment) và đưa ra tâm vị trí gắp
Hình 4.9 Khởi tạo môi trường ROS
Hình 4.10 Kết nối Arduino với hệ điều khiển ROS
Hình 4.11 Bắt đầu chọn gắp và đặt vật thể
Hình 4.12 Quá trình gắp vật thực tế và trên hệ điều hành ROS
66 b) Sai số của robot Được thực hiện qua các bước như sau:
Bước 1: Từ vị trí home của robot, đưa vị trí tay kẹp đến điểm (0.31,0.04,0.3) Bước 2: Đo vị trí thực tế của tay kẹp, ghi lại kết quả
Bước 3: Đưa robot về vị trí home
Lặp đi lặp lại các bước trên 5 lần
Kết quả thu được được thể hiện qua đồ thị sau:
Hình 4.13 Sai số vị trí theo phương X
Hình 4.14 Sai số vị trí theo phương Y
Hình 4.15 Sai số vị trí theo phương Z
Hình 4.16 Robot gắp vật và đặt sang vị trí khác