Giải phápQua quá trình học hỏi và tìm hiểu thì chúng em có đề xuất một số mô hình choviệc nhận diện ngôn ngữ ký hiệu:3DCNN Convolutional Neural Networks 3D:Mô tả: 3DCNN là một biến thể c
Trang 1TRƯỜNG ĐẠI HỌC PHENIKAA KHOA CÔNG NGHỆ THÔNG TIN
Hà Nội, ngày 20 tháng 03 năm 2024
Trang 2MỤC LỤC
BẢNG PHÂN CÔNG NHIỆM VỤ LÀM VIỆC 3
CHƯƠNG I: TỔNG QUAN 4
1 Đặt vấn đề 4
2 Giải pháp 4
3 Phạm vi đề tài 5
CHƯƠNG II: CƠ SỞ LÝ THUYẾT 7
1 3D-CNN 7
2 ConvLSTM 9
3 2Dplus1D-CNN 10
CHƯƠNG III: TRIỂN KHAI 12
1 Thu thập dữ liệu 12
2 Xử lý dữ liệu 12
3 Các mô hình thuật toán 14
CHƯƠNG IV: KẾT QUẢ 19
1 Kết quả 19
2 Nhận xét 19
3 Hướng phát triển 19
CHƯƠNG V : KẾT LUẬN 21
TÀI LIỆU THAM KHẢO 22
Trang 3BẢNG PHÂN CÔNG NHIỆM VỤ LÀM VIỆC
21011588 Trần Dương Làm slide, chạy code2d+1d
21011589 Trần Trọng Đài Làm báo cáo,tìm tài liệu, chạy code
Trang 4CHƯƠNG I: TỔNG QUAN
1 Đặt vấn đề
Trong thế giới hiện đại, việc giao tiếp và truyền đạt thông tin là một phần khôngthể thiếu của cuộc sống hàng ngày Tuy nhiên, đối với những người khiếmthính, việc giao tiếp qua ngôn ngữ bản ngữ có thể gặp nhiều khó khăn Ngônngữ ký hiệu đã trở thành một phương tiện quan trọng để họ truyền đạt ý nghĩa,
cả trong giao tiếp hàng ngày và trong môi trường giáo dục và làm việc.Ngôn ngữ ký hiệu không chỉ là một hệ thống biểu đạt, mà còn là cầu nối giữangười khiếm thính và thế giới xung quanh Nhưng việc giao tiếp giữa ngườikhiếm thính và người không khiếm thính thực sự là một thách thức, đặc biệt làkhi sự hiểu biết về ngôn ngữ ký hiệu và các phương tiện giao tiếp thích hợpkhông phổ biến Vì vậy, chúng em muốn tập trung vào việc phát triển các giảipháp công nghệ như hệ thống nhận diện ngôn ngữ ký hiệu
Qua việc phát triển và áp dụng các công nghệ mới này, chúng em mong muốntạo ra những cơ hội giao tiếp mới cho người khiếm thính và giúp họ tham giavào các hoạt động xã hội và công việc một cách tự tin và linh hoạt hơn Đồngthời, chúng em cũng muốn góp phần xây dựng một cộng đồng thông cảm và hỗtrợ, nơi mọi người đều được đón nhận và tôn trọng, không phân biệt khuyết tật
2 Giải pháp
Qua quá trình học hỏi và tìm hiểu thì chúng em có đề xuất một số mô hình choviệc nhận diện ngôn ngữ ký hiệu:
3DCNN (Convolutional Neural Networks 3D):
Mô tả: 3DCNN là một biến thể của mô hình CNN, được thiết kế để xử lý dữliệu không gian và thời gian trong các tập dữ liệu video hoặc chuỗi hình ảnh.Thay vì chỉ sử dụng các bộ lọc 2D, 3DCNN sử dụng các bộ lọc 3D để xác địnhcác đặc trưng không gian và thời gian của dữ liệu
Ưu điểm: 3DCNN có khả năng học các đặc trưng không gian và thời gian từ dữliệu video một cách hiệu quả, giúp cải thiện khả năng nhận diện trong các chuỗi
Trang 5hình ảnh động như ngôn ngữ ký hiệu.
Hạn chế: 3DCNN có thể đòi hỏi lượng dữ liệu lớn và tài nguyên tính toán cao,đặc biệt là khi xử lý các video dài
ConvLSTM (Convolutional Long Short-Term Memory Networks):
Mô tả: ConvLSTM là một biến thể của mô hình LSTM, được kết hợp với cấutrúc convolutional để xử lý dữ liệu không gian và thời gian Nó giúp mô hìnhhọc được các mẫu không gian và thời gian từ dữ liệu chuỗi một cách hiệu quả
Ưu điểm: ConvLSTM giúp mô hình nhớ và xử lý thông tin từ quá khứ trong quátrình dự đoán, phù hợp với việc nhận diện ngôn ngữ ký hiệu trong các videohoặc chuỗi hình ảnh động
Hạn chế: ConvLSTM có thể đòi hỏi chi phí tính toán cao, đặc biệt là khi xử lýcác chuỗi dữ liệu lớn và phức tạp
2DPlus1D-CNN
Mô tả: Mô hình 2DPlus1D là một phương pháp phổ biến trong lĩnh vực xử lývideo, kết hợp cả cấu trúc CNN 2D và cấu trúc Convolutional 3D để xử lý cảthông tin không gian và thời gian Cụ thể, 2DPlus1D sử dụng hai luồng dữ liệu:một luồng xử lý thông tin không gian (2D CNN) và một luồng xử lý thông tinthời gian (1D Convolution)
Ưu điểm: Sự kết hợp của cả 2D CNN và 1D Convolution giúp mô hình2DPlus1D có khả năng học được cả các đặc trưng không gian và thời gian từ dữliệu video một cách hiệu quả Đồng thời, việc tách riêng hai luồng dữ liệu cũnggiúp tăng cường khả năng hiểu biết và tinh tế trong quá trình nhận diện.Hạn chế: Mô hình 2DPlus1D có thể đòi hỏi nhiều tài nguyên tính toán hơn sovới một số phương pháp khác, đặc biệt là khi xử lý các video có độ phức tạpcao
Trang 6Nghiên cứu về công nghệ: Trong đề tài này chúng em tìm hiểu các công nghệ
và các mô hình học sâu như CNN, LSTM và các biến thể của nó như 3DCNN,2D+1D, ConvLSTM, cũng như cách áp dụng nó vào nhạn diện, phân loại videoXây dựng mô hình nhận diện: Trong đề tài này chúng em đã ứng dụng và thửnghiệm 3 mô hình học sâu 3DCNN, 2D+1D, ConvLSTM để nhận diện ngônngữ ký hiệu từ dữ liệu đã được thu
So sánh và đánh giá: So sánh hiệu suất của các mô hình khác nhau và đánh giátính khả thi và hiệu quả của từng phương pháp Điều này giúp xác định các môhình có hiệu quả nhất trong việc nhận diện ngôn ngữ ký hiệu
Hạn chế và hướng phát triển: Đánh giá các hạn chế của các phương pháp hiệntại và đề xuất các hướng phát triển tiếp theo để cải thiện hiệu suất và ứng dụngthực tế của nhận diện ngôn ngữ ký hiệu
Trang 7CHƯƠNG II: CƠ SỞ LÝ THUYẾT
1 3D-CNN
Mạng neural tích chập 3D-CNN là một mạng tích chập CNN sử dụng phép tíchchập khối (ma trận 3 chiều, thêm trục thời gian), thường được sử dụng trong cácbài toán nhận dạng (hành động, phân lớp) trong các video Chuyển động trongcác video được hiểu là bao 9 gồm tập các hình ảnh được biểu diễn trong mộttrục thời gian nhất định, do đó phát sinh thêm trục thời gian (chiều thời gian).Phép tích chập 3D-CNN
Kích thước kernel trong 3D theo thời gian là 3, các bộ kết nối cùng màu có cùngtrọng số chia sẽ (shared weights) Trong tích chập 3D, các kernel giốn nhaucùng được áp dung khối 3D chồng lền nhau trong video đầu vào để trích xuấtcác tính năng chuyển động Trong phép tích chập 3D kernel chỉ có thể trích xuấtmột trong các đặc trưng của khung hình khối lập phương đó, các trọng số kernelđược tính toán trong hình khối lập phương Nguyên tắc chung trong mô hìnhCNNs là số các feature map được tăng lên ở các lớp sau bằng cách sinh ra từnhiều đặc trưng từ một tập các feature map lớp trước đó Tương tự trường hợptích chập 2D, 3D cũng thực hiện nhiều phép tích chập với các kernel khác nhauđến từ cùng một vị trí lớp trước đó
7
Trang 8Đầu vào (Input):
Dữ liệu đầu vào là các video chứa các cử chỉ và biểu hiện của ngôn ngữ ký hiệu.Mỗi video được biểu diễn dưới dạng một chuỗi các khung hình (frames), trong
đó mỗi khung hình thể hiện trạng thái của ngôn ngữ ký hiệu tại một thời điểmnhất định
Pooling Layers:
Sau mỗi lớp convolutional, các lớp pooling 3D (ví dụ: max pooling) thườngđược sử dụng để giảm kích thước của các feature maps và tạo ra một biểu diễnsâu hơn và thu gọn của dữ liệu
Fully Connected Layers:
Sau khi trích xuất các đặc trưng từ dữ liệu video thông qua các lớpconvolutional và pooling, các đặc trưng này sẽ được làm phẳng và đưa vào cáclớp fully connected để phân loại các ngôn ngữ ký hiệu
Các lớp fully connected thường kết thúc bằng một lớp softmax để dự đoán xácsuất của mỗi lớp ngôn ngữ ký hiệu
Trang 9Dropout Layers:
Để tránh tình trạng overfitting, các lớp dropout có thể được thêm vào giữa cáclớp fully connected để ngẫu nhiên loại bỏ một số nơ-ron trong quá trình huấnluyện
2 ConvLSTM
ConvLSTM là một loại mạng nơ-ron kết hợp giữa Mạng Nơ-ron Tích chập(CNN) và mô hình Long Short-Term Memory (LSTM) CNN thường được sửdụng cho các nhiệm vụ xử lý hình ảnh, trong đó chúng xác định và trích xuấtđặc trưng từ các hình ảnh Mô hình LSTM, ngược lại, được sử dụng cho phântích chuỗi thời gian, trong đó chúng sử dụng các ô nhớ để lưu trữ thông tin quathời gian ConvLSTM được thiết kế để kết hợp hai mô hình này để xử lý dữ liệukhông gian thời gian có sự phụ thuộc cả về không gian và thời gian
ConvLSTM được giới thiệu lần đầu tiên bởi Xingjian Shi và các cộng sự trongmột bài báo năm 2015 có tựa đề "Convolutional LSTM Network: A MachineLearning Approach for Precipitation Nowcasting." Bài báo đề xuất sử dụng môhình ConvLSTM để dự báo lượng mưa sử dụng hình ảnh radar, đã chứng minh
9
Trang 10rằng mô hình này vượt trội hơn so với các mô hình LSTM truyền thống về độchính xác và xử lý dữ liệu không gian thời gian.
Cách ConvLSTM Hoạt Động
Kiến trúc ConvLSTM hoạt động bằng cách duy trì thông tin không gian của đầuvào đồng thời học các phụ thuộc thời gian Thông thường, CNN mất thông tinkhông gian khi chúng xử lý các hình ảnh đầu vào do các lớp tích chập và lớpgộp Mô hình LSTM, ngược lại, cần duy trì thông tin thời gian, có nghĩa làchúng yêu cầu các chuỗi đầu vào phải được sắp xếp Mô hình ConvLSTM sửdụng sự kết hợp của các lớp tích chập và LSTM để duy trì cả thông tin khônggian và thời gian
3 2Dplus1D-CNN
Đầu vào (Input):
Dữ liệu đầu vào là các video, mỗi video bao gồm một chuỗi các khung hình.Convolutional 2D Layers (2D CNN):
Các lớp Convolutional 2D được sử dụng để trích xuất các đặc trưng không gian
từ từng khung hình của video
Các bộ lọc tích chập được áp dụng lên từng khung hình để tạo ra các bản đồ đặctrưng
Pooling 2D Layers (2D Pooling):
Trang 11Các lớp Pooling 2D (ví dụ: Max Pooling hoặc Average Pooling) được sử dụngsau mỗi lớp Convolutional 2D để giảm kích thước của các bản đồ đặc trưngtheo không gian.
Quá trình này giúp giảm số lượng tham số và tính toán của mô hình, đồng thờigiữ lại thông tin quan trọng trong các bản đồ đặc trưng
Convolutional 1D Layers (1D CNN):
Các lớp Convolutional 1D được sử dụng để xử lý thông tin theo thời gian từ cácbản đồ đặc trưng đã được giảm kích thước
Các bộ lọc tích chập 1D được áp dụng trên các bản đồ đặc trưng theo thời gian
để tạo ra các đặc trưng về sự biến đổi của video qua thời gian
Pooling 1D Layers (1D Pooling):
Tương tự như Pooling 2D, các lớp Pooling 1D được sử dụng để giảm kíchthước của các bản đồ đặc trưng 1D
Fully Connected Layers (FC):
Các đặc trưng thu được từ các lớp Convolutional được làm phẳng và đưa vàocác lớp Fully Connected để phân loại video
Cuối cùng, một lớp Softmax được sử dụng để dự đoán xác suất của mỗi lớpphân loại
Kiến trúc 2DPlus1D kết hợp cả thông tin không gian và thời gian từ dữ liệuvideo, giúp cải thiện hiệu suất của mô hình trong việc phân loại và hiểu biết về
sự biến đổi của video qua thời gian
11
Trang 12CHƯƠNG III: TRIỂN KHAI
1 Thu thập dữ liệu
Đối với đề tài này thì chúng em đã được học các từ ngữ ký hiệu khác nhau, sau
đó đối với mỗi từ thì sẽ có 10 đến 20 bạn thu hình tại cùng một địa điểm với cácthiết bị máy móc, ánh sang giống nhau Tổng tất cả có 21 từ ngữ ký hiệu, mỗi từ
ký hiệu có trên 10 video
2 Xử lý dữ liệu
Đối việc xử lý dữ liệu thì chúng em đã đọc và gán nhãn đúng cho từng videotrong, sau đó chia dữ liệu thành 3 tập train, validation, test với tỷ lệ 0.7, 0.15,0.15
data = []
labels = []
for i, class_name in enumerate(classes):
class_dir = os.path.join(base_dir, class_name)
for video_file in os.listdir(class_dir):
video_path = os.path.join(class_dir, video_file)
data.append(video_path)
labels.append(class_name)
from sklearn.model_selection import train_test_split
train_data, temp_data, train_labels, temp_labels = train_test_split(data, labels, test_size=0.3, random_state=42)
valid_data, test_data, valid_labels, test_labels = train_test_split(temp_data, temp_labels, test_size=0.5, random_state=42)
Sau đó chúng em xây dựng hai hàm
Trang 13Hàm preprocess_video (video_path, target_size=(64, 64)):
Mục đích: Hàm này được sử dụng để tiền xử lý video trước khi đưa vào môhình
Đầu vào:
video_path: Đường dẫn đến video cần xử lý
target_size: Kích thước mục tiêu của các khung hình sau khi được resize.Đầu ra: Một mảng các khung hình được xử lý
Hàm preprocess_video đầu tiên mở video từ đường dẫn đã cho bằng OpenCV.Sau đó, nó thực hiện quá trình resize các khung hình trong video đó về kíchthước mục tiêu (truyền vào qua tham số target_size) Nếu video có ít hơn sốlượng khung hình mong muốn (num_frames), hàm sẽ lặp lại khung hình cuốicùng cho đến khi đủ số lượng khung hình Nếu video có nhiều hơn num_frames,hàm sẽ cắt bớt đi số lượng khung hình dư thừa
13
Trang 14Hàm video_data_generator(data, labels, batch_size, num_frames):
Mục đích: Hàm này được sử dụng để tạo dữ liệu đầu vào cho mô hình trong quátrình huấn luyện
Đầu vào:
data: Danh sách các đường dẫn đến các video
labels: Nhãn tương ứng với mỗi video
batch_size: Kích thước của các batch dữ liệu
num_frames: Số lượng khung hình mong muốn trong mỗi video
Đầu ra: Một generator tạo ra các batch dữ liệu và nhãn tương ứng cho mỗibatch
Hàm video_data_generator tạo một generator vô hạn bằng cách lặp lại quá trìnhsau: lựa chọn ngẫu nhiên một batch kích thước batch_size từ tập dữ liệu, tiền xử
lý mỗi video trong batch bằng cách gọi hàm preprocess_video, chuyển đổi nhãnthành dạng số và one-hot encoding Cuối cùng, generator trả về một batch dữliệu và nhãn tương ứng
3 Các mô hình thuật toán
3.1 3D-CNN
Mô hình mạng nơ-ron này là một mô hình Convolutional Neural Network 3D(Conv3D) được xây dựng bằng cách sử dụng Sequential API trong thư viện
Trang 15Keras/TensorFlow Dưới đây là mô tả chi tiết về các layer và cấu trúc của môhình:
Conv3D Layer (64 filters, kernel size (3, 3, 3), activation 'relu'):
Input Shape: (16, 64, 64, 3)
16: Số lượng khung hình trong mỗi video
64x64: Kích thước của mỗi khung hình (đã được resize)
Pooling kích thước (2, 2, 2) được áp dụng trên các khối 3D để giảm kích thướccủa chúng
Conv3D Layer (128 filters, kernel size (3, 3, 3), activation 'relu'):
Một Conv3D layer khác được thêm vào mô hình với 128 filters và kích thướckernel (3, 3, 3)
Activation function 'relu' được sử dụng
MaxPooling3D Layer (pool_size (2, 2, 2)):
Tương tự như layer MaxPooling3D trước đó, layer này cũng giảm kích thướccủa các feature maps bằng cách áp dụng pooling với kích thước (2, 2, 2).Flatten Layer:
15
Trang 16Layer này được sử dụng để làm phẳng các feature maps thành một vector 1D,chuẩn bị cho việc đưa vào các lớp Fully Connected (Dense).
Dense Layer (256 units, activation 'relu'):
Một lớp Dense với 256 units được thêm vào để học các đặc trưng phức tạp từcác đặc trưng trích xuất từ Conv3D layers
Activation function 'relu' được sử dụng
Dropout Layer (dropout rate 0.5):
Layer Dropout với tỷ lệ dropout là 0.5, giúp tránh hiện tượng overfitting bằngcách ngẫu nhiên loại bỏ một phần các nơ-ron trong quá trình huấn luyện.Dense Layer (num_classes units, activation 'softmax'):
Lớp Dense cuối cùng với số lượng units bằng số lượng lớp phân loại(num_classes), được kích hoạt bằng hàm softmax để dự đoán xác suất của mỗilớp
Trang 17Activation function 'tanh' được sử dụng.
recurrent_dropout=0.2: Dropout được áp dụng cho các trạng thái ẩn trong quátrình huấn luyện
return_sequences=True: Trả về chuỗi các output thay vì chỉ output cuối cùng.MaxPooling3D Layer (pool_size=(1, 2, 2), padding='same'):
Pooling kích thước (1, 2, 2) được áp dụng trên các khối 3D để giảm kích thướccủa chúng
padding='same' được sử dụng để duy trì kích thước của đầu ra
TimeDistributed Layer (Dropout (0.2)):
Dropout với tỷ lệ 0.2 được áp dụng lên các khung hình của mỗi video
ConvLSTM2D Layer (filters = 8, kernel_size = (3, 3), activation = 'tanh'):ConvLSTM2D tiếp theo với 8 filters và kích thước kernel là (3, 3)
MaxPooling3D Layer và TimeDistributed Layer (Dropout):
Lặp lại quá trình tương tự cho các lớp ConvLSTM2D tiếp theo với số filterstăng dần (14 và 16)
Flatten Layer:
Layer này được sử dụng để làm phẳng các feature maps thành một vector 1D,chuẩn bị cho việc đưa vào lớp Dense
Dense Layer (21 units, activation = 'softmax'):
Lớp Dense cuối cùng với 21 units, tương ứng với số lớp phân loại
Activation function 'softmax' được sử dụng để dự đoán xác suất của mỗi lớp.3.3 2Dplus1D-CNN
17