Thị giác máy tình là một lĩnh vực đã và đang phát triển mạnh mẽ trên thế giới hiện nay.Khái niệm về thị giác máy tính – Computer Vision có lien qua tới nhiều ngành học và có nhiều hướng nghiên cứu khác nhau.Kể từ những năm 70 của thế kỉ 20 khi mà khả năng tính toàn của các máy tính trở nên mạnh mẽ,nó có thể giải quyết được những công việc cần tới tốc độ cao như xử lý các tập ảnh hay các đoạn video thị giác máy tính được nhắc đến,nghiên cứu và phát triển cho đến nay Thị giác máy tính là một lĩnh vực rất mới mẻ đối với các nhà nghiên cứu ở Việt Nam,nó chỉ mới xuất hiện gần đây ở trong các tổ chức quân đội và một số viện nghiên cứu khác.Việc áp dụng thị giác vào các nghiên cứu khoa học được coi là một khởi đầu cho chặng đường phát triển của thị giác máy ở các trường đại học hiện nay.
Trang 1MỞ ĐẦU
Sự ra đời và phát triển của máy tính đã giúp ích rất nhiều cho công việc và cuộc sống của con người Với máy tính, con người có thể làm việc và giải trí theo nhu cầu sử dụng của cá nhân Tuy nhiên, việc giao tiếp giữa con người và máy tính phụ thuộc chủ yếu vào bàn phím và chuột, hầu như con người luôn phải ngồi thao tác trực tiếp với máy tính Dần dần, các nhà sản xuất thấy được sự bất tiện và
đã tạo ra bàn phím và chuột không dây với mong muốn mang lại sự tự do hơn cho người dùng Tuy nhiên,với bàn phím không dây thì con người vẫn phải tương tác với máy tính bằng các phím cơ học Con người chỉ thật sự được thoải mái khi việc tương tác với máy tính được thực hiện thông qua ngôn ngữ cử chỉ và giọng nói Đó chính là vấn đề đặt ra cho bài toán phát hiện bàn tay
Trong cuộc sống hàng ngày, phát hiện bàn tay có thể giúp cho việc giao tiếp giữa người với máy tính, vì máy tính sẽ chuyển ngôn ngữ cử chỉ thành chữ viết Trong công nghiệp và sản xuất, chỉ cần trang bị cho các robot hệ thống camera, việc điều khiển robot sẽ trở nên đơn giản hơn bao giờ hết Trong lĩnh vực đồ họa 3 chiều, ta có thể dùng một số động tác yêu cầu máy tính xoay mô hình theo ý muốn của mình Trong công việc văn phòng, phát hiện bàn tay giúp ta có thể yêu cầu máy tính thực thi một chương trình, mở một bài hát, gửi một lá thư chỉ với một vài cử chỉ ra hiệu từ xa Trong lĩnh vực giải trí, các trò chơi thực tế ảo (Virtual Reallity, người chơi sẽ điều khiển hành động nhân vật bằng chính hành động của mình
Với những yêu cầu thực tế và ứng dụng đem lại của lĩnh vực phát hiện bàn tay, mục tiêu của đề tài này là là tìm hiểu về phương pháp phát hiện bàn tay, từ đó xây dựng được mô hình phù hợp cho bài toán phát hiện bàn tay, áp dụng vào điều khiển chương trình máy tính Bố cục của bài bào cáo bao gồm các phần chính sau
Trang 2Mở đầu
Phần mở đầu tập trung phân tích và nêu rõ tính cấp thiết của đề tài, mục tiêu
và đối tượng nghiên cứu của đề tài cũng như giới thiệu lịch sử phát triển của vấn
đề nghiên cứu và trình bày cấu trúc của đề tài
Chương 1 : Tổng quan về thị giác máy tính
Chương đầu tiên sẽ giới thiệu tổng quan về thị giác máy tính bao gồm khái niệm, và ứng dụng thực tế của nhận dạng
Chương 2 : Phương pháp phát hiện bàn tay Internal Haar-like.
Chương này giới thiệu bài toán phát hiện bàn tay, tổng quan về đặc trưng của phương pháp phát hiện bàn tay Internal Haar-like và việc áp dụng đặc trưng Haar-like để phát hiện bàn tay
Chương 3: Chuẩn bị dữ liệu và tìm hiểu thuật toán Adaboots.
Tìm hiểu và viết chương trình trên phần mềm matlap để lấy dữ liệu cần thiết nhất cho quá trình huấn luyện
Chương 4 : Cài đặt thuật toán và xây dựng hệ thống thử nghiệm.
Trình bày chi tiết về sơ đồ hệ thống phát hiện bàn tay và nguyên lý hoạt động của từng khối trong sơ đồ Chương này cũng trình bày về quy trình thiết kế tập cử chỉ tay, tìm hiểu đánh giá các tập cử chỉ tay đã tồn tại, từ đó đề xuất một tập
cử chỉ tay phù hợp cho bài toán phát hiện bàn tay điều khiển chương trình máy tính Cuối chương là phần thử nghiệm và đánh giá so sánh kết quả của hệ thống với một số phương pháp khác trên các tiêu chí của bài toán phát hiện bàn tay
Chương 5: Kết Luận.
Nhận xét ưu nhược điểm của phương pháp và hướng phát triển
Trang 3CHƯƠNG I
TỔNG QUAN VỀ THỊ GIÁC MÁY TÍNH
1.1 Giới thiệu về thị giác máy – Computer Vision.
Thị giác máy tình là một lĩnh vực đã và đang phát triển mạnh mẽ trên thế giới hiện nay.Khái niệm về thị giác máy tính – Computer Vision có lien qua tới nhiều ngành học và có nhiều hướng nghiên cứu khác nhau.Kể từ những năm 70 của thế kỉ 20 khi mà khả năng tính toàn của các máy tính trở nên mạnh mẽ,nó
có thể giải quyết được những công việc cần tới tốc độ cao như xử lý các tập ảnh hay các đoạn video thị giác máy tính được nhắc đến,nghiên cứu và phát triển cho đến nay
Thị giác máy tính là một lĩnh vực rất mới mẻ đối với các nhà nghiên cứu ở Việt Nam,nó chỉ mới xuất hiện gần đây ở trong các tổ chức quân đội và một số viện nghiên cứu khác.Việc áp dụng thị giác vào các nghiên cứu khoa học được coi là một khởi đầu cho chặng đường phát triển của thị giác máy ở các trường đại học hiện nay
1.2 Thế nào là thị giác máy ?
Thị giác máy tính bao gồm lý thuyết và các mặt kỹ thuật liên quan nhằm mục đích tạo ra một hệ thống nhân tạo có thể nhận thông tin từ các hình ảnh thu được hoặc các tập dữ liệu đa chiều
Máy móc càng ngày ngày càng thông minh ,nó không chỉ thay con người làm những công việc nặng nhọc và nhàm chán mà nó còn có một số khả năng bắt chước động vật và con người.Một trong số những khả năng đó là nhận biết được thế giới qua “mắt” của nó.bằng việc kết hợp với các mô hình
Trang 4thống nhân tạo có những quyết định hoạt và chính các hơn.
Lĩnh vực nghiên cứu của thị giác máy rất rộng ,và đặc bđiểm chung
là các bài toán về thị giác đều không có một đề bài chung và cách giải quyết nhất định cho những trưởng hợp cụ thể
Ta có thể thấy sự tương quan giữa thị giác máy với các lĩnh vực khác như sau:
1.3 Các ứng dụng của thị giác máy
Một số ứng dụng của thị giác máy vào các lĩnh vực như sau:
Điều khiển tiến trình(ví dụ : trong các robot công nghiệp,xe tự lái )
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ụ như chuổi ảnh liên tục)
Mô hình hóa đối tượng (ví dụ xử lý ảnh trong 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)
1.4 Các thư viện thị giác máy mã nguồn mở.
Chúng ta có thể tận dụng những thành quả của cộng đồng mã nguồn mở
để áp dụng cho ứng dụng thị giác máy của mình.Hiện nay trên thế giới có rất nhiều thư viện mã nguồn mở cho chúng ta sử dụng như :
- Intel OpenCV
- CMVision
- ImLib3D
- Imalab
- … v …v
Trang 51.4.1 Tìm hiểu thư viện Intel OpenCV.
Intel đưa ra phiên bản OpenCV đầu tiên vào năm 1999.Ban đầu,nó chỉ là thư viện xử lý ảnh của Intel.Về sau,tính lệ thuộc đó
đã được loại bỏ và bây giờ bạn có thể sử sụng OpenCV như một thư viện độc lập.OpenCV là một thư viện đa nên tảng,nó chấp nhận cả Window và Linux,hơn thế nữa gần đây còn chấp nhận thêm Mac OSX.
OpenCV là một một thư viện thị giác máy tính mã nguồn mở của Intel nó có thể làm đơn giản hóa công việc lập trình thị giác máy tính của bạn OpenCV bao gồm nhiều khả năng tiên tiến-tìm,theo dõi,nhận dạng các bề mặt,lọc Kalman,là sự đa dạng của một hệ thống trí tuệ nhân tạo Ngoài ra nó còn cũng cấp các cơ sở thuật toán thị giác máy tính thông qua các giao diện lập trình ứng dụng
ở mức thấp.Nó được đóng gói và hoàn toàn miễn phí,người dùng
có thể sãn sàng sử dụng cho những mục đích khác nhau của họ.
CHƯƠNG II
PHƯƠNG PHÁP PHÁT HIỆN BÀN TAY INTERNAL HAAR - LIKE
Trang 61 Tổng quan về đặc trưng Haar-like.
Đặc trưng Haar like là một loại đặc trưng thường được dùng cho bài toán nhận dạng trên ảnh Mỗi đặc trưng Haar-like chứa 2, 3 hoặc 4 miền hình học có màu
“trắng” hoặc “đen.” dùng để tính độ chênh lệch giữa các giá trị điểm ảnh trong các vùng kề nhau Trong hình 1.1a và 1.1b, giá trị của feature cho bởi một ảnh bằng hiệu số giữa tổng các điểm ảnh thuộc hai vùng hình chữ nhật sáng và tối Trong hình 1.1c thì giá trị feature bằng tổng các điểm ảnh trong hai vùng hình chữ nhật bên ngoài trừ cho tổng các điểm ảnh trong hình chữ nhật ở giữa Trong hình 1.1d, giá trị feature bằng tổng các điểm ảnh nằm trong vùng hai hình chữ nhật màu tối trừ cho tổng các điểm ảnh nằm trong hai hình chữ nhật màu sáng
Hình 1.1a - Các đặc trưng cạnh
Trang 7Hình 1.1b - Các đặc trưng đường
Hình 1.1c - Các đặc trưng bao quanh tâm
Hình 1.1d - Đặc trưng đường chéo.
Trang 8Giá trị của một đặc trưng Haar-like chỉ đơn giản là sự khác biệt giữa tổng các giá trị xám của các pixel trong vùng “đen” với tổng các giá trị xám của các pixel trong vùng “trắng”:
f(x)=Sum black rectangle (pixel gray level) – Sum white rectangle (pixel gray level)
Nhận thấy ý nghĩa của đặc trưng Haar-like là nó thể hiện được tri thức về các đối tượng trong ảnh (thông qua việc thể hiện mối quan hệ giữa các bộ phận của đối tượng.)
Ta tính giá trị của đặc trưng Haar-like rất nhanh thông qua một cách thức được gọi
là “Integral Image.” Ở đây, Integral Image tại vị trí (x, y) có giá trị bằng tổng các giá trị pixel nằm trong hình chữ nhật được định bởi góc trái trên là (0, 0) và góc phải dưới là (x, y):
x '≤x , y'≤ y
i( x', y')
Từ đây, ta có thể tính được ngay tổng các giá trị pixel của một hình chữ nhật bất kỳ thông qua Integral Image tại 4 đỉnh của nó
Ví dụ: Tính D.
Trang 9Trong hình vẽ trên:
A, B, C, D lần lượt là tổng các giá trị pixel của hình chữ nhật tương ứng
P1, P2, P3, P4 lần lượt là Integral Image tại 4 đỉnh của hình chữ nhật D
Có ngay:
P1 = A, P2 = A + B, P3 = A + C, P4 = A + B + C + D
Suy ra:
P1+ P4–P2–P3= A + (A + B + C + D) – (A + B) – (A + C) = D
Vậy ta có: D = P 1 + P 4 – P 2 – P 3
2 Hình dung ban đầu về việc áp dụng đặc trưng Haar - Like để phát hiện bàn tay.
Để phát hiện bản tay ảnh được quét bằng một cửa sổ con chứa một đặc trưng Haar-like
Trang 10Ứng với một đặc trưng Haar-like fj ,một bộ phận lớp yếu yj(x) được định nghĩa như sau:
y j(x )={1 nếu p j f j ( x )< p j θ j
−1 nếu ngượclại
Trong đó:
x là cửa sổ con
θ là ngưỡng
p là hệ số với ý nghĩa là quyết định dấu của bất phương trình
Ta hiểu công thức này đơn giản như sau : nếu giá trị của đặc trưng Haar-like tại cửa sổ con x vượt quá một ngưỡng nào đó thì đó là bàn tay, ngược lại thì không phải là bàn tay
Trang 11CHƯƠNG 3
CHUẨN BỊ DỮ LIỆU VÀ TÌM HIỂU THUẬT TOÁN ADABOOTS.
I CHUẨN BỊ DỮ LIỆU.
1.1 Tìm hiểu và viết chương trình lấy dữ liệu trên môi trường matlap.
function getGroundTruth4Images(sourceDir,desDir,result_file,first_time) finished = 0;
current_file_idx = 1;
if (first_time)
display('Lan 1');
ground_truth.dir_name = desDir;
ground_truth.files = getAllFiles(sourceDir current_file_idx = 1;
else
display('Lam tiep');
load(result_file);
end
if(~finished)
numFiles = size(ground_truth.files,1);
%dirImg = 'D:\MyDocuments\Downloads\learm';
figure('units','normalized','outerposition',[0 0 1 1]);
for i = current_file_idx:numFiles
img=imread(ground_truth.files{i});
fileSave = strrep(ground_truth.files{i}, sourceDir, desDir);
size(img)
imshow(img);
title(strcat('Image:',num2str(i),'/',num2str(numFiles),':',
ground_truth.files{i}));
set(gcf,'units','normalized','outerposition',[0 0 1 1]);
hRect = imrect;% cho phép tạo và kéo chọn hình chữ nhật
pause; %tạm dừng chương trình
rect = getPosition(hRect);% lấy tât cả hình chữ nhật
Trang 12ground_truth.rects(i,:) = rect(:);%danh sách các hình chữ nhật thứ i 1 hình có 4 thông tin gán vào
croppedImg = imcrop(img, rect); %sao chép dữ liệu
imwrite(croppedImg,fileSave);% ghi kết quả
current_file_idx = i;% ảnh tiếp theo
save(result_file, 'ground_truth', 'finished','current_file_idx');% ghi lại những giá trị hiện tại
end
close all;
finished = 1;
save(result_file, 'ground_truth', 'finished') % ghi lại kết quả
end.
1.2 Dữ liệu huấn luyện.
Dữ liệu huấn luyện và kiểm thử được lấy từ cơ sở dữ liệu NUS image
database
- Bộ ảnh gốc có: gồm 280 ảnh có kích thước 160x120(pixels)
- Chúng ta tiến hành lấy dữ liệu huấn luyện qua 2 lượt quét hình chữ nhật
chứa đặc trưng Haar-like
Lượt 1: chúng ta tiến hành quét một hình chữ nhật có kích thước to nhất chứa đặc
trưng Haar-like phía bên trong lòng bàn tay không chứa viền
trưng Haar-like.
Trang 13Kết quả sau khi quét hình chữ nhật chứa đặc trưng Haar-like là dữ liệu để chúng ta tiến hành huấn luyện ở chương sau
Hình ảnh kết quả
Lượt 2: chúng ta tiến hành quét một hình chữ nhật có kích thước nhỏ nhất chứa
đặc trưng Haar-like cả bàn tay chứa cả viền
Trang 14
Hình ảnh khi quét hình chữ nhật chứa đặc trưng Haar-like chứa cả bàn tay.
Kết quả sau khi quét hình chữ nhật chứa đặc trưng Haar-like là dữ liệu để chúng ta tiến hành huấn luyện ở chương sau
Hình ảnh kết quả.
Trang 15II TÌM HIỂU THUẬT TOÁN ADABOOTS.
1 Thuật toán Adaboost (Adaptive boost) với bộ nhận dạng cử chỉ.
Sơ bộ về ý tưởng: Kỹ thuật Boosting: nguyên tắc cơ bản của Boosting là kết
hợp các bộ phân lớp yếu (hay các bộ phân lớp cơ sở) để tạo nên một bộ phân lớp mạnh Các bộ phân lớp yếu này thậm chí chỉ cần nhỉnh hơn phương pháp random một chút Bằng cách này, ta nói bộ phân lớp đã được “boost.”
Adaboost là một thuật toán sử dụng kỹ thuật Boosting được đưa ra bởi
Freund và Schapire vào 1996 Thuật toán này được sử dụng rất phổ biến cho bài toán nhận dạng cử chỉ bàn tay
Điểm cải tiến của Adaboost là ta sẽ gán cho mỗi mẫu một trọng số Ý nghĩa của việc gán trọng số như sau:
Ở mỗi vòng lặp của quá trình huấn luyện, khi một bộ phân lớp yếu yi đã được xây dựng, ta sẽ tiến hành cập nhật trọng số cho các mẫu Việc cập nhật này được tiến hành như sau: ta sẽ tăng trọng số của các mẫu bị phân lớp sai bởi bộ phân lớp yếu yi và giảm trọng số của các mẫu được phân lớp đúng bởi
yi Bằng cách này, ở vòng lặp kế, ta sẽ xây dựng bộ phân lớp yếu yi+1 theo hướng: tập trung vào các mẫu bị phân lớp sai bởi bộ phân lớp yếu trước đó Cuối cùng, để có được bộ phân lớp mạnh, ta sẽ kết hợp tuyến tính các bộ phân lớp yếu đã tìm được lại với nhau Mỗi bộ phân lớp yếu sẽ được đánh một trọng số tương ứng với độ tốt của bộ phân lớp yếu đó
Đến đây, có lẽ ta đã hiểu được ý nghĩa của từ “Adaptive” (thích nghi) trong tên gọi của thuật toán này: các bộ phân lớp yếu tạo thành một chuỗi, trong
đó bộ phân lớp yếu sau sẽ tập trung giải quyết các mẫu bị phân lớp sai bởi các bộ phân lớp yếu trước đó
2.Thuật Toán.
Cho tập ảnh huấn luyện (x1, t1), …, (xn, tn) với ti∈ {-1, 1}
Trang 162 For m = 1, …, M:
(a)Xây dựng bộ phân lớp yếu ym:
+ Với mỗi đặc trưng j, xây dựng một bộ phân lớp yjvới độ lỗi:
n=1
N
với I(y m(x n)≠ t n)=1 nếu y m(x n)≠ t n và = 0 nếu ngược lại
+ Chọn bộ phân lớp yj với độ lỗi nhỏ nhất ta được ym
(b) Cập nhật trọng số:
+ Tính:
ϵ m=
∑
n=1
N
w n(m )
I ( y m(x n)≠ t n)
∑
n=1
N
w n(m)
(1.1)
và:
+ Cập nhật trọng số:
w(n m +1)
=w n(m ) exp {α m I ( y m(x n)≠ t n) } (1.3)
3 Bộ phân lớp mạnh cuối cùng:
Y M ( x )=sign¿ (1.4)