1. Trang chủ
  2. » Giáo Dục - Đào Tạo

báo cáo tiểu luận trí tuệ nhân tạo ứng dụng mạng lstm để nhận dạng hành động con người

28 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông qua đề tài này nhóm chúng em sẽ nghiên cứu và thiết kế hệ thống nhận dạng hành động có đáp ứng được với mọi nhu cầu của người sử dụng và áp dụng vào nhiều công việc trong nhiều ngà

Trang 1

HỌC VIỆN HÀNG KHÔNG VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO TIỂU LUẬNTRÍ TUỆ NHÂN TẠO

“ỨNG DỤNG MẠNG LSTM ĐỂ

NHẬN DẠNG HÀNH ĐỘNG CON NGƯỜI ”

HỌC KỲ 1 – NĂM HỌC: 2023 - 2024 MÃ LỚP HỌC PHẦN: 010100085801 Giảng viên hướng dẫn: TS Bùi Mạnh Quân Nhóm sinh viên thực hiện: Nguyễn Công Giới

Nguyễn Thị Mỹ Tâm Trần Thị Anh Thư Huỳnh Nguyễn Nhi Nguyễn Mai Thủy Tiên

TP.HCM, tháng 11 năm 2023

Trang 2

MỤC LỤC

LỜI NÓI ĐẦU 1

CHƯƠNG I GIỚI THIỆU 2

1.1 Lý do chọn đề tài 2

1.2 Đối tượng và phạm vi nghiên cứu của đề tài 2

1.3 Phương pháp nghiên cứu của đề tài 2

1.4 Bố cục của đề tài 2

CHƯƠNG II CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ ỨNG DỤNG 3

2.1 CƠ SỞ LÝ THUYẾT 3

2.1.1 Tổng quan về ngôn ngữ Python 3

2.1.2 Mạng LSTM - Long short term memory 3

2.1.3 Một số thuật toán học máy 10

2.2 CÔNG NGHỆ ỨNG DỤNG 11

2.2.1 Thư viện Open Computer Vision (OpenCV) 11

2.2.2 Thư viện Mediapipe Pose 12

2.2.3 Thư viện Keras 14

CHƯƠNG IV: KẾT LUẬN 24

TÀI LIỆU THAM KHẢO 25

Trang 3

NHẬN XÉT CỦA GIẢNG VIÊN

Trang 4

LỜI NÓI ĐẦU

Lời đầu tiên, xin trân trọng cảm ơn thầy Bùi Mạnh Quân đã tận tình hướng dẫn chúng em trong quá trình học tập cũng như trong việc hoàn thành bài tiểu luận cuối kỳ

Xin chân thành cảm ơn các thầy, cô thuộc khoa CNTT Học viện Hàng không Việt Nam đã tận tình giảng dạy cho chúng em trong thời gian học tập

Xin cảm ơn các thầy, cô đã đọc bài báo cáo và cho chúng em những nhận xét quý báu, chỉnh sửa những sai sót của chúng em Do khả năng lý luận và kinh nghiệm lập trình còn hạn chế nên chúng em sẽ không tránh khỏi những thiếu sót, kính mong sự chỉ dẫn và đóng góp của các thầy cô để bài tiểu luận của chúng em được hoàn thiện hơn

Chúng em xin cam đoan tiểu luận này do các thành viên trong nhóm thực hiện Chúng em không sao chép, sử dụng bất kỳ tài liệu, mã nguồn,… của người khác mà không ghi nguồn Chúng em xin chịu hoàn toàn trách nhiệm nếu vi phạm đạo văn

Chúng em xin chân thành cảm ơn!

Trang 5

CHƯƠNG I GIỚI THIỆU 1.1 Lý do chọn đề tài

Ngày nay con người đang ngày càng tạo ra nhiều công nghệ trí tuệ nhân tạo với nỗ lực thay thế con người bằng máy móc, giúp giảm thiểu chí phí, nhân lực, mang đến tỷ lệ chính xác cao hơn Trong những năm gần đây, nhờ vào sự tiến bộ của công nghệ và các nhu cầu ứng dụng, nghiên cứu về nhận dạng hoạt động người đã có được sự phát triển mạnh mẽ

Do đó, nhóm chúng em chọn đề tài “Ứng dụng mạng LSTM để nhận dạng hành động con người” Thông qua đề tài này nhóm chúng em sẽ nghiên cứu và thiết kế hệ thống nhận

dạng hành động có đáp ứng được với mọi nhu cầu của người sử dụng và áp dụng vào nhiều công việc trong nhiều ngành nghề lĩnh vực, nền tảng sử dụng khác nhau

1.2 Đối tượng và phạm vi nghiên cứu của đề tài

Đối tượng nghiên cứu của đề tài này là thuật toán máy học và ứng dụng mạng LSTM để nhận dạng hành động con người

Phạm vi nghiên cứu của đề tài tập trung ứng dụng nhận dạng hành động con người không chỉ nhận dạng những thao tác cơ bản như vẫy tay, lắc người

1.3 Phương pháp nghiên cứu của đề tài

Đề tài sử dụng phương pháp nghiên cứu phân tích, triển khai và kế thừa những nghiên cứu trước để đề xuất cách tiếp cận mới trong việc giải quyết vấn đề

1.4 Bố cục của đề tài

Đề tài gồm 4 chương chính: Chương I: Giới thiệu

Chương II: Cơ sở lý thuyết và Công nghệ ứng dụng Chương III: Sản phẩm đồ án

Chương IV: Kết luận

Trang 6

CHƯƠNG II CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ ỨNG DỤNG 2.1 CƠ SỞ LÝ THUYẾT

2.1.1 Tổng quan về ngôn ngữ Python

Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML) Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển.

Ứng dụng của Python

Python là ngôn ngữ có mục đích chung, nghĩa là nó có thể được sử dụng để tạo nhiều chương trình khác nhau và không chuyên biệt cho bất kỳ vấn đề cụ thể nào.Vì tương đối dễ học, Python đã được sử dụng vào nhiều mục đích khác nhau, phần lớn:

✔ Phát triển web

✔ Tự động hóa và phát triển phần mềm ✔ Phân tích dữ liệu và máy học

2.1.2 Mạng LSTM - Long short term memory

Mạng trí nhớ ngắn hạn định hướng dài hạn (viết tắt là LSTM) là một kiến trúc đặc biệt của mạng thần kinh hồi quy (RNN-Recurrent Neural Network) có khả năng học được sự phục thuộc trong dài hạn (long-term dependencies) được giới thiệu bởi Hochreiter & Schmidhuber (1997) Kiến trúc này đã được phổ biến và sử dụng rộng rãi cho tới ngày nay LSTM đã tỏ ra khắc phục được rất nhiều những hạn chế của RNN trước đây về triệt tiêu đạo hàm Tuy nhiên cấu trúc của chúng có phần phức tạp hơn gồm 4 tầng tương tác với nhau mặc dù vẫn dữ được tư tưởng chính của RNN là sự sao chép các kiến trúc theo dạng chuỗi

Về mặt lý thuyết mạng RNN có thể giải quyết được những sự phụ thuộc trong dài hạn Tuy nhiên trên thực tế RNN lại cho thấy khả năng học trong dài hạn kém hơn Một phiên bản mới của mạng RNN là mạng LSTM ra đời nhằm khắc phục hiện tường này nhờ một cơ chế đặc biệt

Trang 7

Hình 1: Sự lặp lại kiến trúc module trong mạng LSTM chứa 4 tầng ẩn (3 sigmoid và 1 tanh) tương tác

⮚ Kiến trúc LSTM

Ở mức độ cao, LSTM hoạt động rất giống một tế bào RNN Đây là hoạt động nội bộ của mạng LSTM Kiến trúc mạng LSTM bao gồm ba phần, như trong hình bên dưới và mỗi phần thực hiện một chức năng riêng lẻ

Hình 2: Kiến trúc mạng LSTM ⮚ Thứ tự các bước của LSTM

Bước đầu tiên trong LSTM sẽ quyết định xem thông tin nào chúng ta sẽ cho phép đi qua ô trạng thái (cell state) Nó được kiểm soát bởi hàm sigmoid trong một tầng gọi là tầng

Trang 8

quên (forget gate layer) Đầu tiên nó nhận đầu vào là 2 giá trị ht−1 và xt và trả về một giá trị nằm trong khoảng 0 và 1 cho mỗi giá trị của ô trạng thái Ct-1 Nếu giá trị bằng 1 thể hiện ‘giữ toàn bộ thông tin’ và bằng 0 thể hiện ‘bỏ qua toàn bộ chúng’

Trở lại ví dụ về ngôn ngữ, chúng ta đang cố gắng dự báo từ tiếp theo dựa trên toàn bộ những từ trước đó Trong những bài toán như vậy, ô trạng thái có thể bao gồm loại của chủ ngữ hiện tại, để cho đại từ ở câu tiếp theo được sử dụng chính xác

Bước tiếp theo chúng ta sẽ quyết định loại thông tin nào sẽ được lưu trữ trong ô trạng thái Bước này bao gồm 2 phần Phần đầu tiên là một tầng ẩn của hàm sigmoid được gọi là tầng cổng vào (input gate layer) quyết định giá trị bao nhiêu sẽ được cập nhật Tiếp theo, tầng ẩn hàm tanh sẽ tạo ra một véc tơ của một giá trị trạng thái mới C~t mà có thể được thêm vào trạng thái Tiếp theo kết hợp kết quả của 2 tầng này để tạo thành một cập nhật cho trạng thái

Chúng ta nhân trạng thái cũ với ft tương ứng với việc quên những thứ quyết định được phép quên sớm Phần tử đề cử it∗C~t là một giá trị mới được tính toán tương ứng với bao nhiêu được cập nhật vào mỗi giá trị trạng thái

Cuối cùng cần quyết định xem đầu ra sẽ trả về bao nhiêu Kết quả ở đầu ra sẽ dựa trên ô trạng thái, nhưng sẽ là một phiên bản được lọc Đầu tiên, chúng ta chạy qua một tầng sigmoid nơi quyết định phần nào của ô trạng thái sẽ ở đầu ra Sau đó, ô trạng thái được đưa qua hàm tanh (để chuyển giá trị về khoảng -1 và 1) và nhân nó với đầu ra của một cổng sigmoid, do đó chỉ trả ra phần mà chúng ta quyết định

Ví dụ về hoạt động của LTSM:

Hãy lấy một ví dụ để hiểu LSTM hoạt động như thế nào Ở đây chúng ta có hai câu cách nhau bằng dấu chấm Câu đầu tiên là “Bob là một người tốt” và câu thứ hai là “Dan, mặt khác, là ác quỷ” Rất rõ ràng, trong câu đầu tiên, chúng ta đang nói về Bob, và ngay khi gặp dấu chấm(.), chúng ta bắt đầu nói về Dan

Trang 9

Khi chúng ta chuyển từ câu đầu tiên sang câu thứ hai, mạng của chúng ta sẽ nhận ra rằng chúng ta không còn nói về Bob nữa Bây giờ chủ đề của chúng ta là Dan Ở đây, cổng Quên của mạng cho phép nó quên nó đi Hãy hiểu vai trò của các cổng này trong kiến trúc LSTM

⮚ LSTM có ba loại cổng để kiểm soát luồng thông tin: cổng đầu vào, cổng quên và cổng đầu ra

Uf: trọng lượng liên quan đến đầu vào

Ht-1: Trạng thái ẩn của dấu thời gian trước đó

Wf: Đây là ma trận trọng số liên quan đến trạng thái ẩn

Sau đó, hàm sigmoid được áp dụng cho nó Điều đó sẽ tạo ra ft một số từ 0 đến 1 ft này sau đó được nhân với trạng thái ô của dấu thời gian trước đó, như hiển thị bên dưới

Trang 10

Bây giờ hãy nghĩ về nó, dựa trên ngữ cảnh được đưa ra trong câu đầu tiên, thông tin nào trong câu thứ hai là quan trọng? Đầu tiên, anh ta dùng điện thoại để kể, hoặc anh ta phục vụ trong hải quân Trong bối cảnh này, việc anh ta sử dụng điện thoại hay bất kỳ phương tiện liên lạc nào khác để truyền thông tin không thành vấn đề Việc anh ấy ở trong hải quân là thông tin quan trọng và đây là điều chúng tôi muốn mô hình của mình ghi nhớ để tính toán trong tương lai Đây là nhiệm vụ của cổng vào

Cổng đầu vào được sử dụng để định lượng tầm quan trọng của thông tin mới được mang theo đầu vào Đây là phương trình của cổng đầu vào

