Professional Documents
Culture Documents
HTCĐTTM
HTCĐTTM
MỤC LỤC
MỤC LỤC................................................................................................................1
CHƯƠNG 1: CÁC KHÁI NIỆM...........................................................................2
1.1. Khái niệm Deep Learning...............................................................................2
1.2. Khái niệm mạng RNN.....................................................................................3
1.3. Ứng dụng của mạng RNN...............................................................................4
1.4. Khái niệm mạng LSTM..................................................................................4
CHƯƠNG 2: VỀ MẠNG LSTM VÀ CÁCH THỨC TRIỂN KHAI..................5
2.1. Ý tưởng của LSTM (Long Short-term memory)..........................................5
2.2. Các bước triển khai.........................................................................................6
2.3. Các biến thể của LSTM..................................................................................8
CHƯƠNG 3: DEMO XÂY DỰNG MÔ HÌNH NHẬN DIỆN HÀNH ĐỘNG
SỬ DỤNG MẠNG LSTM.......................................................................................9
3.1. Giới thiệu dự án...............................................................................................9
3.2. Các bước triển khai.......................................................................................12
3.3. Kết quả đạt được...........................................................................................21
3.4. Kết luận..........................................................................................................24
- Bước 2: 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.
Trong ví dụ của mô hình ngôn ngữ, chúng ta muốn thêm loại của một chủ ngữ
mới vào ô trạng thái để thay thế phần trạng thái cũ muốn quên đi.
Đây là thời điểm để cập nhật một ô trạng thái cũ C t−1 sang một trạng thái mới C t
. Những bước trước đó đã quyết định làm cái gì, và tại bước này chỉ cần thực hiện
nó.
Nhân trạng thái cũ với f t 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∗Ct 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.
- Một biến thể khác là sử dụng cặp đôi cổng vào và cổng ra.
- Thay vì quyết định riêng rẽ bỏ qua thông tin nào và thêm mới thông tin nào,
chúng ta sẽ quyết định chúng đồng thời.
- Các thông tin chỉ bị quên khi chúng ta muốn cập nhập vào một vài thông tin
mới.
- Một dạng biến thể khá mạnh khác của LSTM là cổng truy hồi đơn vị (Gated
Recurrent Unit - GRU) được giới thiệu bởi Cho, et al. (2014).
- Nó kết hợp cổng quên và cổng vào thành một cổng đơn gọi là cập nhật (update
gate).
- Nó cũng nhập các ô trạng thái và trạng thái ẩn và thực hiện một số thay đổi
khác.
- Kết quả của mô hình đơn giản hơn nhiều so với mô hình LSTM chuẩn, và đã
trở nên khá phổ biến.
CHƯƠNG 3: DEMO XÂY DỰNG MÔ HÌNH NHẬN DIỆN HÀNH
ĐỘNG SỬ DỤNG MẠNG LSTM
3.1. Giới thiệu dự án
Trong thời đại công nghệ 4.0 hiện nay, công nghệ được áp dụng vào hầu hết
các lĩnh vực trong đời sống. Một trong những công nghệ đang được ứng dụng rộng
rãi trong nhiều lĩnh vực khác nhau đó là công nghệ Xử lý ảnh.
Nhóm em chọn đề tài “Nhận diện và phát hiện hành vi của con người sử
dụng mô hình học sâu LSTM”. Ứng dụng xử lý ảnh để mô hình dự đoán tư thế của
con người từ hình ảnh, video bằng cách dự đoán các điểm trên cơ thể người, từ đó
sẽ nhận diện được hành vi tương ứng.
Các ứng dụng của đề tài này rất đa dạng và có tính ứng dụng cao. Ví dụ, một
trong những ứng dụng quan trọng là nhận dạng hành vi bất thường. Đây là khả
năng phát hiện các hành vi không phù hợp hoặc tiềm ẩn nguy hiểm như ngã, đột
quỵ, hay các hành vi gây hại khác. Khi phát hiện được hành vi bất thường, mô hình
có thể đưa ra cảnh báo kịp thời để giúp đảm bảo an toàn và sức khỏe cho con
người. Ngoài ra, đề tài còn có thể áp dụng trong lĩnh vực giám sát an ninh. Sử dụng
mô hình LSTM, hệ thống giám sát an ninh có thể phát hiện và cảnh báo khi có các
hành vi gây nguy hiểm như đánh nhau, đập phá đồ, hay xâm nhập vào vùng cấm.
Điều này giúp nâng cao hiệu quả trong công tác giám sát và đảm bảo an toàn và an
ninh tại các vị trí quan trọng như sân bay, nhà ga, trung tâm thương mại, hay bất kỳ
khu vực đòi hỏi sự an ninh cao nào. Một ứng dụng khác của đề tài là điều khiển các
thiết bị thông minh bằng cử chỉ tay hoặc khuôn mặt.
- Công cụ sử dụng
+ Ngôn ngữ lập trình python, IDE Pycharm
PyCharm được phát triển bởi Jet Brains và đây là
môi trường phát triển tích hợp đa nền tảng (IDE) được
thiết kế đặc biệt cho Python.
Trong đề tài này, nhóm sử dụng Pycharm để thu
thập dữ liệu và lập trình các chức năng liên quan.
+ Google Colab
Colaboratory hay còn gọi là Google Colab, là một sản phẩm từ Google
Research, nó cho phép chạy các dòng code python thông qua trình duyệt, đặc biệt
phù hợp với Data analysis, machine learning và giáo dục. Colab không cần yêu cầu
cài đặt hay cấu hình máy tính, mọi thứ có thể chạy thông qua trình duyệt, bạn có
thể sử dụng tài nguyên máy tính từ CPU tốc độ cao và cả GPUs và cả TPUs đều
được cung cấp cho bạn.
Để tận dụng được tốc độ GPU của
máy chủ Google ta sẽ sử dụng Google
Colab để train model nhằm cải thiện tốc độ và
tiết kiệm thời gian.
+ Framework Mediapipe
Về tổng quan, MediaPipe là tập hợp
của một loạt các giải pháp Machine
Learning đa nền tảng, có thể can thiệp được
và cực kỳ lightweight.
Ở đây, nhóm Sử dụng Framework mediapipe để trích xuất các điểm trên cơ
thể người trong quá trình lấy dữ liệu.
+ Mạng LSTM
Mạng trí nhớ ngắn hạn định
hướng dài hạn còn được viết tắt là
LSTM làm một kiến trúc đặc biệt của
RNN 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. Trong đề tài này, nhóm sẽ sử dụng mạng LSTM để nhận
dạng hành động của con người.
*Chương trình:
- Ở hình trên, trước tiên ta khai báo các thư viện cần thiết
- Xây dựng hàm gọi và sử dụng framework mediapipe
Ngô Văn Vũ - 20195235 LSTM Network
12
Hệ Thống Cơ Điện Tử Thông Minh GVHD: TS. Nguyễn Trọng Doanh
-Khai báo đường dẫn thư mục để lưu dữ liệu và thư mục có tên “Train_Data_v1”
Ngô Văn Vũ - 20195235 LSTM Network
13
Hệ Thống Cơ Điện Tử Thông Minh GVHD: TS. Nguyễn Trọng Doanh
-Sau đoạn code này các thư mục con sẽ được tạo ra trong folder “Train_Data_v1”
tương ứng với mỗi video ta lấy cho mỗi hành động
- Mỗi hành động nhóm sẽ lấy dữ liệu bao gồm 100 video và mỗi video có độ dài là
30 khung hình.
+ Thu thập dữ liệu
-Khi chạy đoạn code trên đối với mỗi hành động ta sẽ thay chỉ số trong cụm
“actions[x]” ở dòng 39,43,46 với x là chỉ số của các phần tử trong:
actions=np.array(['Hand_Clapping','Boxing','Kick','Sitting','Bow','Unknown'])
-Ta đi thu thập dữ liệu cho lần lượt từng hành động. Thời gian chờ trước khi bắt
đầu thu thập dữ liệu là 15s để cho người dùng có đủ thời gian để chuẩn bị các tư
thế.
- Đối với mỗi hành động ta sẽ thu thập dữ liệu cho lần lượt các video và mỗi video
ta sẽ chỉ xét 30 khung hình, tại mỗi khung hình ta sẽ trích xuất các skeleton của cơ
thể người thành các mảng 1 chiều có 132 phần tử và lưu thành các file có đuôi
“.npy” trong thư mục tương ứng.( Sở dĩ có 132 phần tử vì mỗi skeleton có 4 thông
số (x,y,z,visibility) và ta trích xuất 33 điểm vì vậy mảng sẽ có 33*4=132 giá trị)
- Sau đó ta chạy đoạn code sau để thực hiện gán nhãn dữ liệu:
Ở đây đầu ra y có 6 lớp hành động sẽ được vector hóa tương ứng như sau:
[1 0 0 0 0 0], [0 1 0 0 0 0], [0 0 1 0 0 0], [0 0 0 1 0 0], [0 0 0 0 1 0], [0 0 0 0 0 1]
Ta chia tập train và test tương ứng là 0.8 và 0.2
+Train Model
Ta sử dụng thư viện Tensorflow để train model
Ta sẽ sử dụng 3 lớp LSTM và 4 lớp đầy đủ Dense: Lớp LSTM đầu tiên có 128
noron, hàm kích hoạt là “relu”, đầu vào có kích thức là (30,132). Lưu ý 30 ở đây
tương ứng với 30 frame lấy cho mỗi video và 132 là số giá trị ta có được từ việc
trích xuất skeleton ở mỗi frame.
Lớp Dense cuối cùng có số noron bằng số lớp hành động đầu ra và hàm kích hoạt
là hàm softmax
Thông số mạng:
Ta dự kiến train với 2000 epochs, batch_size = 512, hiển thị đồ thị độ chính xác
của quá trình train lên tensorboard và quá trình train sẽ dừng lại khi độ chính xác
này lớn hơn 0.97
Lưu model với tên “hanhvi7” và Google Drive và lưu về máy để sử dụng
- Trong quá trình chạy realtime, ta sẽ trích xuất skeleton của các khung hình và
lấy dữ liệu của 30 khung hình gần nhất để cho đi vào model dự đoán (Lí do chọn
30 khung hình ở đây là vì trong cấu trúc mạng ta xây dựng kích thước đầu vào là
(30,132) hay nói cách khác dữ liệu train ta cũng dùng 30 khung hình liên tiếp để dự
đoán
-Kết quả dự đoán với độ tự tin lớn hơn một ngưỡng nào đó sẽ được hiển thị trên
màn hình
-Hành động đá