Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
693,07 KB
Nội dung
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT BỘ MƠN TRÍ TUỆ NHÂN TẠO *** BÀI TẬP LỚN MƠN TRÍ TUỆ NHÂN TẠO – 7080122-02 Đề tài: XÂY DỰNG MƠ HÌNH MÁY HỌC TẬP Cán giảng dạy GV Trần Trường Giang Sinh viên thực Nguyễn Đức Nam-1921050411 HÀ NỘI-2022 : Mô tả dự án Tên dự án: Hệ thống nhận diện ngơn ngữ ký hiệu tay Mục đích: Xây dựng hệ thống nhận dạng bàn tay để đoán ký tự mà người khuyết tật muốn nói thời gian thực Trong tơi thiết kế hệ thông nhận diện số đếm tay từ đến 10 bảng thủ ngữ sau: Hình – Bảng số đếm tay Mơ hình Máy Học Tập: Xây dựng mơ hình học sâu sử dụng mạng nơron tổ hợp tích chập – Convolution Neural Network Mơi trường dự án: Python virtual environment - Môi trường lập trình ảo Python Ngơn ngữ: Python Bộ thư viện: Tensorflow, Keras IDE: Visual Studio Code Tạo mơi trường lập trình ảo: Tại terminal cho thư mục chưa project thực câu lệnh “py –m venv venv” để tạo môi trường lập trình ảo “venv” cho ngơn ngữ Python phiên dùng Các thư viện sử dụng liên quan cài mơi trường Hình – Mơi trường lập trình ảo Python : Mơ tả q trình tạo liệu huấn luyện Viết file “gesture_data.py” với mục đích tạo liệu huấn luyện sau: Tạo thư mục “data” chứa thư mục “train” “test”: Thực kiểm tra xem tồn thưc mục “data” hay chưa, tồn in hình thông báo “The directory containing the data already exists” Nếu chưa tồn tại, tiến hành tạo thư mục “data”, bên tạo thư mục “train” “test” Bên thư mục tạo 10 thư mục chứa ảnh cho huấn luyện mơ hình Kết thu hình Hình – Tạo thư mục chứa liệu huấn luyện Hình – Thư mục chưa liệu huấn luyện Thu thập hình ảnh ký hiệu tay số đếm (từ đến 10) camera máy tính, lưu hình ảnh thu vào thư mục tên tương ứng: Thiết kế vòng lặp thu thập liệu cho tập [“train”, “test”], với tập thực vòng lặp thu thập liệu cho folder từ đến 10 tập Thu thập 300 ảnh với ký hiệu tập “train” 100 ảnh tập “test” Hình – Vòng lặp thu thập liệu Đầu tiên cần xác định (back ground) ảnh, qua giúp máy tính nhận dạng hình ảnh tay đưa vào Xác định ảnh 60 frame Việc xác định cần làm lần vòng lặp lấy ảnh cho số tập “train” Đối với lần lấy 60 frame thời gian nghỉ để chuẩn bị cho việc thu thập số Hình – Giao diện nhận dạng Việc xác nhận sở để thu thập ảnh, giúp máy tính tính tốn hình ảnh thu với frame đưa tay vào nhận diện Cần giữ máy ảnh cố định suốt trình thu thập liệu File “gesture_data.py” thiết kế thu thập toàn liệu “train”, “test” cho 10 số lần chạy nhất, có khoảng nghỉ 60 frame cho chuyển đổi số để người thực có thời gian định hình ký hiệu tay Hình – Thu thập liệu Trong trình thu thập liệu cần điều kiện đủ sáng, hình ảnh thu sắc nét : Mơ tả q trình huấn luyện Viết file “gesture_training.py” với mục đích huấn luyện mơ sau: Hình ảnh đưa vào huấn luyện resize kích thước 64x64, chia bath gồm 10 ảnh Mơ hình học sâu mạng nơ-ron tổ hợp tích chập xây dựng sau: Hình – Xây dựng kiến trúc mơ hình học sâu Hình – Kiến trúc mơ hình học sâu Do việc thu thập lại data không tối ưu, nên sử dụng model không đạt Accyracy cao, nên em viết lại kiến trúc mơ hình học sâu Mơ hình xây dựng theo ý tưởng mơ hình VGG16, lớp Conv2D + lớp Pooling Do hạn chế cấu hình máy tính cịn yếu, khơng đáp ứng đủ nhu cầu training model với lượng layer cao kỹ thuật khác áp dụng Batch Normalization, Skip Connection, Huấn luyện mơ hình khoảng 10 phút đạt kết sau: Hình 10 – Đồ thị hàm loss hàm accuracy Hình 11 – Confusion matrix Hình 12 – Quá trình huấn luyện Trong trình huấn luyện mơ hình, thơng số quan trọng cần quan sát loss, val_loss, accuracy, val_accuracy lr Learning rate thay đổi nhằm mục đích mơ hình học tốt Từ hình 12 cho thấy việc ánh xạ mơ hình từ X sang y thực tốt, nói cách khác model hiểu ký hiệu tay có tập “train” ứng với số thể Tuy nhiên val_accuracy Accuracy tập “test” chưa cao Điều tiếp tục thảo luận phần : Mô tả trình chạy mơ hình huấn luyện (chạy chương trình nào, mơ hình huấn luyện lưu vào tệp tin có tên gì) Viết file “gesture_model.py” với mục đích sử dụng mơ hình huấn luyện vào sử dụng thực tế sau: Mơ hình huấn luyện lưu vào tệp tin có tên “BTL_CNN_model.h5” : Viết nhận xét riêng bạn q trình huấn luyện mơ hình Máy Học Tập (viết bạn huấn luyện mơ hình, ngược lại khơng cần viết) Để mơ hình hoạt động tốt việc tạo liệu vô quan trọng Dữ liệu có đúng, xác, đa dạng mơ hình học tập thực hành xác Trong q trình huấn luyện mơ hình, giới hạn phần cứng ảnh hưởng nhiều đến việc viết mơ hình học sâu, cần sử dụng GPU với dung lượng nhớ cao giúp chạy mơ hình lớn, tốc độ cao, cải thiện kết tốn Nhìn chung mơ hình huấn luyện nhận diện ký hiệu tay cho số, nhiên mơ hình dễ nhận diện nhầm số đưa tay không góc nhìn camera Điều lý giải lượng liệu đưa vào học chưa tường minh, cử tay tạo liệu chưa dứt khoát, dễ gây hiểu nhầm, đồng thời liệu chưa phái sinh lật, xoay, thu phóng kích thước để đa dạng liệu Dựa vào hình 10 11 12 nhận thấy mơ hình học tập chưa tốt Biện minh cho kết có lý sau: - Dữ liệu chuẩn bị chưa tốt, số lượng ít, chưa đa dạng - Mơ hình học tập thiết kế đơn giản, số lượng tham số, lớp chưa đảm bảo, chưa áp dụng kỹ thuật tiên tiến : Tìm hiểu mạng nơ-ron tích chập Mơ hình huấn luyện theo liệu tự thu thập mơ hình tự thiết kế : Trực quan hóa sơ đồ mạng nơ-ron tổ hợp tích chập Hình 13 – Xây dựng kiến trúc mạng nơ-ron tổ hợp tích chập Hình 14 – Sơ đồ mạng nơ-ron tổ hợp tích chập Filers = [32, 64] thể lớp Conv2D xuất có filter = 32, lần xuất có filter = 64 Tương tự với ký hiệu khác Tham số: kernel_size(3, 3) – kích thước kernel hình vng x3 phép tốn tích chập ảnh Kernel trượt theo bước nhảy strides từ trái qua phải, từ xuống thực phép tích chập với ảnh hình 14 Việc lấy size kernel thích hợp với mục tiêu lớp tốn Tuy nhiên kích thức kernel phải số lẻ để kernel có tâm, việc tích tốn tránh phát sinh vấn đề khác Hình 15 – Phép tích chập lớp Conv2D activation=’relu’ – hàm kích hoạt f(x) =max(0, x) Có nhiều hàm kích hoạt khác nhau, hàm có ưu điểm nhược điểm riêng Từ lâu ta biết hàm Sigmoid, Sofmax, Tanh… Hàm ReLU gần sử dụng phổ biến huấn luyện mạng nơ-ron ReLU đơn giản lọc giá trị < Nhìn vào cơng thức dễ dàng hiểu cách hoạt động Một số ưu điểm vượt trội so với sigmoid tanh: (+) Tốc độ hội tụ nhanh hẳn ReLU có tốc độ hội tụ nhanh gấp lần Tanh Điều ReLU khơng bị bão hoà đầu Sigmoid Tanh (+) Tính tốn nhanh Tanh Sigmoid sử dụng hàm exp công thức phức tạp ReLU nhiều tốn nhiều chi phí để tính tốn (-) Tuy nhiên ReLU có nhược điểm: Với node có giá trị nhỏ 0, qua ReLU activation thành 0, tượng gọi “Dying ReLU“ Nếu node bị chuyển thành khơng có ý nghĩa với bước linear activation lớp hệ số tương ứng từ node không cập nhật với gradient descent Từ Leaky ReLU đời (-) Khi learning rate lớn, trọng số (weights) thay đổi theo cách làm tất nơ-ron dừng việc cập nhật Hình 16 – Đồ thị hàm ReLU pool_size(2, 2) – kích thước kernel hình vng cạnh 2x2 thược phép pooling Khi kernel di chuyển theo stride lấy toàn giá trị nằm phạm phi kích thước thực phép pooling tương ứng (max, min, aveg) Như hình pooling_size(2,2) Hình 17 - Pooling strides=2 – bước nhảy kernel hình 16 Kernel di chuyển qua pixel lần nhảy từ trái qua phải xong từ xuống Sequential() Keras – mơ hình đơn giản cho thiết kết model học sâu Nó gọi “sequential” liên quan đến việc xác định lớp Sequential thêm lớp vào mơ hình theo cách tuyến tính, từ đầu vào đến đầu Theo hình 13 mơ hình Mơ hình dễ sử dụng tiếp tục gọi model.add() thêm tất layers cần thiết Việc tìm hiểu cú pháp layer tham khảo qua trang API thức Keras (https://keras.io/api/) Để thiết kết mơ hình Sequential() Keras cần khai báo tên model, sau input , lớp layer sau output Người dùng tùy biết thiết kế model theo ý thích, đảm bảo shape model, kích thước input phải đủ lớn để tăng chiều sâu theo tham số strides sử dụng Cần xác định mục đích toán để lựa chọn activation hợp lý output Sau số API phổ biến sử dụng mơ hình Sequential Keras Convolution layers:, Conv1D layer, Conv2D layer, Conv3D layer SeparableConv1D layer, SeparableConv2D layer, DepthwiseConv2D layer Conv1DTranspose layer, Conv2DTranspose layer, Conv3DTranspose layer Optimizers: SGD, RMSprop, Adam, Adadelta, Adagrad, Adamax, Nadam, Ftrl Losses: Probabilistic losses, Regression losses, Hinge losses for "maximum-margin" classification Và nhiều API khác nữa, cần đọc tuân thủ cú pháp Keras đưa (https://keras.io/api/) ... sau: Hình ảnh đưa vào huấn luyện resize kích thước 64x64, chia bath gồm 10 ảnh Mơ hình học sâu mạng nơ-ron tổ hợp tích chập xây dựng sau: Hình – Xây dựng kiến trúc mơ hình học sâu Hình – Kiến... sau: Hình – Bảng số đếm tay Mơ hình Máy Học Tập: Xây dựng mơ hình học sâu sử dụng mạng nơron tổ hợp tích chập – Convolution Neural Network Mơi trường dự án: Python virtual environment - Môi trường... huấn luyện mơ hình Kết thu hình Hình – Tạo thư mục chứa liệu huấn luyện Hình – Thư mục chưa liệu huấn luyện Thu thập hình ảnh ký hiệu tay số đếm (từ đến 10) camera máy tính, lưu hình ảnh thu vào