Xt: Nhập vào dấu thời gian hiện tại t Ui: ma trận trọng số của đầu vào

Ht-1: Trạng thái ẩn ở dấu thời gian trước đó

Wi: Ma trận trọng số của đầu vào liên quan đến trạng thái ẩn

Trang 11

Một lần nữa chúng ta đã áp dụng hàm sigmoid lên nó Kết quả là giá trị của I tại dấu thời gian t sẽ nằm trong khoảng từ 0 đến 1

Thông tin mới

Bây giờ thông tin mới cần được chuyển đến trạng thái ô là hàm của trạng thái ẩn ở dấu thời gian t-1 trước đó và nhập x ở dấu thời gian t Hàm kích hoạt ở đây là tanh Do hàm tanh nên giá trị của thông tin mới sẽ nằm trong khoảng từ -1 đến 1 Nếu giá trị của Nt âm thì thông tin sẽ bị trừ khỏi trạng thái ô, còn nếu giá trị là dương thì thông tin sẽ được thêm vào ô trạng thái tại dấu thời gian hiện tại

Tuy nhiên, Nt sẽ không được thêm trực tiếp vào trạng thái ô Đây là phương trình được cập nhật:

Ở đây, Ct-1 là trạng thái ô ở dấu thời gian hiện tại và các trạng thái khác là các giá trị chúng tôi đã tính toán trước đó

❖ Cổng đầu ra

Bây giờ hãy xem xét câu này

“Bob đã một mình chiến đấu với kẻ thù và chết vì đất nước của mình Vì những đóng góp của anh ấy, dũng cảm.”

Trong nhiệm vụ này, chúng ta phải hoàn thành câu thứ hai Bây giờ, ngay khi chúng ta nhìn thấy từ dũng cảm, chúng ta biết rằng chúng ta đang nói về một người Trong câu chỉ có Bob dũng cảm, không thể nói địch dũng cảm, hay đất nước dũng cảm Vì vậy dựa trên dự đoán hiện tại, chúng ta phải đưa ra một từ thích hợp để điền vào chỗ trống Từ đó là đầu ra của chúng ta, và đây là chức năng của cổng Đầu ra của chúng ta

Trang 12

Đây là phương trình của Cổng đầu ra, khá giống với hai cổng trước

Giá trị của nó cũng sẽ nằm trong khoảng từ 0 đến 1 do hàm sigmoid này Bây giờ để tính trạng thái ẩn hiện tại, chúng ta sẽ sử dụng Ot và tanh của trạng thái ô được cập nhật Như hình dưới đây:

Hóa ra trạng thái ẩn là một hàm của Bộ nhớ dài hạn (Ct) và đầu ra hiện tại Nếu bạn cần lấy đầu ra của dấu thời gian hiện tại, chỉ cần áp dụng kích hoạt SoftMax ở trạng thái ẩn Ht

Ở đây mã thông báo có số điểm tối đa ở đầu ra là dự đoán

⮚ LSTM hai chiều là gì?

LSTM hai chiều (Bộ nhớ ngắn hạn dài) là một loại kiến trúc mạng thần kinh tái phát (RNN) xử lý dữ liệu đầu vào theo cả hướng tiến và lùi Trong LSTM truyền thống, thông tin chỉ truyền từ quá khứ đến tương lai, đưa ra dự đoán dựa trên bối cảnh trước đó Tuy nhiên, trong LSTM hai chiều, mạng cũng xem xét bối cảnh trong tương lai, cho phép nó nắm bắt được sự phụ thuộc theo cả hai hướng

LSTM hai chiều bao gồm hai lớp LSTM, một lớp xử lý chuỗi đầu vào theo hướng thuận và lớp kia theo hướng ngược Điều này cho phép mạng truy cập đồng thời thông tin từ các bước thời gian trong quá khứ và tương lai Do đó, LSTM hai chiều đặc biệt hữu ích cho các tác vụ đòi hỏi sự hiểu biết toàn diện về chuỗi đầu vào, chẳng hạn như các tác vụ xử lý ngôn ngữ tự nhiên như phân tích tình cảm, dịch máy và nhận dạng thực thể được đặt tên

Trang 13

