Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
0,95 MB
Nội dung
XÂYDỰNGBỘ NHẬN DẠNGCỬCHỈ 4.1. Giới thiệu về bộnhậndạng OpenCV có hỗ trợ sẵn các file nhậndạng (file *.xml) cho các tác vụ nhậndạng mặt người, nhậndạng mắt và nhậndạng thân hình người nhưng không cung cấp các file nhậndạng cho cửchỉ bàn tay. Vì vậy, ở phần này, ta sẽ tiến hành huấn luyện 7 bộnhậndạng khác nhau cho 7 cửchỉ riêng biệt dùng phương pháp HaarTraining. Mỗi bộnhậndạng này sẽ có nhiệm vụ kiểm tra xem trong khung hình có chứa cửchỉ tương ứng hay không. Hình bên dưới là một ví dụ về cấu trúc của bộnhậndạng cho chữ “A”. Tương tự, ta cũng sẽ xâydựng các bộnhậndạng cho các cửchỉ còn lại 4.2. Xâydựngbộnhậndạng Sơ đồ thuật toán huấn luyện bộnhậndạngcửchỉ Xâydựng tập mẫu theo đặc trưng Haar: Tập huấn luyện bao gồm các mẫu positive (đối tượng cần nhận dạng) và mẫu negative (mẫu không chứa đối tượng). Xâydựngbộ phân loại yếu (weak classifiers): Mỗi bộ phân loại yếu gồm có 1 đặc trưng và 1 ngưỡng: > = khaùc hôïptröôøng 0 )(1 )( kk k xf xh θ Trong đó: θ: Ngưỡng, f k : đặc trưng của mẫu. Công thức trên có ý nghĩa như sau: nếu giá trị vector đặc trưng của mẫu cho bởi hàm lượng giá trị của bộ phân loại vượt qua một ngưỡng cho trước thì mẫu là object (đối tượng cần nhận dạng), ngược lại thì mẫu là background (không phải đối tượng). Bộ phân loại yếu được xâydựng bằng thuật toán AdaBoost như sau: 1. Cho một tập huấn luyện gồm n mẫu (x,y) với x ∈ X, y ∈{-1,+1} 2. Chọn trước giá trị nhỏ nhất phân loại đúng mẫu dương tính (min detection rate) và giá trị lớn nhất nhậndạng sai của mẫu âm tính (max false alarm) 3. Xâydựng tập đặc trưng Haar-like và tính toán các bảng SAT cho tất cả các mẫu trong tập huấn luyện. 4. Khởi tạo trọng số ban đầu cho tất cả các mẫu n w kt 1 , = 5. Tạo bộ phân loại yếu • Với mỗi đặc trưng trong tập đặc trưng, xâydựng một bộ phân loại yếu h j với ngưỡng j θ và tính giá trị lỗi i ε của bộ phân loại này: kkj n k ktj yxhw −= ∑ )( , ε • Từ các h j đã có, chọn ra h j có i ε nhỏ nhất, ta được h t : RXxfgxh tttt →= :)),(()( θ • Cập nhật lại trọng số: ≠ = ×= − + kkt kkt t kt kt yxhe yxhe Z w w t t )(, )(, , ,1 α α Trong đó: − = j j t ε ε α 1 ln 2 1 ! "! #! $! %! &! '! (! )*+,! -! .//0,-1233% với ∑ + = k ktt wZ ,1 là hệ số tiêu chuẩn (normalization factor) Giá trị ngưỡng θ : Giá trị ngưỡng θ được chọn nhờ vào giá trị min dection rate (min hit rate). Min detection rate là tỉ lệ nhậndạngđúng tối thiểu các mẫu dương tính mà bộ phân loại phải đạt được, giá trị do chúng ta xác lập khi bắt đầu quá trình huấn luyện. Bằng cách sắp xếp các mẫu dương tính x k theo F t (x k ) tăng dần: Chọn ngưỡng θ dựa vào min Dectection Rate các mẫu positive Trong hình trên, tỉ lệ nhậndạngđúng tối thiểu các mẫu positive được chọn là 0,995. Do đó, phần tử được chọn làm ngưỡng là mẫu đầu tiên trong danh sách sắp tăng. c Ghép tầng bộ phân loại yếu thành bộ phân loại mạnh: Bộnhậndạng mặt người là một cấu trúc ghép tầng gồm K tầng, f i , d i lần lượt là tỉ lệ nhậndạng sai tối đa mẫu âm tính (max fasle alarm) và tỉ lệ nhậndạngđúng tối thiểu mẫu dương tính (min detection rate) của bộ phân loại tầng thứ i, max false alarm và min detection rate của cây ghép tầng sẽ lần lượt là: ∑ = = K i i fF 1 ∑ = = K i i dD 1 Thủ tục ghép tầng: • Xác lập max false alarm f, min dectection rate d cho các bộ phân loại ở mỗi tầng và số tầng tối đa bộ phân loại sẽ có.(d = 0.997, f = 0.5) • Tính False Alarm F cho bộ phân loại chính • F 0 = 0, i = 0 • P, N là số lượng mẫu dương tính và âm tính. • P 0 ,N 0 là tập dương tính và âm tính cho bộ phân lớp H o ở tầng đầu tiên • Trong khi F i > F Huấn luyện bộ phân loại H i từ tập P i và N i với dection rate d và max false alarm f (tạo bộ phân loại - classifier) Thêm H i vào cây phân lớp Dùng cây phân lớp hiện có để tính F i+1 : Duyệt qua N mẫu âm tính cho đến khi nào tìm đủ n mẫu mà cây phân lớp hiện có phân loại sai N n F i = + 1 Nếu F t+1 >F, đưa n mẫu âm tính trên vào N i+1 ; xâydựng P i+1 với tối đa p mẫu dương tính mà cây phân lớp hiện có phân loại đúng. 1+← ii Qua thuật toán trên ta thấy, các mẫu âm tính trong tập huấn luyện của bộ phân loại tầng sau sẽ là những mẫu âm tính mà bộ phân loại tầng trước đó nhận sai. Như vậy, nó có điều kiện tập trung học những mẫu background khó. 4.3. Hoạt động của bộnhậndạng Khi hình ảnh được lấy vào từ webcam, một khung ảnh sẽ quét để trích tất cả các vùng ảnh ở các kích thước khác nhau và đưa vào bộnhận dạng. Kích thước ban đầu của khung ảnh được quy định trước cho từng cửchỉ khác nhau. Các khung ảnh sẽ được dịch theo chiều ngang và chiều dọc một lượng 1 hoặc 2 pixel từ góc trên bên trái cho đến khi dừng lại ở góc dưới bên phải. Ở lượt quét kế tiếp, khung ảnh sẽ được mở rộng ra theo tỉ lệ tăng (scale factor) được chọn trong chương trình và tiếp tục mở rộng ở các lượt quét kế cho đến khi phủ kín ảnh cần nhận dạng. Các khung ảnh mở rộng ra sau mỗi lượt quét với tỉ lệ tăng 1.05 Hai thông số kích thước ban đầu và tỉ lệ tăng ảnh hưởng khá lớn đến kết quả nhận dạng. Nếu ta chọn hai thông số này quá nhỏ thì tốc độ nhậndạng của hệ thống sẽ giảm đi đáng kể, ảnh hưởng đến tiêu chí thời gian thực của ứng dụng. Nếu chọn quá lớn sẽ gây khó khăn trong việc phát hiện cửchỉ dẫn đến giảm Dectection Rate của hệ thống. Trong luận văn này, các thông số được chọn để cho ra kểt quả nhậndạng tốt nhất, kích thước ban đầu bằng kích thước huấn luyện và tỉ lệ tăng bằng 1.2 cho các khung ảnh. Thông số tiếp theo là min_neighbors được chọn để làm giảm False Alarm của việc nhận dạng. Một cửchỉ thật sự sẽ được phát hiện trong nhiều lần quét khác nhau của khung ảnh, ta chỉ công nhận một vùng ảnh là cửchỉ nếu số lần nó được phát hiện lớn hơn số min_neighbors. Trong thiết kế, ta đặt số này bằng 2, việc đặt cao quá sẽ làm giảm Dectection Rate của hệ thống. Dùng OpenCV, ta có thể lựa chọn một trong nhiều phương pháp khác nhau để phát hiện vật thể. Có hai phương pháp đáng chú ý nhất: • Phương pháp CV_HAAR_DO_CANNY_PRUNING: Dùng thuật toán phát hiện đường biên Canny để loại bỏ những vùng ảnh chứa quá nhiều hoặc quá ít biên, không có khả năng chứa vật thể. Một ngưỡng thích hợp được đặt vào sẽ giúp tăng tốc độ nhậndạngđáng kể. • Phương pháp CV_HAAR_FIND_BIGGEST_OBJECT: Cho phép chương trình dừng quét để chuyển qua khung hình tiếp khi đã phát hiện được vật thể cần nhậndạng trong ảnh đưa vào. Quá trình này làm tăng tốc độ nhậndạng lên hơn 10 lần so với các phương pháp cổ điển trước đây. Trong bài toán phát hiện cửchỉ bàn tay của luận văn này, ta chỉ cần phát hiện một cửchỉ tại một thời điểm nên phương pháp này được chọn để tăng tốc nhậndạng ở chế độ thời gian thực. Phương pháp này được hỗ trợ trong các phiên bản OpenCV từ 1.1pre1a trở về sau. 4.4. Thu thập ảnh mẫu và huấn luyện Các ảnh không tích cực (không chứa hình đối tượng) được học viên lấy từ nguồn dữ liệu có sẵn với các dạng hình phong cảnh thiên nhiên, hình chân dung, động thực vật, nội thất, kiến trúc,… Các ảnh không tích cực, không chứa đối tượng (negative image) được sưu tầm dễ dàng từ các nguồn ảnh có sẵn. Các ảnh tích cực trong luận văn này được chụp lại bằng máy ảnh , sao đó lựa chọn những ảnh có chất lượng tốt để đem huấn luyện. Việc sưu tầm và tìm kiếm ảnh mẫu phục vụ cho công tác học huấn luyện cho máy tính đòi hỏi tiêu tốn nhiều thời gian. Với mỗi cơ sở dữ liệu được tạo thành, học viên đã sử dụng hơn 550 hình tích cực (hình có chứa đối tượng - positive image) khoảng 1500 hình không tích cực (không chứa đối tượng - negative image) dùng cho huấn luyện. Trong công cụ huấn luyện OpenCV của Intel có sẵn lệnh Objectmarker. Lệnh này dùng để đánh dấu vùng có chứa đặc trưng của đối tượng có trong ảnh bằng cách dùng hình chữ nhật để đánh dấu khoanh vùng chứa đặc trưng. Cũng sử dụng công cụ đã nói ở trên, sử dụng lệnh Createsamples và Haartrainning để huấn luyện tạo cơ sở dữ liệu đặc trưng và xuất cơ sở dữ liệu đó ra dạng file .xml phục vụ trong mã lệnh chương trình phần mềm nhậndạng của luận văn. createsamples.exe Để tạo mẫu huấn luyện positive, ta dùng chương trình createsamples.exe. Dùng chương trình này, ta có thể tạo tập các mẫu positive từ một hình đơn hoặc từ tập hợp nhiều hình đã được đánh dấu sẵn vật thể. Nếu ta chọn chế độ tạo tập mẫu từ một hình đơn, chương trình createsamples.exe sẽ tiến hành các thao tác xử lí như xoay ảnh hoặc thay đổi mức xám ngẫu nhiên để tạo thành một tập hợp các mẫu huấn luyện. Các tham số của chương trình huấn luyện gồm có: - vec <vec_file_name> Tên của file xuất chứa các mẫu positive dùng để huấn luyện. - img <image_file_name> Ảnh gốc vật thể (VD: logo của một công ty…) - bg <background_file_name> File mô tả background - num <number_of_samples> Số lượng mẫu positive muốn phát sinh ra. - bgcolor <background_color> Màu background - bgthresh <background_color_threshold> - inv Nếu được khai báo, màu sắc trong các mẫu sẽ bị đảo ngược - randinv Nếu được khai báo, màu sắc sẽ bị đảo ngược ngẫu nhiên. - maxidev <max_intensity_deviation> Độ thay đổi cường độ tối đa ở những pixel của mẫu positive. - maxxangle <max_x_rotation_angle>, - maxyangle <max_y_rotation_angle>, - maxzangle <max_z_rotation_angle> Góc xoay tối đa, tính theo radian -show Nếu được khai báo, mỗi mẫu tạo thành sẽ được hiện lên. Nhấn Esc sẽ tiếp tục quá trình tạo mẫu không kèm theo hiện hình mẫu. - w <sample_width> Chiều rộng tính bằng pixel của kích thước huấn luyện mẫu positive. - h <sample_height> Chiều cao tính bằng pixel của kích thước huấn luyện mẫu positive. haartraining.exe Sau khi tạo xong các mẫu huấn luyện, ta tiến hành huấn luyện dùng chương trình haartraining.exe có các tham số như sau: - data <dir_name> Tên đường dẫn đến tập tin chứa kết quả huấn luyện - vec <vec_file_name> Tên file chứa các mẫu positive (đã được tạo trước bởi createsamples.exe) - bg <background_file_name> File mô tả background - npos <number_of_positive_samples>, - nneg <number_of_negative_samples> Số lượng ảnh positive hay negative dùng trong huấn luyện. - nstages <number_of_stages> Số lượng stage muốn huấn luyện - mem <memory_in_MB> Kích thước bộ nhớ dành cho tính toán huấn luyện (đơn vị MB). Dành nhiều bộ nhớ sẽ giúp tăng tốc quá trình huấn luyện. - sym (mặc định), - nonsym Cho biết vật thể trong huấn luyện có đối xứng theo trục đứng hay không. Tính đối xứng sẽ giúp giảm thời gian huấn luyện. Ví dụ như mặt người là một hình đối xứng qua trục đứng. - minhitrate <min_hit_rate> Detection Rate nhỏ nhất cho mỗi stage. - maxfalsealarm <max_false_alarm_rate> False Alarm cao nhất cho mỗi stage - mode <BASIC (mặc định) | CORE | ALL> Lựa chọn tập hợp các đặc trưng Haar-like sẽ sử dụng trong huấn luyện. BASIC chỉdùng những đặc trưng cơ bản, ALL sẽ dùng tất cả đặc trưng bao gồm cả các đặc trưng được xoay 45 độ. - w <sample_width>, - h <sample_height> Chiều rộng và chiều cao của kích thước huấn luyện. Hình ảnh minh họa cho quá trình huấn luyện chữ E: - Thu thập hình ảnh chứa cửchỉ E (positive) cần huấn luyện: ở đây tác giả dung phương pháp quay clip cửchỉ E rồi dùng phần mềm cắt ra từng ảnh một rồi chọn lọc các ảnh có chất lượng tốt để huấn luyện. ở đây ta thu được 772 ảnh cửchỉ E. - Sau khi thu thập xong ảnh ta tiến hành khoanh vùng ảnh cần nhậndạngdùng file objectmaker.exe được hỗ trợ bởi Intel. [...]... ghép các cascade đó thành 1 file có đuôi xml Lúc này file này có thể dùng để nhận dạng kí hiệu E - Tương tự cho các kí hiệu còn lại - 4.5 Kết quả thu được - Chương trình HaarTraining chạy trên máy tính CPU Core 2 Duo 2 x 2 Ghz, RAM 2GB trong nhiều ngày thu được 10 bộ nhận dạng với kết quả huấn luyện như bảng sau: - Bộ Kích Số nhận thước positive classfier rate 696 968 760 812 708 742 786 772 698 802...- Sau đó ta tiến hành thu thập ảnh không chứa cử chỉ E, những hình này ta có thể download trên mạng hoặc chụp Ở cử chỉ E ta thu thập 1380 hình negative - Dùng create_list.bat để tạo file infofile.txt - Chạy chương trình createsamples.exe để gôm các ảnh đã được khoanh vùng phía trên... luyện như bảng sau: - Bộ Kích Số nhận thước positive classfier rate 696 968 760 812 708 742 786 772 698 802 774 12 17 14 15 13 14 14 12 12 13 14 (%) 98.8 97 97.2 98.3 97.8 98.8 97.7 98 98.3 98.9 98.1 dạng T 32 x32 R 27 x34 A 26 x34 I 35 x27 P 24 x32 H 36 x26 L 32 x32 U 34 x34 O 34 x28 RS 35 x28 Trung bình ảnh Số lượng Detection . XÂY DỰNG BỘ NHẬN DẠNG CỬ CHỈ 4.1. Giới thiệu về bộ nhận dạng OpenCV có hỗ trợ sẵn các file nhận dạng (file *.xml) cho các tác vụ nhận dạng mặt người, nhận dạng mắt và nhận dạng thân. chứa cử chỉ tương ứng hay không. Hình bên dưới là một ví dụ về cấu trúc của bộ nhận dạng cho chữ “A”. Tương tự, ta cũng sẽ xây dựng các bộ nhận dạng cho các cử chỉ còn lại 4.2. Xây dựng bộ nhận dạng Sơ. cấp các file nhận dạng cho cử chỉ bàn tay. Vì vậy, ở phần này, ta sẽ tiến hành huấn luyện 7 bộ nhận dạng khác nhau cho 7 cử chỉ riêng biệt dùng phương pháp HaarTraining. Mỗi bộ nhận dạng này sẽ