Đăng ký Đăng nhập
Trang chủ Nghiên cứu ứng dụng mạng học sâu tích chập 3d trong nhận dạng cử chỉ tay...

Tài liệu Nghiên cứu ứng dụng mạng học sâu tích chập 3d trong nhận dạng cử chỉ tay

.PDF
60
38
104

Mô tả:

Nhan đề : Nghiên cứu ứng dụng mạng học sâu tích chập 3D trong nhận dạng cử chỉ tay Tác giả : Nguyễn Duy Cương Người hướng dẫn: Đinh Viết Sang Từ khoá : Mạng nơron; Nhận dạng cử chỉ tay; Mạng học sâu tích chập Năm xuất bản : 2019 Nhà xuất bản : Trường đại học Bách Khoa Hà Nội Tóm tắt : Tổng quan bài toán nhận dạng cử chỉ tay, một số khái niệm cơ bản của học máy, mạng neural nhân tạo, mạng neural tích chập; đề xuất phương án giải quyết bài toán nhận dạng cử chỉ; thử nghiệm và đánh giá.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỂN THÔNG ──────── * ─────── LUẬN VĂN TỐT NGHIỆP CAO HỌC NGÀNH CÔNG NGHỆ THÔNG TIN NGHIÊN CỨU ỨNG DỤNG MẠNG HỌC SÂU TÍCH CHẬP 3D TRONG NHẬN DẠNG CỬ CHỈ TAY Học viên thực hiện: Nguyễn Duy Cương Lớp 17ACNTT Giảng viên hướng dẫn: TS. Đinh Viết Sang HÀ NỘI 10 - 2019 LỜI NÓI ĐẦU Học máy (Machine learning) cùng với học sâu (Deep learning) là 2 lĩnh vực tiêu biểu trong ngành trí tuệ nhân tạo (Artificial Intelligent) gây nên cơn sốt công nghệ trên toàn thế giới trong vài năm nay. Trong giới học thuật, mỗi năm có hàng ngàn bài báo khoa học về đề tài này. Trong lĩnh vực công nghiệp, từ các công ty lớn như Google, Facebook, Amazon đến rất nhiều các công ty khởi nghiệp đều đầu tư vào trí tuệ nhân tạo. Hàng loạt các ứng dụng sử dụng trí tuệ nhân tạo ra đời trên mọi lĩnh vực của cuộc sống, từ khoa học máy tính đến những ngành ít liên quan hơn như vật lý, hóa học, y học, chính trị. Trong ngành thị giác máy tính (Computer Vision), trí tuệ nhân tạo đã tạo ra một bức đột phá, rất nhiều bài toán khó của thị giác máy tính được giải quyết tốt nhờ áp dụng kỹ thuật học sâu (Deep learning). Một trong số đó là bài toán Nhận dạng cử chỉ tay người (hand gesture recognition). Trong phạm vi luận văn này tôi xin đề xuất một ứng dụng của một mô hình học sâu - mạng neural tích chập 3 chiều C3D để giải quyết cho bài toán trên. Bằng việc áp dụng C3D cùng với một số kỹ thuật hiện đại trong xử lý ảnh và thị giác máy tính, mô hình của tôi đã đạt được kết quả khá tốt trên bộ dữ liệu được thu thập được tại viện nghiên cứu MICA, đại học Bách Khoa Hà Nội. Tôi xin được gửi lời cảm ơn sâu sắc nhất tới thầy giáo – Tiến sĩ Đinh Viết Sang – Giảng viên bộ môn Khoa học máy tính, Viện Công nghệ thông tin và Truyền thông, Trường Đại học Bách Khoa Hà Nội. Cảm ơn thầy vì đã hướng dẫn tận tình, kiên nhẫn và tạo động lực cho tôi trong khoảng thời gian thực hiện đồ án tốt nghiệp này. Tiếp theo, tôi xin chân thành cảm ơn các thầy cô trong Viện Công nghệ thông tin và truyền thông, Viện đào tạo sau đại học, Viện nghiên cứu MICA, Trường Đại học Bách Khoa Hà Nội đã tạo điều kiện cho tôi trong quá trình học tập và nghiên cứu tại trường. Cuối cùng, tôi xin bày tỏ lòng cảm ơn tới những người thân trong gia đình, bạn bè đã động viên và giúp đỡ để tôi hoàn thành bản luận văn này. Do thời gian và kiến thức có hạn nên không tránh khỏi những thiếu sót nhất định. Tôi rất mong nhận được sự thông cảm và đóng góp quý báu của thầy cô và các bạn. Cuối cùng, tôi xin gửi lời chúc sức khỏe, hạnh phúc tới thầy cô, gia đình và bạn bè. Hà Nội, ngày .... tháng .... năm 2019 Học viên MỤC LỤC LỜI NÓI ĐẦU ............................................................................................................... 2 MỤC LỤC ...................................................................................................................... 1 DANH MỤC KÝ HIỆU, CÁC CHỮ VIẾT TẮT ......................................................... 3 DANH MỤC CÁC BẢNG ............................................................................................. 4 CHƯƠNG 1: ĐẶT VẤN ĐỀ ........................................................................................... 7 1.1. Bài toán nhận dạng cử chỉ tay ............................................................................. 7 1.2. Mục tiêu và bố cục luận văn ............................................................................... 8 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT................................................................................. 9 2.1. Một số khái niệm cơ bản của học máy ................................................................ 9 2.1.1. Học có giám sát (supervised learning) và học không giám sát (Unsupervised learning) .................................................................................................................... 9 2.1.2. Học quá khớp (Overfitting), Học chưa khớp (Underfitting) và học vừa khớp (Goodfitting) ........................................................................................................... 11 2.1.3. Các độ đo (Metric) đánh giá mô hình ......................................................... 13 2.2. Tổng quan về mạng neural nhân tạo (Artificial neural network) ....................... 14 2.3. Mạng neural tích chập (CNN) ........................................................................... 14 CHƯƠNG 3: ĐỀ XUẤT PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN NHẬN DẠNG CỬ CHỈ ............................................................................................................................... 22 3.1. Các nghiên cứu liên quan đến bài toán nhận dạng cử chỉ tay............................. 22 3.1.1. Hướng tiếp cận biểu diễn hoạt động dựa trên đặc trưng được thiết kế bằng tay (hand-crafted features) ............................................................................................ 22 3.1.2. Hướng tiếp cận biểu diễn hoạt động dựa trên kỹ thuật học sâu ................... 23 3.1.3. Một số kiến trúc của CNN cho bài toán nhận dạng cử chỉ .......................... 24 3.2. Mạng tích chập C3D ......................................................................................... 26 CHƯƠNG 4: THỬ NGHIỆM VÀ ĐÁNH GIÁ ............................................................. 29 4.1. Mô tả dữ liệu .................................................................................................... 29 4.2. Tiền xử lý dữ liệu ............................................................................................. 35 4.3. Huấn luyện mô hình ......................................................................................... 37 4.4. Kết quả và đánh giá .......................................................................................... 40 4.4.1. Phương pháp sử dụng C3D nguyên bản trên bộ dữ liệu gốc ........................... 40 1 4.4.2. Phương pháp sử dụng C3D nguyên bản trên bộ dữ liệu đã được làm sạch, tiền xử lý, tăng cường hoặc phân đoạn vùng bàn tay. ..................................................... 41 4.4.3. Phương pháp C3D với các sự thay đổi về kiến trúc mạng so với mô hình C3D nguyên bản .............................................................................................................. 47 KẾT LUẬN ................................................................................................................... 56 Kết quả đạt được ........................................................................................................ 56 Những điểm hạn chế................................................................................................... 56 Hướng phát triển ........................................................................................................ 56 TÀI LIỆU THAM KHẢO ............................................................................................. 57 2 DANH MỤC KÝ HIỆU, CÁC CHỮ VIẾT TẮT Từ viết tắt K1 K2 K3 K4 K5 CNN RCNN PCNN C3D RNN GPU FC Nghĩa tiếng Anh Nghĩa tiếng Việt Kinect 1 Kinect 2 Kinect 3 Kinect 4 Kinect 5 Convolutional Neural Network Region-based Convolutional Neural Networks Pose-based Convolutional Neural Networks 3D Convolutional Neural Networks Recurrent Neural Network Graphical Processing Unit Fully-connected 3 Camera kinect với góc nhìn 1 Camera kinect với góc nhìn 2 Camera kinect với góc nhìn 3 Camera kinect với góc nhìn 4 Camera kinect với góc nhìn 5 Mạng neural tích chập Mạng neural tích chập trên vùng Mạng neural tích chập dựa trên hình dáng Mạng neural tích chập 3 chiều Mạng neural tích chập hồi quy Bộ xử lý đồ họa (Lớp) liên kết đầy đủ DANH MỤC CÁC BẢNG Bảng 1. Ví dụ về ma trận nhầm lẫn ................................................................................ 13 Bảng 2. Số lượng mẫu của bộ dữ liệu 5 cử chỉ ............................................................... 30 Bảng 3. Chuẩn hóa số lượng frame trong mỗi cử chỉ ..................................................... 36 Bảng 4. Ví dụ về ma trận nhầm lẫn khi huấn luyện bộ dữ liệu 12 cử chỉ cho 1 đối tượng ...................................................................................................................................... 40 Bảng 5. Kết quả C3D nguyên bản trên bộ dữ liệu gốc 5 cử chỉ. Đơn vị: % .................... 40 Bảng 6. Kết quả C3D nguyên bản trên bộ dữ liệu gốc 12 cử chỉ. Đơn vị: % .................. 41 Bảng 7. Ma trận nhầm lẫn với bộ dữ liệu 12 cử chỉ, góc nhìn K1, đối tượng Thủy. ........ 42 Bảng 8. Kết quả C3D trên bộ dữ liệu đã được làm sạch. Đơn vị: % ............................... 43 Bảng 9. Kết quả C3D trên bộ dữ liệu 5 cử chỉ đã được làm sạch và tiền xử lý. Đơn vị: % ...................................................................................................................................... 44 Bảng 10. Kết quả C3D trên bộ dữ liệu 12 cử chỉ sau khi tiền xử lý. Đơn vị: % .............. 44 Bảng 11. Kết quả C3D trên bộ dữ liệu tăng cường 5 cử chỉ. Đơn vị: %.......................... 46 Bảng 12. Kết quả C3D với dữ liệu video đã phân vùng bàn tay. Đơn vị: % .................. 46 Bảng 13. So sánh kết quả C3D qua các phương pháp I) Làm sạch dữ liệu, II) phương pháp I + kéo vùng bàn tay ra giữa, III) phương pháp II + tăng cường dữ liệu, IV) phương pháp III + phân đoạn ảnh. Đơn vị: %...................................................................................... 47 Bảng 14. Kết quả C3D sau khi giảm số lượng neural ở FC6, FC7 xuống còn 2048. Đơn vị: % ................................................................................................................................... 48 Bảng 15. Kết quả C3D khi FC6, FC7 chỉ còn 1024 neural. Đơn vị: % ........................... 49 Bảng 16. Kết quả C3D khi số bộ lọc trong conv2a chỉ còn 64. Đơn vị: %...................... 49 Bảng 17. Kết quả C3D với FC6, FC7 có 2048 đồng thời kích thước đầu vào là 97. Đơn vị: % ................................................................................................................................... 50 Bảng 18. Kết quả C3D với dữ liệu đầu vào 65x65. Đơn vị: % ....................................... 51 Bảng 19. Kết quả C3D với FC6, FC7 2048 và num_frame =14. Đơn vị: % ................... 52 Bảng 20. Kết quả C3D với FC6, FC7 = 2048 và num_frame =12. Đơn vị: % ................ 53 Bảng 21. So sánh kết quả thử nghiệm của các phương pháp I) C3D nguyên bản, II) với số lượng neural ở các FC6, FC7 bằng 2048, III) giống như II + kích thước đầu vào là 97x97, IV) giống như III + chỉ sử dụng 12 frames đầu vào. Đơn vị: % ...................................... 54 4 DANH MỤC HÌNH VẼ, ĐỒ THỊ Hình 1. Bộ dữ liệu chữ viết tay mnist............................................................................. 10 Hình 2. Hình biểu diễn mô hình học chưa khớp (bên trái), học vừa khớp (ở giữa) và học quá khớp (bên phải) ....................................................................................................... 12 Hình 3. Minh họa thực hiện phép toán nhân chập .......................................................... 15 Hình 4. Cấu trúc mạng CNN cơ bản .............................................................................. 16 Hình 5. Mô tả trường tiếp nhận cục bộ 5x5 .................................................................... 17 Hình 6. Tạo neural đầu tiên trong lớp ẩn 1 ..................................................................... 18 Hình 7. Dịch bộ lọc (filter) qua một cột để tạo được neural ẩn thứ 2 .............................. 18 Hình 8. Minh họa cho max-pooling ............................................................................... 19 Hình 9. Minh họa mạng CNN đơn giản với lớp FC gồm 10 neural tương ứng với 10 nhãn đầu ra............................................................................................................................. 20 Hình 10. Các bước xử lý trong hệ thống nhận dạng sử dụng đặc trưng được thiết kế bằng tay ................................................................................................................................. 22 Hình 11. Ví dụ về bộ lọc majority filter ......................................................................... 24 Hình 12. Minh họa phép toán tích chập 3 chiều [1] ....................................................... 27 Hình 13. Kiến trúc chi tiết mạng C3D nguyên bản [1] ................................................... 28 Hình 14. Giải pháp thu thập dữ liệu cử chỉ sử dụng camera Kinect. ............................... 29 Hình 15. Minh họa cách thực hiện các cử chỉ................................................................. 30 Hình 16. Cử chỉ 1_ON_OFF .......................................................................................... 31 Hình 17. Cử chỉ 2_UP ................................................................................................... 32 Hình 18. Cử chỉ 3_DOWN ............................................................................................ 32 Hình 19. Cử chỉ 4_LEFT ............................................................................................... 32 Hình 20. Cử chỉ 5_RIGHT............................................................................................. 33 Hình 21. Cử chỉ 6_PUSH............................................................................................... 33 Hình 22. Cử chỉ 7_PULL ............................................................................................... 33 Hình 23. Cử chỉ 8_ROTATE_RIGHT ........................................................................... 34 Hình 24. Cử chỉ 9_ROTATE_LEFT .............................................................................. 34 Hình 25. Cử chỉ 10_SCISSORS_UP .............................................................................. 34 Hình 26. Cử chỉ 11_SCISSORS_RIGHT ....................................................................... 35 Hình 27. Cử chỉ 12_SCISSORS_LEFT ......................................................................... 35 Hình 28. Ví dụ về đồ thị hàm lỗi khi huấn luyện ............................................................ 39 Hình 29. Ví dụ về đồ thị biểu diễn độ chính xác của mô hình trong lúc huấn luyện ....... 39 Hình 30. Xóa nhiễu (người) ở background ..................................................................... 42 Hình 31. Các động tác sai khi thực hiện cử chỉ 5_RIGHT của đối tượng Tân. ............... 43 Hình 32. Một số hành động trong bộ dữ liệu UCF101[] ................................................. 43 Hình 33. Tiền xử lý dữ liệu bằng cách cho vùng bàn tay của đối tượng vào giữa khung hình ...................................................................................................................................... 44 5 Hình 34. Ví dụ về vùng bàn tay bị mất đi trong quá trình quay video của đối tượng Thuần ...................................................................................................................................... 45 Hình 35. Tăng cường ảnh bằng cách tịnh tiến ảnh về các hướng khác nhau. .................. 45 Hình 36. Ảnh gốc và mặt nạ tương ứng dùng để phân đoạn bàn tay ............................... 46 Hình 37. Kiến trúc C3D mới sau khi sửa số lượng neural ở FC6, FC7. Các phần thay đổi so với C3D nguyên gốc (Hình 13) được tô đậm. ............................................................ 48 Hình 38. Cấu trúc C3D với kích cỡ dữ liệu đầu vào 97x97. Các thay đổi so với C3D nguyên gốc (Hình 13) được tô đậm. ........................................................................................... 50 Hình 39. Cấu trúc mạng C3D với kích cỡ dữ liệu đầu vào chỉ là 65x65. Các thay đổi so với C3D nguyên gốc (Hình 13) được tô đậm. ...................................................................... 51 Hình 40. Cấu trúc mạng C3D khi chỉ sử dụng 14 frames đầu vào. Các thay đổi so với C3D nguyên gốc (Hình 13) được tô đậm. ............................................................................... 52 Hình 41. Cấu trúc mạng C3D khi chỉ sử dụng 12 frames đầu vào. Các thay đổi so với C3D nguyên gốc (Hình 13) được tô đậm. ............................................................................... 53 6 CHƯƠNG 1: ĐẶT VẤN ĐỀ 1.1. Bài toán nhận dạng cử chỉ tay Tương tác người - máy là một lĩnh vực nghiên cứu thu hút nhiều sự quan tâm của các nhà khoa học trên thế giới cũng như trong nước trong thời gian gần đây. Mục tiêu của các nghiên cứu này nhằm hướng tới các hệ tương tác người – máy tiệm cận với tương tác giữa con người với con người, nghĩa là có thể dùng các phương tiện tương tác thông qua cử chỉ, điệu bộ, tiếng nói, v.v. Hiện tại, con người chủ yếu tương tác với máy tính thông qua chuột và bàn phím. Với sự phát triển nhanh chóng của công nghệ và khoa học máy tính, người ta muốn có những sự tương tác mới dễ dàng hơn, nhanh hơn, tiện lợi hơn cho người sử dụng giống như sử dụng những cử chỉ thông thường của con người hoặc bằng tiếng nói. Trên thực tế, một số kỹ thuật trong lĩnh vực Thị giác máy tính và Học máy có thể cho phép máy tính biểu diễn và nhận dạng cử chỉ tay hay giọng nói của con người. Bài toán nhận dạng hoạt động người là một trong những bài toán quan trọng trong lĩnh vực tương tác người - máy. Đây vẫn là một lĩnh vực nghiên cứu đầy tiềm năng bởi nó mở ra nhiều ứng dụng trong theo dõi giám sát hoặc giải trí. Trong đó, vấn đề nhận dạng cử chỉ tay người đóng một vai trò đặc biệt quan trọng trong việc xây dựng những ứng dụng thực tiễn giúp ích cho đời sống con người (ví dụ như sử dụng cử chỉ tay để điều khiển các thiết bị trong nhà thông minh). Tuy nhiên cho đến nay, các nghiên cứu về nhận dạng cử chỉ tay chưa chú trọng tới việc nghiên cứu ảnh hưởng của góc nhìn tới việc nhận dạng. Đây là một vấn đề rất quan trọng, vì một phương pháp tốt trên một góc nhìn này chưa chắc đã tốt trên một góc nhìn khác. Do vậy, vấn đề cấp thiết là thiết kế một mô hình có thể xử lý tốt ảnh hưởng của góc nhìn tới việc nhận dạng cử chỉ tay. Với ý nghĩa và tính cấp thiết của việc phát hiện và nhận dạng tự động các cử chỉ tay của con người, luận văn này hướng đến nghiên cứu và phát triển một phương pháp nhận dạng cử chỉ tay của người từ dữ liệu video và đánh giá phương pháp dưới nhiều góc nhìn khác nhau. Mặc dù có rất nhiều các phương pháp khác nhau đã được đề xuất cho bài toán nhận dạng cử chỉ tay của người dựa trên tính chất của đặc trưng biểu diễn hoạt động hay giải thuật phân lớp sử dụng, luận văn này tập trung nghiên cứu một phương pháp học sâu để giải quyết bài toán nhận dạng cử chỉ bàn tay người từ video dưới các góc nhìn khác nhau. Các kỹ thuật học sâu đã được chứng minh là rất hiệu quả trong các bài toán nhận dạng, phân lớp đối tượng trong ảnh tĩnh. Thời gian gần đây, các kỹ thuật này cũng đang dần được nghiên cứu cho bài toán nhận dạng hoạt động từ video. Luận văn này sẽ tập trung nghiên cứu tìm hiểu kỹ thuật C3D (convolutional 3D) được đề xuất bởi Du Tran và các đồng nghiệp được trình bày trong tài liệu tham khảo [1]. 7 1.2. Mục tiêu và bố cục luận văn Luận văn này sẽ nghiên cứu kỹ thuật này trên cơ sở đánh giá tính hiệu quả của nó trên một loại dữ liệu về cử chỉ động của bàn tay người, đồng thời trả lời hai câu hỏi đặt ra: (1) Mô hình C3D đã được thử nghiệm đạt hiệu năng khá cao trên bộ dữ liệu lớn như UCF101, Sport1M. Liệu nó có còn tốt với bộ dữ liệu nhỏ như bộ dữ liệu 5 cử chỉ với 3 góc nhìn khác nhau hay 12 cử chỉ và 5 góc nhìn không? Liệu có các phương pháp nào biến đổi dữ liệu phù hợp để C3D học tốt hơn không? (2) Có thể giảm nhẹ cấu trúc C3D nguyên bản cho việc tối ưu hiệu năng của hệ thống không? Ngoài ra để nâng cao hiệu năng của C3D, luận văn cũng đã nghiên cứu và thực hiện một số cải tiến trong cách lấy mẫu các frames và tiền xử lý dữ liệu cũng như tăng cường dữ liệu. Các thực nghiệm được thực hiện trên hai bộ dữ liệu: 1) 5 đối tượng thực hiện 5 loại cử chỉ dưới 3 góc nhìn khác nhau, 2) 6 đối tượng thực hiện 12 loại cử chỉ dưới 5 góc nhìn khác nhau. Kết quả cho thấy các phương pháp biến đổi dữ liệu đề xuất thực sự giúp tăng độ chính xác của hệ thống, đồng thời giảm nhẹ được kích thước mô hình mà vẫn cho kết quả tốt. Tuy vậy, C3D mới cho kết quả khả quan trên cùng góc nhìn với các bộ dữ liệu kể trên. Cần thu thập thêm nhiều mẫu huấn luyện hơn nữa nếu muốn cải thiện chất lượng mô hình với các góc nhìn khác nhau. Đề tài được thực hiện tại viện nghiên cứu MICA dưới sự hướng dẫn của TS. Đinh Viết Sang. Cấu trúc của luận văn gồm 4 chương trình bày những vấn đề sau:  Chương 1: Đặt vấn đề, giới thiệu mục tiêu và bố cục luận văn.  Chương 2: Giới thiệu các cơ sở lý thuyết (học máy, mạng neural, mạng neural tích chập)  Chương 3: Giới thiệu các nghiên cứu liên quan đến bài toán nhận dạng cử chỉ tay và mạng neural tích chập C3D.  Chương 4: Các kết quả thực nghiệm trên mô hình C3D. Đầu tiên sẽ đưa ra mô tả dữ liệu thử nghiệm, môi trường thực nghiệm, các phương pháp tiền xử lý dữ liệu, độ đo đánh giá và các công nghệ sử dụng. Sau đó đánh giá kết quả giữa các thử nghiệm với nhau.  Kết luận: đưa ra kết luận những kết quả đạt được trong luận văn và định hướng phát triển cho bài toán. 8 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1. Một số khái niệm cơ bản của học máy 2.1.1. Học có giám sát (supervised learning) và học không giám sát (Unsupervised learning) Theo phương thức học, các thuật toán Machine Learning thường được chia làm 4 nhóm: Học có giám sát (Supervised learning), Học không giám sát (Unsupervised learning), học bán giám sát (Semi-supervised learning) và học củng cố (Reinforcement learning). Trong đó phương pháp học có giám sát và không giám sát là phổ biến hơn cả. Học có giám sát (Supervised learning) Supervised learning là thuật toán dự đoán đầu ra (outcome) của một dữ liệu mới (new input) dựa trên các cặp (input, outcome) đã biết từ trước. Cặp dữ liệu này còn được gọi là (data, label), tức (dữ liệu, nhãn). Supervised learning là nhóm phổ biến nhất trong các thuật toán Machine Learning. Một cách toán học, Supervised learning là khi chúng ra có một tập hợp biến đầu vào X={ x1,x2,…,xN } và một tập hợp nhãn tương ứng Y={ y1,y2,…,yN } trong đó xi,yi là các vector. Các cặp dữ liệu biết trước (xi,yi) được gọi là tập training data (dữ liệu huấn luyện). Từ tập training data này, chúng ta cần tạo ra một hàm số ánh xạ mỗi phần tử từ tập X sang một phần tử (xấp xỉ) tương ứng của tập Y: Yi ≈ f(xi), ∀i=1,2,…,N Mục đích là xấp xỉ hàm số f thật tốt để khi có một dữ liệu x mới, chúng ta có thể tính được nhãn tương ứng của nó y=f(x). Ví dụ 1: trong nhận dạng chữ viết tay, ta có ảnh của hàng nghìn ví dụ của mỗi chữ số được viết bởi nhiều người khác nhau. Chúng ta đưa các bức ảnh này vào trong một thuật toán và chỉ cho nó biết mỗi bức ảnh tương ứng với chữ số nào. Sau khi thuật toán tạo ra một mô hình, tức một hàm số mà đầu vào là một bức ảnh và đầu ra là một chữ số, khi nhận được một bức ảnh mới mà mô hình chưa nhìn thấy bao giờ, nó sẽ dự đoán bức ảnh đó chứa chữ số nào. 9 Hình 1. Bộ dữ liệu chữ viết tay mnist Ví dụ 2: Thuật toán dò các khuôn mặt trong một bức ảnh đã được phát triển từ rất lâu. Thời gian đầu, facebook sử dụng thuật toán này để chỉ ra các khuôn mặt trong một bức ảnh và yêu cầu người dùng tag friends - tức gán nhãn cho mỗi khuôn mặt. Số lượng cặp dữ liệu (khuôn mặt, tên người) càng lớn, độ chính xác ở những lần tự động tag tiếp theo sẽ càng lớn. Ví dụ 3: Bản thân thuật toán dò tìm các khuôn mặt trong 1 bức ảnh cũng là một thuật toán Supervised learning với training data (dữ liệu học) là hàng ngàn cặp (ảnh, mặt người) và (ảnh, không phải mặt người) được đưa vào. Chú ý là dữ liệu này chỉ phân biệt mặt người và không phải mặt người mà không phân biệt khuôn mặt của những người khác nhau. Thuật toán supervised learning còn được tiếp tục chia nhỏ ra thành hai loại chính: Classification (Phân loại) Một bài toán được gọi là classification nếu các label của input data được chia thành một số hữu hạn nhóm. Ví dụ: gmail xác định xem một email có phải là spam hay không; các hãng tín dụng xác định xem một khách hàng có khả năng thanh toán nợ hay không. Regression (Hồi quy) Nếu label không được chia thành các nhóm mà là một giá trị thực cụ thể thì bài toán sẽ đưa về dạng regression. Ví dụ: một căn nhà rộng x m2, có y phòng ngủ và cách trung tâm thành phố z km sẽ có giá là bao nhiêu? Học không giám sát (Unsupervised learning) Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ có dữ liệu đầu vào. Thuật toán unsupervised learning sẽ dựa vào cấu trúc của dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu 10 (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán. Một cách toán học, Unsupervised learning là khi chúng ta chỉ có dữ liệu vào X mà không biết nhãn Y tương ứng. Những thuật toán loại này được gọi là Unsupervised learning vì không giống như Supervised learning, chúng ta không biết câu trả lời chính xác cho mỗi dữ liệu đầu vào. Giống như khi ta học, không có thầy cô giáo nào chỉ cho ta biết đó là chữ A hay chữ B. Cụm không giám sát được đặt tên theo nghĩa này. Các bài toán Unsupervised learning được tiếp tục chia nhỏ thành hai loại: Clustering (phân nhóm) Một bài toán phân nhóm toàn bộ dữ liệu X thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm. Ví dụ: phân nhóm khách hàng dựa trên hành vi mua hàng. Điều này cũng giống như việc ta đưa cho một đứa trẻ rất nhiều mảnh ghép với các hình thù và màu sắc khác nhau, ví dụ tam giác, vuông, tròn với màu xanh và đỏ, sau đó yêu cầu trẻ phân chúng thành từng nhóm. Mặc dù không cho trẻ biết mảnh nào tương ứng với hình nào hoặc màu nào, nhiều khả năng chúng vẫn có thể phân loại các mảnh ghép theo màu hoặc hình dạng. Association Là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước. Ví dụ: những khách hàng nam mua quần áo thường có xu hướng mua thêm đồng hồ hoặc thắt lưng; những khán giả xem phim Spider Man thường có xu hướng xem thêm phim Bat Man, dựa vào đó tạo ra một hệ thống gợi ý khách hàng (Recommendation System), thúc đẩy nhu cầu mua sắm. 2.1.2. Học quá khớp (Overfitting), Học chưa khớp (Underfitting) và học vừa khớp (Goodfitting) Mô hình sau khi huấn luyện có thể đạt hiệu quả không tốt khi dự đoán với một dữ liệu mới. Chuyện này xảy ra là do mô hình chưa tổng quát hoá được với toàn bộ tập dữ liệu. Nguyên nhân cũng khá dễ hiểu khi mà tập huấn luyện chỉ là một tập nhỏ chưa thể đại diện cho toàn thể dữ liệu được và hơn nữa có thể nó còn bị nhiễu. Người ta chia nguyên nhân ra làm 2 loại chính là chưa khớp hoặc quá khớp. 11 Hình 2. Hình biểu diễn mô hình học chưa khớp (bên trái), học vừa khớp (ở giữa) và học quá khớp (bên phải) Học quá khớp (Overfitting) Học quá khớp đại diện cho việc mô hình rất khớp với tập huấn luyện nhưng khi đem ra dự đoán với dữ liệu mới thì lại không phù hợp. Nguyên nhân có thể do chưa đủ dữ liệu để đánh giá hoặc do mô hình của ta quá phức tạp. Mô hình bị quá phức tạp khi mà mô hình của ta sử dụng cả những nhiễu lớn trong tập dữ liệu để học, dấn tới mất tính tổng quát của mô hình. Ví dụ như ở hình 1 phía bên phải ở trên. Mô hình của ta gần như mong muốn bao được hết tất cả các điểm làm cho biên độ dao động của nó lớn quá mức. Mô hình này mà dự đoán với 1 giá trị mới của x thì khả năng y sẽ bị lệch đi rất nhiều. Học chưa khớp (Underfitting) Mô hình được coi là chưa khớp nếu nó chưa được chưa phù hợp với tập dữ liệu huấn luyện và cả các mẫu mới khi dự đoán. Nguyên nhân có thể là do mô hình chưa đủ độ phức tạp cần thiết để bao quát được tập dữ liệu. Ví dụ như hình 1 phía bên trái ở trên. Tập dữ liệu huấn luyện loanh quanh khúc y = sin(2πx) thế nhưng mô hình của ta chỉ là một đường thẳng mà thôi. Rõ ràng như vậy thì nó không những không thể ước lượng được giá trị của y với x mới mà còn không hiệu quả với cả tập dữ liệu (x,y) có sẵn. Học vừa khớp (Goodfitting) Mô hình này nằm giữa 2 mô hình chưa khớp và quá khớp cho ra kết quả hợp lý với cả tập dữ liệu huấn luyện và các giá trị mới, tức là nó mang được tính tổng quát như hình 1 ở giữa phía trên. Lý tưởng nhất là khớp được với nhiều dữ liệu mẫu và cả các dữ liệu mới. Tuy nhiên trên thực tế được mô hình như vậy rất hiếm. 12 Các độ đo (Metric) đánh giá mô hình 2.1.3. Một trong những độ đo đơn giản và thường được sử dụng trong các bài toán phân lớp là độ chính xác (accuracy). Độ đo này đơn giản tính tỉ lệ giữa số điểm được dự đoán đúng và tổng số điểm trong tập dữ liệu kiểm thử. Ví dụ, nếu có 6 điểm dữ liệu được dự đoán đúng trên tổng số 10 điểm. Vậy ta kết luận độ chính xác của mô hình là 0.6 (hay 60%). Cách tính sử dụng độ chính xác như ở trên chỉ cho chúng ta biết được bao nhiêu phần trăm lượng dữ liệu được phân loại đúng mà không chỉ ra được cụ thể mỗi loại được phân loại như thế nào, lớp nào được phân loại đúng nhiều nhất, và dữ liệu thuộc lớp nào thường bị phân loại nhầm vào lớp khác. Để có thể đánh giá được các giá trị này, tôi sử dụng một ma trận được gọi là ma trận nhầm lẫn (confusion matrix). Về cơ bản, ma trận nhầm lẫn thể hiện có bao nhiêu điểm dữ liệu thực sự thuộc vào một class, và được dự đoán là rơi vào một class. Để hiểu rõ hơn, hãy xem Bảng 1: Bảng 1. Ví dụ về ma trận nhầm lẫn Tổng cộng 10 mẫu Dự đoán là 0 Dự đoán là 1 Dự đoán là 2 Đúng: 0 2 1 1 Đúng: 1 1 2 0 Đúng: 2 0 1 2 Có tổng cộng 10 điểm dữ liệu. Chúng ta xét ma trận tạo bởi các giá trị tại vùng 3x3 trung tâm của bảng. Ma trận thu được được gọi là ma trận nhầm lẫn. Nó là một ma trận vuông với kích thước mỗi chiều bằng số lượng lớp dữ liệu. Giá trị tại hàng thứ i, cột thứ j là số lượng điểm lẽ ra thuộc vào class i nhưng lại được dự đoán là thuộc vào class j. Như vậy, nhìn vào hàng thứ nhất (0), ta có thể thấy được rằng trong số bốn điểm thực sự thuộc lớp 0, chỉ có hai điểm được phân loại đúng, hai điểm còn lại bị phân loại nhầm vào lớp 1 và lớp 2. 13 Chúng ta có thể suy ra ngay rằng tổng các phần tử trong toàn ma trận này chính là số điểm trong tập kiểm thử. Các phần tử trên đường chéo của ma trận là số điểm được phân loại đúng của mỗi lớp dữ liệu. Từ đây có thể suy ra độ chính xác chính bằng tổng các phần tử trên đường chéo chia cho tổng các phần tử của toàn ma trận. Phần tiếp theo sẽ mô tả mạng neural nhân tạo. 2.2. Tổng quan về mạng neural nhân tạo (Artificial neural network) Mạng neural nhân tạo được thiết kế dựa trên những nghiên cứu sinh học về bộ não người. Hình 3 minh họa cấu trúc của một neural của bộ não người. Hình 3 : Minh họa mạng nơ-ron của người (từ Rob Fergus) Neural là đơn vị tính toán cơ bản của não người. Dữ liệu được đưa tới các neural thông qua các Dendrite vào Nucleus để tính toán. Tín hiệu ra được xuất ra ở dây Axon. Các neural được liên kết với nhau thông qua các dây Synapse. Mạng neural của não người bao gồm rất nhiều phần tử như vậy liên kết với nhau. Dựa vào những quan sát trên, các nhà nghiên cứu đã thiết kế các mạng neural nhân tạo (artificial neural network) với hi vọng mô phỏng nguyên tắc hoạt động của não người sẽ cho kết quả tốt đối với các bài toán về trí tuệ nhân tạo. 2.3. Mạng neural tích chập (CNN) Convolutional Neural Network (CNNs – Mạng neural tích chập) là một trong những mô hình học sâu (deep learning) tiên tiến. Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay. Như hệ thống xử lý ảnh lớn như Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng thông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng tự động. 14 Theo toán học, tích chập là phép toán tuyến tính, cho ra kết quả là một hàm bằng việc tính toán dựa trên hai hàm đã có (f và g). Ví dụ: Đối với phép lọc ảnh, phép tích chập giữa ma trận lọc và ảnh, cho ra kết quả ảnh đã được xoá nhiễu (làm mờ). Thành phần không thể thiếu của phép tích chập là ma trận kernel (bộ lọc). Điểm neo (anchor point) của kernel sẽ quyết định vùng ma trận tương ứng trên ảnh để tích chập, thông thường anchor point được chọn là tâm của kernel. Giá trị mỗi phần tử trên kernel được xem như là hệ số tổ hợp với lần lượt từng giá trị độ xám của điểm ảnh trong vùng tương ứng với kernel. Phép tích chập được hình dung thực hiện bằng việc dịch chuyển ma trận kernel lần lượt qua tất cả các điểm ảnh trong ảnh, bắt đầu từ góc bên trái trên của ảnh. Và đặt anchor point tương ứng tại điểm ảnh đang xét. Ở mỗi lần dịch chuyển, thực hiện tính toán kết quả mới cho điểm ảnh đang xét bằng công thức tích chập. Xem minh hoạ thực hiện: Ảnh minh hoạ theo thứ tự từ trái qua phải và từ trên xuống dưới. Ảnh cuối cùng là kết quả sau khi thực hiện di chuyển kernel hết toàn bộ ảnh. Ký hiệu: (1) ảnh nguồn, (2) kernel, (3) ảnh kết quả. Hình 3. Minh họa thực hiện phép toán nhân chập Cấu trúc của mạng CNN 15 Hình 4. Cấu trúc mạng CNN cơ bản Mạng CNN là một tập hợp các lớp chủ yếu là Convolution chồng lên nhau và sử dụng các hàm kích hoạt phi tuyến như ReLU và tanh để kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo. Trong mô hình mạng truyền ngược (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp theo. Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer). Còn trong mô hình CNNs thì ngược lại. Các layer liên kết được với nhau thông qua cơ chế convolution. Lớp tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ. Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó. Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại. Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu). Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features. Layer cuối cùng được dùng để phân lớp ảnh. Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho ta các cấp độ biểu diễn 16 thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter. Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao. Cũng giống như cách con người nhận biết các vật thể trong tự nhiên. Mạng CNN sử dụng 3 ý tưởng cơ bản:  Các trường tiếp nhận cục bộ (local receptive field)  Trọng số chia sẻ (shared weights)  Tổng hợp (pooling) Trường tiếp nhận cục bộ (local receptive field) Đầu vào của mạng CNN là một ảnh. Ví dụ như ảnh có kích thước 28×28 thì tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ô trong ma trận. Trong mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối các neuron đầu vào vào tầng ảnh. Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5 tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một trọng số và mỗi neuron ẩn sẽ học một bias. Mỗi một vùng 5×5 đấy gọi là một trường tiếp nhận cục bộ. Hình 5. Mô tả trường tiếp nhận cục bộ 5x5 Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các cách sau: 17 Hình 6. Tạo neural đầu tiên trong lớp ẩn 1 Hình 7. Dịch bộ lọc (filter) qua một cột để tạo được neural ẩn thứ 2 với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trưng là shared weight và độ lệch xác định một feature map là shared bias. Như vậy đơn giản nhất là qua các bước trên chúng ta chỉ có 1 feature map.Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map. Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp. Trọng số chia sẻ (shared weight and bias) Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các neural trong lớp ẩn đầu sẽ phát hiện chính xác đặc trưng (feature) tương tự chỉ ở các vị trí khác nhau trong hình ảnh đầu vào. Chúng ta gọi việc map từ input layer sang hidden layer là một feature map. Vậy mối quan hệ giữa số lượng Feature map với số lượng tham số là gì? Chúng ta thấy mỗi fearture map cần 25 = 5×5 shared weight và 1 shared bias. Như vậy mỗi feature map cần 5×5+1 = 26 tham số. Như vậy nếu có 10 feature map thì có 10×26 = 260 tham số. Chúng ta xét lại nếu layer đầu tiên có kết nối đầy đủ nghĩa là chúng ta có 28×28=784 neuron đầu vào như vậy ta chỉ có 30 neuron ẩn. Như vậy ta cần 28x28x30 shared weight và 30 shared bias. Tổng số tham số là 28x28x30+30 tham số lớn hơn nhiều so với CNN. Ví dụ vừa rồi chỉ mô tả để thấy được sự ước lượng số lượng tham số chứ 18
- Xem thêm -

Tài liệu liên quan