Bằng cách kết hợp thông tin từ cả hai hướng, LSTM hai chiều nâng cao khả năng của mô hình trong việc nắm bắt các mối phụ thuộc dài hạn và đưa ra dự đoán chính xác hơn trong dữ liệu tuần tự phức tạp

2.1.3 Một số thuật toán học máy

Học máy (Machine learning) là một tập con của trí tuệ nhân tạo, tập trung chủ yếu vào việc tạo ra các thuật toán cho phép máy tính tự động học từ dữ liệu và các kinh nghiệm trước đó

Học máy là khoa học phát triển các thuật toán cho phép máy tính tự động cải thiện hiệu năng giải quyết vấn đề thông qua dữ liệu

Các bài toán cơ bản trong machine learning: Bài toán phân loại (classification), Bài toán hồi quy (regression), Bài toán Phân cụm (clustering), Hoàn thiện dữ liệu – data completion

Machine learning được phân thành các loại như sau:

Học có giám sát (supervised learning): được định nghĩa bằng cách sử dụng các tập dữ

liệu được gắn nhãn để tạo các thuật toán nhằm phân loại dữ liệu hoặc dự đoán kết quả một cách chính xác

Học không giám sát (unsupervised learning): sử dụng các thuật toán học máy để phân

tích và phân cụm các tập dữ liệu không được gắn nhãn Các thuật toán này phát hiện ra các mẫu hoặc nhóm dữ liệu ẩn mà không cần sự can thiệp của con người

Học bán giám sát (semi-supervised learning): cung cấp một phương tiện kết nối giữa

Machine Learning có giám sát và không giám sát Trong quá trình đào tạo, nó sử dụng một tập dữ liệu có nhãn nhỏ hơn để hướng dẫn phân loại và trích xuất tính năng từ một tập dữ liệu lớn hơn mà không được gắn nhãn Semi-supervised Learning có thể giải quyết vấn đề không có đủ dữ liệu được gắn nhãn để đào tạo thuật toán học có giám sát

Trang 14

Học củng cố (Reinforcement Learning): là mô hình máy tính được huấn luyện để tự

động tìm hiểu và ra quyết định để tối ưu hóa một nhiệm vụ hoặc mục tiêu cụ thể thông qua tương tác với môi trường

Thị giác máy tính được chia thành ba loại cơ bản như sau:

● Low-level vision : Nó bao gồm hình ảnh quy trình để trích xuất tính năng

● Intermediate-level vision : Nó bao gồm nhận dạng đối tượng và giải thích cảnh 3D ● High-level vision : Nó bao gồm mô tả khái niệm về một cảnh như hoạt động, ý định

và hành động

❖ Thư viện OpenCV

OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính (computer vision), xử lý ảnh và máy học, và các tính năng tăng tốc GPU trong hoạt động thời gian thực OpenCV được phát hành theo giấy phép BSD, do đó nó hoàn toàn miễn phí cho cả học thuật và thương mại Nó có các interface C++, C, Python, Java và hỗ trợ Windows, Linux, Mac OS, iOS và Android OpenCV được thiết kế để tính toán hiệu quả và với sự tập trung nhiều vào các ứng dụng thời gian thực Được viết bằng tối ưu hóa C/C++, thư viện có thể tận dụng lợi thế của xử lý đa lõi

⮚ Ứng dụng

OpenCV được sử dụng rộng rãi và đa dạng cho nhiều mục đích khác nhau, bao gồm:

Trang 15

● Kiểm tra và giám sát tự động

⮚ Tính năng và các module phổ biến của OpenCV

Theo tính năng và ứng dụng của OpenCV, có thể chia thư viện này thánh các nhóm tính năng và module tương ứng như sau:

videostab)

2.2.2 Thư viện Mediapipe Pose

MediaPipe Pose (MPP) là một khung đa nền tảng nguồn mở do Google cung cấp, đã được sử dụng để đạt được ước tính về tọa độ khớp 2D của con người trong mỗi khung hình MediaPipe Pose xây dựng các quy trình và xử lý dữ liệu nhận thức dưới dạng video bằng cách sử dụng máy học (Machine Learning) MPP sử dụng BlazePose để trích xuất 33 điểm mốc 2D trên cơ thể con người

Ngày đăng: 03/07/2024, 14:56

Xem thêm:

w