TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỂN THÔNG ──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN
NHẬN DẠNG CỬ CHỈ TAY ĐỘNG SỬ DỤNG SỬ DỤNG MẠNG NEURON TÍCH CHẬP Sinh viên thực thực hiện : Đặng Mạnh Trường Lớp KSCLC HTTT&TT – K58 K58 Giáo viên hướng dẫn: PGS.TS. Trần Thị Thanh Hải
HÀ NỘI 6-2018 Sinh viên thực thực hiện: Đặng Mạnh Trường Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
1
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 1. Thông tin về sinh viên Họ và tên sinh viên: Đặng Mạnh Trường Điện thoại liên lạc 0962387593 Email: [email protected][email protected] Lớp: KSCLC Hệ thống thông tin và truyền thông K58 Hệ đào tạo: KSCLC-TN-TT Đồ án tốt nghiệp được thực hiện tại: Viện nghiên cứu quốc tế MICA – Trường – Trường Đại học Bách Khoa Hà Nội Thời gian làm ĐATN: Từ ngày 19/1/2018 đến 02/06/2018 2. Mục đích nội dung của ĐATN Nghiên cứu và thử nghiệm một kỹ thuật học sâu cho bài toán nhận dạng cử chỉ động của bàn tay người đa góc nhìn 3. Các nhiệm vụ cụ thể của ĐATN - Tìm hiểu bài toán nhận dạng cử chỉ động của bàn tay người từ video và các hướng giải quyết. - Tìm hiểu và thử nghiệm kỹ thuật mạng neuron tích chập 3 chiều. - Thử nghiệm kết hợp nhiều nguồn thông tin để nâng cao độ chính xác cho kỹ thuật. - Đánh giá độ chính xác, ưu nhược điểm của kỹ thuật nghiên cứu trên CSDL đa góc nhìn 4. Lời cam đoan của si nh viên: Đặng Mạnh Trường Tôi – Đặng - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của PGS. TS. Trần Thị Thanh Hải . Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác. ội, ngày Hà N ội,
tháng năm Tác giả ĐATN
Đặng Mạnh Trường Trường 5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ: Hà Nội, ngày tháng năm Giáo viên hướng dẫn
PGS.TS. Trần Thị Thanh Hải
Sinh viên thực thực hiện: Đặng Mạnh Trường Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
2
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 1. Thông tin về sinh viên Họ và tên sinh viên: Đặng Mạnh Trường Điện thoại liên lạc 0962387593 Email: [email protected][email protected] Lớp: KSCLC Hệ thống thông tin và truyền thông K58 Hệ đào tạo: KSCLC-TN-TT Đồ án tốt nghiệp được thực hiện tại: Viện nghiên cứu quốc tế MICA – Trường – Trường Đại học Bách Khoa Hà Nội Thời gian làm ĐATN: Từ ngày 19/1/2018 đến 02/06/2018 2. Mục đích nội dung của ĐATN Nghiên cứu và thử nghiệm một kỹ thuật học sâu cho bài toán nhận dạng cử chỉ động của bàn tay người đa góc nhìn 3. Các nhiệm vụ cụ thể của ĐATN - Tìm hiểu bài toán nhận dạng cử chỉ động của bàn tay người từ video và các hướng giải quyết. - Tìm hiểu và thử nghiệm kỹ thuật mạng neuron tích chập 3 chiều. - Thử nghiệm kết hợp nhiều nguồn thông tin để nâng cao độ chính xác cho kỹ thuật. - Đánh giá độ chính xác, ưu nhược điểm của kỹ thuật nghiên cứu trên CSDL đa góc nhìn 4. Lời cam đoan của si nh viên: Đặng Mạnh Trường Tôi – Đặng - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của PGS. TS. Trần Thị Thanh Hải . Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác. ội, ngày Hà N ội,
tháng năm Tác giả ĐATN
Đặng Mạnh Trường Trường 5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ: Hà Nội, ngày tháng năm Giáo viên hướng dẫn
PGS.TS. Trần Thị Thanh Hải
Sinh viên thực thực hiện: Đặng Mạnh Trường Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
2
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP ĐATN này tập trung giải quyết bài toán nhận dạng các cử chỉ động của tay người dưới các góc nhìn khác nhau. Đây là một bài toán có tính ứng dụng thực tiễn cao trong các hệ thống điều khiển thông minh. Có hai hướng tiếp cận chính để biểu diễn một hoạt động nói chung và cử chỉ tay động nói riêng. Hướng tiếp cận thứ nhất biểu diễn cử chỉ dựa trên các đặc trưng được thiết kế bằng tay. Hướng tiếp cận này thường phù hợp với các bài toán có tập dữ liệu nhỏ và đặc thù. Hướng tiếp cận thứ hai sử dụng kỹ thuật học sâu tiên tiến để tính toán tự động các đặc trưng từ dữ liệu thô. Hướng tiếp cận này đã đạt được nhiều kết quả ấn
tượng trên hầu hết các bài toán về thị giác máy tính như nhận dạng ảnh và video. Vì vậy, trong ĐATN này, em tiếp cận bài toán nhận dạng cử chỉ động của tay theo kỹ thuật học sâu. Có nhiều kiến trúc học sâu đã đạt kết quả tốt cho việc giải bài toán nhận dạng hoạt
động trong thời gian gần đây. Trong số các kỹ thuật đó, em tìm hiểu mạng neuron tích chập 3 chiều (C3D – 3D 3D convolutional neural netw ork) được trình bày trong tài liệu tham khảo [1]. Đây là một kỹ thuật cho phép trích chọn các đặc trưng một cách cô đọng phù hợp với dữ liệu là luồng video (có tính đến yếu tố thời gian). Các đánh giá thực nghiệm cho thấy kỹ thuật này cho kết quả tốt trên một số CSDL dùng chung về hoạt động của cộng đồng nghiên cứu như UCF101, HMDB51 . Trong ĐATN này, em sẽ nghiên cứu kỹ thuật này và đá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. ĐATN của em sẽ trả lời hai câu hỏi đặt ra: (1) K ỹ thuật C3D vốn được thử nghiệm trên các dữ liệu về hoạt động nói chung. Liệu C3D có phù hợp cho việc nhận dạng các cử
chỉ tay người trong đó đối tượng động duy nhất trong cảnh là bàn tay người có độ phân giải không gian tương đối nhỏ trong ảnh? (2) K ỹ thuật C3D đã được đánh giá trên các CSDL các
hoạt động hỗn tạp. Chưa có một nghiên cứu chuyên sâu liệu C3D có hiệu quả
khi các góc nhìn thay đổi ? Ngoài ra để nâng cao hiệu năng của C3D, em 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à đánh giá hiệu quả của C3D khi có thêm luồng dữ liệu quang học (optical flow). Các thực nghiệm được thực hiện
trên bộ dữ liệu gồm các video của 5 đối tượng thực hiện 5 loại cử chỉ dưới 3 góc nhìn khác nhau tại Viện MICA. Kết quả cho thấy phương pháp đề xuất khá ổn định khi sự thay đổi
góc nhìn là nhỏ. Kết quả này có thể cải tiến thêm nếu tích hợp những đặc trưng bất biến với góc nhìn vào quá trình học.
Sinh viên thực thực hiện: Đặng Mạnh Trường Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
3
ABSTRACT OF THESIS In this report, I focus on solving the hand gesture recognition problem under different viewpoints. This problem plays an important role in intelligent control systems . There are two main approaches to modelling an action and particularly a hand gesture. The first approach represents gestures using hand-crafted features. This is usually preferred on small datasets with some specific characteristics. The second approach applies deep learning methods to automaticlly extract relevant features directly from raw data. Recently this line of research has achieved very impressive results on most computer vision problems on images and video. Therefore, in this thesis, the problem of hand gesture recognition is approached from a deep learning perspective. In recent years there has been many sucessful deep architectures in action recognition. Amongst them, I focus on 3D c onvolutional neural network – C3D, as described in
[1]. This method extracts compact and simple video descriptors,
which are suitable for video streams. Experimental results show that this architecture gives good results on a number of public datasets on action recognition such as UCF101 and HMDB51. In this thesis, I focus on applying this method and evaluate its effectiveness on a type of dataset on hand gesture. This thesis answers two questions: (1) Would C3D, a deep architecture tested on general action recogntion dataset, also be suitable for hand gesture recognition on datasets in which the only moving object is the hand, with a relatively low spatial resolution? (2) The original C3D network was trained on varying viewpoints. What are the effects of different viewpoints on hand gesture recognition using C3D? In order to further increase C3D recognition results, I have also researched and applied some novel methods on frame sampling in video and evaluated C3D results when RGB frames are used in conjuction with optical flow features. The tests were carried out on a dataset performed by 5 subjects doing 5 different actions under 3 different viewpoints at MICA institute. The results show that the proposed method is relatively stable under small changes in viewpoint. This can be further improved if view-invariant features are incorporated into the learning process. .
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
4
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
5
LỜI CẢM ƠN Đầu tiên, em xin gửi lời cảm ơn chân thành đến cô Trần Thị Thanh Hải vì đã hướng dẫn ân cần, tận tình, và kiên nhẫn với em và tạo động lực cho em trong khoảng thời gian thực hiện đồ án tốt nghiệp này. Em cũng xin chân thành cảm ơn Viện Nghiên cứu Quốc tế MICA đã tạo cho em một môi trường thuận lợi để học tập và nghiên cứu. Em cũng xin gửi lời cảm ơn đến tất cả các thầy cô Viện Công nghệ thông tin nói riêng và các thầy cô Trường Đại học Bách k hoa Hà Nội nói chung trong suốt thời gian học trên giảng đường đã truyền đạt cho em những kiến thức cần thiết. Em cũng xin gửi lời cảm ơn đến tất cả các bạn cùng lớp đã đồng hành cùng em trong suốt thời gian học và làm việc, đã giúp đỡ động viên em rất nhiều. Em xin gửi lời cảm ơn đến gia đình đã luôn quan tâm, ủng hộ hết lòng về vật chất và tinh thần trong suốt thời gian qua. 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. Em rất mong nhận được sự đóng góp quý báu của thầy cô và các bạn. Cuối cùng, em 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 2018 Sinh viên
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
6
MỤC LỤC PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ..............................................................2 TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP ................................................................... 3 ABSTRACT OF THESIS ...................................................................................................... 4
LỜI CẢM ƠN ........................................................................................................................ 6 MỤC LỤC ............................................................................................................................. 7 DANH MỤC HÌNH ẢNH ................................................................................................... 10 DANH MỤC BẢNG ...........................................................................................................12 DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ ...............................................................13 MỞ ĐẦU ............................................................................................................................. 14 CHƯƠNG 1: TỔNG QUAN VỀ NHẬN DẠNG CỬ CHỈ TAY NGƯỜI VÀ VẤN ĐỀ ĐẶT RA VỚI ĐỒ ÁN ......................................................................................................... 16 1.1.
Một số khái niệm ................................................................................................... 16
1.2.
Một số nghiên cứu liên quan về nhận dạng cử chỉ tay người ................................ 17
1.2.1. Hướng tiếp cận biểu diễn hoạt động dựa trên đặc trưng trích chọn được thiết
kế bằng tay (hand -crafted features) ............................................................................. 17 1.2.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 ..................... 18 1.2.3. Nhận xét chung .............................................................................................. 19 1.3.
Mục tiêu của đồ án ................................................................................................ 20
CHƯƠNG 2: MẠNG NƠ RON TÍCH CHẬP CHO BÀI TOÁN NHẬN DẠNG CỬ CHỈ TAY NGƯỜI ....................................................................................................................... 21 2.1. Giới thiệu chung về mạng nơ - ron tích chập ............................................................21 2.1.1. Mạng nơ -ron nhân tạo (artificial neural network) . ............................................ 21 2.1.1.1 Cấu trúc mạng nơ -ron ..................................................................................21 2.1.1.2 Huấn luyện mạng nơ -ron .............................................................................23 2.1.2. Mạng nơ -ron tích chập ......................................................................................24
2.1.2.1 Cấu trúc: ....................................................................................................... 26 2.1.2.2 Học chuyển tiếp (transfer learning): ............................................................28 2.1.2.3 Áp dụng cho bài toán nhận dạng hoạt động của video: ............................... 29 2.1.3. Một số kiến trúc của CNN cho bài toán nhận dạng cử chỉ ............................... 29 2.1.3.1 Nhận dạng cử chỉ nói chung ............................................................................ 29 2.1.3.2 Nhận dạng cử chỉ tay động ..........................................................................31 2.1.3.3 Một số nhận xét ............................................................................................ 33 Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
7
2.2. Mạng nơ ron tích chập 3 chiều ................................................................................. 34 CHƯƠNG 3: NHẬN DẠNG CỬ CHỈ TAY NGƯỜI DƯỚI CÁC GÓC NHÌN KHÁC NHAU TỪ ẢNH RGB VÀ LUỒNG QUANG HỌC SỬ DỤNG MẠNG C3D VÀ BỘ PHÂN LỚP SVM ................................................................................................................ 36 3.1. Mô hình đề xuất nghiên cứu ..................................................................................... 36
3.1.1 Mô hình kiến trúc mạng C3D nguyên bản trên luồng RGB [1] ........................ 36 3.1.2 Mô hình kiến trúc mạng C3D hai luồng (RGB+OpticalFlow) [21] ................... 36 3.1.3 Xử lý vấn đề lấy mẫu trên video ........................................................................ 40 3.2
Triển khai mô đun nhân dạng hoạt động dưới các góc nhìn khác nhau ................ 42
3.2.1
Framework tổng quát ..................................................................................... 42
3.2.2
Môi trường lập trình và thư viện sử dụng để triển khai mô đun nhận dạng .. 44
3.2.3
Cài đặt và tích hợp mô đun nhận dạng hoạt động . ......................................... 45
3.2.4
Dữ liệu thử nghiệm và phương pháp đánh giá . .............................................. 51
3.3 Kết quả thử nghiệm ................................................................................................... 54 3.3.1 Với mô hình kiến trúc mạng C3D nguyên bản trên dữ liệu video gốc .............. 55 3.3.2 Với mô hình kiến trúc mạng C3D nguyên bản thử nghiệm trên dữ liệu trên video đã phân vùng bàn tay .........................................................................................57 3.3.3 Với mô hình kiến trúc mạng C3D sử dụng kỹ thuật chia thành các segment 16 đoạn với việc lấy mẫu ngẫu nhiên. .............................................................................. 58 3.3.4 Với mô hình kiến trúc mạng C3D sử dụng kỹ thuật chọn ra 16 frame mấu chốt [24] .............................................................................................................................. 59
3.3.5 Với mô hình kiến trúc mạng C3D với OF (optical flow) trong các chiến thuật early fusion và late fusion ........................................................................................... 59
3.3.5.1 Kết quả với luồng quang học sử dụng kiến trúc mạng đã được khởi tạo trên tập Sport1m ..............................................................................................................59 3.3.5.2 Kết quả với luồng quang học sử dụng kiến trúc mạng đã được khởi tạo trên ảnh quang học của tập UCF101 ............................................................................... 60 3.3.5.3 Kết quả sử dụng kiến trúc Twostream theo [21] (early fusion) .................. 60 3.3.5.4 Kết quả sử dụng kiến tr úc Twostream theo [21] (late fusion) .................... 61 3.3.5.5 Kết quả sử dụng kiến trúc Twostream với cả hai luồng đều được huấn luyện trước trên ảnh RGB của tập Sport1m (early fusion): . .............................................. 61 3.3.5.6 Kết quả sử dụng kiến trúc Twostream với cả hai luồng đều được huấn luyện trước trên ảnh RGB của tập Sport1m (late fusion): ................................................. 61 Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
8
CHƯƠNG 4: KẾT LUẬN ................................................................................................... 64 4.1.
Kết quả đạt được ................................................................................................... 64
4.2. Những điểm còn hạn chế .......................................................................................64 4.3.
Hướng phát triển ................................................................................................... 64
TÀI LIỆU THAM KHẢO ................................................................................................... 66 PHỤ LỤC ............................................................................................................................ 68
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
9
DANH MỤC HÌNH ẢNH Hình 1 : Các bước xử lý trong hệ thống nhận dạng sử dụng đặc trưng trích chọn được thiết
kế bằng tay ........................................................................................................................... 17 Hình 2 : Minh họa mạng nơ -ron của người (từ Rob Fergus) . .............................................. 21 Hình 3 : Chữ số 6 được viết tay. Bên trái là ảnh gốc, ở giữa là ảnh được phóng to, bên phải
là ảnh gốc đã được quay một góc 30 độ. Tham khảo của [13] ............................................ 25 Hình 4 : Cấu trúc của một CNN thông thường. Bên trái là ảnh đầu vào, ở giữa là tầng tích
chập (convolutional layer), bên phải là tầng lấy mẫu con (subsampling layer). Tham khảo của [13] ............................................................................... Error! Bookmark not defined. Hình 5 : Hàm sigmoid và hàm ReLU .................................. Error! Bookmark not defined. Hình 6 : Kiến trúc CNN trong [15] ..................................................................................... 27 Hình 7 : Kiến trúc của [7] ................................................................................................... 30 Hình 8 : Kiến trúc của mạng 2 luồng trong [8] .................................................................... 30 Hình 9 : Kiến trúc HRN-LRN trong [10] ........................................................................... 32 Hình 10 : Kiến trúc của [11] ............................................................................................... 33 Hình 11 : Minh họa phép toán tích chập 3 chiều [1] .......................................................... 34 Hình 12 : Kiến trúc mạng C3D [1] .....................................................................................35 Hình 13 : Kiến trúc mạng C3D [1] .....................................................................................36 Hình 14 : Tính toán Optic al flow sử dụng phương pháp trong [20]. (a) (b) 2 frame liên tiếp
trong một video (c) Thành phần luồng quang học theo phương ngang (d) Thành phần luồng quang học theo phương đứng ............................................................................................... 38 Hình 15 : Kiến trúc kết hợp thông tin ảnh RGB và ảnh luồng quang học [21] .................. 40 Hình 16 : a) 8 frame đầu của 1 video. b) 8 frame được lấy ngẫu nhiên từ cả video. Ta thấy
trường hợp b) chỉ sử dụng 8 frame ngẫu nhiên nhưng cũng miêu tả đủ toàn bộ chuyển động trong video. ..........................................................................................................................41 Hình 17 : Framework tổng quát của nhận dạng cử chỉ tay động sử dụng C3D ............ Error! Bookmark not defined.
Hình 18 : Sơ đồ học chuyển tiếp (transfer learning) sử dụng mạng C3D ........................... 49 Hình 19 : Sơ đồ trích xuất đặc trưng sử dụng mạng C3D ................................................... 51 Hình 20 : 1 số cử chỉ có tính chất chu kỳ đóng trong nghiên cứu của [4] .......................... 52 Hình 21 : Vị trí của các Kinect đối với đối tượng ............................................................... 52 Hình 22 : Hành động 1_ON_OFF, góc nhìn Kinect 5, đối tượng Hùng . ............................. 53 Hình 23 : Hành động 2_UP, góc nhìn Kinect 1, đối tượng Bình . ........................................ 53 Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
10
Hình 24 : Hành động 3_DOWN, góc nhìn Kinect 1, đối tượng Giang ............................... 53 Hình 25 : Hành động 4_LEFT, góc nhìn Kinect 3, đối tượng Tân ......................................54 Hình 26 : Hành động 5_RIGHT, góc nhìn Kinect 3, đối tượng Thuần ............................... 54 Hình 27 : Góc nhìn Kinect 1, đối tượng Bình, thực hiện hành động 5_RIGHT (1 số frame
đầu tiên) ............................................................................................................................... 56 Hình 28 : So sánh 2 góc nhìn Kinect 1 (nghiêng 90 độ) và Kinect 3 (nghiêng 45 độ) với
hành động 2_UP. Ta thấy rằng do Kinect 1 được đặt khá gần đối tượng nên bàn tay biến mất khỏi video khi giơ lên. .................................................................................................. 56 Hình 29 : Góc nhìn Kinect 5, đối tượng Hùng, thực hiện hành động 3_DOWN (1 số frame
đầu tiên) ............................................................................................................................... 57 Hình 30 : Ảnh gốc và vùng mặt nạ bàn tay để từ đó tách ra vùng bàn tay. .........................57 Hình 31 : Kiến trúc của hai luồng sử dụng trong chiến thuật Twostream với cả hai luồng
đều được huấn luyện trước trên ảnh RGB của tập Sport1m ................................................ 61
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
11
DANH MỤC BẢNG Bảng 1: Kết quả sử dụng mạng C3D huấn luyện trước trên tập dữ liệu Sport1m ............... 55 Bảng 2 : Kết quả khi thực hiện theo phương pháp của [18] Error! Bookmark not defined. Bảng 3: Kết quả với luồng quang học khi sử dụng kiến trúc mạng C3D đã được khởi tạo trên ảnh RGB của tập Sport1m ............................................................................................ 59 Bảng 4: Kết quả với luồng quang học khi sử dụng kiến trúc mạng C3D đã được khởi tạo trên ảnh luồng quang học của tập UCF101 .......................... Error! Bookmark not defined.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
12
DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ Từ viết tắt, Từ đầy đủ
Ý nghĩa
thuật ngữ CNN
Convolutional Neural Networks
RCNN
Region-based
Mạng nơ ron tích chập
Convolutional Mạng nơ ron tích chập trên vùng
Neural Networks PCNN
Pose-based Convolutional Neural Mạng nơ ron tích chập dựa trên hình
trạng
Networks C3D
3D
Convolutional
Neural Mạng nơ ron tích chập 3 chiều
Networks STIP
Spatio-temporal interest points
Điểm đặc trưng không gian -thời gian
GPU
Graphical Processing Unit
Bộ xử lý đồ họa
SVM
Support Vector Machine
Máy vectơ hỗ trợ
ReLU
Rectified Linear Unit
Đơn vị tuyến tính chỉnh lưu
FC
Fully-connected
(Tầng) kết nối đầy đủ
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
13
MỞ ĐẦU Bài toán nhận dạng hoạt động người đã thu hút sự quan tâm nghiên cứu của các nhà khoa học trong hơn 3 thập kỷ gần đâ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, tương tác người máy 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 thiết bị gia dụng). 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, trong ĐATN này em 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 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, trong khuôn khổ của ĐATN này, em 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. Mỗi kiến trúc mạng cũng như cách thiết kế dữ liệu sẽ cho hiệu quả khác nhau trên cùng CSDL dùng chung. Trong ĐATN này, em 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]. Trong ĐATN này, em sẽ nghiên cứu kỹ thuật này và đá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. ĐATN của em sẽ trả lời hai câu hỏi đặt ra: (1) Kỹ thuật C3D vốn được thử nghiệm trên các dữ liệu về hoạt động nói chung. Liệu C3D có phù hợp cho việc nhận dạng các cử chỉ tay người trong đó đối tượng động duy nhất trong cảnh là bàn tay người có độ phân giải không gian tương đối nhỏ trong ảnh? (2) Kỹ thuật C3D đã được đánh giá trên các CSDL các hoạt động hỗn tạp. Chưa có một nghiên cứu chuyên sâu liệu C3D có hiệu quả khi các góc nhìn thay đổi ? Ngoài ra để nâng cao hiệu năng của C3D, em 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à đá nh giá hiệu quả của C3D khi có thêm luồng dữ liệu quang học (optical flow). Các thực nghiệm Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
14
được thực hiện trên bộ dữ liệu gồm các video của 5 đối tượng thực hiện 5 loại cử chỉ dưới 3 góc nhìn khác nhau tại Viện MICA. Kết quả cho thấy phương pháp đề xuất khá ổn định khi sự thay đổi góc nhìn là nhỏ. Kết quả này có thể cải tiến thêm nếu tích hợp những đặc trưng bất biến với góc nhìn vào quá trình học . Đề tài được thực hiện tại phòng Computer Vision, Viện MICA dưới sự hướng dẫn của PGS. TS. Trần Thị Thanh Hải . Cấu trúc của ĐATN gồm 4 chương trình bày những vấn đề sau: -
Chương 1: Tổng quan về nhận dạng cử chỉ tay người và vấn đề đặt ra với đồ án
-
Chương 2: Nghiên cứu mạng nơ ron tích chập 3 chiều (C3D) cho bài toán nhận dạng cử chỉ tay người .
-
Chương 3: Đánh gi á thử nghiệm nhận dạng cử chỉ tay người dưới các góc nhìn khác nhau từ ảnh RGB và luồng quang học
-
Chương 4: Kết luận và hướng phát triển
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
15
CHƯƠNG 1: TỔNG QUAN VỀ NHẬN DẠNG CỬ CHỈ TAY NGƯỜI VÀ VẤN ĐỀ ĐẶT RA VỚI ĐỒ ÁN 1.1.
Một số khái niệm Cùng với sự tiến bộ của công nghệ hiện nay, giao tiếp giữa con người với máy tính
đang trở nên tự nhiên, đồng thời gần hơn với giao tiếp giữa con người với con người. Một trong các phương pháp giao tiếp tự nhiên giữa người với người là dựa trên ngôn ngữ cơ thể, cụ thể là cử chỉ của tay. Xu hướng cho phép máy tính nhận dạng cử chỉ tay người theo thời gian thực đã xuất hiện trên một số sản phẩm thương mại như tivi thông minh Samsung, cảm biến Kinect cho máy chơi game Xbox360 của Microsoft, DepthSense của SoftKinect, camera Creati ve Interactive Gesture của Intel, tivi tích hợp nhận dạng khuôn
mặt và bàn tay của hãng Omron, hay thiết bị của Leap Motion. Thông thường, bài toán nhận dạng cử chỉ tay được phân làm những loại loại sau: - Nhận dạng cử chỉ tay tĩnh ( static hand gesture recognition): Cử chỉ tay tĩnh là cử
chỉ trong đó hình trạng của bàn tay không thay đổi trong thời gian thực hiện cử chỉ. Vì vậy, việc nhận dạng cử chỉ tay tĩnh thường được thực hiện trên từng ảnh. - Nhận dạng cử chỉ quỹ đạo tay (hand trajectory gesture recognition): Nhận dạng cử
chỉ tay có xét tới dữ liệu tuần tự của quỹ đạo tay và khai thác thông tin về thời gian của chuyển động. Ở đây giả thiết video đã được phân vùng về mặt thời gian (tức là chỉ chứa duy nhất một cử chỉ ). - Nhận dạng cử chỉ tay liên tục (continuous hand gesture recognition ): Khác với
nhận dạng cử chỉ quỹ đạo tay (hand trajectory gesture recognition), bài toán nhận dạng cử chỉ tay liên tục (continous hand gesture recognition) yêu cầu cả việc phát hiện thời điểm bắt đầu và kết thúc của hành động (có thể nhiều lần) . Trong khuôn khổ của ĐATN, em hướng đến giải quyết bài toán thứ 2, tức là nhận dạng cử chỉ tay với video đã được phân vùng về mặt thời gian (tức là đã xác định sẵn thời điểm bắt đầu và kết thúc của chuyển động). Một hệ thống nhận dạng thông thường được thực hiện thông qua 2 pha: -
Pha huấn luyện: Sử dụng bộ dữ liệu cần học đưa vào huấn luyện để đưa ra mô hình nhận dạng.
-
Pha nhận dạng: Sử dụng mô hình vừa huấn luyện được ở trên để thực hiện phân lớp dữ liệu mới.
Trong mỗi pha đều có các khối xử lý cơ bản như sau: Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
16
-
Tiền xử lý dữ liệu: Chuyển đổi dữ liệu đầu vào sang định dạng chuẩn với mô hình.
-
Trích chọn đặc trưng: Từ dữ liệu đã được tiền xử lý, thực hiện trích rút các đặc trưng biểu diễn hoạt động. Các đặc trưng này có thể được thiết kế bằng tay hoặc được học bởi kỹ thuật học sâu.
-
Huấn luyện bộ phân lớp: sử dụng các đặc trưng được trích chọn để làm dữ liệu đầu vào cho việc huấn luyện bộ phân lớp.
- Nhận dạng: dữ liệu cần nhận dạng cũng được chuyển qua các bước tiền xử lý, trích
chọn đặc trưng, sau đó dùng bộ phân lớp đã được huấn luyện để dự đoán. 1.2.
Một số nghiên cứu liên quan về nhận dạng cử chỉ tay người
1.2.1.
Hướng tiếp cận biểu diễn hoạt động dựa trên đặc trưng trích chọn được thiết kế bằng tay (hand -crafted features) Đặc trưng thiết kế bằng tay (handcrafted feature) là các đặc trưng được thiết kế từ
trước, nhằm đưa ra cấu trúc đặc trưng phù hợp nhất với từng đối tượng hoặc hoạt động. Nhờ vậy mà các mô hình cải thiện được độ chính xác của mình. Đây là công việc đòi hỏi sự sáng tạo và thời gian của các nhà khoa học dữ liệu. Các đặc trưng giúp cho việc chuyển đổi dữ liệu thô ban đầu thành tập các thuộc tính giúp biểu diễn dữ liệu tốt hơn, giúp tương thích với từng mô hình dự đoán cụ thể, cũng như cải thiện độ chính xác của mô hình hiện tại.
Hình 1 : Các bước xử lý
trong hệ thống nhận dạng sử dụng đặc trưng trích chọn được thiết kế bằng tay
Hình 1 minh họa hệ thống tổng quát sử dụng đặc trưng được thiết kế bằng tay. Sơ đồ này
gồm 2 khối chính là: -
Khối trích chọn đặc trưng bằng tay: Nhận đầu vào là các pixel của ảnh và đưa ra các đặc trưng cho ảnh đó. Đặc trưng ở khối này được chọn từ trước tùy theo yêu cầu bài toán và đặc điểm của từng dataset.
-
Khối phân lớp: Là một bộ phân lớp được huấn luyện từ trước với đầu vào là các đặc trưng được xuất ra từ khối trích chọn đặc trưng và đưa ra nhãn lớp tương ứng.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
17
Hiện nay, trên thế giới đã có rất nhiều đặc trưng được thiết kế để giải quyết bài toán nhận dạng cử chỉ tay. Trong [2] các tác giả sử dụng mô hình Hidden Markov Model để biểu diễn chuyển động liên tục của bàn tay, và các thông số của mô hình được học từ tập dữ liệu CyberGlove. [3] kết hợp thông tin ảnh RGB và ảnh độ sâu (depth map): các đặc trưng của bàn tay được học ở mức từng khung ảnh RGB còn thông tin khớp xương được học bằng
ảnh độ sâu, và chúng được kết hợp sử dụng phương pháp Extreme Learning Machine. Trong [4] các tác giả đã phát triển 1 hệ thống nhận dạng cử chỉ tay để điều khiển thiết bị,
bằng cách sử dụng những cử chỉ có tính chu kỳ đóng. Do tính chu kỳ của các cử chỉ được định nghĩa, các tác giả chỉ ra rằng những vấn đề kỹ thuật như phát hiện điểm bắt đầu và kết thúc cử chỉ có thể được xử lý dễ dàng. Thông tin về hình dạng bàn tay được khai thác qua thuật toán giảm số chiều phi tuyến ISOMAP, còn quỹ đạo chuyển động được trích xuất bằng cách sử dụng kỹ thuật Kanade-Lucas-Tomasi (KLT), trước khi được kết hợp bằng 1 phương pháp nội suy đơn giản để tái tạo chuỗi ảnh được chuẩn hóa về pha. Cuối cùng, đầu ra được phân loại bằng bộ phân lớp SVM [5]. 1.2.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 Kỹ thuật học sâu (Deep learning) là một thuật toán học máy được xây dựng dựa
trên một số ý tưởng mô phỏng hệ thống não bộ của con người. Nó biểu diễn dữ liệu thông qua nhiều tầng từ cụ thể đến trừu tượng qua đó trích rút được các đặc trưng có ý nghĩa trong nhận dạng đối tượng ảnh. Thuật toán học sâu đã đạt được nhiều thành công trong bài toán xử lý ảnh hay nhận dạng giọng nói. Khác với đặc trưng được thiết kế bằng tay, kỹ thuật học sâu sẽ học các đặc trừng từ dữ liệu ảnh thô ban đầu. Có rất nhiều công trình liên quan đến bài toán nhận dạng hoạt động sử dụng kỹ thuật học sâu. Bài báo trình bày trong [6] sử dụng R*CNN (Region -based Convolutional Neural Networks) để nhận dạng ngữ cảnh của hành động. Mô hình này xác định 2 phạm vi: phạm vi thứ nhất là vị trí của người thực hiện hành động trong video, phạm vi thứ 2 là các vùng đề xuất có liên quan đến hành động của người. Từ các vùng đề xuất giải thuật chọn vùng có thông tin lớn nhất và cộng thêm vào thông tin của vùng phạm vi thứ nhất để đưa ra kết quả cuối cùng. Nhóm tác giả trong [7] đề xuất kỹ thuật nhận dạng dạng dưa hình trạng P-CNN (Pose-based Convolutional Neural Networks). Mô hình P-CNN xác định vị trí của
các bộ phận cơ thể và theo dõi các hoạt động của c húng. Trong [8], nhóm tác giả sử dụng mạng CNN 2 luồng dữ liệu RGB và luồng quang học (Optical flow) trích thông tin về chiều thời gian và tăng độ chính xác của mô hình. [9] phát triển phép toán tích chập 2 Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
18
chiều thành 3 chiều để tăng thêm thông tin về chiều thời gian. [1] đã sử dụng ý tưởng phép toán tích chập 3 chiều để thí nghiệm tìm ra tham số tốt nhất cho mô hình. Đã có rất nhiều nghiên cứu về việc áp dụng những kỹ thuật học sâu nhận dạng hoạt động cho bài toán nhận dạng cử chỉ tay động. [10] kết hợp thông tin ảnh RGB và ảnh độ sâu bằng cách kết hợp giữa một mạng có độ phân giải cao (high resolution network – HRN) và mạng có độ phân giải thấp (low resolution network – LRN). Xác suất dự đoán cho mỗi lớp được tính bằng tích xác suất dự đoán của mỗi mạng. Trong [11] tác giả kết hợp bài toán phát hiện và nhận dạng cử chỉ bàn tay bằng cách sử dụng một mạng nơ -ron tích chập 3 chiều hồi quy (recurrent three -dimensional convolutional neural network) , kết hợp với phương pháp Connectionist temporal classification (CTC). Các tác giả cũng đã tiến hành thử nghiệm trên một tập dữ liệu gồm 1532 cử chỉ bàn tay, thực hiện bởi 20 đối tượng, trong môi trường mô phỏng việc lái xe, dưới cả điều kiện rất sáng lẫn ánh sáng mờ. [12] đề xuất một kiến trúc mạng CNN 3 chiều cho bài toán nhận dạng cử chỉ bàn tay liên
tục (continuous hand gesture recognition) được khởi tạo từ kiến trúc của [1], trong đó mỗi frame của một chuỗi cử chỉ được biểu diễn bằng một khối không -thời gian (spatiotemporal volume) của 16 frame màu lân cận. Sau đó các tác giả sử dụng cửa sổ trượt theo toàn bộ video để được xác suất lớp cho mỗi frame, trước khi cho vào hai lớp lọc đa số và đưa ra dự đoán cuối cùng. 1.2.3.
Nhận xét chung Hướng biểu diễn dựa trên đặc trưng được trích xuất bằng tay cho kết quả khá tốt
trên các tập dữ liệu nhỏ và có một số đặc điểm nhất định. Tuy vậy trên thực tế, dữ liệu được thu nhận được ở các điều kiện khác nhau và đa dạng. Cử chỉ tay người có thể bị che khuất bởi các vật thể phía trước hay dữ liệu nhận được ở trong các khung cảnh khác nhau . Do đó, đối với cơ sở dữ liệu lớn thì việc sử dụng phương pháp này là khá khó khăn. Kỹ thuật học sâu có thể cải thiện phần nào các thách thức này. Khác với đặc trưng trích xuất bằng tay, kỹ thuật học sâu không phụ thuộc vào sự đa dạng của bộ dữ liệu. Kỹ thuật này có thể xây dựng bộ trích xuất đặc trưng dựa trên việc học cách biểu diễn chúng. Tuy nhiên, kỹ thuật này đòi hỏi một lượng dữ liệu đủ lớn để đạt độ chính xác cho mô hình và dữ liệu phải đủ tốt và bao quát toàn bộ các tình huống thực tế. Hơn nữa, việc tìm ra các tham số và kiến trúc phù hợp cần rất nhiều thời gian để thử nghiệm.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
19
1.3.
Mục tiêu của đồ án Kỹ thuật học sâu là kỹ thuật có nhiều tiềm năng trong tương lai. Rất nhiều nhà
nghiên cứu đã thử nghiệm trên các mô hình khác nhau để tìm ra một kiến trúc phù hợp. Cùng với sự bùng nổ dữ liệu trên toàn cầu từ các mạng xã hội như facebook, youtube, đã có rất nhiều bộ dữ liệu được xây dựng như Sport1M chứa hơn 1 triệu video với 487 lớp, UCF 101 chứa 13320 video thuộc 101 lớp... Hơn nữa, với sự phát triển nhanh chóng của khoa học và kỹ thuật, máy tính, siêu máy tính với card đồ họa cho phép giải các bài t oán dữ liệu lớn. Nhờ đó việc thời gian tính toán được giảm đi hàng chục lần so với ban đầu. Kỹ thuật C3D được trình bày trong [1] đã được đánh giá thử nghiệm với nhiều bộ tham số khác nhau và đã cho kết quả khá cao. Trong ĐATN này em tập trung vào việc phân tích ảnh hưởng của góc nhìn đối với phương pháp được đề xuất, bằng cách thử nghiệm trên tập dữ liệu được thu thập gồm các video của 5 đối tượng, thuộc 5 lớp hoạt động dưới 3 góc nhìn khác nhau. Phương pháp thực nghiệm là cross -validation leave-onesubject-out với tập kiểm tra trên các góc nhìn khác nhau, để khảo sát ảnh hưởng của góc nhìn. Trong chương 2 tiếp theo, em sẽ trình bày các lý thuyết cơ bản về mạng học sâu và
mạng neuron tích chập 3 chiều C3D. Các mở rộng và triển khai cài đặt và thử nghiệm đánh giá mạng C3D trên dữ liệu cử chỉ động của bàn tay sẽ được trình bày trong chương 3.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
20
CHƯƠNG 2: MẠNG NƠ RON TÍCH CHẬP CHO BÀI TOÁN NHẬN DẠNG CỬ CHỈ TAY NGƯỜI 2.1. Giới thiệu chung về mạng nơ - ron tích chập 2.1.1. Mạng nơ -ron nhân tạo (artificial neural network) Mạng nơ -ron 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 2). Hình dưới miêu tả cấu trúc của một nơ -ron của bộ não người
Hình 2 : Minh họa mạng nơ -ron của người (từ Rob Fergus)
Nơ -ron 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 nơ ron thông qua các Dendr ite vào Nucleus để tính toán. Tín hiệu ra được xuất ra ở dây Axon.
Các nơ -ron được liên kết với nhau thông qua các dây Synapse. Mạng nơ -ron 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 trên những quan sát trên, các nhà nghiên cứu thiết kế mạng nơ -ron nhân tạo (artificial neural network) với hi vọng rằng một mô hình 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. Phần tiếp sẽ trình bày các tìm hiểu của em về cấu tạo của một mạng nơ ron truyền thẳng (feedforward neural network) tổng quát dựa trên tài liệu tham khảo [13]. Đây là cơ sở để hiểu kỹ hơn về các mạng học sâu sẽ trình bày ở các phần tiếp theo . 2.1.1.1 Cấ u trúc mạng nơ-ron Đầu tiên, xét 1 mạng nơ -ron truyền thẳng 2 tầng. Với đầu vào
x1 ,..., x D
, chúng ta
xây dựng M tổ hợp tuyến tính như sau: D
(1) a j w(1) ji xi w j 0 i 1
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
21
Trong đó
(1)
Chúng ta gọi (activation).
j
w ji
1,...M
và chỉ số (1) chỉ các thông số trong tầng đầu tiên của mạng.
Mỗi giá trị
a j
w j 0
là độ lệch (bias),
a j là
kích hoạt
sẽ được tiếp tục tác động bởi 1 hàm kích hoạt (activation
function) khả vi và phi tuyến
h(.)
z j h(.)
(1)
là trọng số (weight) còn
h( a j )
thường là hàm sigmoid: ( )
1
a
1 exp( a)
Hoặc hàm tanh: tanh(a) z
j
gọi là đơn vị ẩn (hidden unit). Sau đó
z j
2 (2a) 1
cũng được tác động tương tự như đối với
xi
M
ak wkj(2) wk(2) 0 j 1
yk k
Trong đó
1,..., K và
(ak )
K là tổng số đầu ra.
(.) cũng là 1 hàm kích hoạt (activation
function) có thể giống hoặc khác với h(.) ở tầng 1. Ở đây chú ý rằng vì yk ra của mạng nơ -ron, nên việc chọn
(ak ) là
đầu
phụ thuộc vào bài toán cụ thể:
-
Với bài toán hồi quy (regression), thông thường yk
-
Với bài toán phân lớp (classification), thường sử dụng hàm softmax: yk ( x, w)
ak
exp( ak ( x , w))
exp(a j ( x , w)) i
Kết hợp lại các công thức ở tầng 1 và tầng 2 ta được: M
D
(1) (2) yk ( x, w) ( w h( w(1) ji xi w j 0 ) wk 0 ) (*) (2) kj
j 1
i 1
Trong đó tất cả các trọng số đã được gộp lại thành 1 vector
w
. Như vậy mô hình mạng nơ -
ron đơn giản là 1 biến đổi phi tuyến từ đầu vào { x } thành đầu ra { yk } kiểm soát bởi các i
thông số
w
(1)
Chú ý rằng
w j 0 và wk (20)
1
z
định
x
0
và biến ẩn
0
có thể được gộp vào bằng cách định nghĩa thêm biến đầu vào cố
1
. Công thức (*) sẽ trở thành như sau:
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
22
M
D
yk ( x, w) ( w h( w(1) ji xi )) (**) (2) kj
j 0
i 0
Nhãn lớp được dự đoán: y
arg max k yk ( x, w)
Đây chính là kiến trúc tổng quát của mạng nơ -ron truyền thẳng 2 tầng. Các mạng nhiều hơn 2 tầng có thể được xây dựng hoàn toàn tương tự. 2.1.1.2 Huấn luyện mạng nơ-ron Tiếp theo chúng ta xét đến việc tìm các trọng số hợp lý cho mạng nơ -ron. Ở đây chỉ trình bày bài toán phân lớp (classification). Đầu tiên, xét trường hợp phân loại 2 lớp (binary classification),
variable)
t
trong đó với mỗi quan sát
với
t
1
chỉ lớp C , 1
t
0
x
chúng ta cần dự đoán 1 biến mục tiêu (target C 2 .
chỉ lớp
đầu ra của mạng nơ -ron chỉ có 1 giá trị
y
Vì đây là bài toán phân loại 2 lớp nên
, với hàm kích hoạt (activation function) thường
được chọn là hàm sigmoid . y
1 1 exp(a)
Dễ thấy 0 y( x, w) 1 . Như vậy có thể coi: +) P(C1| x) y( x, w) (xác suất nhãn là C1 khi biết đầu vào là x)
+) P(C 2| x) 1
y( x, w)
(xác suất nhãn là C2 khi biết đầu vào là x)
Do đó phân phối điều kiện của biến mục tiêu (target variable) x
t
khi biết biến đầu vào
được viết như sau: P(t | x, w ) y( x, w )t {1 y( x, w )}1
t
Bây giờ xét 1 tập dữ liệu
D
{x1 , x2 ,..., x N } với biến mục tiêu tương ứng {t1 , t2 ,..., t N } . Nếu
giả thiết rằng ( x1 , t1 ), ( x2 , t2 ),...( x , t ) được phân phối độc lập và tương đương N
N
(independent and identically distributed – i.i.d) ta có:
P(t1 , t2 ,..., t N | D, w) P (t1 | x1 , w) P (t 2 | x2 , w)...P (t N | x N , w) N
P(t1 , t2 ,..., t N | D, w) y(x n , w) tn {1 y( xn , w)} t n 1
n 1
Ta cần tìm
w
sao cho P(t1 , t2 ,..., t | D, w) đạt giá trị lớn nhất. Định nghĩa hàm lỗi (error N
function) như sau: Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
23
E (w)
w
sao cho
ln P(t1, t2 ,..., t N | D, w)
w
sao cho P(t1 , t2 ,..., t N | D, w) đạt giá trị lớn nhất tương đương với việc
E (w)
đạt giá trị nhỏ nhất. Khai triển biểu thức trên ta được công thức hàm
Như vậy việc tìm tìm
lỗi cross-entropy (cross-entropy error): N
E(w) {tn ln y ( xn , w) (1 t n ) ln(1 y( xn, w))} n 1
Với trường hợp phân loại nhiều lớp (multi -class classification) cũng tương tự. Gọi K là số lớp, biến mục tiêu (target variable) tn
tn
của quan sát xn được định nghĩa như sau:
{tn1, t n 2 ,..., t nK }
Trong đó k : tnk 1, tnj 0j k . Đây gọi là mã hóa 1- thuộc-K (1-of-K coding scheme) . Đầu ra của mạng nơ -ron được coi như xác suất có điều kiện: yk ( xn , w)
P(t kn
1| xn )
Tương tự như với trường hợp phân loại 2 lớp, ta có: N
K
E(w) tnk ln yk ( xn , w) n 1 k 1
Thông thường với bài toán này, hàm kích hoạt đầu ra (output activation function) được chọn là hàm softmax: yk ( x, w)
exp( ak ( x , w))
exp(a j ( x , w)) i
Như vậy, để tìm bộ trọng số tốt nhất cho mạng nơ -ron ta cần tìm
w
sao cho E(w)
đạt giá trị nhỏ nhất. 1 số phương pháp thường dùng để tối thiểu h àm E(w) là Stochastic Gradient Descent (SGD), Newton- Raphson,..... Đặc điểm chung của những phương pháp
đó là sử dụng đạo hàm bậc 1 của E(w), tức là Phương pháp phổ biến để tìm
E (w) ( l )
w ij
E (w) ( l )
w ij
trong đó
l
chỉ tầng của trọng số.
là lan truyền ngược (backpropagation), chi tiết của
phương pháp này có thể xem trong [13]. 2.1.2. Mạng nơ -ron tích chập
Một điểm khác biệt quan trọng giữa bài toán nhận dạng đối tượng và các bài toán phân lớp thông thường khác là với bài toán nhận dạng, chúng ta biết rằng dự đoán nên không thay đổi, hay nói cách khác là bất biến (invariant) khi thực hiện 1 phép biến đổi nào Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
24
đó. Ví dụ, trong bài toán phân loại ảnh hai chiều, ví dụ như chữ số viết tay, một chữ số khi được tác động bởi một phép dịch hoặc được phóng to hay thu nhỏ, thì thuật toán học cần phải phân lớp chữ số đó giống hệt như với trường hợp ban đầu. Tức là một bộ phân lớp tốt với bài toán nhận dạng ảnh cần có tính chất bất biến với phép dịch (translation invariance) và bất biến với kích cỡ (scale invariance) .
Hình 3 : Chữ số 6 được viết
tay. Bên trái là ảnh gốc, ở giữa là ảnh được phóng to, bên
phải là ảnh gốc đã được quay một góc 30 độ. Tham khảo của [13] Một trong những hướng tiếp cận để đảm bảo những tính chất trên là tích hợp trực tiếp những tính chất đó vào trong kiến trúc mạng. Đây là cơ sở của mạng nơ -ron tích chập (Convolutional Neural Network - CNN) [14]. Ý tưởng của CNN là như sau: -
Các điểm ảnh gần nhau thì sẽ tương quan với nhau hơn là những điểm ảnh ở xa . Tính chất này được các phương pháp truyền thống trong thị giác máy tính khai thác bằng cách trích xuất các đặc trưng địa phương, những đặc trưng này chỉ phụ thuộc vào các vùng con nhỏ của ảnh. Thông tin của những đặc trưng đó có thể được kết hợp trong các giai đoạn xử lý sau đó để phát hiện đặc trưng ở mức cao hơn và từ đó tìm ra thông tin cần thiết của toàn bộ ảnh.
-
Các đặc trưng có ích với một vùng nào đó của ảnh thì nhiều khả năng cũng sẽ có ích với những vùng khác của ảnh, ví dụ như khi ảnh được tác động bởi một phép dịch Dựa trên những quan sát đó, CNN được thiết kế thông qua 3 cơ chế:
-
Các trường thụ thể địa phương (local receptive field)
-
Chia sẻ trọng số (weight sharing)
-
Lấy mẫu con (subsampling)
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
25
2.1.2.1 Cấu trúc:
Hình 4: Cấu trúc mạng CNN
Convolutional layer
Trong mô hình CNN , các layer sẽ kết nối với nhau thông qua phép toán tích chập. Mỗi
nơ ron tiếp theo là kết quả của việc áp dụng một kernel lên một vùng nơ ron trước đó. Mỗi layer như vậy có thể có từ vài trăm đến vài nghìn kernel như vậy. Hình dưới đây mô tả một phép toán tích chập trong CNN. Kết quả của phép toán này là activation map hay feature map. Ta có thể điều chỉnh kích cỡ của các feature map bằng các tham số: -
Depth - Độ sâu: là số lượng filter ta sử dụng trong tầng convolution. Ví dụ tầng
convolution có đầu vào là một ảnh có kích thước 32x32 sử dụng 3 filter thì đầu ra sẽ có độ sâu là 3. -
Stride: Là bước dịch chuyển của bộ lọc trên đầu vào. Ví dụ stride là 1 thì ta sẽ dịch chuyển bộ lọc liên tiếp trên ảnh đầu vào.
-
Zero- padding: Tăng kích thước của đầu vào bằng cách bao quanh nó bằng các giá
trị 0. Non Linearity ReLU (Rectified Linear Unit)
là toán tử được sử dụng sau mỗi phép toán tích chập có
tác dụng thay các giá trị âm trong feature map đầu ra thành các giá trị 0. Mục đích của phép toán này là đưa vào các giá trị phi tuyến vì hầu hết các giá trị dữ liệu trong thực tế là phi tuyến. Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
26
Ngoài ra chúng ta có thể sử dụng toán tử phi tuyến khác như tanh hay sigmoid, nhưng
trong hầu hết các trường hợp toán tử ReLU hiệu quả hơn. Tầng Pooling Pooling là phép toán lấy mẫu để giảm số chiều của các
feature map nhưng vẫn giữ được
các thông tin quan trọng nhất. Giống như tầng convolution, tầng pooling cũng sử dụng một filter đặt trên một phần của feature map đầu vào và di chuyển filter đó trên toàn bộ vị trí của feature map đầu vào. Có nhiều loại phép toán pooling được sử dụng: -
Max pooling: Lấy giá trị lớn nhất
-
Average pooling: Lấy giá trị trung bình
-
Sum pooling: Lấy tổng các giá trị
Tầng liên kết đầy đủ Là một mạng nơ ron nhiều tầng (Multi Layer Perceptron) sử dụng hàm kích hoạt softmax ở đầu ra (có thể sử dụng bộ phân lớp khác như SVM). “Liên kết đầy đủ” nghĩa là mỗi nơ ron ở tầng trước sẽ được liên kết với toàn bộ nơ ron ở tầng phía sau. Mục tiêu của tầng liên kết đầy đủ là sử dụng các đặc trưng ở mức cao đã được phân tách bởi các tầng convolution và pooling ở phía trước để đưa vào các lớp của bộ dữ liệu. Kiến trúc phổ biến của một mạng nơ ron tích chập là xếp chồng một số khuôn mẫu gồm các tầng như trên hình vẽ. Sau đó các đặc trưng sẽ được chuyển vào các một số tầng liên kết đầy đủ. Tầng cuối cùng sẽ đánh giá điểm cho từng lớp của bộ dữ liệu. Điểm này đánh giá cho khả năng đầu vào sẽ thuộc vào lớp đó. Kiến trúc phổ biến ở dưới dạng biểu thức như sau: INPUT -> [[CONV->RELU]*N->POOL?]*M -> [FC->RELU]*K -> FC
Trong đó dấu “*” thể hiện sự lặp lại, còn POOL? chỉ sự tùy chọn. Thông thường ta sử dụng: 0 N
3, M
0, 0 K 3 . Hình dưới minh hoạc kiến trúc CNN trong [15].
Kiến trúc này đã đạt kết quả tốt trên tập dữ liệu ImageNet
Hình 5 : Kiến trúc CNN trong [15] Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
27
2.1.2.2 Học chuyển tiếp (transfer learning):
1 trong số những lý do khiến mạng CNN được sử dụng rộng rãi là khả năng học chuyển tiếp ( transfer learning ), tức là sử dụng 1 mạng đã được huấn luyện sẵn trên 1 tập dữ liệu lớn nào đó (ví dụ như ImageNet [15]) để khởi tạo cho bài toán của mình. Có 1 số cách học chuyển tiếp sau đây: - Sử dụng mạng như 1 bộ trích xuất đặc trưng ( ConvNet as fixed feature extractor ): Lấy 1
mạng CNN đã được huấn luyện sẵn trên 1 tập dữ liệu lớn nào đó, bỏ đi lớp kết nối đầy đủ cuối cùng (lớp này cho ra xác suất của nhãn của tập dữ liệu ban đầu) rồi sử dụng nó để trích xuất đặc trưng cho tập dữ liệu của mình, sau đó sử dụng 1 bộ phân lớp để học trên đặc trưng đó. Ví dụ mạng AlexNet [15] cho ra 1 vector kích thước (1,4096) cho mỗi ảnh, ta sẽ lấy 1 bộ phân lớp để học trên vector đặc trưng đó finetune ) mạng nơ ron ( F ine-tuning the Conv-net ): Sử dụng lan truyền - Tinh chỉnh (
ngược (backpropagation) để điều chỉnh các tham số ở các tầng cuối (hoặc có thể với toàn bộ mạng). Lý do là vì các đặc trưng của những tầng đầu của một mạng CNN chứa nhiều đặc trưng chung hơn nên có thể được sử dụng với nhiều bài toán khác nhau. Khi sử dụng phương pháp học chuyển tiếp, có 4 trường hợp sa u: - Tập dữ liệu mới nhỏ và tương tự với tập dữ liệu gốc: Vì tập dữ liệu nhỏ, ta không nên
finetune mạng do vấn đề overfitting. Vì dữ liệu tương tự với dữ liệu gốc, nhiều khả năng đặc trưng ở những tầng ban đầu của mạng có thể cũng sẽ hữu ích cho tập dữ liệu mới. Vậy tốt hơn hết là huấn luyện 1 bộ phân lớp tuyến tính trên đặc trưng trích xuất từ mạng. - Tập dữ liệu mới lớn và tương tự tập dữ liệu gốc: Vì có nhiều dữ liệu hơn nên nhiều khả
năng sẽ không bị overfit khi finetune toàn bộ mạng - Tập dữ liệu mới nhỏ nhưng rất khác tập dữ liệu gốc: Vì tập dữ liệu nhỏ nên tốt nhất là chỉ
huấn luyện 1 bộ phân lớp tuyến tính. Vì tập dữ liệu mới rất khác tập dữ liệu gốc, việc huấn luyện bộ phân lớp với đặc trưng của các tầng cuối có thể sẽ không hiệu quả, vì chúng chứa nhiều đặc trưng riêng biệt của tập dữ liệu gốc. Thay vào đó có thể huấn luyện 1 bộ phân lớp từ đặc trưng trích xuất bởi các tầng trước của mạng. - Tập dữ liệu mới lớn và rất khác so với tập dữ liệu gốc. Vì tập dữ liệu mới lớn, có thể
huấn luyện mạng từ đầu. Tuy nhiên trong thực tế việc khởi tạo trọng số từ 1 mô hình đã huấn luyện sẵn vẫn có thể có ích.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
28
2.1.2.3 Áp dụng cho bài toán nhận dạng hoạt động của video: Trong những năm gần đây, các nhà nghiên cứu đã thiết kế nhiều kiến trúc mạng nơ ron khác nhau dựa trên ý tưởng của [15], ví dụ như VGG -net [16], Inception [17] và đã đạt
được những thành tựu đáng kể cho bài toán nhận dạng ảnh. Tuy nhiên việc áp dụng những kỹ thuật này cho bài toán nhận dạng hoạt động nói chung và nhận dạng cử chỉ tay nói riêng đã không đạt được kết quả như mong muốn. Một trong số những lý do là vì các tập dữ liệu video được sử dụng cho đến hiện tại hoặc là quá nhỏ hoặc là quá nhiễu. Ví dụ tập video UCF101 chỉ có 100 ví dụ mỗi lớp, trong khi tập ảnh ImageNet có 1000 ví dụ mỗi lớp. Ngược lại, tập Sport1m có 1 triệu ví dụ và 487 lớp, nhưng video được thu thập một cách tự động và do đó không tránh khỏi sai lệch về nhãn. Ngoài ra, tập dữ liệu THUMOS có 45 triệu frame, nhưng chỉ có một phần nhỏ trong số đó là được gán nhãn. Vì những vấn đề trên nên việc huấn luyện các mạng tích chập 3D cho bài toán nhận dạng hoạt động nói chung và nhận dạng cử chỉ tay động nói riêng vẫn sử dụng các tập dữ liệu nhỏ hơn như UCF101 và HMDB51. Phần lớn những video trong các tập dữ liệu này là các hành động được thực hiện trong thời gian ngắn. Điều này làm đơn giản quá trình huấn luyện, nhưng ngược lại do kích thước tập dữ liệu quá nhỏ nên dẫn đến nguy cơ overfit [18]. Để khắc phục điều này, các nhà nghiên cứu thường sử dụng các kỹ thuật sau: - Kết hợp 3D Convnet và mã hóa Fisher vector [19] - Kết hợp dữ liệu ảnh RGB với ảnh độ sâu (depth image), ví dụ như [10] - Kết hợp dữ liệu ảnh RGB với ảnh luồng quang học (optical flow), ví dụ như [8]
Như vậy có thể thấy rằng bài toán nhận dạng hoạt động nói chung và nhận dạng cử chỉ tay động nói riêng vẫn còn nhiều thách thức. Phần tiếp theo sẽ trình bày một số kiến trúc CNN cho bài toán nhận dạng hoạt động nói chung và nhận dạng cử chỉ tay động nói riêng 2.1.3. Một số kiến trúc của
CNN cho bài toán nhận dạng cử chỉ
2.1.3.1 Nhận dạng cử chỉ nói chung P-CNN: Pose-based CNN Features for Action Recognition
Thuật toán này nhận dạng hoạt động của người bằng cách quan sát chuyển động của từng bộ phận trên cơ thể. Trong [7], từ ảnh đầu vào ở dạng RGB tác giả đã nhận diện các bộ phận: tay trái, tay phải, phần thân trên, toàn bộ cơ thể và toàn bộ bức hình. Nhờ việc cắt các khung hình chứa các bộ phận đó và định cỡ là 224x224 pixel ta có được ảnh RGB chứa thông tin của các cử chỉ. Sau đó tác giả tính luồng quang học dựa theo phương pháp [20] Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
29
để có được luồng thông tin thứ 2 về các cử chỉ. Mỗi ảnh của luồng quang học sẽ được chuẩn hóa về đoạn [0, 255] và chứa 3 kênh: trường dịch chuyển theo phương ngang, trường dịch chuyển theo phương đứng và độ lớn của vectơ dịch chuyển. Các vectơ đặc trưng của 2 luồng này sau khi được trích xuất sẽ được nối với nhau tạo ra đầu vào cho bộ phân lớp.
Hình 6 : Kiến trúc của [7]
Two-Stream Convolutional Networks for Action Recognition in Videos
[8]
Giống với [7], kiến trúc của [8] cũng sử dụng 2 luồng dữ liệu là ảnh RGB và luồng quang học được tính theo phương pháp trong [20]. Tuy nhiên, dữ liệu đầu vào của [8] lại là toàn bộ ảnh của video. [8] sử dụng cách xếp chồng các luồng quang học theo phương ngang và theo phương đứng để làm đầu vào cho luồng dữ liệu thời gian. Dữ liệu đầu ra được tính bằng cách kết hợp muộn 2 luồng thông tin đó theo phương pháp kết hợp muộn hoặc sử dụng SVM. Phương pháp này cho độ chính xác cao nhất với phương pháp kết hợp dùng SVM là 88.0% đối với bộ dữ liệu UCF 101 và 59.4% với bộ dữ liệu HMDB -51.
Hình 7 : Kiến trúc của mạng
2 luồng trong [8]
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
30
2.1.3.2 Nhận dạng cử chỉ tay động High resolution network (HRN) and low resolution network (LRN)
[10]
Thuật toán này nhận dạng hoạt động của cử chỉ tay bằng cách kết hợp thông tin từ ảnh RGB và ảnh độ sâu . Các tác giả ghép trực tiếp thông tin gradient ảnh RGB cùng với ảnh độ sâu thành một khối 57 x 125 x 32 vào hệ thống mạng, nhằm trực tiếp học mối li ên quan giữa thông tin ảnh độ sâu và ảnh gradient RGB Hệ thống mạng của [10] bao gồm hai mạng con: Một mạng phân giải cao (high resolution network – HRN) và mạng phân giải thấp (low resolution network - LRN) với các trọng số tương ứng là W H và WL. Mỗi mạng con sẽ đưa ra xác suất cho từng lớp P(C | x,W) trong đó C là nhãn của quan sát x, còn W là trọng số của mạng con. Xác suất của cả hai mạng con được kết hợp như sau: P (C
| x)
P(C | x, W L )* P(C | x, WH )
Và nhãn được dự đoán như sau: c*
argmaxP(C | x)
Mạng con HRN bao gồm 4 lớp tích chập, sau mỗi lớp đó đều có 1 lớp max -pooling. Đầu ra của lớp tích chập cuối cùng được đưa vào 2 lớp FC (fully connected – kết nối đầy đủ) có kích thước tương ứng là 1x512 và 1x256. Đầu ra là lớp softmax, và kết quả là xác suất dự đoán P(C | x, W ) H
Với mạng con LRN, đầu vào là một khối 28 x 62 x 32 gồm cả ảnh độ sâu và gradient ảnh gốc, được lấy mẫu bằng phương pháp Nearest Neighbor Interpolation (NNI). Tương tự với mạng con HRN, mạng con LRN cũng gồm 1 số lớp tích chập 3D đi kèm với lớp max pooling, sau đó là 2 lớp FC, cuối cùng là lớp softmax. Mọi lớp trong mạng, ngoại trừ lớp softmax đều có hàm kích hoạt như sau: f ( z )
max(0,z)
Đầu ra của lớp softmax được tính như sau: P(C | x, W )
exp( z C )
q exp( z q )
Trong đó z q là đầu ra của nơ -ron q. Dưới đây là biểu diễn trực quan hệ thống mạng:
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
31
Hình 8 : Kiến trúc HRN -LRN trong [10]
Online detection and classification of dynamic hand gestures with recurrent 3D convolutional neural networks
[11]
Trong [11] tác giả kết hợp bài toán phát hiện và nhận dạng cử chỉ bàn tay bằng
cách sử dụng một mạng nơ -ron tích chập 3 chiều hồi quy (recurrent three -dimensional convolutional neural network) , kết hợp với phương pháp Connectionist temporal classification (CTC). Kiến trúc của [11] bao gồm một CNN 3 chiều để trích xuất đặc trưng không – thời gian, và 1 lớp softmax để dự đoán nhãn.
Để xử lý việc phát hiện đâu là cử chỉ tay, các tác giả sử dụng phương pháp Connectionist temporal classification (CTC) .
CTC là hàm mất mán được thiết kế để dự
đoán cho luồng không được phân đoạn. CTC được ứng dụng trong [11] để phát hiện và dán nhãn đúng vùng chứa cử chỉ, còn những clip còn lại sẽ được dán nhãn no gesture (không có cử chỉ ). Đầu tiên, các tác giả thêm 1 lớp no gesture: A ' A no _ gesture .
Lớp softmax cũng sẽ đưa ra xác suất có điều kiện tương ứng cho lớp này. Thay vì lấy trung bình trên tất cả các clip của 1 cử chỉ được phân vùng từ trước, [11] tính xác suất quan sát được 1 cử chỉ (hoặc không có cử chỉ) k tại thời điểm t từ đầu vào X: P(k , t | X ) st k t [0, N )
Các tác giả định nghĩa 1 đường đi nhãn lớp y. Xác suất xảy ra đường đi đoán tại thời điểm t trên đường đi
là 1 ánh xạ có thể có giữa chuỗi đầu vào X và
là
P( | X )
st t
t
trong đó
t
là nhãn lớp dự
Các đường đi được ánh xạ tới 1 chuỗi nhãn sự kiện Y bằng toán tử B: Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
32
Y
B( )
Trong đó các nhãn giống nhau được coi như một nhãn duy nhất, và nhãn no gesture bị loại bỏ. Ví dụ: B( ,1, 2, , ) B(1,1, , 2, ) 1, 2 . Như vậy rất nhiều đường đi
sẽ cho ra
cùng 1 chuỗi sự kiện Y. Xác suất quan sát 1 chuỗi sự kiện Y khi biết đầu vào X là tổng xác suất điều kiện của mọi đường
ánh xạ tới chuỗi sự kiện Y đó, tức là 1
B ( y)
P (Y
: B( )
| X)
B
1
y
P ( | X )
(Y)
Việc tính P(Y|X) có thể được tính một cách dễ dàng sử dụng quy hoachj động [11]. Từ đó các tác giả chỉ ra rằng hàm mục tiêu của CTC được tính như sau: LCTC
ln(P(Y | X))
Hình 9 : Kiến trúc của [11]
2.1.3.3 Một số nhận xét Ta thấy các kiến trúc sử dụng để nhận dạng cử chỉ tay động như trong [10] và [11] nhìn chung là phức tạp hơn so với các kiến trúc sử dụng trong bài toán nhận dạng
hoạt động nói chung, ví dụ như [7] và [8]. Như vậy vấn đề đặt ra là tìm hiểu một kiến trúc đơn giản, vốn được thiết kế cho bài toán nhận dạng hoạt động nói chung, nhưng vẫn cho
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
33
kết quả tốt trên bài toán nhận dạng cử chỉ tay động. Một trong những kiến trúc như vậy là mạng nơ ron tích chập 3 chiều, một sự mở rộng của mạng nơ -ron tích chập 2 chiều [15]
2.2. Mạng nơ ron tích chập 3 chiều Kiến trúc mạng nơ ron tích chập ba chiều Trong mạng nơ ron tích chập 2 chiều, phép tích chập 2 chiều được áp dụng ở tầng tích chập (convolutional layer) để trích xuất ra đặc trưng từ các feature map ở các tầng trước đó. Trong bài toán phân tích video, chúng ta cần phải trích xuất được thông tin liên quan từ các hình ảnh nối tiếp lẫn nhau qua đó cần thêm chiều thứ 3 là chiều thời gian. Phép toán tích chập 2D không cho ta điều này. Shuiwang Ji đã đề xuất phép toán tích chập 3 chiều để lấy thông tin về chiều thời gian từ các video. Phép toán nhân chập 3 chiều được thực hiện như sau: -
Tạo một khối đầu vào 3 chiều bằng cách sắp đặt liên tiếp các frame của một video
-
Khác với phép nhân chập 2 chiều, phép nhân chập 3 chiều sử dụng nhân là một khối 3D dịch chuyển qua lại trên khối đầu vào đó. Đầu ra là giá trị được tính bằng cách nhân từng phần tử của nhân với đầu vào và sau đó lấy tổng các giá trị đó.
-
Đầu ra của phép toán này là một khối 3 chiều.
Hình 10 minh họa cho phép nhân chập 3 chiều.
Hình 10 : Minh họa phép toán tích
chập 3 chiều [1]
Dựa trên cơ sở phép toán tích chập 3 chiều, [1] đã xây dựng kiến trúc mạng nơ ron tích chập C3D cho việc xử lý một lượng lớn các vid eo. Theo [1] , một cách biểu diễn video hiệu quả cần có các đặc điểm như sau: -
Tính tổng quát (generic): nó có thể biểu diễn nhiều loại video một cách riêng biệt.
-
Gọn nhẹ (compact): vì cần phải làm việc với hàng triệu video, nên tính gọn nhẹ giúp cho việc lưu trữ và mở rộng.
-
Tính toán hiệu quả (efficient): Nó cần phải có một tốc độ tính toán nhanh chóng.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
34
-
Đơn giản (simple) cho việc cài đặt, và làm việc tốt với một bộ phân lớp đơn giản như SVM.
Kiến trúc của mạng nơ ron C3D được minh họa trong Error! Reference source not found..
Hình 11 : Kiến trúc mạng C3D [1]
Kiến trúc của C3D sử dụng nhiều tầng tích chập để học nhiều lớp trừu tượng hơ n so với các kiến trúc trong [8] và [7]. Đầu vào của mạng C3D chỉ là một mảng gồm 16 frame được xếp chồng liên tiếp nhau gọi là các clip, nó nối tiếp nhau trong một video. Các frame được định lại cỡ là 128 x 171 và cắt ngẫu nhiên một khung hình 112 x 112 trong frame. Từ đó tạo thành đầu vào 3 kênh x 16 frame x 112 x 112 cho mạng. Qua nhiều lần thử nghiệm, [1] đề xuất sử dụng kích cỡ của nhân là 3 x 3 x 3 cho các tầng tích chập và 2 x 2 x 2 cho các tầng pooling. Kết quả thử nghiệm của C3D đối với bài toán nhận dạng hành động trên bộ dữ liệu UCF 101 là 85.2% với bộ phân lớp SVM tuyến tính. Như vậy mạng CNN với bộ lọc 3 chiều cho phép biểu diễn tốt hơn đối với dữ liệu là chuỗi các hình ảnh liên tiếp thể hiện một hoạt động của người. Vì vậy trong ĐATN, em sẽ nghiên cứu kỹ hơn kỹ thuật này, triển khai, đánh giá thử nghiệm trên dữ liệu RGB và dữ liệu luồng quang học, và đặc biệt chú ý khảo sát ảnh hưởng của góc nhìn đối với thuật toán. Chương tiếp theo trình bày các mô hình đề xuất nghiên cứu.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
35
CHƯƠNG 3: NHẬN DẠNG CỬ CHỈ TAY NGƯỜI DƯỚI CÁC GÓC NHÌN KHÁC NHAU TỪ ẢNH RGB VÀ LUỒNG QUANG HỌC SỬ DỤNG MẠNG C3D VÀ BỘ PHÂN LỚP SVM 3.1. Mô hình đề xuất nghiên cứu
3.1.1 Mô hình kiến trúc mạng C3D nguyên bản trên luồng RGB [1] Trong ĐATN này em tập trung vào việc giải quyết bài toán nhận dạng cử chỉ tay dưới các góc nhìn khác nhau. Do vậy cần phải khảo sát ảnh hưởng của góc nhìn đối với mô hình đề xuất. Đầu tiên, em tìm hiểu khả năng nhận dạng của mạng C3D [1] dưới các góc nhìn khác nhau. Các tác giả trong [1] đã chỉ ra rằng : - Mạng tích chập 3D (3D ConvNets) phù hợp cho việc học các đặc trưng không thời gian
hơn so với mạng tích chập 2D (2D ConvNets) - 1 kiến trúc đồng nhất với các nhân tích chập 3 x 3 x 3 trong mọi tầng của mạng là tốt nhất
đối với mạng tích chập 3D (3D ConvNets) Từ đó, [1] đề xuất kiến trúc mạng như sau:
Hình 12 : Kiến trúc mạng C3D [1]
Đầu vào của mạng C3D là một dãy gồm 16 frame được xếp chồng liên tiếp nhau gọi là các clip. Các frame được định lại cỡ là 128 x 171 và cắt ngẫu nhiên một khung hình 112 x 112 trong frame. Từ đó tạo thành đầu vào 3 kênh x 16 frame x 112 x 112 cho mạng. Kiến trúc mạng C3D [1] gồm 8 tầng tích chập, 5 tầng max - pooling và 2 tầng kết nối đầy đủ (fully connected – FC), và cuối cùng là lớp softmax. Tất cả nhân tích chập 3D đều có kích thước 3 x 3 x 3 với stride 1 trong cả chiều không gian và thời gian. Tất cả các tầng pooling đều có kích thước 2 x 2 x 2, ngoại trừ pool1 có kích thước 1 x 2 x 2. Mỗi lớp FC có chiều 1x4096. 3.1.2 Mô hình kiến trúc mạng C3D hai luồng (RGB+OpticalFlow) [21] Kiến trúc C3D đạt được kết quả tốt trên các tập dữ liệu UCF101 và HMDB -51 [1]. Tuy nhiên một số nghiên cứu, ví dụ như [21] đã chỉ ra rằng kích cỡ của nhân chỉ là 3 x 3 x 3, do vậy khó có thể biểu diễn chuyển động trong một thời gian dài. Một số nghiên cứu
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
36
như [8] và [22] sử dụng luồng quang học (optical flow) để biểu diễn thông tin chuyển động dưới dạng ảnh. Bằng cách này mạng nơ -ron có thể trực tiếp học được chuyển động. Luồng quang học (Optical flow) là khái niệm chỉ sự chuyển động tương đối của các điểm trên bề mặt đối tượng, vật thể nào đó gây ra, dưới góc quan sát của một điểm (mắt, camera...). Sự chuyển động của các vật thể ấy trong không gian 3 chiều, khi được chiếu lên một mặt phẳng quan sát 2D gọi là một trường chuyển động. Mục đích của việc ước lượng luồng quang học là xấp xỉ trường chuyển động từ một tập các frame ảnh thay đổi theo thời gian. Cách tính luồng quang học theo phương pháp được đề cập trong [20] Bài toán tính toán luồng quang học Đầu vào: I(x, y, t) là hàm độ sáng của pixel theo 3 biến . Đầu ra: Vectơ dịch chuyển giữa các frame: (u(x, y, t), v(x, y, t), 1) T
Để tính được luồng quang học theo [20] ta giải quyết bài toán tối ưu có các điều kiện như sau: -
Điều kiện về độ sáng không đổi: I (x, y,t)
-
I(x u, y v,t 1)
Điều kiện gradient không đổi: I (x, y, t) I(x u, y v, t 1)
-
Điều kiện về độ trơn trên từng điểm ảnh.
Để thỏa mãn điều kiện đó ta cần tìm điểm cực tiểu của hàm năng lượng sau: E (u , v)
E Data
E
Smooth
Trong đó: E Data (u, v)
E smooth (u, v)
( s
2
)
s
2
(| I(x
(| 3
w) I(x) |2 | I(x w) I(x) |2 )dx
u |2 | 3 v | 2 )dx
2
Để giải quyết bài toán tối ưu trên, [20] sử dụng phương trình Lagrange và phương pháp lặp để xấp xỉ vectơ dịch chuyển. Ngoài ra, [20] cũng sử dụng chiến thuật tính toán theo nhiều độ phân giải từ thấp đến cao và so sánh các kết quả để tìm ra một ước lượng chính xác nhất. Hình dưới minh họa kết quả tính toán luồng quang học từ ảnh đầu vào.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
37
Hình 13 : Tính toán Optical flow sử
dụng phương pháp trong [20]. (a) (b) 2 frame liên
tiếp trong một video (c) Thành phần luồng quang học theo phương đứng (d) Thành phần luồng quang học theo phương ngang Cách đưa thông tin luồng quang học vào trong mạng C3D Gọi mỗi ảnh luồng quang học d t là một trường vectơ dịch chuyển giữa 2 frame liên tiếp của video thứ t và t + 1. d t(u, v) chỉ độ dịch chuyển của điểm (u, v) trong frame thứ t. Thành phần theo phương ngang và theo phương đứng của trường vectơ dịch chuyển d t y . Ta xếp chồng các thành phần
vào của mạng nơ ron I
(u, v, 2 k 1) d x
I
1
k
R
x
d t
w h2 L
x
d t
,
y , d t của L frame liên tiếp tạo thành chuỗi 2L ảnh đầu
như sau:
(u, v)
I (u, v, 2 k) d y k 1 (u, v)
Trong đó: -
là số thứ tự frame bắt đầu của chuỗi ảnh rgb trong video ban đầu.
-
w là chiều rộng của ảnh luồng quang học.
-
h là chiều cao của ảnh luồng quang học.
Như vậy từ mỗi video clip có độ dài là L, sẽ tạo ra 2(L -1) ảnh mức xám optical flow tương ứng với các chiều d x và dy . Tuy nhiên, đầu vào của mạng C3D là ảnh RGB, có nghĩa là cần thêm 1 chiều nữa ngoài chiều d x và d y . Ở đây sử dụng phương pháp điền 0 vào chiều Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
38
thứ 3 theo như [22]. Như vậy sẽ tạo ra (L-1) ảnh để đưa vào mạng C3D hoàn toàn giống như với trường hợp video gốc RGB. [22] cũng chỉ ra rằng một kiến trúc mạng được khởi tạo trên một tập dữ liệu ảnh
RGB vẫn có thể sử dụng với một tập dữ liệu ảnh luồng quang học. Lý do là vì các đặc trưng của ảnh RGB (như góc, cạnh,...) vẫn có thể có ích đối với trường hợp ảnh luồ ng quang học. Do đó, em khảo sát hai trường hợp: -
Huấn luyện trên ảnh luồng quang học sử dụng kiến trúc mạng C3D khởi tạo từ một tập dữ liệu ảnh RGB, cụ thể là tập Sport1m
-
Huấn luyện trên ảnh luồng quang học sử dụng kiến trúc mạng C3D khởi tạo từ một tập dữ liệu ảnh luồng quang học, cụ thể là trên UCF101
Cuối cùng em kết hợp thông tin ảnh RGB và luồng quang học theo [21]. Ý tưởng của [21] dựa trên kiến trúc Twostream của [8], trong đó các tác giả đề xuất kết hợp luồng dữ liệu ảnh RGB gốc với dữ liệu luồng quang học. Vì ảnh luồng quang học miêu tả chuyển động, việc sử dụng ảnh luồng quang học làm đầu vào của mạng nơ -ron sẽ giúp thuật toán học trực tiếp chuyển động một cách dễ dàng. [8] và [21] sử dụng hai phương pháp sau để kết hợp thông tin được học từ hai mạng nơ -ron: - Early fusion: Đầu ra của tầng fc6 của hai mạng được chuẩn hóa L2 và sau đó ghép lại với
nhau thành 1 vector duy nhất. Vector này sau đó sẽ được đưa vào thuật toán SVM để học. - Late fusion: Dự đoán xác suất của hai mạng được lấy trung bình, và kết quả sẽ được sử
dụng để dự đoán nhãn cho dữ liệu đầu vào. Trong [21], kiến trúc mạng cho dữ liệu RGB là kiến trúc mạng C3D đã được khởi
tạo trên ảnh RGB của tập dữ liệu Sport1m [1]. Tuy nhiên, tập Sport1m không có ảnh luồng quang học, nên các tác giả sử dụng ảnh luồng quang học của tập UCF101. Nhưng một tập UCF101 nhỏ hơn nhiều so với tập Sport1m nên nếu huấn luyện từ đầu trên ảnh luồng quang học của tập này với kiến trúc mạng C3D ban đầu thì sẽ có nguy cơ overfit. Do vậy [21] đề xuất sử dụng một kiến trúc mạng đơn giản hơn, gọi là O -C3D, bao gồm 5 tầng tí ch
chập với lần lượt 64, 128, 256, 256, 256 nhân khác nhau, sau đó là 3 tầng FC kích thước 2048, 2048 và cuối cùng là tầng softmax. Hàm kích hoạt được sử dụng là hàm ReLu. Đầu ra của tầng tích chập được đưa vào tầng pooling. Phương pháp pooling được sử dụn g là max- pooling. Tất cả nhân tích chập 3D đều có kích thước 3 x 3 x 3, với stride 1 x 1 x 1.
Max pooling kernel có kích thước 2 x 2 x 2, ngoại trừ tầng đầu tiên có kích thước 2 x 2 x 1 với stride 2 x 2 x 1. Hình dưới minh họa kiến trúc được sử dụng để kết hợp thông tin ảnh
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
39
RGB và thông tin luồng quang học, trong đó kiến trúc với RGB là kiến trúc của [1], còn kiến trúc với luồng quang họ c là O-C3D [21]
Hình 14 : Kiến trúc kết
hợp thông tin ảnh RGB và ảnh luồng quang học [21]
3.1.3 Xử lý vấn đề lấy mẫu trên video Đầu vào của mạng C3D là một mảng gồm 16 frame được xếp chồng liên tiếp nhau gọi là các clip, nó nối tiếp nhau trong một video. Các frame được định lại cỡ là 128 x 171 và cắt ngẫu nhiên một khung hình 112 x 112 trong frame. Từ đó tạo thành đầu vào 3 kênh x 16 frame x 112 x 112 cho mạng. Như vậy vấn đề đặt ra là làm sao có thể sử dụng C3D cho 1 video bất kỳ. Có 2 tình huống xảy ra: -
Video có số frame nhỏ hơn 16
-
Video có số frame lớn hơn 16
Trường hợp thứ nhất có thể dễ dàng xử lý bằng cách sao chép frame cuối cùng của video sao cho đủ 16. Với trường hợp thứ hai, [1] và nhiều nghiên cứu khác lấy trung bình các đặc trưng của từng đoạn 16 frame làm đặc trưng cho toàn bộ video. Ví dụ một video có 23 frame, ta sẽ tách thành 2 đoạn: -
1 đoạn từ frame thứ 1 đến frame thứ 16
-
Đoạn còn lại từ frame thứ 8 đến frame thứ 23
Đặc trưng của cả video sẽ là trung bình của 2 đặc trưng tính từ 2 đoạn này.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
40
[23] đã chỉ ra rằng với trường hợp ảnh RGB, không nhất thiết phải sử dụng tất cả frame
của video mà chỉ cần sử dụng 1 số frame được chọn ngẫu nhiên là đã đủ để miêu tả hành động:
Hình 15 : a) 8 frame đầu của 1 video. b) 8 frame được lấy ngẫu nhiên từ cả video. Ta thấy
trường hợp b) chỉ sử dụng 8 frame ngẫu nhiên nhưng cũng miêu tả đủ toàn bộ chuyển động trong video.
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
41
Thông thường mạng C3D nhận đầu vào là 16 frame trong 1 video . Với 1 video dài hơn 16 frame thì đặc trưng trên từng đoạn 16 frame sẽ được lấy trung bình để ra đặc trưng của cả video. [23] lấy ngẫu nhiên 16 frame trong video để đưa vào C3D, và cho thấy rằng
phương pháp này vừa tăng độ chính xác vừa giảm đáng kể thời gian tính toán. Trong ĐATN này em cũng thử theo phương pháp của [23] để khảo sát ảnh hưởng của việc lấy mẫu ngẫu nhiên 16 frame trong video thay vì lấy trung bình tất cả các đoạn 16 frame của video.
Tuy nhiên, không có gì đảm bảo việc lấy mẫu 16 frame ngẫu nhiên sẽ luôn cho kết quả tốt với mọi trường hợp. Do vậy, em cũng áp dụng một phương pháp đơn giản để tìm những frame mấu chốt trong video dựa trên phương pháp đơn giản được đề xuất trong [24], trong đó các tác giả coi những frame mấu chốt là những frame có khoảng cách Euclide với nhau là lớn nhất. 3.2
Triển khai mô đun nhân dạng hoạt động dưới các góc nhìn khác nhau
3.2.1
Framework tổng quát Khung làm việc tổng quát của nhận dạng cử chỉ tay động gồm các thành phần được
minh họa như hình dưới:
Hình 16 : Framework tổng quát của nhận dang cử chỉ tay động trong ĐATN này
Đầu tiên mỗi clip gồm các khung hình liên tiếp được chuẩn hóa về kích thước phù hợp với ba kênh R, G, B. Từ luồng dữ liệu này, thực hiện tính toán luồng quang học. Sau đó đưa các dữ liệu này vào hai mạng C3D. Bản thân mạng C3D, nếu sử dụng kết quả từ tầng softmax, hoặc sử dụng bộ phân lớp SVM để học đặc trưng ở tầng fc6 hoặc fc7, có thể đưa ra kết quả nhận dạng. Tuy nhiên mạng C3D chỉ nhận đầu vào là 1 clip 16 frame, do vậy cần có chiến thuật phù hợp để xử lý vấn đề này. Do vậy trong ĐATN này, để khảo sát Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
42
ảnh hưởng của góc nhìn đối với khả năng nhận dạng của thuật toán, em thử nghiệm với một số chiên thuật như sau: -
Chia video thành các clip 16 frame và lấy trung bình kết quả từ các clip đó
-
Lấy mẫu ngẫu nhiên 16 frame trong video theo [23]
-
Lấy mẫu những frame quan trọng nhất theo phương pháp của [21], cụ thể là chọn ra những frame có khoảng cách Euclide giữa chúng là lớn nhất. Ngoài ra em cũng thử nghiệm ảnh hưởng của việc phân vùng bàn tay đối với thuật
toán trong trường hợp một video được chia thành các đoạn clip dài 16 frame. Sau đó, em khảo sát việc kết hợp thông tin ảnh RGB và ảnh luồng quang học. Tuy nhiên trước hết phải xét trường hợp chỉ với dữ liệu luồng quang học là bởi vì không thể thực hiện kết hợp dữ liệu RGB với dữ liệu luồng quang học nếu kiến trúc mạng không thể học tốt trên dữ liệu luồng quang học. Do đó đầu tiên em xét các trường hợp: -
Kiến trúc mạng C3D nguyên gốc [1] nhưng được finetune lại trên dữ liệu ảnh luồng quang học
-
Kiến trúc O-C3D theo như [21], được khởi tạo trên ảnh luồng quang học của tập UCF101 và finetune lại bằng dữ liệu luồng quang học của tập dữ liệu thử nghiệm Sau đó em kết hợp thông tin RGB và luồng quang học theo các chiến thuật sau:
-
Kiến trúc Twostream theo [21], ở đây mạng C3D cho ảnh RGB được khởi tạo trên tập Sport1m, còn mạng C3D cho ảnh luồng quang học được khởi tạo trên ảnh luồng quang học của tập UCF101. Để tránh overfit do tập UCF101 nhỏ hơn tập Sport1m, các tác giả sử dụng một kiến trúc mạng đơn giản hơn và gọi đó là O -C3D
-
Kiến trúc Twostream, trong đó cả 2 luồng đều có kiến trúc giống nhau và đều được khởi tạo trên dữ liệu RGB của tập Sport1m. Lý do là vì [22] đã chỉ ra rằng các đặc trưng được học trên dữ liệu RGB ví dụ như góc, cạnh,... có thể vẫn có ích đối với dữ liệu luồng quang học Dữ liệu được tổng hợp tại viện MICA bao gồm một số video của 5 đối tượng, thuộc
5 lớp hoạt động dưới 3 góc nhìn khác nhau: -
Góc nhìn trực diện (Kinect 5)
-
Góc nhìn nghiêng 45 độ (Kinect 3 )
-
Góc nhìn nghiêng 90 độ (Kinect 1) Trong ĐATN của mình, để đánh giá kết quả của phương pháp đề xuất em sử dụng
cross-validation leave-one-subject- out tương tự như [4]. Ví dụ khi huấn luyện ta lấy 4
người trên Kinect 1, còn 1 người còn lại sẽ test trên Kinect 1,3 và 5. Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
43
Các bước cơ bản để sử dụng C3D : Bước 1: Chuẩn bị bộ dữ liệu đầu vào Bước 2: Trích xuất ra frame từ video Bước 2.1: Tính optical flow từ các frame Bước 3: Sử dụng C3D để học chuyển tiếp (transfer learning) từ video RGB và từ luồng quang học. Bước 4: Sử dụng C3D để trích xuất đặc trưng cần thiết. Thông thường trích xuất đặc trưng của các tầng fc6, fc7 và prob. Chú ý tầng prob là dự đoán xác suất điều kiện của mạng. Bước 5: Đưa đặc trưng được trích xuất vào bộ phân lớp để huấn luyện. Nếu dùng mạng C3D để trực tiếp dự đoán thì có thể bỏ qua bước này Bước 6: Kiểm nghiệm bộ phân lớp vừa huấn luyện trên tập kiểm tra. 3.2.2
Môi trường lập trình và thư viện sử dụng để triển khai mô đun nhận dạng
Để thực hiện việc thử nghiệm các bộ phân lớp, em đã sử dụng các công cụ sau để lập trình: -
Framework sử dụng cho mạng nơ ron: C3D: là một phiên bản được chỉnh sửa từ thư viện Caffe [25] để ứng dụng phép tích chập 3 chiều. Caffe là một framework học sâu sử dụng để thử nghiệm các mô
hình mạng nơ ron tích chập. Caffe sử dụng định dạng google protobuf để miêu tả các kiến trúc mạng. Thư viện Caffe được sử dụng trong ĐATN này do nó là một framework mã nguồn mở được đóng góp và bởi nhiều người với cách định nghĩa dễ hiểu cùng với sự hỗ trợ trên CPU và GPU. Website: Caffe framework: http://caffe.berkeleyvision.org C3D project: http://vlg.cs.dartmouth.edu/c3d - Ngôn ngữ lập trình dùng cho việc thao tác dữ liệu: Python là một ngôn ngữ lập
trình scripting phổ biến và rất thú vị. Hơn nữa nó rất hiệu quả trong việc xử lý dữ liệu, dễ học, dễ làm và dễ cài đặt. Python đang là ngôn ngữ phổ biến nhất hiện tại. -
Công cụ xử lý video: Trong ĐATN này, các thư viện có sẵn của Python cho xử lý video được sử dụng vì tính đơn giản của chúng.
-
Thư viện các thuật toán học máy: scikit learn là một thư viện mã nguồn mở chứa các thuật toán học máy được thiết kế trên nền NumPy và SciPy. Nó rất phổ biến
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
44
trong nghiên cứu và cả công việc. Em sử dụng scikit learn vì nó có một cộng đồng đông đảo và năng động nên có rất nhiều tài liệu chỉ dẫn. -
Cấu hình máy tính sử dụng để chạy thử nghiệm: 12 core CPU 2.5GHz, GPU GeForce GTX 970, 4GB VRam
3.2.3
Cài đặt và tích hợp mô đun nhận dạng hoạt động
Dưới đây trình bày hướng dẫn cài đặt và tích hợp mô đun nhận dạng hoạt động của mạng C3D. Người dùng có thể xem thêm hướng dẫn chi tiết tại: https://docs.google.com/document/d/1QqZ3JHd76JfimY4QKqOojcEaf5g3JS0lNh-FHTxLag/edit
Cài đặt C3D: 1. Tải C3D dùng github. Ta chạy lệnh sau trên terminal: git clone https://github.com/facebook/C3D.git
2. Biên dịch : cp Makefile.config.example Makefile.config make –j 12
2. Biên dịch theo hướng dẫn 3. Sử dụng: Gõ ./flow_video
–h
để xem hướng dẫn sử dụng:
[-h] [-p ] [-o ] [-b ] [-e ] [-v ] [-m ] -h: Giúp đỡ -p [gpu]: Sử dụng CPU hay GPU -o [./]: Thư mục đầu ra -b [1]: Frame bắt đầu -e [last]: Frame kết thúc -v [0]: Hiển thị ra màn hình hay không?
4. Ví dụ để tính optical flow cho 1 video có 15 frame theo phương pháp của [11] ta
làm như sau:
Sinh viên thực hiện: Đặng Mạnh Trường 20134209 Khóa 58 Lớp KSCLC HTTT&TT
Học chuyển tiếp (transfer learning) từ một mô hình đã huấn luyện sử dụng C3D : 1. Đưa dữ liệu về đúng định dạng của C3D, cụ thể là mỗi video cần được đổi thành
dạng frame, mỗi frame có tên theo dạng
“%06d.jpg”
và chú ý với các video có
ít hơn 16 frame cần điền đủ 16 frame. 2. Tải mô hình mạng đã được huấn luyện từ trước (pretrained model). Trong [10] tác
giả đã cung cấp một mạng đã được huấn luyện trên tập dữ liệu Sport1m: https://www.dropbox.com/s/vr8ckp0pxgbldhs/conv3d_deepnet A_sport1m_iter_1900000?dl=0
3. Tạo file đầu vào, đầu ra chứa thông tin của các video cần extract: