Thiết kế giải bài tập dựa trên bài toán mẫu và ứng dụngTRANG CAM KẾT Chúng em xin cam kết báo cáo này được hoàn thành dựa trên các kết quảnghiên cứu của chúng em và các kết quả nghiên cứ
MỤC TIÊU VÀ Ý NGHĨA THỰC TIỄN CỦA ĐỀ TÀI
Lý do chọn đề tài
Ngôn ngữ có vai trò vô cùng quan trọng trong đời sống xã hội, là phương tiện giúp con người truyền đạt thông tin, bày tỏ cảm xúc, tâm tư, và mong muốn, từ đó tạo nên sự kết nối và hiểu biết lẫn nhau trong công việc và cuộc sống Đồng thời,ngôn ngữ còn gắn bó mật thiết với tư duy, vì tư duy không thể tồn tại tách rời ngôn ngữ.
Tuy nhiên, với người khiếm thính, việc giao tiếp qua lời nói gặp nhiều hạn chế do khả năng nghe suy giảm Để đáp ứng nhu cầu giao tiếp, họ sử dụng ngôn ngữ ký hiệu (NNKH) – một hệ thống ngôn ngữ mà trong đó các cử chỉ, điệu bộ thay thế cho âm thanh Giống như ngôn ngữ nói, NNKH cũng đảm nhiệm đầy đủ các chức năng của một ngôn ngữ Tuy nhiên, vì sự khác biệt về văn hóa, lịch sử và lối sống, NNKH ở mỗi quốc gia có hình thức và cấu trúc riêng biệt. Để góp phần xóa bỏ rào cản này, ứng dụng dịch NNKH ra chữ cái có thể hỗ trợ người khiếm thính và người bình thường giao tiếp một cách hiệu quả Bằng cách dịch các cử chỉ tay thành chữ cái, ứng dụng cung cấp phương tiện giúp hiểu ý nghĩa các ký hiệu một cách trực quan và dễ dàng, từ đó thúc đẩy sự hòa nhập và trao đổi thông tin cho người khiếm thính.
Mục tiêu của ứng dụng dịch tự động ngôn ngữ ký hiệu là tạo ra một hệ thống dịch máy hiệu quả và đáng tin cậy để dịch từ cử chỉ tay sang ngôn ngữ kí hiệu (SL). Mục tiêu này có thể được đảm bảo thông qua hướng tiếp cận chính:
- Mô hình dịch máy dựa trên mạng nơ-ron hiện đại (Neural Network-Based Machine Translation) áp dụng những tiến bộ mới nhất trong học máy và xử lý ngôn ngữ tự nhiên (NLP) để tạo ra hệ thống dịch ngôn ngữ ký hiệu hiệu quả Mô hình này tận dụng khả năng học sâu của mạng nơ-ron để nắm bắt các đặc điểm và ý nghĩa phức tạp của các cử chỉ trong ngôn ngữ ký hiệu, từ đó chuyển đổi thành ngôn ngữ văn bản hoặc lời nói một cách chính xác Với sự phát triển của các kiến trúc mạng tiên tiến như RNN, CNN và đặc biệt là Transformer, mô hình dịch có thể xử lý cả chuỗi dữ liệu dài và các ngữ cảnh phức tạp, giúp người sử dụng hiểu nhanh chóng và chính xác những thông điệp mà người khiếm thính muốn truyền tải.
Ứng dụng
Phương pháp nghiên cứu
Phương pháp nghiên cứu cho bài toán dịch cử chỉ tay sang chữ cái trong ngôn ngữ ký hiệu bao gồm các phần sau:
- Thu thập dữ liệu: Để xây dựng và đào tạo mô hình dịch, cần thu thập một bộ dữ liệu lớn về các cử chỉ tay tương ứng với từng chữ cái trong ngôn ngữ ký hiệu (SL) Dữ liệu này phải phản ánh sự đa dạng của các cử chỉ để đảm bảo tính đại diện và chính xác trong việc nhận diện các ký tự.
- Tiền xử lý dữ liệu: Dữ liệu thu thập được thường cần được tiền xử lý để loại bỏ nhiễu và chuẩn hóa Điều này có thể bao gồm việc làm sạch dữ liệu, xác định các cử chỉ tay, và chuyển đổi dữ liệu thành định dạng phù hợp cho quá trình đào tạo mô hình.
- Xây dựng mô hình dịch máy: Ứng dụng sử dụng mô hình dịch máy dựa trên mạng nơ-ron để nhận diện và chuyển đổi các cử chỉ tay thành chữ cái Mô hình sẽ được đào tạo trên dữ liệu đã thu thập và tiền xử lý để học cách dịch chính xác từ cử chỉ tay sang ngôn ngữ văn bản.
- Đánh giá và kiểm tra: Để đảm bảo hiệu suất của mô hình, cần thực hiện các bước kiểm tra và đánh giá Phương pháp đánh giá được sử dụng là đánh giá tự động bằng BLEU để xác định độ chính xác của mô hình.
- Tối ưu hóa và cải tiến: Dựa trên kết quả đánh giá, mô hình và phương pháp dịch có thể được tối ưu hóa và cải tiến Điều này bao gồm việc tinh chỉnh các siêu tham số của mô hình.
Tổng hợp lại, phương pháp nghiên cứu này kết hợp giữa các phương pháp dựa trên mạng nơ-ron và các quy tắc ngữ pháp để đảm bảo tính chính xác và hiệu quả của hệ thống dịch ngôn ngữ ký hiệu.
CƠ SỞ LÝ THUYẾT
TỔNG QUAN VỀ DEEP LEARNING
AI- Artificial Intelligence (Trí Tuệ Nhân Tạo) cụ thể là Machine Learning đã đạt được thành công đáng kể trong những năm gần đây AI xuất hiện hầu như trong tất cả lĩnh vực của đời sống, dễ dàng nhận thấy trong các ứng dụng như lái xe tự hành, Deep Blue Machine Learning sau huấn luyện sẽ có thể đưa ra dự đoán chính xác sau khi được cung cấp dữ liệu thay vì lập trình nó theo một sườn cứng để thực hiện nhiệm vụ đó từng bước một Từ đó đem đến sự tiện lợi, nhanh chóng cho người dùng.
Hnh 2.1 Mối quan hệ AL,ML và DL
AI ngày càng được các nhà đầu tư quan tâm và vươn lên phát triển như vũ bão. Nổi bật trong các đột phá của AI phần nhiều đến Deep learning Nhờ có Deep learnng mà máy tính ngày càng vượt qua hoặc tiến gần đến việc kết hợp hiệu suất của con người Qua hình 2.1 ta có thể thấy rõ Deep Learning chỉ là một tập hợp con của Machine Learning Tuy nhiên Deep Learning có khả năng khác biệt ở một số khía cạnh quan trọng so với Machine Learning nông truyền thống, cho phép máy tính giải quyết một loạt các vấn đề phức tạp không thể giải quyết được Trong đó có thể kể đến như khả năng khai thác các tập dữ liệu lớn (Big Data) với độ chính xác cao.
Convolutional Neural Network (CNN)
Convolutional Neural Network (CNN) là một thuật ngữ dùng để chỉ mạng nơ ron tích chập Đây là mô hình có độ chính xác cao và được sử dụng phổ biến trong Deep learning Ý tưởng đằng sau là chúng ta sẽ cho ảnh đi qua các bộ lọc trước khi huấn luyện mạng Neural Sau khi đi qua bộ lọc các đặt trưng của ảnh được thể hiện rõ và chúng ta sẽ dùng chúng để nhận diện hình ảnh Như hình 2.2 ta có cấu trúc của mô hình CNN.
Hnh 2.2 Thuật toán CNN Đầu vào của mô hình là hình ảnh Sau đó đến Convolutional Layer (lớp tích chập) tức là ta cho hình ảnh đầu vào thực hiện tích chập với các Kernel (bộ lọc) bằng các trượt các Kernel từ trái qua phải từ trên xuống dưới Đồng thời chọn đối số, áp dụng các bộ lọc với các bước nhảy, padding nếu cần, áp dụng hàm kích hoạt(nonlinear activation) cho ma trận hình ảnh Sau mỗi hàm kích hoạt ta sẽ nhận được thông tin cho các lớp tiếp theo Có các hàm kích hoạt như tanh, sigmoil nhưng hàm Relu phổ biến hơn cả vì nó cho hiệu suất tốt hơn Công thức của hàmRelu là f (x) = max (0, x) đảm bảo cho dữ liệu ra không âm vì dữ liệu mà chúng ta tìm hiểu là các giá trị tuyến tính không âm Tiếp đó ta tiến hành Pooling như hình2.3 để giảm kích thước cho hình ảnh nhưng vẫn giữ lại các thông tin quan trọng.Các loại Pooling thông dụng là Max Pooling, Average Pooling, Sum Pooling Số lượng lớp tích chập có thể ít hay nhiều tùy thuộc mục đích sử dụng mà lựa chọn phù hợp Cuối cùng ta xây dựng đầu ra và dữ liệu đầu vào thành 1 lớp được kết nối đầy đủ (Full Connected)
Hnh 2.3 Thực hiện max pooling
So với mô hình mạng Neural truyền thông thì CNN trở nên tôi ưu trong một số trường hợp Với mạng Neural truyền thống thì chúng ta phải đưa tất cả giá trị pixel trên toàn bộ ảnh qua từng Neural Gia sử tấm ảnh có kích thức nhỏ cỡ 32*32 có 3 kênh màu thì số lượng trọng số phải đi qua một Neural là 3072 trọng số Nếu tấm ảnh lớn hơn thì trọng số phải đi qua Neural của toàn mạng có thể lên đến vài trăm vài tỉ trọng số Từ đó bài toán của chúng ta sẽ quá phức tạp vì có quá nhiều trọng số phải xử lí, điều chỉnh dẫn đến tình trạng over fitting Trong khi với mạng CNN có tính chất kết nối cục bộ (Local connectivity) cho phép Neural chỉ xử lí một vùng dữ liệu thay vì toàn bộ tấm ảnh Đồng thời CNN cũng có bộ trọng số dùng chung thay vì từng Neural có bộ trong số khác nhau hoàn toàn của mạng Neural truyền thống Trong cũng lớp layer thì mỗ neural đều có bộ trọng số duy nhất giống nhau Từ đó trọng số phải điều chỉnh ít hơn, bài toán sẽ dễ dàng hơn Qua đó thấy rõ CNN làm việc tốt hơn mạngNeural thông thường ở những tấm ảnh có kích thức lớn.
Mạng TensorFlow
TensorFlow chính là thư viện mã nguồn mở cho machine learning nổi tiếng nhất thế giới, được phát triển bởi các nhà nghiên cứu từ Google Việc hỗ trợ mạnh mẽ các phép toán học để tính toán trong machine learning và deep learning đã giúp việc tiếp cận các bài toán trở nên đơn giản, nhanh chóng và tiện lợi hơn nhiều.
Vài năm trước, khi phải xử lý lượng dữ liệu khổng lồ, deep learning bắt đầu cho thấy hiệu năng vượt trội so với tất cả các thuật toán machine learning khác Google
Thế là họ dựng 1 framework có tên là TensorFlow để các nhà nghiên cứu cũng như lập trình viên có thể làm việc cùng nhau trên model A.I 1 khi đã được phát triển và scale hoàn chỉnh, rất nhiều người đã có thể sử dụng được nó.
Kiến trúc TensorFlow hoạt động được chia thành 3 phần
• Tiền xử lý dữ liệu
• Train và ước tính model
Thư viện Keras
Keras là một thư viện nơ-ron mã nguồn mở được viết bằng ngôn ngữ lập trìnhPython Nó có khả năng chạy trên đầu trang của Tensorflow, Microsoft Cognitive Toolkit,R, Theano hoặc StripeML Được thiết kế để cho phép thử nghiệm nhanh với các mạngthần kinh sâu, nó tập trung vào việc thân thiện với người dùng, mô-đun và mở rộng.
Keras được coi là một thư viện ‘high-level’ với phần ‘low-level’ (còn được gọi làbackend) có thể là TensorFlow, CNTK, hoặc Theano (sắp tới Theano sẽ không được duytrì nâng cấp nữa) Keras có cú pháp đơn giản hơn TensorFlow rất nhiều Với mục đíchgiới thiệu về các mô hình nhiều hơn là các sử dụng các thư viện deep learning.Một số tính năng của Keras
Keras ưu tiên trải nghiệm của người lập trình.
Keras đã được sử dụng rộng rãi trong doanh nghiệp và cộng đồng nghiên cứu
Keras giúp dễ dàng biến các thiết kế thành sản phẩm
Keras hỗ trợ huấn luyện trên nhiều GPU phân tán
Keras hỗ trợ đa backend engines và không giới hạn bạn vào một hệ sinh thái.
Ngôn ngữ PyThon
Python được hình thành vào cuối những năm 1980, bởi Guido van Rossum. Python 2.0 được phát hành vào ngày 16/10/2000 và có nhiều tính năng mới bao gồm bộ thu gom rác theo chu kỳ và hỗ trợ Unicode Python 3.0 được phát hành năm 2008, sau một thời gian dài thử nghiệm Cho đến tháng 10/2020, Python đã có phiên bản 3.9.
Ngôn ngữ lập trình nhập môn: Do mục đích của Guido Van Rossum hướng đến sự đơn giản, dễ hiểu nên so với các ngôn ngữ khác như Java, C++, Python được nhiều lập trình viên mới ưa thích hơn.
Ngôn ngữ thông dịch cấp cao: Không cần quản lý bộ nhớ, dọn dẹp dữ liệu, Python tự động chuyển đổi code thành dạng ngôn ngữ máy tính có thể hiểu.
Ngôn ngữ lập trình hướng đối tượng: Giải quyết vấn đề một cách trực quan bằng phương pháp tạo ra các đối tượng Có thể được sử dụng trên nhiều nền tảng. Miễn phí, mã nguồn mở: Có một số ngôn ngữ lập trình buộc lòng phải chi trả một mức phí nhất định để học tập và cài đặt, nhưng với Python thì hoàn toàn miễn phí. Bên cạnh đó, vì là ngôn ngữ mã nguồn mở nên những lập trình viên có thể thay đổi mã nguồn của nó Python có một cộng đồng lớn, không ngừng cải thiện mỗi lần cập nhật. Khả năng mở rộng và có thể nhúng: Có thể dễ dàng kết hợp Python với một ngôn ngữ nhúng khác Điều này đảm bảo cho ứng dụng có tính năng tốt như scripting, mà các ngôn ngữ khác không làm được.
Thư viện tiêu chuẩn lớn: Việc sở hữu số lượng thư viện chuẩn lớn giúp hỗ trợ một cách triệt để cho vấn đề công việc cũng như học tập.
Python là ngôn ngữ được ứng dụng trong đa lĩnh vực vì các tính năng tiện lợi, nó đã trở thành sự lựa chọn được ưu tiên của lập trình viên trong nhiều ứng dụng khác nhau Một số lĩnh vực áp dụng Python như sau:
- Lập trình ứng dụng Web (Web development): Tạo ra các web app có khả năng mở rộng (scalable) được bằng cách sử dụng các framework và CMS (hệ thống quản trị nội dung).
- Khoa học và số liệu ứng dụng: Nhờ vào việc được thiết kế để phân tích thống kế và phân tích số liệu mà Python luôn được các nhà khoa học dữ liệu lựa chọn” để sử dụng.
- Trí tuệ nhân tạo và học máy (Artificial Intelligent and Machine Learning): Các dự án liên quan đến AI hoặc ML yêu cầu các công cụ có thể xử lý ngôn ngữ ổn định, bảo mật, linh hoạt và được trang bị các công cụ có thể xử lý các yêu cầu riêng biệt khác nhau Một số package Python tốt nhất cho AI/ML là:
+ Scipy: danh cho máy tính nâng cao.
+ Pandas: phân tích dữ liệu mục đích chung.
+ Seaborn: trực quan hóa dữ liệu.
+ Keras, TensorFlow và Scikit – learning cho ML.
+ NumPy: phân tích dữ liệu và tính toán khoa học hiệu suất cao.
Ngoài ra còn có một số thư viện khác hỗ trợ cho dự án.
- Phát triển ERP, phát triển phần mềm và hệ điều hành: Dùng trong việc phát triển phần mềm cho giải pháp cấp doanh nghiệp Một số ERP phổ biến như Odoo, Tryton.
- Desktop GUI: Có kiến trúc module và hoạt động trên nhiều hệ điều hành, kết hợp với các công cụ xử lý văn bản phong phú.
- Xử lý ảnh và thiết kế đồ họa: thiết kế và xây dựng phần mềm hình ảnh 2D như Inkscape, GIMP, Paint Shop Pro và Scribus Một số gói hoạt hình 3D như Blender, Houdini, 3ds Max, Maya, Cinema 4D và Lightwave.
- Giáo dục: Ngôn ngữ lập trình Python đang được đưa vào chương trình giảng dạy cho những người lần đầu tiếp cận ngôn ngữ lập trình tại nhiều quốc gia.
CÁC CÔNG NGHỆ VÀ CÔNG CỤ SỬ DỤNG TRONG ĐỀ TÀI
MÔI TRƯỜNG LẬP TRÌNH
PyCharm là một môi trường phát triển tích hợp (IDE) phổ biến, đặc biệt dành cho ngôn ngữ lập trình Python, được phát triển bởi JetBrains PyCharm cung cấp nhiều tính năng hỗ trợ lập trình như gợi ý mã tự động, quản lý dự án và tích hợp Git, giúp cải thiện hiệu suất làm việc và tối ưu hóa quy trình phát triển phần mềm Với các công cụ mạnh mẽ về gỡ lỗi (debugging), kiểm tra mã (code inspection), và hỗ trợ các thư viện như TensorFlow, Keras, PyCharm là công cụ lý tưởng cho các dự án học sâu và xử lý hình ảnh như trong ứng dụng nhận diện ngôn ngữ ký hiệu.
3.1.1.1 Các tính năng nổi bật của PyCharm:
Gợi ý mã và tự động hoàn thiện: Giúp tăng tốc độ viết mã và giảm thiểu lỗi cú pháp.
Quản lý dự án: Hỗ trợ tổ chức cấu trúc thư mục, dễ dàng theo dõi tiến trình.
Debugging mạnh mẽ: Cho phép kiểm tra và sửa lỗi mã nhanh chóng.
Tích hợp thư viện học máy: Dễ dàng cài đặt và tích hợp các thư viện như
3.1.1.2 Ứng dụng trong dự án:
Trong đồ án nhận diện ngôn ngữ ký hiệu, PyCharm giúp quản lý các file dữ liệu, viết và kiểm tra mã cho mô hình học sâu CNN một cách hiệu quả PyCharm cũng cung cấp công cụ gỡ lỗi hỗ trợ kiểm tra và tối ưu mô hình trong quá trình huấn luyện, cải thiện độ chính xác và hiệu suất của hệ thống dịch cử chỉ tay thành ký tự.
Jupyter Notebook là một công cụ phát triển tích hợp phổ biến, đặc biệt dành cho các dự án về phân tích dữ liệu, khoa học dữ liệu và học máy Công cụ này cho phép người dùng viết và chạy mã Python trực tiếp trong một môi trường tương tác, kết hợp với các khả năng hiển thị dữ liệu, lập biểu đồ, và ghi chú từng bước trong quá trình làm việc.
3.1.2.1 Các tính năng nổi bật của Jupyter Notebook:
Giao diện trực quan và tương tác: Cho phép chia nhỏ mã thành các ô (cells) để dễ dàng kiểm tra và chạy từng phần Điều này rất hữu ích trong quá trình thử nghiệm các thuật toán học sâu như CNN.
Hỗ trợ hiển thị kết quả ngay lập tức: Có khả năng tạo và hiển thị trực tiếp các biểu đồ, ảnh và kết quả mô hình, giúp dễ dàng theo dõi quá trình huấn luyện mô hình.
Ghi chú và báo cáo: Người dùng có thể thêm văn bản dạng Markdown vào từng ô mã để giải thích, ghi chú hoặc báo cáo, giúp trình bày dự án một cách rõ ràng và mạch lạc.
Hỗ trợ nhiều ngôn ngữ: Ngoài Python, Jupyter Notebook cũng hỗ trợ các ngôn ngữ khác như R, Julia, giúp nó trở nên linh hoạt cho các dự án đa dạng.
3.1.2.2 Ứng dụng trong dự án:
Trong đồ án về nhận diện ngôn ngữ ký hiệu, Jupyter Notebook giúp xử lý và phân tích dữ liệu đầu vào một cách trực quan Người dùng có thể dễ dàng xem trước các cử chỉ tay dưới dạng hình ảnh, theo dõi quá trình huấn luyện của mô hình CNN và trực quan hóa các kết quả thông qua biểu đồ Khả năng ghi chú giúp tài liệu hóa các bước triển khai và kết quả của mô hình, tạo nền tảng báo cáo hiệu quả cho đồ án.
NGÔN NGỮ LẬP TRÌNH
Python được hình thành vào cuối những năm 1980, bởi Guido van Rossum. Python 2.0 được phát hành vào ngày 16/10/2000 và có nhiều tính năng mới bao gồm bộ thu gom rác theo chu kỳ và hỗ trợ Unicode Python 3.0 được phát hành năm 2008, sau một thời gian dài thử nghiệm Cho đến tháng 10/2020, Python đã có phiên bản 3.9.
Ngôn ngữ lập trình nhập môn: Do mục đích của Guido Van Rossum hướng đến sự đơn giản, dễ hiểu nên so với các ngôn ngữ khác như Java, C++, Python được nhiều lập trình viên mới ưa thích hơn.
Ngôn ngữ thông dịch cấp cao: Không cần quản lý bộ nhớ, dọn dẹp dữ liệu, Python tự động chuyển đổi code thành dạng ngôn ngữ máy tính có thể hiểu.
Ngôn ngữ lập trình hướng đối tượng: Giải quyết vấn đề một cách trực quan bằng phương pháp tạo ra các đối tượng Có thể được sử dụng trên nhiều nền tảng.Miễn phí, mã nguồn mở: Có một số ngôn ngữ lập trình buộc lòng phải chi trả một mức phí nhất định để học tập và cài đặt, nhưng với Python thì hoàn toàn miễn phí.
Bên cạnh đó, vì là ngôn ngữ mã nguồn mở nên những lập trình viên có thể thay đổi mã nguồn của nó Python có một cộng đồng lớn, không ngừng cải thiện mỗi lần cập nhật.
Khả năng mở rộng và có thể nhúng: Có thể dễ dàng kết hợp Python với một ngôn ngữ nhúng khác Điều này đảm bảo cho ứng dụng có tính năng tốt như scripting, mà các ngôn ngữ khác không làm được.
Thư viện tiêu chuẩn lớn: Việc sở hữu số lượng thư viện chuẩn lớn giúp hỗ trợ một cách triệt để cho vấn đề công việc cũng như học tập.
Khả năng di chuyển: Các chương trình ngôn ngữ Python có thể di chuyển được từ nền tảng này sang nền tảng khác như Windows, Macos hay Linux.
Python là ngôn ngữ được ứng dụng trong đa lĩnh vực vì các tính năng tiện lợi, nó đã trở thành sự lựa chọn được ưu tiên của lập trình viên trong nhiều ứng dụng khác nhau Một số lĩnh vực áp dụng Python như sau:
- Lập trình ứng dụng Web (Web development): Tạo ra các web app có khả năng mở rộng (scalable) được bằng cách sử dụng các framework và CMS (hệ thống quản trị nội dung).
- Khoa học và số liệu ứng dụng: Nhờ vào việc được thiết kế để phân tích thống kế và phân tích số liệu mà Python luôn được các nhà khoa học dữ liệu lựa chọn” để sử dụng.
- Trí tuệ nhân tạo và học máy (Artificial Intelligent and Machine Learning): Các dự án liên quan đến AI hoặc ML yêu cầu các công cụ có thể xử lý ngôn ngữ ổn định, bảo mật, linh hoạt và được trang bị các công cụ có thể xử lý các yêu cầu riêng biệt khác nhau Một số package Python tốt nhất cho AI/ML là:
+ Scipy: danh cho máy tính nâng cao.
+ Pandas: phân tích dữ liệu mục đích chung.
+ Seaborn: trực quan hóa dữ liệu.
+ Keras, TensorFlow và Scikit – learning cho ML.
+ NumPy: phân tích dữ liệu và tính toán khoa học hiệu suất cao.
Ngoài ra còn có một số thư viện khác hỗ trợ cho dự án.
- Phát triển ERP, phát triển phần mềm và hệ điều hành: Dùng trong việc phát triển phần mềm cho giải pháp cấp doanh nghiệp Một số ERP phổ biến như
- Desktop GUI: Có kiến trúc module và hoạt động trên nhiều hệ điều hành, kết hợp với các công cụ xử lý văn bản phong phú.
- Xử lý ảnh và thiết kế đồ họa: thiết kế và xây dựng phần mềm hình ảnh 2D như Inkscape, GIMP, Paint Shop Pro và Scribus Một số gói hoạt hình 3D như Blender, Houdini, 3ds Max, Maya, Cinema 4D và Lightwave.
- Giáo dục: Ngôn ngữ lập trình Python đang được đưa vào chương trình giảng dạy cho những người lần đầu tiếp cận ngôn ngữ lập trình tại nhiều quốc gia.
TRIỂN KHAI ỨNG DỤNG
Chuẩn bị dữ liệu
Dữ liệu đầu vào: Tập dữ liệu "Sign Language MNIST" trên Kaggle, được tạo bởi DataMunge, là một tập dữ liệu giúp nhận diện các chữ cái của ngôn ngữ ký hiệu theo hệ thống bảng chữ cái ASL (American Sign Language) Mỗi ảnh trong tập dữ liệu là một hình ảnh đen trắng kích thước 28x28 pixel, đại diện cho một chữ cái từ A-Z (ngoại trừ ký hiệu "J" và "Z", vì hai chữ cái này có chuyển động, không thể hiện rõ qua ảnh tĩnh).
4.1.2 Tiền xử lý dữ liệu Đọc và tải dữ liệu: Sử dụng thư viện như pandas để đọc file CSV và chuyển đổi từng hàng thành mảng số, mỗi hàng đại diện cho một ảnh với các giá trị pixel và nhãn tương ứng.
Hnh 4.5.Đọc và tải dữ liệu
Tập huấn luyện (Train): Gồm hơn 27,000 ảnh được gắn nhãn, mỗi ảnh là một chữ cái ký hiệu từ A-Z.
Tập kiểm tra (Test): Bao gồm hơn 7,000 ảnh để đánh giá độ chính xác của mô hình sau khi huấn luyện.
Hnh 4.6.Thông tin dữ liệu
Chuẩn hóa ảnh
Mục tiêu: Chuẩn hóa ảnh là một bước quan trọng để giúp mô hình học máy hoạt động hiệu quả hơn Trong ngữ cảnh của dự án nhận dạng ngôn ngữ ký hiệu, chuẩn hóa ảnh giúp tạo ra dữ liệu đầu vào nhất quán, đảm bảo rằng các ảnh có kích thước, độ phân giải, và phân bố độ sáng tương tự nhau. Định dạng ảnh: Tất cả ảnh trong tập dữ liệu "Sign Language MNIST" đều được chuẩn hóa về kích thước 28x28 pixel Điều này giảm độ phức tạp của dữ liệu và giúp mô hình dễ dàng học các đặc điểm từ ảnh.
Phân bố giá trị điểm ảnh: Các giá trị điểm ảnh ban đầu nằm trong khoảng từ 0 đến 255 Để mô hình học dễ dàng hơn, chúng ta có thể chuẩn hóa các giá trị này về khoảng [0, 1] bằng cách chia toàn bộ dữ liệu điểm ảnh cho 255.
Trực quan hóa dữ liệu (Data Visualization)
Hnh 4.8.Trực quan hoá dữ liệu
Mục đích: Đoạn mã trên được dùng để hiển thị một số hình ảnh từ tập dữ liệu, giúp hiểu rõ hơn về các ký hiệu tay đại diện cho từng chữ cái.
Chi tiết các bước thực hiện: plt.figure(figsize=(20,6)): Thiết lập một khung hình lớn, có chiều rộng 20 và add_subplot(): Chia khung hình thành 6 biểu đồ con để hiển thị 6 hình ảnh khác nhau từ các chỉ số mẫu khác nhau. imshow(): Hiển thị từng ảnh ở mỗi chỉ số cụ thể (0, 5, 20, 456, 999, 1500), giúp quan sát các hình ảnh trong tập dữ liệu và nhận diện các ký hiệu. Ý nghĩa thực tế: Việc trực quan hóa giúp chúng ta có cái nhìn trực quan về các cử chỉ tay trong ngôn ngữ ký hiệu, cung cấp dữ liệu tham khảo quan trọng để tối ưu hóa mô hình trong việc nhận dạng ký hiệu.
Định hình lại dữ liệu
Sau khi phân chia dữ liệu thành các tập huấn luyện và kiểm tra, bước tiếp theo là định hình lại dữ liệu để phù hợp với yêu cầu của mô hình Convolutional Neural Network (CNN) Cụ thể, chúng tôi thực hiện các bước sau: Định hình lại tập dữ liệu huấn luyện và kiểm tra: Sử dụng phương thức reshape, để biến đổi dữ liệu từ định dạng một chiều (mỗi hình ảnh có kích thước 784 pixel) thành định dạng ba chiều với kích thước 28x28 pixel và thêm một chiều nữa để chỉ rõ số kênh màu (trong trường hợp này là 1, vì dữ liệu là hình ảnh đen trắng).
Kiểm tra kích thước của các tập dữ liệu: Sau khi định hình lại, kiểm tra kích thước của các tập dữ liệu để đảm bảo rằng quá trình này diễn ra thành công Sử dụng thuộc tính shape, chúng tôi có thể xác minh kích thước của X_train và X_test.
Hnh 4.9.Định hnh lại dữ liệu
7172: Số lượng hình ảnh trong tập huấn luyện.
28: Chiều cao của mỗi hình ảnh (28 pixel).
28: Chiều rộng của mỗi hình ảnh (28 pixel).
1: Số kênh màu của hình ảnh (1 cho hình ảnh đen trắng).
Mã hóa nhãn
Tập dữ liệu huấn luyện (Y_train) cần được mã hóa thành định dạng nhị phân. Quá trình này được thực hiện bằng cách sử dụng LabelBinarizer từ thư viện sklearn.
LabelBinarizer: Là một lớp trong thư viện sklearn dùng để chuyển đổi các nhãn phân loại thành định dạng nhị phân.
Xây dựng mô hình CNN
Trong bước này, sẽ xây dựng một mô hình mạng nơ-ron tích chập (Convolutional Neural Network - CNN) sử dụng TensorFlow và Keras Mô hình được thiết kế để nhận dạng ngôn ngữ ký hiệu từ các ảnh đầu vào Dưới đây là cấu trúc mô hình:
Hnh 4.11.Xây dựng mô hnh CNN
4.6.1.1 Mô tả các thành phần chính của mô hình:
Conv2D: Các lớp tích chập được sử dụng để trích xuất đặc trưng từ ảnh đầu vào Mỗi lớp có số lượng bộ lọc khác nhau (64, 128, 512) và kích thước bộ lọc là (3, 3).
MaxPooling2D: Các lớp giảm kích thước (max pooling) giúp giảm số lượng tham số và tính toán, đồng thời giữ lại các thông tin quan trọng.
Flatten: Chuyển đổi đầu ra của các lớp tích chập thành một vector để đưa vào lớp dày (dense layer).
Dense: Các lớp dày cuối cùng gồm một lớp với 512 nơ-ron sử dụng hàm kích hoạt ReLU và một lớp đầu ra với 24 nơ-ron sử dụng hàm kích hoạt softmax, đại diện cho 24 ký hiệu trong ngôn ngữ ký hiệu.
Lớp đầu tiên Conv2D với 64 bộ lọc có kích thước đầu vào (28, 28, 1) sẽ tạo ra đầu ra có kích thước (28, 28, 64).
Output Shape: (None, 28, 28, 64) nghĩa là đầu ra của lớp này là một tensor có kích thước 28x28 với 64 kênh (bộ lọc).
Param #: 640 tham số cần học trong lớp n
Lớp MaxPooling2D sẽ giảm kích thước đầu ra sau mỗi lần pooling.
Total params (Tổng số tham số): Tổng số tham số trong toàn bộ mô hình, được tính bằng tổng số tham số của tất cả các lớp Điều này cho bạn biết mô hình phức tạp đến mức nào.
4.6.2.Tham số Huấn luyện Mô hình
Trong quá trình huấn luyện mô hình nhận diện ngôn ngữ ký hiệu, các tham số quan trọng được thiết lập như sau:
Số lượng epoch chỉ định số lần toàn bộ tập dữ liệu sẽ được sử dụng để huấn luyện mô hình Với 20 epochs, mô hình sẽ trải qua 20 lần học từ dữ liệu huấn luyện, giúp tối ưu hóa các trọng số Việc chọn số lượng epochs phù hợp là rất quan trọng; quá ít epochs có thể dẫn đến tình trạng chưa học đủ (underfitting), trong khi quá nhiều epochs có thể dẫn đến hiện tượng quá khớp với dữ liệu (overfitting).
Kích thước batch là số lượng mẫu dữ liệu mà mô hình sẽ xử lý trước khi cập nhật trọng số Với kích thước batch là 200, mô hình sẽ huấn luyện trên 200 mẫu một lần trước khi thực hiện cập nhật Kích thước batch lớn có thể tăng tốc độ huấn luyện nhưng cũng yêu cầu nhiều bộ nhớ hơn Ngược lại, kích thước batch nhỏ có thể giúp mô hình học nhanh hơn và có khả năng tổng quát tốt hơn.
Hnh 4.13.Tham số huấn luyện mô hnh
4.6.3 Tăng cường Dữ liệu (Data Augmentation)
Hnh 4.14.Data Augmentation Để cải thiện khả năng tổng quát của mô hình và giảm thiểu hiện tượng overfitting, quá trình tăng cường dữ liệu được thực hiện thông qua lớp ImageDataGenerator từ thư viện Keras Các tham số cấu hình cho việc tăng cường dữ liệu bao gồm:
- featurewise_center: Thiết lập không để trung bình đầu vào là 0 trên toàn bộ tập dữ liệu.
- samplewise_center: Thiết lập không để trung bình của từng mẫu là 0.
- featurewise_std_normalization: Không chuẩn hóa đầu vào bằng độ lệch chuẩn của toàn bộ tập dữ liệu.
- samplewise_std_normalization: Không chuẩn hóa từng đầu vào bằng độ lệch chuẩn của chính nó.
- zca_whitening: Không sử dụng giảm chiều với ZCA (Zero-phase
- rotation_range: Thay đổi góc xoay của ảnh trong khoảng 15 độ, giúp mô hình học được các biểu diễn khác nhau của cử chỉ.
- zoom_range: Giảm hoặc tăng kích thước ảnh với tỉ lệ 50%, giúp mô hình nhận diện tốt hơn khi cử chỉ ở các khoảng cách khác nhau.
- width_shift_range và height_shift_range: Di chuyển ảnh theo chiều ngang và chiều dọc trong khoảng 15%, giúp tạo ra nhiều biến thể của cùng một cử chỉ.
- horizontal_flip: Có thể lật ảnh theo chiều ngang, điều này giúp mô hình học được các cử chỉ có thể xảy ra trong cả hai hướng.
- vertical_flip: Không lật ảnh theo chiều dọc vì các cử chỉ tay thường không xảy ra theo chiều dọc.
Sau khi cấu hình xong, dữ liệu huấn luyện được đưa vào datagen và mô hình được huấn luyện với các tham số đã định nghĩa Số lượng bước huấn luyện trong mỗi epoch được tính bằng cách chia tổng số mẫu trong X_train cho kích thước batch.
Hnh 4.15.Mô hnh hoàn thành
Epoch 20/20: Mô hình đã hoàn thành 20 vòng huấn luyện.
109/109: Số lượng bước (steps) mà mô hình đã thực hiện trong mỗi epoch Ở đây có tổng cộng 109 bước, cho thấy rằng dữ liệu đã được chia thành 109 batch cho mỗi vòng huấn luyện.
Thời gian: Mô hình đã hoàn thành 109 bước trong khoảng 3 giây và 25 mili giây cho mỗi bước. accuracy: 0.7900: Độ chính xác của mô hình trên tập dữ liệu huấn luyện đạt
79% Điều này cho thấy mô hình có khả năng nhận diện các cử chỉ tay tương đối tốt trên tập huấn luyện. loss: 0.6087: Giá trị mất mát (loss) trên tập dữ liệu huấn luyện là 0.6087 Giá trị mất mát càng thấp cho thấy mô hình càng học tốt val_accuracy: 0.9852: Độ chính xác trên tập dữ liệu kiểm tra (validation) đạt
98.52% Điều này cho thấy mô hình có khả năng tổng quát tốt. val_loss: 0.0594: Giá trị mất mát trên tập kiểm tra là 0.0594, cho thấy mô hình hoạt động rất tốt trên dữ liệu kiểm tra.
Kết quả này cho thấy mô hình CNN đã train rất tốt từ dữ liệu huấn luyện và có khả năng tổng quát cao trên dữ liệu kiểm tra Sự chênh lệch giữa độ chính xác trên tập huấn luyện và tập kiểm tra không quá lớn, cho thấy không có dấu hiệu của hiện tượng overfitting.
Biểu đồ độ chính xác và mất mát
Biểu đồ dưới đây hiển thị độ chính xác và mất mát của mô hình trong quá trình huấn luyện Đường màu đỏ biểu thị độ chính xác và mất mát trên tập huấn luyện, trong khi đường màu xanh thể hiện độ chính xác và mất mát trên tập kiểm tra Độ chính xác: Như biểu đồ cho thấy, độ chính xác trên tập huấn luyện đã tăng dần qua các epoch, cho thấy rằng mô hình đang học tốt từ dữ liệu Độ chính xác trên tập kiểm tra cũng có xu hướng tăng, điều này cho thấy rằng mô hình có khả năng tổng quát tốt với dữ liệu chưa thấy
Loss: Biểu đồ cho thấy rằng mất mát trên cả tập huấn luyện và tập kiểm tra đều giảm theo thời gian, điều này cho thấy mô hình đang cải thiện Tuy nhiên, cần theo dõi để đảm bảo không xảy ra hiện tượng overfitting.
Hnh 4.16.Biểu đồ độ chính xác
Hnh 4.17.Biểu đồ độ mất mát