Để xây dựng chức năng phân loại hình ảnh, nhóm sử dụng mạng CNN để hiện thực. Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mơ hình Deep Learning tiên tiến. Nó giúp cho chúng ta xây dựng được những hệ thống thơng minh với độ chính xác cao như hiện nay.
2.2.4.1 Cấu trúc của mạng CNN
Mạng neural tích chập (Convolutional neural networks), cịn được biết đến với tên CNNs, là một dạng mạng neural được cấu thành bởi các tầng sau:
Hình 2.11: Cấu trúc của mạng CNN [6]
2.2.4.2 Các kiểu tầng
• Tầng tích chập (CONV)
Convolution layer là lớp quan trọng nhất và cũng là lớp đầu tiên của của mơ hình CNN. Lớp này có chức năng chính là phát hiện các đặc trưng có tính khơng gian hiệu quả. Trong tầng này có 4 đối tượng chính là: ma trận đầu vào, bộ filters, và receptive field, feature map. Conv layer nhận đầu vào là một ma trận 3 chiều và một bộ filters cần phải học. Bộ filters này sẽ trượt qua từng vị trí trên bức ảnh để tính tích chập (convolution) giữa bộ filter và phần tương ứng trên bức ảnh. Phần tưng ứng này trên bức ảnh gọi là receptive field, tức là vùng mà một neuron có thể nhìn thấy để đưa ra quyết định, và ma trận cho ra bởi quá trình này được gọi là feature map. Để hình dung, các bạn có thể tưởng tượng, bộ filters giống như các tháp canh trong nhà tù quét lần lượt qua khơng gian xung quanh để tìm kiếm tên tù nhân bỏ trốn. Khi phát hiện tên tù nhân bỏ trốn, thì chng báo động sẽ reo lên, giống như các bộ filters tìm kiếm được đặc trưng nhất định thì tích chập đó sẽ cho giá trị lớn. Với ví dụ ở bên dưới, dữ liệu đầu vào ở là ma trận có kích thước 8x8x1, một bộ filter có kích thước 2x2x1, feature map có kích thước 7x7x1. Mỗi giá trị ở feature map được tính bằng tổng của tích các phần tử tương ứng của bộ filter 2x2x1 với receptive field trên ảnh. Và để tính tất cả các giá trị cho feature map, các bạn cần trượt filter từ trái sang phải, từ trên xuống dưới. Do đó, các bạn có thể thấy rằng phép convolution bảo tồn thứ tự khơng gian của các điểm ảnh. Ví dụ điểm góc trái của dữ liệu đầu vào sẽ tương ứng với bên một điểm bên góc trái của feature map.
Hình 2.12:Tầng tích chập [6]
• Nonlinear Layer
ReLU (Rectified Linear Units, f = max(0, x)) là hàm kích hoạt phổ biến nhất cho CNN tại thời điểm của bài viết, được giới thiệu bởi Geoffrey E. Hinton năm 2010. Trước khi hàm ReLU được áp dụng thì những hàm như sigmoid là những hàm được sử dụng phổ biến. Hàm ReLU được ưa chuộng vì tính tốn đơn giản, giúp hạn chế tình trạng vanishing gradient, và cũng cho kết quả tốt hơn. ReLU cũng như những hàm kíchhoạt khác, được đặt ngay sau tầng convolution, ReLU sẽ gán những giá trị
âm bằng 0 và giữ nguyên giá trị của đầu vào khi lớn hơn 0.
ReLU cũng có một số vấn đề tiềm ẩn như khơng có đạo hàm tại điểm 0, giá trị của hàm ReLU có thể lớn đến vơ cùng và nếu chúng ta không khởi tạo trọng số cẩn thận, hoặc khởi tạo learning rate quá lớn thì những neuron ở tầng này sẽ rơi vào trạng thái chết, tức là ln có giá trị nhỏ hơn 0.
Hình 2.13: Hàm activation ReLU [6]
• Pooling (POOL)
Lớp pooling sẽ giảm bớt số lượng tham số khi hình ảnh quá lớn. Khơng gian pooling cịn được gọi là lấy mẫu con hoặc lấy mẫu xuống làm giảm kích thước của mỗi map nhưng vẫn giữ lại thơng tin quan trọng. Các pooling có thể có nhiều loại khác nhau:
– Max pooling: lấy phần tử lớn nhất từ ma trận đối tượng
– Average pooling: Lấy tổng trung bình
Hình 2.14:Max-pooling [6]
• Tầng Fully Connected (FC)
Tầng kết nối đầy đủ (FC) nhận đầu vào là các dữ liệu đã được làm phẳng, mà mỗi đầu vào đó được kết nối đến tất cả neuron. Trong mơ hình mạng CNNs, các tầng kết nối đầy đủ thường được tìm thấy ở cuối mạng và được dùng để tối ưu hóa mục tiêu của mạng ví dụ như độ chính xác của lớp.
Hình 2.15: Tầng Full Connected [6]
2.2.4.3 Data Augmentation
Hiện nay trong deep learning thì vấn đề dữ liệu có vai trị rất quan trọng. Chính vì vậy có những lĩnh vực có ít dữ liệu để cho việc train model thì rất khó để tạo ra được kết quả tốt trong việc dự đốn. Do đó người ta cần đến một kỹ thuật gọi là tăng cường dữ liệu (data augmentation) để phục vụ cho việc nếu bạn có ít dữ liệu, thì bạn vẫn có thể tạo ra được nhiều dữ liệu hơn dựa trên những dữ liệu bạn đã có.
Data Augmentation là một kỹ thuật đơn nhất bằng việc xử lý đơn giản dữ liệu có sẵn bằng các phép tuyến tính hay phi tuyến. Có nhiều sửa đổi mà chúng tơi có thể thực hiện đối với hình ảnh. Trong phần này, chúng ta sẽ đi xem xét một số cách biến đổi ảnh và sử dụng trong một số cách cho bài toán phân loại ảnh đề cập ở trên.
Phương thức data argumentation cơ bản:
• Flip (Lật): lật theo chiều dọc, ngang miễn sao ý nghĩa của ảnh (label) được giữ nguyên hoặc suy ra được. Ví dụ nhận dạng quả bóng trịn, thì mình lật kiểu gì cũng ra quả bóng. Cịn với nhận dạng chữ viết tay, lật số 8 vẫn là 8, nhưng 6 sẽ thành 9 (theo chiều ngang) và khơng ra số gì theo chiều dọc. Cịn nhận dạng ảnh y tế thì việc bị lật trên xuống dưới là khơng bao giờ xảy ra ở ảnh thực tế => không nên lật làm gì.
Hình 2.16:Phép Lật (flip) trong data argumention[28] [28]
• Random crop (Cắt ngẫu nhiên): cắt ngẫu nhiên một phần của bức ảnh. Lưu ý là khi cắt phải giữ thành phần chính của bức ảnh mà ta quan tâm. Như ở nhận diện vật thể, nếu ảnh được cắt khơng có vật thể, vậy giá trị nhãn là khơng chính xác.
Hình 2.17: Phép cắt ngẫu nhiên trong data argumention[28] [28]
• Rotation( Xoay): Quay ảnh theo nhiều góc khác nhau
Hình 2.18:Phép xoay trong data argumention[28] [28]
• Thêm nhiễu
Hình 2.19: Phép thêm nhiễu trong data argumention[28] [28]
• Scale: phóng to, thu nhỏ hình
Hình 2.20: Phép phóng to, thu nhỏ trong data argumention[28] [28]
3
THIẾT KẾ
Ở chương này, chúng em sẽ trình bày mơ hình, cấu trúc của website và giới thiệu về cơ sở dữ liệu của hệ thống.
Mục lục
3.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.1.1 Phân tích nghiệp vụ (Usecase diagram) . . . . . . . . . . . . . . . 38 3.1.2 Cấu trúc cơ sở dữ liệu áp dụng cho hệ thống . . . . . . . . . . . . 42 3.1.3 Cấu trúc Restful API . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.1.4 Trang quản lý . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Hệ thống được chia làm hai thành phần theo mơ hình Client-Server. Trong đó:
• Server là phần xử lý u cầu từ người dùng, xử lý dữ liệu từ database.
• Client là người dùng cuối, là giao diện website người dùng và giao diện quản lý. Thiết kế của hệ thống được gọi là MERN. Kiến trúc MERN cho phép dễ dàng xây dụng kiến trúc 3 tier( frontend, backend, database) hoàn toàn bằng javascript và json
• Reactjs Front End
• Nodejs+Express Server Tier
• MongDB Database Tier
Hình 3.1:Kiến trúc 3-tier trong MERN STACK[2] [2]
3.1 Server