Tinhiệu điện não được thu nhận bằng thiết bị Emotiv EPOC, sau đó, tín hiệu được xử lý, sosánh với tín hiệu đã được huấn luyện để phân loại đưa ra quyết định người sử dụng muốnđiều khiển
Ý nghĩa khoa học và thực tiễn của nghiên cứu
Nghiên cứu đưa một hệ thong BCI trong đó sóng não kích thích được tạo ra khi ta nhìn vào một bảng điều khiển P300-speller, khi đó, thiết bị Emotiv EPOC sẽ đọc tín hiệu điện não với thời gian được đồng bộ hóa cùng lúc người sử dụng nhìn vào bảng điều khiển P300-speller, sau đó, máy tính sẽ tính toán và phân loại sóng não để phát hiện ta đang cần điều khiển mini-robot theo hướng nào Giải thuật ứng dụng trong nghiên cứu cho kết quả đáng tin cậy và có khả năng xử lý thời gian thực Một phiên xử lý của chương trình được tối giản đến mức độ tin cậy có thể chấp nhận được dựa trên thực tiễn nghiên cứu, khi đó chương trình có thể xử lý một cách nhanh chóng nhưng vẫn đạt kết quả chính xác cao.
Hơn nữa, nghiên cứu có thể được phát triển thành nhiều ứng dụng khác trong việc giúp đỡ con người mất khả năng vận động như xe lăn tự động, tắt mở các thiết bị trong nhà, điều khiển cánh tay giả (cánh tay robot), một cách độc lập.
1.2 Ý nghĩa khoa học và thực tiễn của nghiên cứu 16
Đối tượng và phạm vi của nghiên cttu
Trong khuôn khổ của Luận văn Thạc si, các van đề chủ yếu được nêu ra nhằm giải quyết bài toán làm thế nào điều khiển thiết bị bằng cách đọc và phân loại sóng não với thiết bị Emotiv EPOC - một thiết bi pho biến với 14 kênh để ghi lại tín hiệu điện não Cu thể hơn, phạm vi của nghiên cứu là phát triển giải thuật và phần mềm điều khiển một mini-robot có thể di chuyển theo các hướng dựa trên việc phát hiện sóng não kích thích P300.
Chương trình sẽ sử dụng ngôn ngữ C và Python, thư viện mở cho việc xử lý tín hiệu điện não là OpenVibe Một bảng điều khiển P300-speller gồm 3 hàng và 3 cột được thiết kế để người sử dụng có thể nhìn vào và chọn hướng di cho robot, tương ứng với 8 hướng và một lệnh dừng lại (stop) Phần điều khiển robot sẽ do board Raspberry Pi 2 thực hiện dựa trên tín hiệu General Purpose Input Output (GPIO) liên kết với HexBug remote control.
Việc đánh giá kết quả của nghiên cứu được thực hiện trên ít nhất 2 người để có thể đánh giá tính khách quan của độ chính xác chương trình khi ứng dụng vào thực tế.
1.4 Câu trúc cua Luận Văn
Các nghiên cứu liên quan sẽ được trình bày ở Chương 2 - Tổng quan, dựa trên các kết quả của các nghiên cứu để phát triển ứng dụng và chọc lọc các phương pháp có độ chính xác cao cho nghiên cứu.
Chương 3 sẽ bàn đến các một vài hệ thống thu nhận và đo đạc tín hiệu điện não (Brain
Computer Interface - BCI), lý thuyết về xử lý tín hiệu não: cụ thể là tín hiệu P300 Ở chương này, tac giả tập trung vào một vài đề xuất các phương pháp phân loại tín hiệu não, phương pháp biến đổi Fourier rời rac Discrete Fourier Transform (DFT/FFT), bộ lọc thông dai Butterworth, giới thiệu lý thuyết phương pháp chính trong giải thuật còn khá mới trong việc nâng cao chất lượng sóng não P300 là xDAWN, phương pháp phân loại tin hiệu điện não với hai giải thuật Support Vector Machine (SVM) va Linear Discriminant Analysis (LDA).
1.3 Đối tượng va phạm vi của nghiên cứu 17
Mô hình tổng quát của hệ thống thu nhận và xử lý tín hiệu đề xuất trong nghiên cứu được giới thiệu ở Chương 4 Trong đó, tác giả sẽ giới thiệu thiết bị thu nhận tín hiệu điện não Emotiv EPOC, cách thức giao tiếp, lấy tín hiệu và giải mã để có được thông tin của từng kênh (channel) Chương trình được viết trên nền Linux và sử dụng ngôn ngữ lập trình C và Python với sự hỗ trợ của thư viện mở (opensource toolbox) được sử dụng chủ yếu trong mô hình là OpenVibe.
Kết quả thực hiện chương trình sẽ được diễn giải ở Chương 5, đưa ra các kết quả, so sánh, bảng số liệu và đánh giá trong những trường hợp thay đổi thời gian chớp tắt của P300-speller, số lần lặp khối và so sánh các phương pháp phân loại tín hiệu.
Chương 6 sẽ trình bày kết quả tổng kết và hướng phát triển của nghiên cứu, đưa ra những mặt tốt và chưa tốt của chương trình cũng như giải thuật và hướng cải tiến sau này.
Cuối cùng là phần liệt kê tài liệu tham khảo cho Luận Văn gồm các bài báo khoa học,các trích dẫn từ sách tham khảo Ngoài ra, phần Phụ Lục còn cho mục đích tham khảo thêm, ví dụ như mã nguồn chương trình, cách thức hoạt động của OpenVibe trên máy tính Linux,
Cấu trúc của Luận Văn cv và và v v2 17
Tình hình nghiên đỨu 20.2.0 00 02022004 19
Các lĩnh vực chính của hệ thống BCI thường được chia ra thành 4 loại:
- Ứng dụng kỹ thuật sinh học: những thiết bị điều khiển hoạt động của con người, đem lại niềm hy vọng cho những bệnh nhân bại liệt.
- Quan sát hành vi vô thức con người: lĩnh vực này chủ yếu nghiên cứu hoạt động sâu của não, thường nghiên cứu khi người đã ngủ sâu, để tìm ra được những hoạt động vốn có của não chi phối cơ thể, hoặc nghiên cứu về những trạng thái tâm thần học.
- Ứng dụng thần kinh học: sử dụng phương pháp thời gian thực cho phép quan sát tín hiệu thần kinh được ghi lại với hành động tương ứng.
- Ung dụng tương tác người và máy: cung cấp phương thức tương tac giữa người và mấy hoặc may tính. Đặc biệt, hệ thống BCI mở ra rất nhiều ứng dụng triển vọng trong lĩnh vực hướng đến người khuyết tật và hạn chế khả năng vận động Trong những năm gần đây, rất nhiều nghiên cứu liên quan đến hệ thống BCI đã được nghiên cứu sâu rộng dựa trên việc phát hiện sóng não kích thích.
Luận Văn Thạc Sĩ Ở Việt Nam, lĩnh vực điện não đồ vẫn còn đang trong giai đoạn mới phát triển không có nhiều nghiên cứu Ngoài ra, tại Việt Nam đã có những đề tài nghiên cứu về điện não đồ đạt giải cấp quốc gia như đề tài “Hệ thống số hóa tư duy con người” của nhóm MIMAS đã đạt giải nhất cuộc thi Nhân tai Dat Việt năm 2010, áp dụng lĩnh vực điện não đồ trong nghiên cứu Nghiên cứu của V A Kha (Đại học Bách Khoa TPHCM) năm 2014 mang tên "Sử dụng điện não đồ để viết chữ bằng suy nghĩ" [24] dựa trên việc phát hiện tín hiệu sóng não P300 Các sinh viên Dai học FPT thực hiện nghiên cứu "Điều khiển Robot bằng suy nghĩ” vào năm 2015 đơn giản dựa trên việc phân loại trạng thái của não (tập trung - tiến, không tập trung - lùi) Tuy nghiên cứu chỉ dựa trên các nền tảng kiến thức xử lý điện não rất cơ bản nhưng cũng là một khuyến khích lớn cho nghiên cứu trong nước khi đề tài về xử lý điện não còn quá mới mẻ ở nước ta. Đặc biệt hơn, hai người Mỹ gốc Việt là chị Lê Tần và anh Nam Đỗ đã sáng lập ra công ty Emotiv System nhằm phát triển những sản phẩm phần cứng phục vụ cho điện não đồ.
Năm 2009, Emotiv đã phát hành thiết bị Emotiv EPOC được đánh giá tốt bởi giới chuyên môn Hiện nay, công ty vẫn cho ra đời các bản nâng cấp của thiết bị EPOC sử dụng dung dịch dẫn điện và giới thiệu một phiên ban rút gọn là Emotiv Insight với 5 kênh và dùng gel dan điện, hạn chế việc ăn mòn của dung dịch nước muối sinh lý.
Các nghiên cứu liên quan 0202 20
Nghiên cứu về sóng não P300
Với việc phát hiện ra cơ chế hoạt động của não khi có kích thích (nhìn vào một hình ảnh chớp tắt) sau 300 ms - sóng não P300, các ứng dụng của nó đã được phát triển suốt nhiều năm gần đây, nhiều nhất là nghiên cứu về P300-speller (bộ phát chữ hay bàn phim ảo - virtual keyboard), điều khiển xe lăn, cánh tay robot, Dưới đây là một vài nghiên cứu ứng dụng của sóng não P300.
Neurophone là tên một nghiên cứu của Campell và cộng sự công bố vào năm 2010 [4],
2.2 Các nghiên cứu liên quan 20 nghiên cứu đã sử dụng thiết bị đọc sóng não Emotiv EPOC để điều khiển việc gọi điện cho một người nào đó trên thiết bị iPhone.
Hinh 2.1: Giao dién Neurophone. Ý tưởng của chương trình là sử dung hình ảnh của 6 người sắp xếp theo thứ tự 3 hàng x 2 cột Tại một thời điểm chỉ có một hình ảnh chớp tắt, các ảnh được chớp tắt một cách tuần tự, mục tiêu để tạo ra sóng kích thích P300 khi người sử dụng điện thoại nhìn vào bảng điều khiển và chương trình sẽ phân tích sóng não để tìm sóng não P300 ở thời điểm có kích thích và đưa ra quyết định gọi điện cho người đó.
Vì thiết bị iPhone của Apple chưa cho phép giao tiếp với thiết bị USB Dongle Bluetooth gắn ngoài nên việc thu nhận sóng não vẫn phải sử dụng máy tính Windows và thư viện Emotiv SDK Sau đó, dữ liệu sẽ được đưa vào thiết bị iPhone để xử lý Phương pháp mà Campell sử dụng bao gồm bộ loc thông dải, bộ lọc trung bình và giải thuật phân tích thành phần độc lập (Independent Component Analysis - ICA) để xác định sóng não P300 Ngoài ra, phương pháp còn loại bỏ thành chớp mắt bằng việc phân tích hai kênh gần mắt nhất.
Có khá nhiều nghiên cứu nói về P300-speller (virtual keyboard) ứng dụng trong thiết bị viết chữ bằng não P300-speller là một bang chữ cái và số sắp xếp theo 6 hàng x 6 cột[9] Mỗi hàng và cột sẽ chớp tắt tại một thời điểm, bằng việc so sánh giá trị lớn nhất của đỉnh sóng não P300 tại hàng và cột quan tâm, chữ cái đó sẽ được chọn.
2.2 Các nghiên cứu liên quan 21
I0 —œ{S r | VW kX | | llÔ —=|Y 2123 4 e-| 67s 00) 000ppŸmqp7mgg
Hình 2.2: a) Bang P300-speller và b) Xác định chữ cái ‘B’ là ký tự được nhìn khi giá tri của tín hiệu đạt lớn nhất tại cột 2 hàng 7.
Ngoài ra, các nghiên cứu còn so sánh phương pháp phân loại sóng não P300 bằng một số giải thuật như Support Vector Machine (SVM), các phương pháp Linear Discrimi- nant Analysis (LDA) như Fisher Linear Discriminant Analysis (FLDA), Bayesian Lin- ear Discriminant Analysis (BLDA), Stepwise Linear Discriminant Analysis (SWLDA), phương pháp Maximum Likelihood hay phân tích thành phan độc lap (ICA) Mỗi phương pháp có ưu và nhược điểm riêng Elliot Franz [12] đã nghiên cứu các phương pháp xử lý sóng não P300 để xác định phương pháp nào nhanh và chính xác, dựa trên việc kết hợp phương pháp ICA và PCA (Principle Component Analysis) trong quá trình tiền xử lý tín hiệu, và phương pháp phân loại được đem so sánh gồm có FLDA, BLDA, SVM, Parallel FLDA, Parallel BLDA.
Nghiên cứu của sinh viên V A Kha năm 2014 [24] về sử dung phân loại sóng não để viết chữ bằng thiết bị Emotiv EPOC Nghiên cứu sử dụng các phương pháp trích đặc trưng trong miền thời gian của tín hiệu và sử dụng bộ phân loại BLDA để tìm mục tiêu Tuy còn nhiều khuyết điểm như không thể xử lý thời gian thực khi các phiên phải làm độc lập băng tay, chưa có một phương pháp để tăng mức độ sai khác giữa sóng não P300 và nhiễu để dễ dàng hơn cho việc phát hiện P300, nghiên cứu chứng tỏ rằng không cần phải sử dụng các thiết bị đo điện não đắt tiền dùng cho y khoa ma vẫn có thể cho kết quả tốt.
Phương pháp đọc chữ bằng suy nghĩ có thể ứng dụng cho một số người không thể nói chuyện hay dùng tay để viết Ngoài bảng P300-speller, ta có thể sáng tạo thêm hoặc
2.2 Các nghiên cứu liên quan 22 bớt số cột, số hàng để tăng số lượng ký tự, dấu tùy theo từng ngôn ngữ khác nhau.
Một nghiên cứu khác về sóng não P300 mang tính ứng dụng cao của Guger [16] trong việc điều khiển nhà thông minh (smarthome), ứng dụng này rất thiết thực với những người tàn tật không thể điều khiển các đồ vật bằng tay hay không thể đi lại trong nhà Một vài tác vụ của nhà thông minh như đi vào phòng khách, tắt tivi, bật nhạc, xem camera an ninh, đóng/mở cửa khi có khách, Guger đã thiết kế một bảng P300 chớp tắt tạo kích thích như hình 2.3 dưới đây.
Hình 2.3: Bảng điều khiến nhà thông minh của Guger.
2.2.2 _ Nghiên cứu về sóng não SSVEP
Kể từ khi Regan công bố công trình nghiên cứu về sự đồng bộ giữa tần số chớp (flickering frequency) của hình anh và não người khi nhìn vào năm 1989 [33], có rất nhiều công trình nghiên cứu về SSVEP cũng như các ứng dụng của nó.
Jzau-Sheng Lin và Cheng-Hung Shieh [26] công bố một nghiên cứu về phân tích sóng não SSVEP mang tính ứng dụng cao trong việc thiết kế xe lăn dành cho người tan tật hoạt động dựa trên ý muốn của trí não Thiết bị đọc sóng não sản xuất bởi hãng Neurosky và sử dung FPGA Xilinx để xử lý tín hiệu và điều khiển DC motor của xe lăn Bảng điều khiển có 3 hướng đại diện cho 3 hướng di chuyển của xe lăn, tạo trạng thái chớp tắt theo 3 tần số cố định 9, 11 và 13 Hz Các kênh được chon là Al, A2, Oz,
2.2 Các nghiên cứu liên quan 23
FP2 Người ngồi xe lăn sẽ nhìn vào bảng điều khiển, hệ thống thu nhận tín hiệu và phân tích phổ tín hiệu EEG (biến đổi Fast Fourier Transform - FFT) tại tần số quan tâm, so sánh với ngưỡng, hệ thống sẽ ra quyết định chọn hướng đi.
Hình 2.4: Xe lăn hoạt động dựa trên điều khiển bằng trí não (phân tích sóng não SSVEP). Ứng dụng khác mang tính thực tiễn cao khi BƠI có thể được dùng để điều khiển khung xương (exoskeleton) dành cho người tàn tật nhưng muốn di chuyển trên hai chân của mình, nghiên cứu được thực hiện bởi N 5S Kwak, K R Miller và 5 W.
Lee [25] Những người bị chứng xơ cứng cơ một bên hoặc tổn thương tủy sống gặp khó khăn với vấn đề đi lại là những đối tượng ứng dụng tiềm năng của nghiên cứu.
Hệ thống này có thể giúp họ khôi phục khả năng đi lại như là một phương pháp vật lý trị liệu Trong thí nghiệm, 11 tình nguyện viên đã được lựa chọn để khảo sát quá trình họ điều khiển khung xương bằng ý nghĩ Chỉ mất vài phút là họ đã có thể hiểu và vận hành hệ thống.
2.2 Các nghiên cứu liên quan 24
SEG data |_ semaine _| SF N receiver
Control | command | fy Output —> Internal ằ Time function command delay
Turning right (15Hz) Turning left (11Hz)
Hình 2.5: Diéu khiến khung xương bằng tín hiệu SSVEP
Nghiên cứu về sóng não SSVEP ee 23
Hình 2.6: Cánh tay robot được điều khiển bằng sóng não SSVEP theo 8 hướng.
2.3 Dong gop của nghiên cứu
So sánh giữa hai loại sóng não phổ biến là P300 và SSVEP, việc ứng dụng dựa trên sóng não SSVEP cho kết quả tốt trên một số lượng ít lệnh điều khiến khi ta không thể tăng số lượng thiết bị chớp tắt với tần số cố định (đèn LED) và các tần số chớp tắt gần nhau sẽ gây ra sự không chính xác, hơn nữa, người sử dụng có thể dễ bị mệt mỏi khi nhìn trong một thời gian dài Ngược lại, phương pháp dựa trên sóng não P300 có thể sử dụng để điều khiển nhiều lệnh cũng như tăng khả năng giao tiếp (ứng dụng đọc chữ P300-speller) Vì vậy, trong nghiên cứu điều khiến thiết bị bằng tín hiệu điện não, chương trình sẽ phân loại 9 lệnh dựa trên việc phát hiện sóng não P300 Một cải tiến mới của chương trình chính là bảng điều khiển được lấy ý tưởng từ bảng đọc chữ cái P300-speller với hàng cột được chớp tắt tuần tự giúp cho thời gian một phiên xử lý được giảm xuống so với chớp tắt từng hình ảnh.
Các nghiên cứu trên cho thấy nhiễu là một phần quan trọng ảnh hưởng đến kết quả của nghiên cứu Việc triệt nhiễu hay làm tăng chất lượng tín hiệu mong muốn ở bước đầu xử lý tín hiệu sẽ giúp cho kết qủa phân loại sóng não được chính xác Giải thuật xDAWN[36] được ứng dụng ở nghiên cứu của Luận Văn cho kết quả tốt khi làm tăng tỉ lệ tín hiệu
Đóng góp của nghiên €đỨU cv va 26
trên nhiễu SNR trước khi đưa vào bộ phân loại tín hiệu.
Trong những điều kiện khác nhau (khách quan lẫn chủ quan), tín hiệu điện não thu được không hoàn toàn giống nhau (so với tín hiệu mẫu đem đi huấn luyện), ví dụ như một hay nhiều kênh có chất lượng không tốt, nhiễu từ nhiều nguồn ngoài Chương trình có khả năng hồi quy để có thể huấn luyện lại dựa trên kết quả thu được khi người dùng cảm thấy độ chính xác không cao, các thông số bộ lọc hoặc bộ phân loại sẽ được cập nhật khi người sử dụng tiến hành huấn luyện lại tín hiệu (calibration).
Nghiên cứu ứng dụng trên một mini-robot nhỏ gọn có thể điều khiến § hướng Mở rộng hơn, nghiên cứu có thể ứng dụng thực tế cho xe lăn dành cho người tàn tật, giúp họ có thể điều khiển một cách độc lập, hay điều khiển cánh tay robot, hoặc khung xương (exoskeleton) dành cho người tàn tật Bang điều khiển P300 có thể được hiệu chỉnh tùy thuộc vào từng ứng dụng cụ thể.
2.3 Đóng góp của nghiên cứu 27
Điện não đỒ QC cv ee 28
Electroencephalography (EEG - điện não đồ) là sự ghi lại các hoạt động điện xảy ra trên một phần não bộ bởi một điện cực (sensor) Tín hiệu điện não đo các biến động điện từ các dòng ion chạy giữa các neurons của não Có thể nói, bộ não là một máy phát điện sinh học.
Năm 1924, nhà tâm thần học người Áo tên là Hans Berger là người đầu tiên ghi được EEG Ông nhận thấy trên bản ghi EEG bình thường, nhịp của các sóng điện não gồm có vài loại Nhịp sóng dễ thấy nhất được Berger đặt tên cho là nhịp hay sóng alpha (alpha wave, alpha rhythm) Dôi khi người ta cũng gọi là nhịp Berger (Berger rhythm) nhằm vinh danh ông.
Hình 3.1: Sóng não được ghi lại bởi Hans Berger vào năm 1924.
Trong y học, điện não đồ thường được sử dụng trong việc chan đoán các bệnh lý liên quan đến thần kinh như động kinh, mất ngủ, hôn mê, alzheimer, Trong các ngành khoa học
28 khác, điện não đồ cũng được sử dụng để tạo ra các hệ thống xử lý và nhận dạng tín hiệu não trong việc điều khiển các thiết bị như robot, xe lăn, hay thiết bị đọc chữ.
Hình 3.2: Nhà vật lý nổi tiếng Stephen Hawking với thiết bị đọc sóng não để giao tiếp.
Tín hiệu điện não được phân chia thành các dải tần dựa trên hoạt động của não người.
Bảng dưới đây nêu rõ dai tần và các trạng thái của não đặc trưng ở dải tần đó:
Dai tần Trạng thái của não Dạng sóng
Giai đoạn 3 và 4 của giấc ngủ, hay sóng elta (0.5 2) chiêm ưu thé cua tre so sinh dưới 1 tuổi.
Trang thái buồn ngủ hay trong các giai
Theta (4 - 8 Hz) đoạn ngủ nông.
Alpha (8-12 Hz) Thu giãn, chớp mắt.
Beta (12-35 Hz) Trang thai suy nghĩ, tập trung giải quyêt van đê.
Thường xảy ra khi não bất chợt nhớ ra H a as
Gamma (> 35 Hz) một van đề nào đó.
Bảng 3.1: Các dải tần của sóng não.
Hình 3.3 sau đây minh họa tín hiệu EEG thu được từ các cảm biến đặt trên đầu với 14 kênh của thiết bị thu nhận sóng não Emotiv EPOC.
Hình 3.3: Tin hiệu điện não gốc thu được từ cảm biến.
3.2 Hệ thông thu nhận và xử lý điện não
Brain computer interface (BCT) hay hệ thống thu nhận và đo đạc tín hiệu não là hệ thống thong tin liên lạc mà chỉ nhận lệnh từ tín hiệu sóng não của người dùng và phan ứng theo ý muốn của họ [5] Một lệnh đơn giản có thể là người dùng liên tục nhìn vào chuyển động chớp tắt trên bảng điều khiển, khi đó, đặc trưng của tín hiệu điện não có thể tăng lên dựa trên quá trình bắt ảnh vào não để xử lý (hay còn gọi là sóng kích thích), khi xử lý, não sẽ phát ra một tín hiệu điện truyền đến dây thần kinh Các hoạt động thần kinh điện đầu tiên được ghi lại bằng cảm biến điện cực (sensor electrode), ta có thể dùng đặc trưng đó để xử lý tín hiệu và đưa ra lệnh thực hiện Để thực hiện điều này, hệ thống phải “học” trước những lệnh này, hay còn gọi là huấn luyện (training), sau đó, đối với những tín hiệu lấy mẫu sẽ được phân loại dựa trên mô hình đã huấn luyện đó.
Một thiết bị thu nhận và xử lý tín hiệu điện não không thể thiếu cảm biến thu nhận tín
Hệ thống thu nhận và xử lý điện não .Ặ.ẶỐỐ 30
hiệu não phát ra (sensor electrode) đặt trên đầu ngay các vị trí được quy định bởi Hiệp hội quốc tế về sinh lí thần kinh lâm sàng và điện não, tín hiệu thu được đo bằng đơn vị microvolt Bộ phận khuyếch đại tín hiệu, số hóa tín hiệu bao gồm các bước: lấy mẫu, lượng tử hóa, và mã hóa tín hiệu Tín hiệu não rời rạc được truyền đến thiết bị thu nhận không dây (bluetooth), hoặc có dây Ti đó, máy tính sẽ đọc được các giá trị microvolt của từng kênh và tiến hành xử lý.
Hình 3.4: Các vị trí đặt sensor electrode.
Một hệ thống BCI sẽ bao gồm một vài khối cơ bản như: khối nhận tín hiệu não, xử lý va phân loại, cuối cùng là điều khiển hay ra quyết định người dùng đang muốn làm gì.
Signal Acquisition | mmmms>| Signal Processing | —p- Classification
Hình 3.5: Sơ đồ khối của một hệ thong BCI.
3.2 Hệ thống thu nhận và xử lý điện não 31
Luận Văn Thạc Sĩ gl BS
Hình 3.6: Sơ đồ khối của quá trình phan loại trong BCI.
Trong ảnh dưới day là thiết bị Emotiv EPOC, thiết bị có 14 kênh (electrode channel) thu nhận tín hiệu não với tần số lấy mẫu là 128 Hz, hay 128 mẫu (sample) trong 1 giây Sau đó, thiết bị truyền dữ liệu trả về qua bluetooth và máy tính đọc dữ liệu trên USB Dongle để biết được giá trị của các kênh. uy Đặc biệt hơn, hai người Mỹ gốc Việt là chị Lê Tan và anh Nam D6 đã sang lập ra công ty Emotiv System nhằm phát triển những sản phẩm phần cứng phục vụ cho điện não đà.
Năm 2009, Emotiv đã phát hành thiết bị Emotiv EPOC được đánh giá tốt bởi giới chuyên môn Hiện nay, công ty vẫn cho ra đời các bản nâng cấp của thiết bị EPOC sử dụng dung dich dẫn điện và giới thiệu một phiên bản rút gọn là Emotiv Insight với 5 kênh và dùng gel dẫn điện, hạn chế việc ăn mòn của dung dịch nước muối sinh lý.
Hình 3.7: Thiết bị Emotiv EPOC.
3.2 Hệ thống thu nhận và xử lý điện não 32
3.3 Phân loại sóng não và bang P300-speller
"Sóng não sự kiện" (ERP - Event-Related Potential) với độ trễ khoảng 300ms sau khi một sự kiện xảy ra, được gọi là P300 Ví dụ như não được kích thích bởi một hình ảnh chớp tắt và tạo ra P300 Nó được cho là liên quan tới quá trình ý thức và cập nhật bộ nhớ sau khi ước lượng là có hoặc không có thông tin mới, sau đó được chuyển vào bộ ý thức Việc xác định sóng não có chứa P300 hay không có thể giúp ta phân loại dé dàng hơn vì tín hiệu não rất dễ bị nhiễu.
Hình 3.8: Sóng não P300 với độ trễ 300ms.
Khác với sóng não sự kiện P300, sóng não SSVEP được tạo ra khi chúng ta nhìn vào một hình ảnh chớp tắt với tần số f cố định (visual stimulus), khi đó, não sẽ tạo ra một sóng não có tần số f tương tự Tần số f thường được chọn từ 3.5 - 75 Hz tùy thuộc vào băng thông của tín hiệu từ thiết bị lấy tín hiệu EEG.
Phương pháp phân tích SSVEP đơn giản hơn P300 tuy nhiên chỉ có thể được sử dụng trong một vài ứng dụng đơn giản hay kết hợp với P300 để có được kết quả chính xác hơn.
Sóng não SSVEP có tỉ số tín hiệu trên nhiễu SNR cao và đường như không phụ thuộc nhiều các tác nhân gây nhiễu.
3.3 Phân loại sóng não và bảng P300-speller 33
“mm > whe f\ f\ Í I Í f Target 3 CHE [HHHI
Hình 3.9: Mô hình phân tích sóng não SSVEP.
Thay vì tập trung vào miền thời gian để xác định đỉnh sóng với P300, SSVEP tập trung vào pho biên độ của sóng não, nơi mà đỉnh (biên độ) nhô cao nhất tại tần số chớp tắt của mục tiêu đang nhìn Từ đó ta có thể xác định một cách dễ dàng mục tiêu cần tìm là gì.
Phương pháp tìm sóng não SSVEP không cần nhiều thuật toán phức tạp, tuy nhiên tùy thuộc vào ứng dụng ta có thể sử dụng phương pháp tìm sóng não P300 hay SSVEP sao cho độ chính xác là cao nhất Như đã phân tích ở Chương Tổng quan, ta sẽ không đi sâu vào việc phân tích sóng não SSVEP và các ứng dụng của nó.
Một ví dụ điển hình trong việc ứng dụng P300 là P300-speller Đó là một bảng chữ cái gồm 6 hàng và 6 cột Mỗi cột được chớp tắt ngẫu nhiên, người sử dụng chỉ cần nhìn tập trung vào chữ cái mà mình quan tâm, chương trình sẽ nhận biết sóng P300 và xác định các đỉnh để biết được người sử dụng đang nhìn vào chữ cái gì Ta có thể thay đổi P300-speller theo ý muốn như dùng hình ảnh các vật cần nhìn, có thể thay đổi số cột và số hàng của bảng điều khiển Cơ chế xác định cũng giống như bảng chữ cái P300-speller.
3.3 Phân loại sóng não và bảng P300-speller 34 Đối với bảng chữ cái 6x6 P300-speller, thiết bị đo sóng não sẽ thu thập liên tục đáp ứng của người dùng trong quá trình lấy mẫu Sau khi phân tích chia nhỏ thời gian, tách biệt từng khoảng thời gian tương ứng với những lần sáng tắt hàng cột riêng biệt, ta tiến hành xử lý tín hiệu để phân loại xem mỗi khoảng thời gian trong 12 khoảng thời gian đó là sáng hay tắt Theo lý thuyết, ta chỉ tìm được 2 loại sáng trong 12 khoảng thời gian đó, và ta tra thứ tự của 2 khoảng thời gian mà được phân loại “sáng” đó với thứ tự sáng tắt ngẫu nhiên hàng / cột đã lưu lại Theo lý thuyết, hàng 1 và cột 2 sẽ được phát hiện là “sáng”, do đó ta sẽ biết được người thí nghiệm đang tập trung vào chữ “B”.
3.3 Phân loại sóng não và bảng P300-speller 35
Il —>P|Y Z2t23 4 rn—le ô> eo of 6 SROOOF ) oof aag
(a) (b) Hình 3.11: P300 speller va cách xác định mục tiêu.
Việc nhận dạng sóng não P300 không dễ dàng khi biên độ tín hiệu nhiễu và biên độ sóng não kích thích không có sự sai khác rõ rệt Ngoài ra, còn một số tác nhân khác có thể ảnh hưởng đến việc nhận dạng sóng não P300 như:
Hiệu ứng đám đông (crowding effect) xảy ra khi có nhiều kí tự tương đồng ở xung quanh kí tự mục tiêu Như vậy sẽ khiến người sử dụng khó nhận thấy kí tự cần tìm (theo Bouma 1970 [3] ; Feng và cộng sự, 2007 [11]; Toet và Levi 1992 [38] Hiệu ứng đám đông có thể được tạo ra bởi phân bố không gian không chính xác các kí tự xung quanh vùng nhìn thấy của bảng chữ cái Tăng kích thước chữ có thể gây sự chật chội cho các kí tự và gây nên hiệu ứng này Một cách để giảm hiệu ứng đám đông là cân chỉnh kích thước kí tự đồng thời giảm số lượng kí tự trong bang chữ cái nhằm tạo nên sự tu do hơn cho người dùng (Treder và Blankertz, 2010 [39]) Hiệu ứng đám đông có thể xảy ra ở cách nhảy chữ theo hàng-cột.
Các lỗi ở vùng lân cận (Adjacency Problem) xảy ra thường xuyên ở những vị trí ở gần kí tự mục tiêu (Eazel-Rezai, 2007 |10|) Những lỗi này xảy ra khi các kí tự không phải mục tiêu năm gần kí tự mục tiêu, được chớp tắt làm thu hút sự chú ý của người sử dụng Vẫn đề lân cận này có thể được làm giảm đi bằng cách giải quyết bài toán làm sao để các kí tự không phải mục tiêu không được sáng gần các kí tự mục tiêu Ta có thể tăng khoảng cách giữa các kí tự trong bang chữ cái hoặc giảm số lượng ki tự.
Sự lặp lại mù là một hiện tượng xay ra do sự lặp lại hai lần liên tục của kí tự mục tiêu, gây ra lỗi trong quá trình nhận dang (Kanwisher, 1987 [22]) Van dé này xảy ra do cách
Biến đổi tín hiệu điện não trong miền thời gian, tầnsố
Ứng dụng giải thuật xDAWN vào P300 speller
Hình 3.18: Tin hiệu gốc va sau khi qua bộ lọc (it mau). uV1e—13 denoised raw signal
Hình 3.19: Tín hiệu sau khi qua bộ lọc (nhiều mau).
3.6 Huan luyện va phân loại tín hiệu điện não
3.6.1 Giải thuật Support Vector Machine
Support Vector Machine (SVM) là một phuơng pháp phan lớp dựa trên lý thuyết học thống kê, được đề xuất bởi Vapnik (1998) [40] Chúng ta có thể dùng thuật toán SVM khi dit liệu gồm có 2 lớp Thuật toán SVM giúp phân biệt dữ liệu bằng cách tìm ra một mặt phẳng tối ưu (hyperplane) phân chia tất cả các điểm dữ liệu của lớp này với lớp kia Mặt phẳng tối ưu tốt nhất cho SVM là mặt phẳng có bờ (margin) lớn nhất giữa 2 lớp Bờ là khoảng cách tối ưu giữa 2 lề song song với siêu phẳng mà không chứa điểm dữ liệu nào trong đó.
Các support vector là những điểm dữ liệu gần nhất với siêu phẳng, các điểm này nằm
Huấn luyện và phân loại tín hiệu điện não
Giải thuật Support Vector Machmne AT
Support Vector Machine (SVM) là một phuơng pháp phan lớp dựa trên lý thuyết học thống kê, được đề xuất bởi Vapnik (1998) [40] Chúng ta có thể dùng thuật toán SVM khi dit liệu gồm có 2 lớp Thuật toán SVM giúp phân biệt dữ liệu bằng cách tìm ra một mặt phẳng tối ưu (hyperplane) phân chia tất cả các điểm dữ liệu của lớp này với lớp kia Mặt phẳng tối ưu tốt nhất cho SVM là mặt phẳng có bờ (margin) lớn nhất giữa 2 lớp Bờ là khoảng cách tối ưu giữa 2 lề song song với siêu phẳng mà không chứa điểm dữ liệu nào trong đó.
Các support vector là những điểm dữ liệu gần nhất với siêu phẳng, các điểm này nằm
3.6 Huấn luyện và phân loại tín hiệu điện não 47
Luận Văn Thạc Sĩ trên lề Hình ảnh dưới đây sẽ minh hoạ cho định nghĩa trên, với hình tròn màu xanh là các điểm thuộc lớp (+1), và ô vuông màu đỏ là các điểm thuộc lớp (-1).
Hình 3.20: Giải thuật SVM - Phân lớp dữ liệu với optimal hyperplane.
Với số chiều là d, x; € Ra và y; = +1 Phương trình của mặt phẳng tối ưu:
Ta có, (w,x) là tích nhân tử (inner dot) của w va x Theo định nghĩa, tích nhân tử của hai biến x và z là:
Tiếp theo, tìm w và b để cực tiểu ||u|| để tất cả các điểm dữ liệu (z;, y;) thỏa: yi((w, zi) +b) > 1 (3.15)
Biéu diễn toán hoc của việc phân loại dữ liệu có thể phan lớp được
3.6 Huấn luyện va phân loại tín hiệu điện não 48
Lời giải tối ưu cho w, b cho việc phân loại vector z là: class(z) = sign((w, z) + b) (3.17)
Support vector chính là cái mà ta quan tam trong quá trình huấn luyện của SVM.
Việc phân lớp cho một điểm dữ liệu mới sẽ chỉ phụ thuộc vào các support vector.
Dữ liệu của ta có thể không thể phân lớp bằng một mặt phẳng tối ưu Trong trường hợp đó, SVM sẽ sử dụng lề mềm (soft margin), có nghĩa là siêu phẳng có thể phân lớp được nhiều, nhưng không phải tất cả các điểm dit liệu Có 2 dạng lề mềm cơ bản Cả hai đều sử dụng biến bù s; và tham số phạt C (penalty paramter) Hàm mục tiêu có thêm một số hạng mới để phạt thuật toán khi s; khác không, và bài toán tối ưu hóa trở thành việc trao đổi giữa lề lớn và mức phạt nhỏ Nếu hàm phạt là tuyến tính thì bài toán trở thành:
Trong những phương trình này, ta có thể thấy khi tăng Ở sẽ tạo ra trọng lượng nhiều hơn biến bù s;, cho nên việc tối ưu sẽ cố gắng tạo sự phân lớp nghiêm ngặt hơn Một cách tương đương, giảm Œ về 0 sẽ loại bỏ mẫu sai (mẫu ít quan trọng hơn).
Dạng đối ngẫu: để dễ tính toán, ta sử dụng nhân tử Lagrange /, một hàm để cực tiểu hoá chuẩn Lp là:
Lp = 5 Âm, 0) +C › si — ằ av; (yi((w, vi) + b) — (L— sj)) — ằ [iS (3.18) 1
Ta tim điểm dừng Lp, cho gradient của Lp bằng 0, ta có: b= ằ Yili ằ ayy; = 0
3.6 Huấn luyện va phân loại tín hiệu điện não 49
Luận Văn Thạc Sĩ a, = Ở — by
Các phương trình trên dẫn trực tiếp tới phương trình đối ngẫu: max ) | aj — 5 ằ ằ qd;@71/; (Xi, 47) ) 1
Với các điều kiện ràng buộc:
Hệ bất phương trình 0 < a; < C cho thấy tại sao Œ thường được gọi là ràng buộc hộp (box constraint) Œ sẽ giữ các giá trị cho phép của các nhân ttt Lagrange a; trong một "cái hộp", hay là một vùng được biên giới.
Một số việc phân loại 2 lớp không thể có được một mặt phẳng tới ưu đơn giản để dễ dàng phân lớp Để giải quyết vấn đề này, ta có một biến thể toán học mà vẫn giữ được sự đơn giản của SVM trong việc tạo mặt phẳng tối ưu phân lớp.
Cách tiếp cận này sử dụng lại lý thuyết bằng việc áp dụng các hàm hạt nhân (Kernel).
Có một lớp ham A (x,y) với những đặc tính riêng Có một không gian tuyến tính S và một ham y đề chuyển x vào 8:
Tích nhân tử xảy ra trong không gian S Một số lớp ham:
+ Polynomials: Với một giá trị d dương nào đó:
3.6 Huấn luyện và phân loại tín hiệu điện não 50
+ Radial basis function (Gaussian): Với một giá trị z dương nào đó,
+ Mang nơron: với một số dương ứĂ và một số õm pz
Cách tiếp cận nào sử dung các hàm hạt nhân dựa trên phương pháp tính siêu phẳng sẵn có Tất cả các tính toán chỉ sử dụng tích nhân tử Do đó các hàm hạt nhân phi tuyến có thể sử dụng các phép tính xác định và thuật toán để tìm ra bộ phân loại phi tuyến tốt nhất Kết quả phân loại là các mặt phẳng ở không gian S nào đó mà không gian S đó không nhất thiết cần được xác định hay khảo sát.
Giải thuật Linear Discriminant Analysis
Fisher’s LDA là giải thuật cơ ban trong phân loại dữ liệu va được ứng dung rộng rãi trong các van đề phân loại khác nhau (hai hay nhiều lớp) Giải thuật này don giản, dễ sử dụng và đòi hỏi thời gian tính toán ngắn Trong các ứng dụng BCI, FLDA được sử dụng trong một vài nghiên cứu và cho ra độ chính xác cao như P300 Speller (Bostanov, 2004 [2]), bat đồng bộ - asynchoronous (Scherer, Muller, Neuper, Graimann và Pfurtscheller, 2004 [37]), và đa lớp - multiclass (Garrett, Peterson, Anderson va Thaut, 2003 [13]).
Mục tiêu của thuật toán FLDA là tim một vector phân lớp 2 hoặc nhiều hơn 2 lớp một cách tốt nhất O đây, ta chỉ xét tap di liệu 2 lớp, vì vậy, vector phân lớp sao cho kì vọng của 2 lớp càng cách xa nhau càng tốt và phương sai của 2 lớp càng nhỏ càng tốt.
3.6 Huấn luyện và phân loại tín hiệu điện não 51
Luận Văn Thạc Sĩ sở
Hình 3.21: Vector thành phần trong giải thuật phân loại LDA.
Ta có một tập dữ liệu đầu vào gồm các vector x; € R”’, 7 € {1 N} va gắn với các nhãn phân lớp y; € {—1, 1} Dinh nghĩa N, là số lượng các mẫu huấn luyện có lớp là ¿ = 1, Cì là tập các vi trí ¿ mà y; = 1 Sử dụng định nghĩa tương tự cho No, Co Hàm mục tiêu để tính toán vector phân lớp w € R? là:
Oy + 05 2 2 trong đó: m= wl nnot = ễễệ°° i
Bài toán tối ưu khi kỳ vọng của 2 lớp càng cách xa nhau càng tốt và phương sai của 2 lớp càng nhỏ càng tốt Để tính toán trực tiếp vector phân lớp tối ưu cho bộ dữ liệu huấn luyện, ta trước hết định nghĩa trung bình lớp mạ.
Bay giờ ta có thể định nghĩa ma trận phan tán giữa các lớp (between-class scatter matrix) Sz và ma trận phân tấn trong từng lớp Sy:
Sp= (mì — ma)(mì — mg)?
3.6 Huấn luyện va phân loại tín hiệu điện não 52
Với sự trợ giúp của 2 ma trận trên, hàm mục tiêu có thể được viết lại như sau: wi Saw tUT Sww J(w) Bang cách tính đạo ham của J va cho bằng không, ta có thé tim ra lời giải tối ưu cho w thoả mãn phương trình sau: t0 Sữy (mị — ma) (3.21)
Bayer’s LDA (BLDA) được xem là một giải thuật mở rộng của FLDA Dé mô tả BLDA, ta xem như FLDA là một trường hợp đặc biệt của bình phương tối thiểu hồi quy (Least Squares Regression) Khác với FLDA, trong BLDA, sự chính tắc hoá (regularization) được sử dung để ngăn chặn overfitting (sự quá khớp, quá phù hợp).
Khi một hàm mục tiêu H bị overfitting, sẽ ton tại một hàm H khác, kém phù hợp hơn hàm H, nhưng đạt độ chính xác cao hơn đối với toàn tập đữ liệu, và cả những ví dụ được sử dụng sau quá trình huấn luyện Overfitting xảy ra khi có nhiễu lỗi (nhiễu) trong tập huấn luyện, số lượng huấn luyện ít, không đủ cho toàn bộ đặc trưng của tập dữ liệu, hoặc do số chiều đặc trưng quá lớn.
Bình phương tối thiểu đệ quy là tương đương với FLDA nếu mục tiêu hồi quy được cho bằng với W/N¡ cho các mẫu lớp +1 và bằng -W/N; cho các mẫu lớp -1 (với N là tổng số mẫu huấn luyện, N, va No tương ứng là số mẫu huấn luyện thuộc lớp +1 và lớp -1) Việc chứng minh cho sự tương đồng giữa bình phương tối thiểu đệ quy và FLDA có thể được tham khảo trong sách của Bishop, 2006 [1] BLDA là một cách tiếp cận khác nhằm tiến hình thuật toán hồi quy nhưng trên nền tảng Bayesian.
Giả thiết của thuật toán hồi quy Bayesian đó là các mục tiêu t và vector đặc trưng x là tuyến tính với nhiễu trắng Gaussian n: t=w'rtn
3.6 Huấn luyện va phân loại tín hiệu điện não 53
Với giả thiết này, ta có thể viết hàm likelihood cho vector trọng số w sử dụng trong hồi quy: p(D|8.w) = (2—}Yđexp(~5||XTứ — 1|) Ở đây, ? là vector chứa các mục tiêu hồi quy, X là ma trận được tạo ra bởi việc chồng cỏc vector đặc trưng lại theo hàng, D là một cặp (X,t), ỉ là phương sai ngược (inverse variance) của nhiễu, và là số lượng mẫu trong bộ dữ liệu. Để thực hiện suy đoán trong một hệ thống Bayesian, ta cần khảo sát hàm phân bố tiên nghiệm (prior distribution) cho các biến, chang han cho vector trọng số w Phương trình của phan bố tiên nghiệm là: plwla) = (2>)PP(^)"?exp(— wf (aw). với ẽ“(œ) là một ma trận đường chộo cú số chiều là D + 1 a O 0 œ 0 I'(a) 0 O E
Va D là số đặc trưng Sự tiên nghiệm cho các trọng số là một phân bố Gaussian với trung bình bằng không và dang hướng Hiệu ứng của việc sử dụng một tiên nghiệm Gaussian với trung bình bằng không cho các trọng số là tương đồng với hiệu ứng của sự chính tắc hoá (regularization) sử dụng trong hồi quy dạng sóng (ridge regression) và FLDA chính tắc Các ước lượng cho w sẽ được co về gốc và sự nguy hiểm của van đề overfitting sẽ được giảm xuống.
Với hàm likelihood và hàm tiên nghiệm, hàm phân bố hậu nghiệm (Posterior Distri- bution) có thể được tính bằng luật Bayes: p(D|B, w)p(wla)
Vì cả ham tiên nghiệm va ham likelihood đều phân bố Gaussian, ham hậu nghiệm
3.6 Huấn luyện và phân loại tín hiệu điện não 54 cũng là phân bố Gaussian Giá trị trung bình m và hiệp phương sai C của hàm hậu nghiệm thoả mãn các phương trình sau: m= 8(8XXT + T(œ))"}Xt Œ=(60XXT+(a))""
Bằng cách nhân hàm likelihood của một vector đầu vào # mới với ham phân bố hậu nghiệm sau đó lấy tích phân theo w, ta sẽ có được hàm phân bố dự đoán (Predictive Distribution): p(t |3.a,#,D) = / p(t |8, đ,ứ)p(w|8,œ, D)du (3.23)
Ham phân bố dự đoán cũng có phân bố Gaussian va có đặc tính riêng bởi trung bình u và phương sai o?
Tổng quát hơn, các xác suất phân lớp có thể nhận được bằng cách tính xác suất của các giá trị mục tiêu đã được dùng trong huấn luyện Sử dụng hàm phân bố dự đoán và bỏ qua các điều kiện của đ,œ, 2, ta có thể dùng: ®)
Ca ham phân bố hậu nghiệm va ham phân bố dự đoán đều phụ thuộc vào các hyper- parameter a và 3 Ta cho rằng các hyperparameter đều đã biết, tuy nhiên trên thực tế các hyperparameter thường là không biết trước Một cách để giải quyết vấn đề này là sử dụng tính toán kiểm tra chéo (cross-validation) để xác định các hyper-parameter tốt nhất cho việc dự đoán Tuy nhiên, mô hình Bayesian hồi quy cho ta một giải pháp tiêu chuẩn và tốn ít thời gian hơn so với việc chọn hyper-parameter Ý tưởng đó là viết ra ham likelihood cho hyperparameter và sau đó cực đại hoá ham likelihood theo hyper-parameter Giải pháp cực dai hoá likelihood cho hyperparameter được trình bày bởi một thuật toán lặp đơn giản mà tác giả không đi vào chi tiết ở đây, nhưng được mô tả bởi Mackay, 1992 [27] và Bishop, 2006 [1].
3.6 Huấn luyện và phân loại tín hiệu điện não 55
3.6.3 Ung dụng vào phân loại sóng não kích thích P300
Trong các cách phân loại thông thường, một khi dữ liệu x thuộc lớp +1 (mục tiêu) hoặc -1 (không phải mục tiêu) được chiếu lên (projecting) vector phân loại, nếu giá trị (+) lớn hơn ngưỡng yo thỡ x thuộc lớp +1, ngược lại nhỏ hơn ứ thi x thuộc lớp -l Trong ứng dụng P300 speller, ta sẽ không so sánh giá tri đó với ngưỡng Thay vào đó, việc phân loại sẽ dựa trên giá trị lớn nhất (z) của các mẫu thuộc hàng và cột, hay còn gọi đó là bộ phân loại bình chọn “vote classifier” Giá trị lớn nhất của hàng và cột cho ta biết mục tiêu cần tìm là gì.
Ứng dung vào phân loại sóng não kích thích P300
Mô hình hệ thông BCI và giải thuật
Mô hình hệ thống BCI Ặ.ẶẶ 58
Acquisition data > Preprocessing >| xDAWN spatial filter >| Classification (LDA)
R Computer Ề | /, Client Visual stimuli (send command to server)
| poe sess ee secs ees eeee yo === =- h F Z Ị Server , Raspberry Pi2 | (receive command from client)
- ~.ˆ ` ee ee ee ee eee + 4
Trigger GPIO & ee L pị ˆ ˆ f h Feedback mì Process command (4 ) ' ` j ` y
Y ^*~x.x~~x~ owe wen unnunna us ee ĐSẰĐSẶ ĐSẶ MS SMS x~ x~ an = 4 ầ
Hình 4.1: Mô hình hệ thống BCI thực hiện ở Luận Văn.
Bảng P300 để điều khiển HexBug gồm 3 hàng và 3 cột, tương ứng với 9 lệnh điều khiển (8 hướng di chuyển và một lệnh dừng) Mỗi hàng và cột chớp tắt ngẫu nhiên theo 12 lần lặp, mỗi lần lặp có 6 lần chớp tắt hàng và cột:
- DOWN: di lùi - LEFT: rẽ trai - RIGHT: quay phai - UP-LEFT: quay trai 45°
Hinh 4.2: Bang diéu khién P300 speller (Visual Stimuli).
Khi một hang và cột sáng lên, cỡ chữ cũng được nâng lên để tao kích thích tốt hơn (gấp đôi trạng thái bình thường) Trạng thái kích thích sáng lên trong vòng 200ms và tắt trong 100ms, tương ứng một chu kỳ chớp tắt 1 hàng /cột là 300ms.
4.1 Mô hình hệ thống BCI 59
DOWN-LEFT DOWN DOWN-RIGHT
Hinh 4.3: P300 speller: Chép tat theo hang.
Người sử dụng sẽ đeo thiết bị Emotiv EPOC và tập trung nhìn vào màn hình câu lệnh mà mình muốn Hệ thống sé phân tích tín hiệu EEG thu được, phân tích và đưa ra quyết định Kết quả sẽ được tô màu xanh trên P300 speller và sau đó sẽ gửi mã lệnh tương ứng đến thiết bị.
4.1 Mô hình hệ thống BCI 60
Hình 4.5: Kết quả của chương trình hiển thi trên P300 speller.
4.2.1 Giới thiệu sơ lược thiết bị Emotiv EPOC
Dựa trên những phát triển mới nhất của ngày khoa học điện não đồ, hãng Emotiv do 2 người Mỹ gốc Việt là Lê Tần và Nam Đỗ đã cho ra một thiết bị đọc sóng não nhỏ, gon và nhiều kênh Emotiv EPOC là một thiết bi phân giải cao, đa kênh, không dây.
Emotiv EPOC sử dụng một bộ 14 cảm biến và 2 kênh tham chiếu (references) hay còn gọi là tín hiệu mass dé đưa tín hiệu điện từ não bộ con người bao gồm suy nghĩ,cảm xúc và biểu hiện thái độ ở gương mặt theo thời gian thực EPOC kết nối không dây với máy tính qua hệ điều hành Windows, Linux hoặc Mac OSX.
Thiết bị Emotiv EPOC .0.0.000.0 000000000 eee 61
Kết nối thiết bị Emotiv EPOC với may tính
4.3.1 Ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình đa mục đích được tạo ra vào cuối những năm
1980s, và được đặt tên theo nhóm kịch Monty Python, nó được sử dụng bởi hang ngàn người để làm những việc từ kiểm thử vi mạch tại hãng Intel, sử dụng trong ứng dụng Instagram, các nghiên cứu xử lý tín hiệu số, cho tới việc xây dựng các video game với thư viện PyGame Python nhỏ và chặt chẽ, có hàng trăm các thư viện của bên thứ ba (third-party), và có thể chạy trên nhiều nền tảng hệ điều hành khác nhau (Windows, Unix, Mac OSX, ).
Cú pháp ngôn ngữ Python rat dễ đọc, nhiều thu viện mở và có một cộng đồng sử dung phong phú Trong khuôn khổ Luận Văn này, ngôn ngữ Python được viết cho module giao tiếp server (Raspberry Pi 2) và client (máy tính) Trong đó, máy tính sau khi xử lý tín hiệu EEG từ Emotiv và đưa ra kết quả, máy tính sẽ gửi tín hiệu sang cho Raspberry Pi 2 board theo giao thức TCP/IP Ngoài ra, điều khiển chân GPIO giao tiếp với HexBug remote cũng sử dụng ngôn ngữ Python.
OpenVibe [34] là một thư viện mở và miễn phí dùng cho các nghiên cứu và ứng dung về BCI Người sử dụng có thể tùy ý sử dụng các modules trong việc thiết kế, kiểm tra các ứng dụng liên quan đến sóng não Thư viện tương thích với nhiều thiết bị thu nhận sóng não khác nhau như Emotiv EPOC, Neurosky, OpenBCI, Ngoài ra, người dùng có thể tùy biến, thêm các module tùy vào mục đích của mình.
Tương tự, OpenVibe giao tiếp với thiết bị Emotiv EPOC dựa trên Emotiv SDK Trong khuôn khổ Luận Văn, bộ SDK được bán bởi Emotiv với giá khá cao, ngoài điều kiện
Ngôn ngữ lập trình và thư viện thực hiện chương trình
Ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình đa mục đích được tạo ra vào cuối những năm
1980s, và được đặt tên theo nhóm kịch Monty Python, nó được sử dụng bởi hang ngàn người để làm những việc từ kiểm thử vi mạch tại hãng Intel, sử dụng trong ứng dụng Instagram, các nghiên cứu xử lý tín hiệu số, cho tới việc xây dựng các video game với thư viện PyGame Python nhỏ và chặt chẽ, có hàng trăm các thư viện của bên thứ ba (third-party), và có thể chạy trên nhiều nền tảng hệ điều hành khác nhau (Windows, Unix, Mac OSX, ).
Cú pháp ngôn ngữ Python rat dễ đọc, nhiều thu viện mở và có một cộng đồng sử dung phong phú Trong khuôn khổ Luận Văn này, ngôn ngữ Python được viết cho module giao tiếp server (Raspberry Pi 2) và client (máy tính) Trong đó, máy tính sau khi xử lý tín hiệu EEG từ Emotiv và đưa ra kết quả, máy tính sẽ gửi tín hiệu sang choRaspberry Pi 2 board theo giao thức TCP/IP Ngoài ra, điều khiển chân GPIO giao tiếp với HexBug remote cũng sử dụng ngôn ngữ Python.
Thư viện OpenVibe 2 0.0.0.0 0.00000 eee va 67
OpenVibe [34] là một thư viện mở và miễn phí dùng cho các nghiên cứu và ứng dung về BCI Người sử dụng có thể tùy ý sử dụng các modules trong việc thiết kế, kiểm tra các ứng dụng liên quan đến sóng não Thư viện tương thích với nhiều thiết bị thu nhận sóng não khác nhau như Emotiv EPOC, Neurosky, OpenBCI, Ngoài ra, người dùng có thể tùy biến, thêm các module tùy vào mục đích của mình.
Tương tự, OpenVibe giao tiếp với thiết bị Emotiv EPOC dựa trên Emotiv SDK Trong khuôn khổ Luận Văn, bộ SDK được bán bởi Emotiv với giá khá cao, ngoài điều kiện
4.3 Ngôn ngữ lập trình và thư viện thực hiện chương trình 67
Luận Văn Thạc Sĩ cho phép, vì vậy tác gia đã nhúng vào OpenVibe một module dành cho Emotiv EPOC để lay tín hiệu EEG và gửi các gói chứa giá trị raw data đến OpenVibe bằng giao thức OSC (Open Sound Control) dựa trên phần 3.2.2.
Ngoài ra, OpenVibe cung cấp các module cho việc xử lý tín hiệu EEG (bộ lọc, tiền xử lý, huấn luyện, phân loại, các scripts lua/python/rml) theo giao diện trực quan va dé sử dụng Người dùng cần có kiến thức cơ bản các tool box trong OpenVibe để có thé dễ dang sử dụng nó OpenVibe được phát triển bởi Viên nghiên cứu Khoa hoc máy tính và ứng dụng Quốc gia Pháp (French National Institute for Research in Computer Science and Control - INRIA) và được sử dung khá nhiều bởi những người nghiên cứu chuyên sâu về lĩnh vực BCI.
OpenVibe gọi các module xử lý là các Box, mỗi Box được thiết kế các ngõ vào ra tùy vào mục đích của người sử dụng Vì vậy, người sử dụng phải đọc và hiểu cách thức định nghĩa của Box để có thể thiết kế ứng dụng theo ý của mình.
OpenVibe sử dụng trong Luận Văn này được dịch và chạy trên máy tính Ubuntu 15.04.
Ngoài ra, người sử dụng cũng có thể sử dụng OpenVibe trên máy tính Windows.
Giải thuật quá trình huấn luyện
Đầu tiên, người sử dụng phải thực hiện bước huấn luyện với để tìm ra các thông số bộ lọc không gian xDAWN và vector thành phan của giải thuật phân loại BLDA Tin hiệu thu được từ thiết bị Emotiv EPOC liên tục với tần số lay mau là 128Hz, các thời điểm chớp tắt từ bảng điều khiển P300 speller sẽ được đồng bộ hóa với thời điểm lấy mẫu để có thể xác định khoảng vị trí nào là mục tiêu cần tìm Ta tiến hành quá trình lấy mẫu đầu tiên, mẫu được lấy vào từ 14 kênh và lưu trong một ma trận hai chiều N, x 14.
Hình 4.10: Sơ đồ khối quá trình lấy mau.
Sau khi có được mẫu, chương trình sẽ tiến hành đọc mẫu, lưu vào bộ nhớ đệm và bắt đầu quá trình tìm thông số tối ưu cho bộ lọc spatial filter dựa trên mau thu được Bộ lọc thông dai Butterworth (1 Hz đến 15 Hz) được ứng dụng để triệt nhiễu thành phan tần số cao (tín hiệu từ điện trong nhà, các cử động của da đầu, và các nhiễu tit nguồn khác) Bộ loại bỏ thành DC cũng được ấp dụng để chuẩn hóa tín hiệu có trung bình bằng 0 Cuối dùng, dựa trên thuật toán xDAWN đã giới thiệu ở trên để ước lượng giá trị bộ lọc không gian spatial filter, giảm số chiều từ 14 xuống 3 Ngoài ra, cực đại hóa ti số tín hiệu trên tín hiệu và nhiễu SSNR để thành phần P300 được rõ ràng hơn.
Bandpass Butterworth Filter (1Hz - 15HZ)
Maximize SSNR 14 to 3 dimensions fector u of XOAWN
Hình 4.11: Sơ đồ giải thuật huấn luyện tìm hệ số bộ lọc với xDAWN.
Sau khi có kết quả huấn luyện để tìm hệ số tối ưu u Ta tiếp tục huấn luyện để phân loại lớp của tín hiệu (mục tiêu hoặc không phải mục tiêu) Các mẫu sau khi qua bộ lọc spatial filter sẽ tiến hành lấy trung bình trong nhiều 10 chu kỳ chớp tắt để thành phần P300 được rõ ràng nhất Bộ phân loại BLDA sẽ tiến hành phân loại 2 lớp (mục tiêu và không phải mục tiêu) tương ứng với nhãn (+1) — mục tiêu và (-1) — không phải là mục tiêu, sau cùng chương trình sẽ tính toán và đưa ra hệ số phân loại và lưu lại để cho quá trình phân loại sau này.
Nếu quá trình phân loại không đạt độ chính xác cao, ta có thể thực hiện việc huấn luyện này lại để nâng cao độ chính các Theo thực nghiệm, mỗi khi sử dụng, ta nên thực hiện lại quá trình huấn luyện vì tín hiệu điện não sẽ không thực sự hoàn toàn giống nhau, tùy thuộc vào thiết bị và các tác nhân ngoài ý muốn khác.
Bandpass Butterworth Filter (1Hz - 15HZ)
Signal baseline removal xDAWN Spatial Filter
Target selection Non-target (P300) selection a A ` A
Hình 4.12: Sơ đồ giải thuật quá trình huấn luyện 2 lớp với tập mau.
Giải thuật quá trình phân loại
Sau quá trình huấn luyện ở trên, ta đã có một mô hình hoàn chỉnh gồm có các thông sô bộ loc spatial filter và bộ phân loại Quá trình phân loại cũng là chương trình chính mà người dùng sẽ sử dụng để đưa ra các câu lệnh Giải thuật của quá trình này gần giống như quá trình phân loại, chỉ khác ở phần phân loại khi ta phải tính điểm của mẫu thu được so với quá trình huấn luyện và ra quyết định Sơ đồ giải thuật dưới đây môt tả tổng quát toàn bộ quá trình của chương trình chính.
Bandpass Butterworth Filter (1Hz - 15Hz)
Meee eee ee ee ee ee ee ee ee ee ee ee ee ee ®
RETURN Time based Time based Time based] | | [Time based epoching epoching epoching |! : | epoching
Average Average Average | ‘| Average epoch epoch epoch |! !| epoch
BLDA BLDA BLDA |; ¡| BLDA classifier classifier classifier |; ! | classifier
Hình 4.13: Sơ đồ giải thuật của chương trình chính.
Time based Time based epoching epoching
Các mẫu tín hiệu được phân chia theo hàng và cột Sau khi đi qua bộ lọc không gian spatial filter theo giải thuật xDAWN để tăng cường SSNR được tính toán độc lập theo cách thức giống nhau Bộ phân loại BLDA tính toán điểm của từng mẫu và chọn giá trị lớn nhất của hàng và cột để xác định lệnh.
Lệnh được gửi sang Raspberry board theo giao thức TCP/IP, và sẽ được xử lý để điều khiến chân GPIO theo mức thấp, cao.
Ngoài ra, giải thuật được thiết kế khi quá trình huấn luyện ở lần đầu tiên chưa thể đạt kết quả khả quan, tỉ lệ nhận dạng và phân loại thấp Chương trình sẽ quay lại bước huấn luyện lại dựa trên mẫu thu được ở quá trình này Khi đó, bộ lọc spatial filter và bộ phân loại sẽ thay đổi theo.
Các module thực hiện trong OpenVibe c2 74
Module thu nhận dữ liệu EEG
Nhiệm của module là thu nhận tín hiệu EEG chuẩn bi quá trình huấn luyện.
Keyboard stimulator Press "a" to Start
Generic stream writer In|Out|Set P300 Speller Visualisation ¥
Hình 5.1: Sơ đồ khối Module thu nhận tín hiệu EEG trong OpenVibe.
- Box “Acquisition Client” liên kết với module nhận nhiệm vụ lay thông tin dữ liệu raw data từ thiết bị Emotiv.
- Box “Flashing Sequence” định nghĩa số lượng hang va cột của P300 speller, thời gian chớp tắt của từng hàng, từng cột, cũng như số lần chớp và số lần lặp.
- Box “Target Letter Generation” có nhiệm vụ chọn một lệnh ngẫu nhiên để người sử dụng nhìn vào mục tiêu (target).
- Box “P300 Speller Visualisation” hiển thị P300 speller.
- Tín hiệu thu nhận được viết vào một file ov nhờ Box “Generic stream writer”.
Box “Acquisition Client” liên kết với “Acquisition Server”, là một OSC server “Emokit”, chương trình hoạt động như một server lấy tin hiệu EEG gửi về từ Empotiv EPOC và lưu giữ ở USB buffer của USB Dongle, chương trình liên tục gửi dữ liệu qua Port loopback 127.0.0.1 của máy tính dưới dang một OSC packets Box “Acquisition Client”
5.1 Cac module thực hiện trong OpenVibe 75
Luận Văn Thạc Sĩ liên tục đọc dữ liệu dựa vào Port 1024 để có được tín hiệu raw data EEG.
Driver: Emokit (unstable) - | Driver Properties Preferences
Sample count per sent block: 32
Device drift: 0.00 ms (tolerance is set to 2,00 ms)
Hình 5.2: Server “emokit” lay tín hiệu EEG từ Emotiv EPOC USB Dongle.
5.1.2 Module huấn luyện dé tim thông số bộ lọc theo giải thuật x DAWN
Nhiệm vụ chính của module là dựa vào mẫu thu được ở module thu nhận dữ liệu EEG và tiến hành huấn luyện tập mẫu để tìm ra thông số tối ưu của bộ lọc không gian bằng giải thuật xDAWN.
Generic stream reader In|Out|Set
Hình 5.3: Sơ đồ Module huấn luyện tìm thông số bộ lọc bằng xDAWN.
5.1 Các module thực hiện trong OpenVibe 76
- Box “Generic stream reader” có nhiệm vụ đọc file ov được lưu ở bước lay mẫu.
- Box “Temporal filter” là bộ lọc thong dai Butterworth, nhiệm vụ tiền xử lý tín hiệu, cụ thể là lọc các tần số cao gây nhiễu.
- Box “Signal Decimation” là bộ lọc trung bình, chuẩn hóa tín hiệu có trung bình bằng 0.
- Box “Time base epoching” phân chia tín hiệu theo thời gian một khoảng thời gian 600ms.
- Box “xDAWN Spatial Filter Trainer” là giải thuật xDAWN để tìm thông số tối ưu bộ lọc không gian spatial filter nhằm tăng mức SSNR và làm rõ thành phần có P300, lọc nhiễu.
- Box “Player Controller’ có nhiệm vụ tạm ngưng module sau khi hoàn thành bước huấn luyện.
5.1.3 Module huấn luyện để tìm vector thành phan theo giải thuật BLDA
Sau khi có được thông số của bộ lọc không gian spatial filter dựa vào lời giải của giải thuật xDAWN, module tiếp theo có nhiệm vụ huấn luyện mẫu nhận được và tiến hành phân loại Các mẫu được chia thành hai bộ (mục tiêu và không phải mục tiêu) và đưa vào bộ phân loại (BLDA hoặc SVM) để huấn luyện.
Kết thúc chương trình, thông số của bộ phân loại được lưu lại và tính toán độ chính xác (accuracy) của khả năng phân loại dựa trên tập mẫu đưa vào Tại mỗi lần chạy thử, tín hiệu tập mẫu có thể khác nhau tùy thuộc điều kiện môi trường, con người, kết quả của độ chính xác sẽ tăng khi ta thực hiện lại quá trình huấn luyện này nhiều lần Độ chính xác sẽ được in ra trong OpenVibe message box.
5.1 Các module thực hiện trong OpenVibe 77
Generic stream reader In|Out|Set
(Temporal Filter} i (Signal Decimation | P300 Speller Visualisation xDAWN Spatial Filte In|Out|Set
Stimulation ‘based epoching | Stimulation based epoching
Target Selection Non Target Selection
Epoch average Epoch average : InjOut|Set In|Out|Set Signal display sa sa
Feature aggregator Feature aggregator In|Out|Set In|Out|Set
Classifier trainer In|Out|Set ¥
Hình 5.4: Sơ đồ Module huấn luyện của quá trình phan loại tap dit liệu EEG mau.
- Box “xDawn Spatial Filter”: thông số bộ lọc được thiết lập dựa trên module huấn luyện “xDAWN Spatial Filter Trainer”
- Box “Target Selection” và “Non Target Selection” chứa hai tín hiệu thuộc mục tiêu và không phải mục tiêu.
- Box “Target response” sẽ vẽ ra tín hiệu của mục tiêu sau khi đưa qua bộ lọc không gian spatial filter Box này có thé được tắt đi để giảm thời gian xử lý của máy tính Thực nghiệm cho thấy, khi mở Box lên thì CPU máy tính sẽ tốn thời gian cho việc vẽ tín hiệu, từ đó làm tăng thời gian xử lý tín hiệu.
- Box “Epoch average” tính toán trung bình của các lần lặp để làm tăng kết quả của thành phần kích thích P300 của tập tín hiệu mẫu.
- Box “Classifier Trainer” tiễn hành phân loại hai lớp Kết qua của quá trình phân loại sẽ được lưu lại để sử dụng ở bước sau.
5.1 Các module thực hiện trong OpenVibe 78
Module ứng dụng chính còn có tên gọi “Online Module”, nghĩa là người sử dụng có thể sử dụng chương trình thời gian thực Module chính có thể được chia làm hai phần: phần 1 (lấy dữ liệu EEG và tiền xử lý), phần 2 (phân loại và gửi lệnh)
Trong phần 1, module lấy dữ liệu EEG khi người sử dụng nhìn vào bảng điều khiển P300 speller Sau 12 chu kỳ chớp tắt hàng và cột, chương trình bắt đầu đưa các mẫu vào các Box dé tiền xử lý (lọc thông dải, loại bỏ thành phan DC) Phan tín hiệu được loại bỏ nhiễu được cho vào bộ lọc không gian spatial filter theo các thông số đã tìm được ở huấn luyện.
- Box “Target Letter Generator” chọn ngẫu nhiên mục tiêu (lệnh) để người dùng tập trung nhìn vào Trong thực tế, ta có thể không sử dụng Box này, nó được sử dụng chủ yếu trong quá trình kiểm thử chương trình và đo đạc độ chính xác của quá trình phân loại, nếu kết quả phân loại thấp, ta có thể thực hiện lại bước huấn luyện để cập nhật các giá trị của spatial filter và bộ phân loại.
- Box “xDAWN Spatial Filter’ chứa thông tin của bộ loc spatial filter đã thực hiện ở Module huấn luyện tìm thông số bộ lọc.
- Box “Generic Stream Writer” ghi lại tập mẫu trong trường hợp cần kiểm thử chương trình, huấn luyện lại tap mẫu hoặc xem lại kết quả trên một module khác (Module replay).
- Các Box khác cũng giống như những module ở phần huấn luyện.
5.1 Các module thực hiện trong OpenVibe 79
Lua Stimuleto Target Letter Generation
Injoutlset ¥ Xe. ¥ identity In|lOut|Set
(Signal Decimation | f Generic stream writer
Spatial Filter ⁄ XDAWN Spatial Filter
_— x- Hình 5.5: Sơ đồ của Module chương trình chính (phần 1).
Trong phan 2, module tiến hành chọn các mẫu thuộc 3 hàng, 3 cột của mỗi lần chớp tắt, và tính trung bình cho 12 lần lặp, sau đó tiến hành phân loại và tính điểm, giá trị lớn nhất của hàng và cột cho ta biết kết quả Kết quả được gửi sang Raspberry bằng giao thức TCP/TP.
- Box “Voting Classifier” trả về kết quả phân loại P300 lớn nhất của 3 hàng và 3 GỘI.
- Box “Python scripting” chứa mã nguồn của quá trình giao tiếp giữa máy tính và Raspberry Pi 2 Box có 2 ngõ vào chính là thứ tự của hàng va cột mà Box
“Voting Classifier” trả về Chương trình code Python được quét tốc độ 1 Hz dé tìm xem có ngõ vào nào được kích thích khong (stimulations input), nếu cả hai ngõ vào đều có giá trị thì chương trình sẽ tiến hành tìm giá trị ứng với hàng cột để và gửi sang Raspberry Pi 2 board dưới dạng một gói dit liệu TCP.
5.1 Các module thực hiện trong OpenVibe 80
101eBa!BBe ain1ea-J joje69s66e asnqeay
1 139siầno|ui SARS RY KG nung puewuo> pues |
32sjnolul A, aBesaae yood3 hts ts ey
[Surysoda pase u6|E)n1S ) (Butu>oda paseq u0|3#)nJS | (Butqsods paseq uỉ|3e)n1S)
12shano|u\ Ấ3uapI ga aBe!aAe q2od3 A,
! UI S3SISUỉ3 Á||e3Iseq sunadid 0113332p 00Ed 21JI22đs UMO sey mos ae eal
33SI1?O|UI Á3uapI 1ứSnO|uI &uapI of an 2).
Module chương trình chính (pha 6 của ^ N
5.1 Cac module thực hiện trong OpenVibe Sl
Module huấn luyện để tìm vector thành phần theo giải thuật BLDA 77
Sau khi có được thông số của bộ lọc không gian spatial filter dựa vào lời giải của giải thuật xDAWN, module tiếp theo có nhiệm vụ huấn luyện mẫu nhận được và tiến hành phân loại Các mẫu được chia thành hai bộ (mục tiêu và không phải mục tiêu) và đưa vào bộ phân loại (BLDA hoặc SVM) để huấn luyện.
Kết thúc chương trình, thông số của bộ phân loại được lưu lại và tính toán độ chính xác (accuracy) của khả năng phân loại dựa trên tập mẫu đưa vào Tại mỗi lần chạy thử, tín hiệu tập mẫu có thể khác nhau tùy thuộc điều kiện môi trường, con người, kết quả của độ chính xác sẽ tăng khi ta thực hiện lại quá trình huấn luyện này nhiều lần Độ chính xác sẽ được in ra trong OpenVibe message box.
5.1 Các module thực hiện trong OpenVibe 77
Generic stream reader In|Out|Set
(Temporal Filter} i (Signal Decimation | P300 Speller Visualisation xDAWN Spatial Filte In|Out|Set
Stimulation ‘based epoching | Stimulation based epoching
Target Selection Non Target Selection
Epoch average Epoch average : InjOut|Set In|Out|Set Signal display sa sa
Feature aggregator Feature aggregator In|Out|Set In|Out|Set
Classifier trainer In|Out|Set ¥
Hình 5.4: Sơ đồ Module huấn luyện của quá trình phan loại tap dit liệu EEG mau.
- Box “xDawn Spatial Filter”: thông số bộ lọc được thiết lập dựa trên module huấn luyện “xDAWN Spatial Filter Trainer”
- Box “Target Selection” và “Non Target Selection” chứa hai tín hiệu thuộc mục tiêu và không phải mục tiêu.
- Box “Target response” sẽ vẽ ra tín hiệu của mục tiêu sau khi đưa qua bộ lọc không gian spatial filter Box này có thé được tắt đi để giảm thời gian xử lý của máy tính Thực nghiệm cho thấy, khi mở Box lên thì CPU máy tính sẽ tốn thời gian cho việc vẽ tín hiệu, từ đó làm tăng thời gian xử lý tín hiệu.
- Box “Epoch average” tính toán trung bình của các lần lặp để làm tăng kết quả của thành phần kích thích P300 của tập tín hiệu mẫu.
- Box “Classifier Trainer” tiễn hành phân loại hai lớp Kết qua của quá trình phân loại sẽ được lưu lại để sử dụng ở bước sau.
5.1 Các module thực hiện trong OpenVibe 78
Module ứng dụng chính
Module ứng dụng chính còn có tên gọi “Online Module”, nghĩa là người sử dụng có thể sử dụng chương trình thời gian thực Module chính có thể được chia làm hai phần: phần 1 (lấy dữ liệu EEG và tiền xử lý), phần 2 (phân loại và gửi lệnh)
Trong phần 1, module lấy dữ liệu EEG khi người sử dụng nhìn vào bảng điều khiển P300 speller Sau 12 chu kỳ chớp tắt hàng và cột, chương trình bắt đầu đưa các mẫu vào các Box dé tiền xử lý (lọc thông dải, loại bỏ thành phan DC) Phan tín hiệu được loại bỏ nhiễu được cho vào bộ lọc không gian spatial filter theo các thông số đã tìm được ở huấn luyện.
- Box “Target Letter Generator” chọn ngẫu nhiên mục tiêu (lệnh) để người dùng tập trung nhìn vào Trong thực tế, ta có thể không sử dụng Box này, nó được sử dụng chủ yếu trong quá trình kiểm thử chương trình và đo đạc độ chính xác của quá trình phân loại, nếu kết quả phân loại thấp, ta có thể thực hiện lại bước huấn luyện để cập nhật các giá trị của spatial filter và bộ phân loại.
- Box “xDAWN Spatial Filter’ chứa thông tin của bộ loc spatial filter đã thực hiện ở Module huấn luyện tìm thông số bộ lọc.
- Box “Generic Stream Writer” ghi lại tập mẫu trong trường hợp cần kiểm thử chương trình, huấn luyện lại tap mẫu hoặc xem lại kết quả trên một module khác (Module replay).
- Các Box khác cũng giống như những module ở phần huấn luyện.
5.1 Các module thực hiện trong OpenVibe 79
Lua Stimuleto Target Letter Generation
Injoutlset ¥ Xe. ¥ identity In|lOut|Set
(Signal Decimation | f Generic stream writer
Spatial Filter ⁄ XDAWN Spatial Filter
_— x- Hình 5.5: Sơ đồ của Module chương trình chính (phần 1).
Trong phan 2, module tiến hành chọn các mẫu thuộc 3 hàng, 3 cột của mỗi lần chớp tắt, và tính trung bình cho 12 lần lặp, sau đó tiến hành phân loại và tính điểm, giá trị lớn nhất của hàng và cột cho ta biết kết quả Kết quả được gửi sang Raspberry bằng giao thức TCP/TP.
- Box “Voting Classifier” trả về kết quả phân loại P300 lớn nhất của 3 hàng và 3 GỘI.
- Box “Python scripting” chứa mã nguồn của quá trình giao tiếp giữa máy tính và Raspberry Pi 2 Box có 2 ngõ vào chính là thứ tự của hàng va cột mà Box
“Voting Classifier” trả về Chương trình code Python được quét tốc độ 1 Hz dé tìm xem có ngõ vào nào được kích thích khong (stimulations input), nếu cả hai ngõ vào đều có giá trị thì chương trình sẽ tiến hành tìm giá trị ứng với hàng cột để và gửi sang Raspberry Pi 2 board dưới dạng một gói dit liệu TCP.
5.1 Các module thực hiện trong OpenVibe 80
101eBa!BBe ain1ea-J joje69s66e asnqeay
1 139siầno|ui SARS RY KG nung puewuo> pues |
32sjnolul A, aBesaae yood3 hts ts ey
[Surysoda pase u6|E)n1S ) (Butu>oda paseq u0|3#)nJS | (Butqsods paseq uỉ|3e)n1S)
12shano|u\ Ấ3uapI ga aBe!aAe q2od3 A,
! UI S3SISUỉ3 Á||e3Iseq sunadid 0113332p 00Ed 21JI22đs UMO sey mos ae eal
33SI1?O|UI Á3uapI 1ứSnO|uI &uapI of an 2).
Module chương trình chính (pha 6 của ^ N
5.1 Cac module thực hiện trong OpenVibe Sl
Module nhận và xử lý lénh Q2 82
Sau khi lệnh được gửi từ module xử lý chính của chương trình (Box Python Script), lệnh được nhận bằng module nhận và xử lý lệnh Module này được thực hiện trong Raspberry Pi 2 board Raspbery Pi 2 chạy hệ điều hành Ubuntu 14.04 phiên bản dành riêng cho vi xử lý ARM 32 bit.
Raspberry Pi 2 hoạt động như một Server dựa trên IPv4 socket, chương trình sẽ lắng nghe từ Port 5005 để lấy dữ liệu gửi từ Client (máy tính).
Module được viết bằng ngôn ngữ lập trình Python với sự hỗ trợ bởi thư viện Socket python và RPi GPIO (Raspberry Pi GPIO library) Khi Raspberry Pi 2 nhận được lệnh gửi từ may tính, chương trình tiến hành phân tích dữ liệu và xử lý, các chân GPIO của board sẽ được kích hoạt mức thấp (LOW) để tín hiệu Bluetooth từ Hex Bug remote được truyền đi Mã nguồn của module có thể được tìm thấy ở phần Phụ lục.
Mô hình của module được diễn giải như hình dưới đây:
Hình 5.7: Sơ đồ khối Module giao tiếp Raspberry Pi 2 và máy tính.
5.2 Module nhận và xử lý lệnh 32
Kết quả thực nghiệm 2 2 va 83
Khao sát thời gian chớp tat ISI
Trong khảo sát này, ta giữ số lần lặp là 12 lần cho mỗi hàng và cột, và giải thuật BLDA là giải thuật phân loại chính.
Với ISI = 300ms, tương ứng thời gian sáng lên (intensify) là 200ms, thời gian tắt là 100ms.
Với ISI = 200ms, tương ứng với thời gian sáng lên là 100ms, thời gian tắt van giữ 100mg.
Với ISI = 150ms, tương ứng với thời gian sáng lên là 100ms, thời gian tắt giảm xuống oOms.
Ta thực hiện việc lay mau cho ba trường hợp va tiến hành huấn luyện, kết quả huấn luyện được cho theo bang sau:
ISI (ms) Thời gian lay mẫu một phiên xử lý Ti lệ phân loại ISI = 300 ms 21.68 77.5%
Bang 5.1: Bang so sánh khả năng phân loại mau với ISI 300ms, 200ms va 150ms Ở Bảng 5.1, mặc dù ISI giảm xuống 200 ms, tức là thời gian chớp tắt của hang / cột giảm Tuy nhiên, thực tế cho thấy, tỉ lệ phân loại P300 trong tập dữ liệu lấy mẫu tốt hơn khi ISI = 200 ms Thử giảm thời gian tắt hàng cột của P300-speller, thời gian chớp rất nhanh, gây hiệu ứng vùng lân cận khi sự tập trung vào ký tự bị phân tán bởi các ký tự lan cận gây nhiễu loạn và tỉ lệ phân loại thấp trong trường hợp ISI0ms.
Tiếp theo, ta thử khảo sát chương trình thực tế khi chạy có độ chính xác thế nào với các thông số ISI trên.
ISI (ms) Test 1 Test 2 Test 3 Test 4 Test 5 Trung bình ISI00ms 8/10 9/10 9/10 9/10 8/10 86%
Bang 5.2: Bang so sánh tỉ lệ phân loại ISI 300ms, 200ms và 150ms
Dựa vào bảng 5.2, kết quả thu được với ISI 200ms cho kết quả rất khả quan Ngoài ra,mục tiêu giảm thời gian thu nhận tín hiệu cũng như một phiên xử lý rất quan trọng trong điều khiển thiết bị thực tế Ta sẽ chọn ISI 200 ms cho chương trình chính.
Khao sát số lần lặp của việc chớp tắt P300 speller
Trong khảo sát này, ta thử giảm số lần lặp từ 12 xuống 6 lần và so sánh kết quả phân loại Giảm số lần lặp giúp cho thời gian xử lý một phiên (session) nhanh hơn và ứng dụng có thể chạy thời gian thực tốt hơn.
Giả sử với tổng thời gian chớp tắt một hàng hay cột - ISI = 300ms, tổng thời gian của quá trình lấy mẫu một lệnh là 300ms x 12 x 6 = 21.6s, trong khi đó, với 6 lần lặp, ta chỉ cần tốn 10.8s Tuy nhiên, sự chính xác khi phân loại còn phụ thuộc vào giá trị trung bình của các lần lặp Nếu trong một lần lặp, mục tiêu không thực sự rõ ràng, các lần lặp khác có tác dụng làm cho mục tiêu rõ ràng hơn để nhận dạng. n (lần lặp) Thời gian lấy mẫu một phiên xử lý Ti lệ phân loại n = 12 21.6 s 79.5% n=6 10.8 s 68.8%
Bảng 5.3: Bang so sánh khả năng phân loại mẫu với 12 và 6 lần lặp
Rõ ràng, tỉ lệ có thể phân loại được ở trường hợp 6 lần lặp không khả thi Ta sẽ giữ số lần lặp là 12 Điều này chứng tỏ: số lần lặp càng nhiều, độ chính xác càng cao Tuy nhiên, thời gian lấy mẫu và xử lý một phiên sẽ dài hơn.
5.3.3 Khao sát hai giải thuật phân loại BLDA và SVM
Giải thuật SVM dựa trên khoảng cách lớn nhất từ các vector hỗ trợ (support vector), trong khi đó giải thuật LDA dựa trên kỳ vọng hai lớp càng xa càng tốt và phương sai càng nhỏ càng tốt Trong quá trình khảo sát, ta sẽ phân tích khả năng phân loại của hai giải thuật SVM và dựa trên cùng một tập mẫu.
Các tập mẫu đưa vào bộ phân loại là giống nhau sau khi qua bộ lọc không gian spatial filter bằng giải thuật xDAWN sẽ giảm số chiều còn [720 x 57] Dé đo đạc khả năng phân loại, ta dựa trên hệ số cross-validation hay Mean square error (MSE).
Classifier Cross-validation Traning set accuracy CPU usage Thời gian huấn luyện SVM 72.3% 76.8% 27.5% 40 giây
BLDA 72.7% 77.9% 16.5% 5 giây Bang 5.4: Bang so sánh kha năng phân loại giữa hai giải thuật SVM va BLDA
Không có sự sai khác nhiều ở kha năng phân loại giữa hai giải thuật SVM và BLDA.
Tuy nhiên, thời gian để thực hiện quá trình huấn luyện bằng giải thuật SVM chiếm thời gian va tài nguyên máy tính nhiều hơn giải thuật BLDA Vì vậy, ta sẽ chọn giải thuật BLDA làm giải thuật chính.
5.3.4 Khảo sát độ chính xác của hệ thông BCI
Sau khi khảo sát các thông số: số lần lặp khối là 10, thời gian chớp tắt của hàng cột ISI 200ms và chọn bộ phân loại BLDA Hệ thống BCI sé được kiểm thử trên 2 người để đánh giá độ tin cậy của hệ thống.
Mỗi 9 lệnh sẽ được nhìn một cách chủ quan (không tạo mục tiêu ngẫu nhiên), số lần thực hiện cho mỗi lệnh là 10 lần, và thực hiện lặp lại trong 5 lần (tổng cộng 50 lần mỗi lệnh), sau mỗi lần lặp, người dùng có thể nghỉ ngơi và thêm dung dịch nước muối sinh lý Chương trình sẽ được thiết kế lại trong quá trình kiểm thử, kết quả sẽ được tự động ghi lại trong một tập tin ov, sau khi thực hiện việc kiểm thử, ta có thể xem
Luận Văn Thạc Sĩ lại quá trình thực hiện của chương trình, điều này tránh cho người sử dụng có thể bị phân tâm cũng như giảm kết quả ghi chép Kết quả không những đánh giá kết quả chính xác trên toàn ứng dụng mà còn chỉ ra sự ảnh hưởng của các tác nhân đã phân tích ở Chương 3 khi người sử dụng sẽ bị ảnh hưởng bởi sự chớp tắt của các vùng lân cận mục tiêu hay sự mệt mỏi khi sử dụng trong thời gian dài gây ảnh hưởng đến độ chính xác của hệ thống.
Bảng 5.5 sau đây đánh giá độ tin cậy của hệ thống khi hệ thống được kiểm thử trên người thứ 1 (tác giả luận văn, nam giới - 26 tuổi) Mỗi lệnh được thực hiện 50 lần (10 lần x 5 lần lặp).
Taree Result | op | ut | ur | DOWN | D-L | D-R | Lert | RIGHT | STOP | Tỉ lẹ
UP 43 [| 2 | 1 1 0 | 0 1 0 2 | 43/50 U-L 2 | 46 | 0 0 1 | 0 1 0 0 | 46/50 U-R 1 | 2 | 45 0 0 | 0 0 1 1 | 45/50 DOWN 1! 0 | 0 43 mm 2 0 2_ | 43/50 D-L 0 L0 | 0 2 46 | 0 2 0 0 | 46/50 D-R 0 L0 | 0 1 0 | 47 | 0 2 0 | 47/50 LEFT 0 | 2 1 0 1 1 | 0 | 43 1 2 | 43/40 RIGHT 00 3 0 0 | 0 1 44 2 | 44/50 STOP TL] 0 [TT 1 3 | 0 1 2 42 | 42/50
Bảng 5.5: Bảng đánh giá độ chính xác của hệ thống BCI thực hiện trên người thứ 1
Bảng 5.6 sau đây đánh giá độ tin cậy của hệ thống khi hệ thống được kiểm thử trên người thứ 2 (nam giới - 28 tuổi).
Taree Result | op | U-L | U-R | DOWN | D-L | D-R | LEET | RIGHT | STOP | Tile
UP a} 2 [| 4 1 0 | 0 0 0 2_ | 41/50 U-L 1 | 44 | 0 1 0 | 1 2 0 1 | 44/50 U-R 2 | 0 | 43 0 1 | 0 0 3 1 | 43/50 DOWN 0] 1 | 0 43 1 | 3 0 0 2_ | 43/50 D-L 0 | 1 | 0 3 44 | 0 2 0 0 | 44/50 D-R 0 | 0 | 0 2 1 | 45 0 1 1 | 45/50 LEFT 0 | 2 | 0 0 3 | 0 43 1 1 | 43/50 RIGHT 0 | 0 [1 2 1 | 0 3 39 4 | 39/50 STOP 3 | 1 | 0 2 0 | 0 2 1 41 | 41/50
Bảng 5.6: Bang đánh giá độ chính xác của hệ thống BCI thực hiện trên người thứ 2
Nhận thấy các ký tự nằm ở rìa của giao diện điều khiển P300-speller ít bị sai nhất vì khi nhìn ở các góc, ta ít bị ảnh hưởng bởi các lệnh lân cận khi chớp tắt, gây ra các sóng não kích thích P300 nằm ở vị trí không phải ta quan tâm Vì vậy, hiệu ứng lân cận ảnh hưởng khá nhiều đến độ chính xác của hệ thống BCI.
Ngoài ra, trong quá trình kiểm thử, các lần lặp sau cùng cho kết quả không chính xác bằng những lần lặp đầu tiên do sự mệt mỏi của người làm thí nghiệm khi nhìn vào một trạng thái chớp tắt trong thời gian dài. Đối với một người chưa tiếp xúc với hệ thống BCI trước đây, kết quả thu được cho khả năng ứng dụng cao khi đạt độ chính xác lớn hơn 85%.
Kết luận và hướng phát triển
Kết quả của giải thuật có độ chính xác cao khi áp dụng vào thực tế điều khiển thiết bị Mini robot HexBug với điều kiện ISI 200ms cho mỗi lần chớp tắt là 100ms, số lần lặp là 12 lần, và sử dụng giải thuật xDAWN để nâng cao tỉ lên SSNR cũng như giảm số chiều trước khi đưa vào bộ phân loại BLDA.
Chương trình được thiết kế có thể chạy ở thời gian thực, việc đọc tín hiệu EEG dựa trên module viết riêng cho thiết bị Emotiv và nhúng vào thư viện OpenVibe Chương trình chính hoạt động như một client liên tục đọc đữ liệu EEG trả về từ server, nhờ đó, vẫn đề đồng bộ thời gian giữa quá trình lấy mẫu tín hiệu và P300 speller chớp tắt được chính
Thuật toán xDAWN cho kết quả tốt hơn so với Dé cương đề cập, nhiễu được khử va thành phần sóng não kích thích P300 rõ ràng hơn, dễ dàng cho việc phân loại Ngoài, ra, không cần sử dụng một vài phương pháp trích đặc trưng theo thời gian của tín hiệu, giảm thời gian xử lý.
Giải thuật BLDA cho kết quả tốt, nhanh và không tốn tài nguyên máy tính Thời gian xử
90 lý một phiên từ lúc lấy mẫu cho đến khi cho kết quả nhanh, phù hợp xử lý thời gian thực.
Khảo sát độ chính xác của hệ thống BCI
Sau khi khảo sát các thông số: số lần lặp khối là 10, thời gian chớp tắt của hàng cột ISI 200ms và chọn bộ phân loại BLDA Hệ thống BCI sé được kiểm thử trên 2 người để đánh giá độ tin cậy của hệ thống.
Mỗi 9 lệnh sẽ được nhìn một cách chủ quan (không tạo mục tiêu ngẫu nhiên), số lần thực hiện cho mỗi lệnh là 10 lần, và thực hiện lặp lại trong 5 lần (tổng cộng 50 lần mỗi lệnh), sau mỗi lần lặp, người dùng có thể nghỉ ngơi và thêm dung dịch nước muối sinh lý Chương trình sẽ được thiết kế lại trong quá trình kiểm thử, kết quả sẽ được tự động ghi lại trong một tập tin ov, sau khi thực hiện việc kiểm thử, ta có thể xem
Luận Văn Thạc Sĩ lại quá trình thực hiện của chương trình, điều này tránh cho người sử dụng có thể bị phân tâm cũng như giảm kết quả ghi chép Kết quả không những đánh giá kết quả chính xác trên toàn ứng dụng mà còn chỉ ra sự ảnh hưởng của các tác nhân đã phân tích ở Chương 3 khi người sử dụng sẽ bị ảnh hưởng bởi sự chớp tắt của các vùng lân cận mục tiêu hay sự mệt mỏi khi sử dụng trong thời gian dài gây ảnh hưởng đến độ chính xác của hệ thống.
Bảng 5.5 sau đây đánh giá độ tin cậy của hệ thống khi hệ thống được kiểm thử trên người thứ 1 (tác giả luận văn, nam giới - 26 tuổi) Mỗi lệnh được thực hiện 50 lần (10 lần x 5 lần lặp).
Taree Result | op | ut | ur | DOWN | D-L | D-R | Lert | RIGHT | STOP | Tỉ lẹ
UP 43 [| 2 | 1 1 0 | 0 1 0 2 | 43/50 U-L 2 | 46 | 0 0 1 | 0 1 0 0 | 46/50 U-R 1 | 2 | 45 0 0 | 0 0 1 1 | 45/50 DOWN 1! 0 | 0 43 mm 2 0 2_ | 43/50 D-L 0 L0 | 0 2 46 | 0 2 0 0 | 46/50 D-R 0 L0 | 0 1 0 | 47 | 0 2 0 | 47/50 LEFT 0 | 2 1 0 1 1 | 0 | 43 1 2 | 43/40 RIGHT 00 3 0 0 | 0 1 44 2 | 44/50 STOP TL] 0 [TT 1 3 | 0 1 2 42 | 42/50
Bảng 5.5: Bảng đánh giá độ chính xác của hệ thống BCI thực hiện trên người thứ 1
Bảng 5.6 sau đây đánh giá độ tin cậy của hệ thống khi hệ thống được kiểm thử trên người thứ 2 (nam giới - 28 tuổi).
Taree Result | op | U-L | U-R | DOWN | D-L | D-R | LEET | RIGHT | STOP | Tile
UP a} 2 [| 4 1 0 | 0 0 0 2_ | 41/50 U-L 1 | 44 | 0 1 0 | 1 2 0 1 | 44/50 U-R 2 | 0 | 43 0 1 | 0 0 3 1 | 43/50 DOWN 0] 1 | 0 43 1 | 3 0 0 2_ | 43/50 D-L 0 | 1 | 0 3 44 | 0 2 0 0 | 44/50 D-R 0 | 0 | 0 2 1 | 45 0 1 1 | 45/50 LEFT 0 | 2 | 0 0 3 | 0 43 1 1 | 43/50 RIGHT 0 | 0 [1 2 1 | 0 3 39 4 | 39/50 STOP 3 | 1 | 0 2 0 | 0 2 1 41 | 41/50
Bảng 5.6: Bang đánh giá độ chính xác của hệ thống BCI thực hiện trên người thứ 2
Nhận thấy các ký tự nằm ở rìa của giao diện điều khiển P300-speller ít bị sai nhất vì khi nhìn ở các góc, ta ít bị ảnh hưởng bởi các lệnh lân cận khi chớp tắt, gây ra các sóng não kích thích P300 nằm ở vị trí không phải ta quan tâm Vì vậy, hiệu ứng lân cận ảnh hưởng khá nhiều đến độ chính xác của hệ thống BCI.
Ngoài ra, trong quá trình kiểm thử, các lần lặp sau cùng cho kết quả không chính xác bằng những lần lặp đầu tiên do sự mệt mỏi của người làm thí nghiệm khi nhìn vào một trạng thái chớp tắt trong thời gian dài. Đối với một người chưa tiếp xúc với hệ thống BCI trước đây, kết quả thu được cho khả năng ứng dụng cao khi đạt độ chính xác lớn hơn 85%.
Kết luận và hướng phát triển
Kết quả của giải thuật có độ chính xác cao khi áp dụng vào thực tế điều khiển thiết bị Mini robot HexBug với điều kiện ISI 200ms cho mỗi lần chớp tắt là 100ms, số lần lặp là 12 lần, và sử dụng giải thuật xDAWN để nâng cao tỉ lên SSNR cũng như giảm số chiều trước khi đưa vào bộ phân loại BLDA.
Chương trình được thiết kế có thể chạy ở thời gian thực, việc đọc tín hiệu EEG dựa trên module viết riêng cho thiết bị Emotiv và nhúng vào thư viện OpenVibe Chương trình chính hoạt động như một client liên tục đọc đữ liệu EEG trả về từ server, nhờ đó, vẫn đề đồng bộ thời gian giữa quá trình lấy mẫu tín hiệu và P300 speller chớp tắt được chính
Thuật toán xDAWN cho kết quả tốt hơn so với Dé cương đề cập, nhiễu được khử va thành phần sóng não kích thích P300 rõ ràng hơn, dễ dàng cho việc phân loại Ngoài, ra, không cần sử dụng một vài phương pháp trích đặc trưng theo thời gian của tín hiệu, giảm thời gian xử lý.
Giải thuật BLDA cho kết quả tốt, nhanh và không tốn tài nguyên máy tính Thời gian xử
90 lý một phiên từ lúc lấy mẫu cho đến khi cho kết quả nhanh, phù hợp xử lý thời gian thực.
Chương trình cho phép hiệu chỉnh (calibration), cập nhật giá trị của các bộ lọc spatial filter và bộ phân loại ngay tại thời điểm bắt đầu sử dụng để đạt độ chính xác cao hơn, vì không phải tất cả điều kiện đều giống nhau tại mọi thời điểm sử dụng.
Các thư viện sử dụng trong luận văn đều là thư viện mở Có thể cải tiến hay tùy biến tùy theo mục đích sử dụng.
Người thí nghiệm không cần phải cố gắng nhìn thật kĩ hoặc quá tập trung, chỉ cần nhìn vào chữ cái cần viết một cách bình thường, thoải mái, thử giãn, cơ thể thả lỏng, có thể chớp mắt hoặc cử động đôi chút, vẫn cho ra kết quả chính xác bình thường, vì số lần lặp khối nhiều (12 lần) nên các vận động cơ thể hoặc mất tập trung ở một vài thời điểm có thể được bỏ qua.
Khi người thí nghiệm phải trải qua nhiều phiên suy nghĩ lâu thì sẽ bị mệt mỏi và độ chính xác giảm sút so với khi mới làm thí nghiệm.
Thiết bị Emotiv EPOC khi lâu ngày sử dụng sẽ bị hư hỏng ở một số kênh, các cảm biến gắn rời cũng bị lên teng do bị oxy hoá Tuy nhiên, trong thuật toán phân loại, người sử dụng có thể chọn các kênh tuỳ ý để huấn luyện cũng như phân loại, do đó vấn đề này không còn quá quan trọng.
Một khuyết điểm của nghiên cứu chính là cần phải có một phương pháp tiền phân loại để xem có sóng P300 khả thi trước hay không Trong trường hợp người sử dụng không nhìn vào bảng điều khiến nhưng chương trình vẫn đi tìm sóng P300 dựa trên đồng bộ thời gian giữa P300-speller và việc thu nhận sóng não, ta cần xác định ngưỡng một ngưỡng để xác định người sử dụng có nhìn vào bảng điều khiển hay không.
Có thể áp dụng thêm giải thuật xDAWN nhằm mục đích chọn cảm biến (sensor selection) có chất lượng tín hiệu tốt nhất, vì nhiễu xảy ra không đồng nhất trên toàn bộ cảm biến. Áp dụng thêm phương pháp ngưỡng để loại bỏ trường hợp người sử dụng không nhìn vào bảng điều khiển P300-speller.
Biên dịch thư viện OpenVibe 0.0 0 0.0
Lệnh tạo một bản sao của mã nguồn đối với máy tính Linux (Ubuntu): sudo apt-get install git git clone https://gitlab.com/chuong.tran/my_ p300.git
Tai một vai gói hoặc công cu cần thiết cho quá trình dich: ed openvibe-1.1.0-sre/seripts sudo /linux-install_ dependencies
Tiến hành dich thu viện bằng lệnh: sudo /linux_ build
Sau khi thư việc được biên dịch xong, ta có thể sử dụng các công cu của thư viện trong thư mục /dist.
Trong khuôn khổ của chương trình chính được thiết kế, ta sẽ cần hai công cụ: openvibe-acquisition-server.sh: module lay dit liệu EEG từ thiết bi Emotiv EPOC openvibe-designer.sh: GUI dé chạy các module
Chép thư mục chứa các modules va scripts trong thư mục my_ p300_ code/ vào thư mục: dist /share/openvibe/scenarios/bci-examples/,
Trong GUI designer, tiến hành mở các module va thực hiện (như Chương 4).
A.2 Cách xây dựng thư viện OpenVibe 100
A.2.2_ Liên kết OpenVibe và thư viện emokit lay dữ liệu EEG raw data
Module lay dữ liệu EEG trong OpenVibe cần liên kết thư viện cấp thấp hơn (low-level library) là emokit Thư viện Emokit cung cấp cho OpenVibe các ham cơ bản trong việc đọc liên tục dit liệu EEG data từ thiết bi Emotiv, giải mã gói dữ liệu và tìm giá trị của các kênh sensor. Đường dẫn đến thư viện Emokit: git clone https://github.com/openyou/emokit.git emokit
Tién hanh bién dich thu vién Emokit: cd emokit sudo apt-get install libmcrypt-dev libusb-1.0-0-dev libhidapi-dev liboscpack- dev cmake sudo make sudo make install
OpenVibe sẽ liên kết đến thu viện emokit đã được dich và sử dung các ham trong thu viện cần cho quá trình lấy dữ liệu EEG.
A.2.3 Cách thức hoạt động của các Module trong OpenVibe
Các module được lưu dưới dạng một script xml, chương trình chia thành 6 module nhỏ hơn bao gồm:
1) p300-xdawn-0-signal-monitoring.cml : kiểm tra thiết bị Emotiv và cường độ tín hiệu của các kênh trước khi sử dụng.
2) p300-xdawn-1-acquisition.cml : module lay mẫu.
A.2 Cách xây dựng thu viện OpenVibe 101
3) p200-zdaưn-2-train-DAWN.z+ml : module huấn luyện tìm bộ lọc không gian dựa trên gia thuật xDAWN.
4) p300-+zdatun-3-train- classifier.+ml : module huấn luyện bang giải thuật BLDA.
5) pỡ00-+zdaun-4-online.zmẽl : module chương trỡnh chớnh.
6) p300-xdawn-5-replay.cml : module chạy lại chương trình chính cho mục đích xem lại.
Tiến hành mở các module bằng OpenVibe designer GUI (openvibe-designer.sh) Cac mau của tín hiệu EEG được lưu trong thu mục signal/, và các mã nguồn python được lưu trong thư mục scripts/ Các cài đặt của các Box được lưu trong các scripts lua hay ml Ta có thể thay đổi các giá trị cài đặt của Box, ví dụ thay đổi thời gian chớp tắt của P300 speller trong script p300-speller-visualisation.cfg Sau khi thực hiện việc lay mau, file ov chứa thông tin của các tín hiệu EEG được lưu lại trong thư mục signals, ta sẽ chỉnh sửa Box Reader trỏ tới file ov đó khi tiến hành huấn luyện mẫu. Đối với Python Box có nhiệm vụ gửi kết quả thông qua giao thức TCP/IP, Box có thời gian polling dữ liệu (dạng stimulations) từ Box Voting Classifier là 1 Hz (1 giây 1 lần), ta có thể tăng thời gian polling, tuy nhiên, máy tính sẽ phải xử lý nhiều hơn.
Python của Box được thể hiện dưới đây.
# Python code for Python Box to send target stimulation via TCP/IP
# Signed—off by Chuong Tran import numpy import socket class MyOVBox(OVBox) : def init (self):
OVBox _ init (self) self.signalHeader = None self.nb electrodes = 1 self.ip = None self.port = None self.size = None self.socket = None
A.2 Cách xây dựng thu viện OpenVibe 102
51 self row = None self column = None self.pending stim = |] self.pending chunk = [] def initialize(self): self.row = 0 self.column = 0 self.ip = str(self.setting[ IP']) self.port = int(self.setting[ ’PORT’]) self.size = int(self.setting[ ’BUFFER_SIZE’]) print "Socket settings:", self.ip, self.port, self.size self.socket = socket.socket (socket AF INET, socket SOCK STREAM) self.socket.connect ((self.ip, self.port)) def uninitialize(self): self socket close () def process(self): sep = /\n’ stimulation = |
# Get Row stimulation for chunklndex in range( len(self.input|0]) ):
1f(type(self.input [0][chunkIndex]|) == OVStimulationHeader) : self.stimulation header = self.input [0] pop() print ‘Received chunk of type `, tfype(self.stimulation header), ? looking for StimulationSet" elif (type(self.input [0][chunkIndex]) == OVStimulationSet ) : chunk = self.input [0] pop () for stimldx in range(len(chunk) ): stim=chunk.pop() ; print ’At time ’, stim.date, ` received row stim ', stim. identifier — 33024 self.row = stim.identifier — 33024
A.2 Cách xây dựng thu viện OpenVibe 105
# Get Column stimulation for chunklndex in range( len(self.input|l]) ):
1f(type(self.input [1]|chunkIndex]) == OVStimulationHeader) : self.stimulation header = self.input [1].pop()
? " print ‘Received chunk of type `, type(self.stimulation header), looking for StimulationSet" elif (type(self.input [1][chunkIndex]) == OVStimulationSet ) : chunk = self.input [1] pop() for stimldx in range(len(chunk) ): stim=chunk.pop() ; print ’At time `, stim.date, ` received column stim `, stim. identifier — 33030 self.column = stim.identifier — 33030 if self.row != 0 and self.column != 0: val = stimulation [self.row —1][self ceolumn —I] print ’Letter `, val
# Send stimulation via socket self socket.send(val)
# Clear row/column for next iteration self.row = 0 self.column = 0 return box = MyOVBox() code/openvibes—p300.py
A.2 Cách xây dựng thu viện OpenVibe 104
Giới thiệu board Raspberry Pi 2 va Mini Robot HexBug
HexBug được phát triển bởi Innovation First, là công ty chuyên sản xuất đồ chơi điều khiển từ xa.
HexBug được điều khiển thông qua bộ điều khiển không dây (HexBug remote) của nó.
HexBug có thé di chuyển theo các hướng khác nhau trong phạm vi vài mét Microcontroller trong HexBug remote sẽ nhận lệnh theo nút bấm Khi nút được bấm, mạch sẽ đóng (closed- circuit) và vi điều khiển sẽ hoạt động Tương tự, khi dùng GPIO của Raspberry Pi 2 board để điều khiển Hex Bug, GPIO-OUT có cùng mức tín hiệu 0 (GND) đồng nghĩa với việc bấm nút trên Hex Bug remote.
Trong HexBug remote, ta sử dụng các điểm Test Point trong board mạch để điều khiển.
Cần có ít nhất 5 sợi dây để kết nối HexBug với GPIO trên board điều khiển (LEFT - RIGHT - FORWARD - DOWNWARD - GND) Các điểm Test Point của HexBug remote được cho bởi hình dưới:
Hình B.3: Hàn các chân điều khiển lên Test Point của HexBug remote.
Giới thiệu Raspberry Pi2 board
Diéu khiển HexBug bang GPIO của Raspberry Pi2 board
Thiêt lập board Raspberry Pi 2
Hệ điều hành Ubuntu cho RaspberyPi2
Hãng Canonical phát triển một hệ điều hành tùy biến dành cho Raspberry Pi 2 dựa trên phiên bản 16.04 (Xenial Xerus) Hệ điều hành này có kích thước khá lớn sau khi giải nén 1.75 GB, vi vậy, ta can một thé nhớ microSD có dung lượng lớn hơn 4GB.
Dé chuẩn bị hệ điều hành cho Raspberry Pi 2, ta cần một máy tinh Linux (tác giả sử dụng máy tính sử dụng hệ điều hành Ubuntu 15.04).
Tai hệ điều hành phiên bản nén về máy tính và tiến hành giải nén trên thé nhớ microSD. http: //cdimage.ubuntu.com/ubuntu/releases /16.04/release /ubuntu-16.04-preinstalled- server-armhf+raspi2.img.xz
Thẻ nhớ microSD được đăng ký trong máy tính dưới dang /dev/mmcblk0 (hoặc dạng khác tùy thuộc máy tính và hệ điều hành, ta có thé dùng lệnh fdisk -j để kiểm tra thẻ nhớ được đăng ký bang tên gọi nào) Sau đó tiến hành giải nén va cài đặt hệ điều hành cho Raspberry Pi 2 lên the nhớ. xzcat ubuntu.img.xz | sudo dd of=/dev/mmcblk0
Hoặc sử dụng lệnh ddrescue sau khi giải nén bằng lệnh unzz: unxz ubuntu.img.xz sudo ddrescue -D -d -force ubuntu.img /dev/mmecblk0
Dưa thẻ nhớ vào trong Raspberry Pi 2 board va gắn nguồn, thiết bị sẽ tự động boot vào hệ điều hành Linux Lưu ý, trong hệ điều hành đã chứa sẵn firmware để boot cho Raspberry Pi 2 board, không chỉ riêng hệ điều hành.
Có 2 cách để thấy được console của Raspberry Pi 2 board, sử dụng cong HDMI để xuất ra màn hình hoặc sử dung Module UART kết nối vào 3 chân UART_ TX, UART_ RX và GND trên board.
Ngoài ra, để có thé điều khiển các chân GPIO, ta tiến hành cài đặt thư viện Python GPIO. sudo apt-get install python-rpi.gpio
C.2 Python code cho TCP/IP server va xử ly lệnh truyền từ máy tinh
# Server TCP/IP python code
# Signed—off by Chuong Tran import time
# GPIO RPi 2 BCM SoC import RPi.GPIO as GPIO
GPIO_ LEFT = 6 GPIO_RIGHT = 13 GPIO FORWARD = 19 GPIO BACKWARD = 26
C.2 Python code cho TCP/IP server va xtt ly lénh truyén tit may tinh 111
Luan Van Thac Si global prev_ data def GPIO_ setmode() :
# Set mode for Broadcom soc GPIO setmode (GPIO BCM)
# Set GPIO mode GPIO setup (GPIO_LEFT, GPIO.OUT) GPIO setup (GPIO_RIGHT, GPIO.OUT) GPIO setup (GPIO FORWARD, GPIO.OUT) GPIO setup (GPIO BACKWARD, GPIO.OUT) def GPIO_ default ():
# State 1 = True (HIGH), 0 = False (LOW) GPIO output (GPIO_LEFT, 1)
GPIO output (GPIO_ RIGHT, 1) GPIO output (GPIO_ FORWARD, 1) GPIO output (GPIO_BACKWARD, 1) def left (angle=0): round trip time = 2.8 # in seconds sleep time = round trip time * angle / 360.0 GPIO_ default ()
# Set state GPIO output (GPIO_LEFT, 0) time sleep(sleep_ time)
# Clear state GPIO output (GPIO_LEFT,1) def right (angle=0): round trip time = 2.8 # in seconds sleep time = round trip time * angle / 360.0 GPIO_ default ()
# Set state GPIO output (GPIO_RIGHT, 0) time sleep(sleep_ time)
# Clear state GPIO output (GPIO_ RIGHT, 1)
C.2 Python code cho TCP/IP server va xtt ly lénh truyén tit may tinh 112
GPIO output (GPIO FORWARD, 0) def backward ():
GPIO output (GPIO BACKWARD, 0) def process data(data, previous data):
# data is received by socket
GPIO_ default () elif data = L': left (90.0) elif data == R': right (90.0) elif data = U': forward () elif data = D': backward () elif data == ‘UL’: left (45.0) elif data == ‘DL’: left (135.0) elif data == ‘UR’: right (45.0) elif data == ’DR’: right (135.0) else:
TCP_PORTP05 BUFFER SIZE # Normally 1024, but I want fast response
C.2 Python code cho TCP/IP server va xtt ly lénh truyén tit may tinh 113
Luận Văn Thạc Sĩ if name =" man _ prev data = '0'
# Set GPIO mode in default state GPIO_ setmode ()
# Socket binding s = socket.socket (socket AF INET, socket SOCK STREAM) s bind ((TCP_IP, TCP PORT) ) s listen (1) conn, addr = s.accept () print ’Connection address: ˆ, addr while True: data = conn recv(BUFFER_ SIZE) if not data: break print "received data: " , data process data(data, prev_ data) prev_ data = data
#conn.send (data) # echo time sleep (5)
" “ try: main () except KeyboardInterrupt: print "\nKeyboardInterrupt detected" finally:
# Clear state and clean up GPIO_ default ()
GPIO cleanup () code/server.py
C.2 Python code cho TCP/IP server va xtt ly lénh truyén tit may tinh 114