Cơ sở lý thuyết
Giới thiệu Máy học
Máy học (ML) là một lĩnh vực con quan trọng của trí tuệ nhân tạo (AI), nhằm mục tiêu phân tích cấu trúc dữ liệu và chuyển đổi dữ liệu đó thành các mô hình dễ hiểu và ứng dụng cho con người.
Trong máy tính truyền thống, thuật toán được xây dựng bằng cách sắp xếp các lệnh theo một thứ tự cụ thể để máy tính có thể xử lý và đưa ra kết quả Ngược lại, thuật toán máy học cho phép máy tính học hỏi từ dữ liệu đầu vào, tự động tạo ra các mô hình dựa trên dữ liệu đó, và sử dụng những mô hình này để đưa ra kết quả chính xác hơn.
- Một số ứng dụng máy học cơ bản:
+ Dự đoán: Dùng trong các hệ thống dự đoán như dự báo thời tiết, giá nhà đất, cổ phiếu…
+ Nhận dạng hình ảnh: Dùng để phát hiện các vật thể như nhà cửa, cây cối, phương tiện giao thông, khuôn mặt người…
Nhận dạng giọng nói là công nghệ cho phép chuyển đổi âm thanh thành văn bản, được ứng dụng trong các phần mềm và thiết bị thông minh Nó không chỉ giúp người dùng dễ dàng ra lệnh cho các thiết bị mà còn nâng cao hiệu quả làm việc trong nhiều lĩnh vực khác nhau.
Máy học đang được ứng dụng rộng rãi trong chẩn đoán y tế để nhận diện các mô ung thư, giúp cải thiện độ chính xác trong việc phát hiện bệnh Bên cạnh đó, công nghệ này cũng được sử dụng trong lĩnh vực tài chính và ngân hàng, nhằm phát hiện gian lận và kiểm tra tính hợp lệ của thẻ tín dụng.
2.1.2 Phân loại thuật toán máy học
Theo phương thức học, các thuật toán máy học được phân loại thành 4 nhóm chính:
Học có giám sát (Supervised learning) là một phương pháp trong máy học, trong đó thuật toán dự đoán đầu ra dựa trên các cặp dữ liệu đã biết, bao gồm đầu vào và đầu ra Những cặp dữ liệu này được gọi là dữ liệu và nhãn Đây là thuật toán học phổ biến nhất trong lĩnh vực máy học.
Học không giám sát là một phương pháp học máy, trong đó hệ thống được cung cấp nhiều dữ liệu không có gán nhãn Thay vì nhận biết các mẫu từ dữ liệu đã được gán nhãn như trong học có giám sát, học không giám sát sử dụng các công cụ để phân tích và hiểu các thuộc tính của dữ liệu Kết quả là nó có khả năng phân nhóm, phân cụm và tổ chức dữ liệu theo cách mà con người có thể dễ dàng hiểu và truy cập vào các thông tin mới được tổ chức.
Học bán giám sát là phương pháp kết hợp giữa học có giám sát và học không giám sát, sử dụng một phần nhỏ dữ liệu được gán nhãn cùng với một lượng lớn dữ liệu không được gán nhãn Phương pháp này giúp cải thiện đáng kể độ chính xác của quá trình học máy.
Học tăng cường là một thuật toán giúp hệ thống xác định hành vi dựa trên hoàn cảnh nhằm đạt được lợi ích tối ưu Hiện nay, học tăng cường đang được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau.
Lí thuyết trò chơi như các thuật toán để xác định nước đi tiếp theo để đạt được điểm số cao nhất.
Khái niêm học sâu và mạng thần kinh nhân tạo
Học sâu (Deep Learning) là một nhánh của thuật toán máy học, dựa trên mạng thần kinh nhân tạo Nó áp dụng cả phương pháp học có giám sát và không giám sát, tương tự như các thuật toán máy học khác.
Hình 2-1 Sơ đồ tổng quát các lĩnh vực trong Trí tuệ nhân tạo
2.2.2 Khái niệm mạng thần kinh nhân tạo
Mạng thần kinh nhân tạo (ANN) được phát triển nhằm mô phỏng các đặc điểm của mạng thần kinh sinh học Cấu trúc của nó bao gồm các nút liên kết với nhau, cho phép tính toán thông qua việc lan truyền thông tin qua các kết nối và cập nhật giá trị tại các nút.
Hình 2-2 Mô hình mạng thần kinh nhân tạo
Mạng thần kinh nhân tạo cơ bản bao gồm ba lớp: Lớp đầu vào (Input Layer), Lớp ẩn (Hidden Layer) và Lớp đầu ra (Output Layer) Lớp đầu vào chịu trách nhiệm nhận dữ liệu đầu vào, trong khi Lớp ẩn phân tích thông tin dựa trên dữ liệu đó, có thể bao gồm nhiều lớp ẩn nối tiếp để trích xuất thông tin cần thiết Cuối cùng, Lớp đầu ra nhận kết quả phân tích từ Lớp ẩn và cung cấp kết quả cuối cùng.
2.2.3 Mang thần kinh tích chập (CNN)
Mạng thần kinh tích chập (CNN) là một cấu trúc gồm nhiều lớp chuyên dụng để xử lý ảnh, phân loại và phân đoạn Tương tự như mạng thần kinh của con người, CNN kích hoạt các lớp neural để trích xuất đặc trưng từ hình ảnh bất kỳ Các lớp bên ngoài tập trung vào việc nhận diện các đặc trưng đơn giản như cạnh viền, trong khi các lớp bên trong tìm kiếm các đường nét phức tạp hơn Lớp cuối cùng đưa ra kết quả phân loại hoặc nhận diện ảnh Một mạng thần kinh tích chập thường bao gồm ba thành phần chính: lớp tích chập, lớp giảm kích thước, lớp kích hoạt và một lớp kết nối đầy đủ.
2.2.3.1 Lớp tích chập (Convolutional layer)
Lớp tích chập là thành phần chủ chốt trong mạng CNN, có nhiệm vụ lọc ra các đặc trưng của ảnh như các cạnh và đường nét phức tạp Nó hoạt động như một tấm lọc có kích thước mxn, nơi m là số hàng và n là số cột Tấm lọc này sẽ thực hiện phép nhân tích chập với ma trận con tương ứng trên ảnh theo thứ tự từ trái qua phải và từ trên xuống dưới Mỗi phép nhân tích chập sẽ tính tổng các kết quả nhân của từng phần tử trong ma trận, và kết quả được sắp xếp trên một ma trận mới, tạo ra feature map nhỏ hơn so với ma trận ban đầu.
Hình 2-3 Cơ chế nhân tích chập trong CNN
Kích thước ảnh mới thường nhỏ hơn kích thước ảnh ban đầu, do đó cần sử dụng các cơ chế như stride và padding để đảm bảo kích thước của ma trận dữ liệu và ma trận đặc trưng là bằng nhau Stride đề cập đến khoảng cách mà bộ lọc di chuyển trên ma trận gốc, trong khi padding là việc thêm phần bao quanh ma trận gốc nhằm bảo vệ các đối tượng nằm ở cạnh ảnh gốc khỏi bị mất khi lọc.
Công thức tính ma trận đầu ra của CNN với:
2.2.3.2 Lớp giảm kích thước (Pooling Layer)
Lớp giảm kích thước (Pooling Layer) giúp giảm kích thước ảnh đầu vào, tăng tốc độ tính toán bằng cách chia ma trận đầu vào thành các phần bằng nhau Trong mỗi phần, lớp này sẽ chọn phần tử lớn nhất thông qua phương pháp Max Pooling hoặc tính trung bình cộng các phần tử với Average Pooling, từ đó tạo ra ảnh mới có kích thước nhỏ hơn, thuận tiện cho quá trình tính toán.
Hình 2-4 Thuật toán Max Pooling
Thuật toán Max Pooling hoạt động bằng cách chia ma trận đầu vào 4x4 thành 4 ma trận 2x2, sau đó chọn phần tử lớn nhất từ mỗi ma trận 2x2 để tạo ra ma trận kết quả 2x2 Tương tự, thuật toán Average Pooling cũng chia ma trận 4x4 thành các ma trận 2x2, nhưng thay vì chọn phần tử lớn nhất, nó tính trung bình cộng của các phần tử trong từng ma trận 2x2.
2.2.3.3 Lớp kích hoạt (Activation Layer)
Lớp kịch hoạt là lớp dùng để lấy các đặc trưng của ảnh và giữ lại các điểm dữ liệu quan trọng
Hình 2-5 Lớp kích hoạt trong CNN
2.2.3.4 Lớp kết nối đầy đủ (Fully connected)
Lớp kết nối đầy đủ (Fully Connected Layer) là lớp cuối cùng trong mạng CNN, có chức năng tổng hợp các đặc trưng từ ma trận đặc trưng để tạo ra kết quả đầu ra cho mô hình Trong lớp này, mỗi nơ-ron đều kết nối với tất cả các nơ-ron ở lớp khác, nhưng không kết nối với các nơ-ron trong cùng một lớp.
Thuật toán Yolo
YOLO (You Only Look Once) là một thuật toán nhận diện vật thể nổi bật, tương tự như SSD và R-CNN Mặc dù độ chính xác của YOLO có thể không cao bằng các thuật toán khác, nhưng nó bù đắp bằng tốc độ xử lý nhanh, gần như thời gian thực YOLO có khả năng dự báo và gán nhãn cho nhiều loại vật thể khác nhau trong cùng một bức ảnh, thay vì chỉ phân loại một nhãn duy nhất.
YOLO (You Only Look Once) sử dụng một phương pháp độc đáo trong nhận diện hình ảnh, khác biệt với các thuật toán khác Thay vì chỉ áp dụng cho các vị trí cụ thể, YOLO sử dụng một mạng nơ-ron để phân tích toàn bộ bức ảnh Nó chia hình ảnh thành các vùng và dự đoán các bounding boxes cùng với xác suất cho từng vùng Các bounding boxes này được tính toán dựa trên xác suất dự đoán, giúp tăng cường độ chính xác trong việc phát hiện đối tượng.
Thuật toán YOLO (You Only Look Once) nổi bật với nhiều lợi thế so với các phương pháp nhận diện vật thể khác Trong quá trình kiểm tra ảnh, YOLO quét toàn bộ bức ảnh để đưa ra dự đoán dựa trên ngữ cảnh tổng thể, chỉ cần sử dụng một mạng đánh giá duy nhất Điều này giúp cải thiện tốc độ nhận diện đáng kể, nhanh gấp 1000 lần so với R-CNN và gấp 100 lần so với Fast R-CNN.
Kiến trúc YOLO bao gồm hai phần chính: mạng cơ sở (base network) sử dụng các mạng CNN để trích xuất đặc trưng từ ảnh, và phần mở rộng (extra network) có nhiệm vụ phát hiện các vật thể trên các bản đồ đặc trưng (feature map) của mạng cơ sở.
Hình 2-6 Kiến trúc mạng YOLO
Kiến trúc mạng YOLO bao gồm thành phần Darknet Architecture, đóng vai trò là mạng cơ sở để lọc ra các đặc trưng của hình ảnh Đầu ra của phần này sẽ được sử dụng làm đầu vào cho mạng phụ, bao gồm các lớp fully connected, nhằm thực hiện nhận diện, gán nhãn và tính toán tọa độ bounding box cho các đối tượng trong ảnh.
Trong phiên bản YOLO 3, tác giả đã sử dụng mạng cơ sở Darknet53, bao gồm 53 lớp convolutional liên kết với nhau Mỗi lớp được theo sau bởi một lớp chuẩn hóa batch và một lớp kích hoạt, tạo nên kiến trúc mạnh mẽ cho việc nhận diện đối tượng Kiến trúc của Darknet53 được minh họa trong hình 2-6.
Hình 2-7 Mạng Darknet53 Ở phiên bản YOLO 4, tác giả đã thay thế phần base network này bằng mạng
CSPDarknet53 là mạng sử dụng Darknet53, đã được giới thiệu trong phiên bản Yolov3, kết hợp với thuật toán CSPNet để phân chia các feature map (đầu ra của mạng cơ sở) thành hai phần Sau đó, các phần này được kết hợp lại thông qua một hệ thống đa giai đoạn.
YOLO hỗ trợ hai kích thước đầu vào chính là 416x416 và 608x608, với mỗi kích thước được thiết kế các lớp phù hợp với hình dạng của đầu vào.
Khi sử dụng 15 lớp tích chập, kích thước ảnh sẽ giảm theo cấp số nhân là 2, dẫn đến việc tạo ra các bản đồ đặc trưng (feature map) có kích thước nhỏ hơn, phục vụ cho việc dự đoán vật thể Cụ thể, với đầu vào kích thước 416x416, các kích thước của feature map sẽ là 13x13, 26x26 và 52x52 Trong khi đó, với đầu vào 608x608, kích thước của feature map sẽ là 19x19, 38x38 và 72x72.
2.3.3 Đầu ra của YOLO Đầu ra của YOLO là một vector bao gồm các thành phần như sau:
- 𝑝 0 : xác suất dự báo vật thể xuất hiện trong bounding box
- (𝑡 𝑥 , 𝑡 𝑦 , 𝑡 𝑤 , 𝑡 ℎ ): giúp xác định bounding box Trong đó 𝑡 𝑥 , 𝑡 𝑦 là tọa độ tâm và 𝑡 𝑤 , 𝑡 ℎ là chiều dài, rộng của bounding box
- (𝑝 1 , 𝑝 2 , … , 𝑝 𝑐 ): vector phân phối xác xuất dự đoán của từng đối tượng nhận dạng.
Phân tích thiết kế chương trình
Kiến trúc hệ thống
Với sự tiến bộ của công nghệ phần cứng, việc phát triển ứng dụng tương thích với nhiều thiết bị ngày càng tốn kém Do đó, nhu cầu tìm kiếm một kiến trúc phù hợp để phát triển ứng dụng cho mọi loại thiết bị trở nên cấp thiết Sau khi nghiên cứu và tham khảo các kiến trúc phần mềm, nhóm đã quyết định chọn kiến trúc Client-Server hình 3-1, giúp tách biệt phần xử lý phía dưới với giao diện người dùng.
Việc sử dụng 16 thiết bị khác nhau giúp giảm thiểu việc viết lại toàn bộ logic xử lý cho ứng dụng, cho phép tập trung chủ yếu vào việc xây dựng giao diện phù hợp với từng loại thiết bị.
Hình 3-1 Kiến trúc Client-Server
Kiến trúc hệ thống gồm 3 phần chính:
- Front-end: Đây là thành phần chịu trách nhiệm tương tác với người dùng trên mọi nền tảng, mọi thiết bị
- Application server: Thành phần chịu trách nhiệm xử lý các yêu cầu do người dùng thực hiện trên Front-end
- Database: Nơi lưu trữ và quản lý việc truy suất cơ sở dữ liệu
Thiết kế này cho phép hệ thống hoạt động hiệu quả trên nhiều nền tảng khác nhau mà không cần phát triển nhiều phiên bản cho các thiết bị phần cứng như điện thoại và máy tính.
Việc phát triển phần mềm trên 17 loại thiết bị như máy tính bảng và PC giúp giảm chi phí, đồng thời vẫn đảm bảo đáp ứng nhu cầu của người dùng.
Hiện thực hệ thống
Các đối tượng giao tiếp với hệ thống được mô tả trong bảng 3-1
Bảng 3-1 Bảng mô tả actor của hệ thống
Người dùng có nhu cầu kiểm tra xem liệu rằng có hình ảnh đường chín đoạn xuất hiện trong một tấm hình, video hoặc website hay không
3.2.1.2 Sơ đồ usecase tổng quát Đối tượng trong bảng 3-1 sẽ giao tiếp với hệ thống thộng qua các usecase được mô tả trong hình 3-2.
Hình 3-2 Sơ đồ usecase Bảng 3-2 Bảng danh sách các usecase của ứng dụng
1 Kiểm tra đường chín đoạn trên ảnh
Người dùng upload ảnh hoặc nhập URL của ảnh để kiểm tra xem có hay không có hình ảnh đường chín đoạn trên ảnh
2 Kiểm tra đường chín đoạn trên video
Người dùng upload video để kiểm tra xem có tồn tại hình ảnh đường chín đoạn trong video
3 Kiểm tra đường chín đoạn trên một trang web
Người dùng kiểm tra xem trên trang web có tồn tại hình đường chín đoạn hay không
- Đặc tả usecase “Kiểm tra đường chín đoạn trên ảnh”
Bảng 3-3 Đặc tả usecase “Kiểm tra đường chín đoạn trên ảnh”
Tên chức năng Kiểm tra đường 9 đoạn trên ảnh
Tóm tắt Người dùng kiểm tra xem trên ảnh có đường
Dòng sự kiện chính - Người dùng nhập URL của ảnh trên thanh tìm kiếm hoặc upload ảnh từ local lên để kiểm tra
- Nhấn nút “Detect” để tiến hành kiểm tra
- Hệ thống download ảnh (nếu là ảnh từ web) và tiến hành kiểm tra ảnh
- Hệ thống trả về kết quả kiểm tra ảnh
Dòng sự kiện khác - Người dùng không upload ảnh hoặc nhập URL ảnh mà vẫn nhấn nút
Trạng thái hệ thống trước khi thực hiện use case
Trạng thái hệ thống sau khi thực hiện use case
- Chuyển đến trang kết quả sau kiểm tra
Các yêu cầu đặc biệt Không có
- Đặc tả usecase “Kiểm tra đường chín đoạn trên video”
Bảng 3-4 Đặc tả usecase "Kiểm tra đường chín đoạn trên video"
Tên chức năng Kiểm tra đường 9 đoạn trên video
Tóm tắt Người dùng kiểm tra xem trên video có đường 9 đoạn trong 1 tấm video
Dòng sự kiện chính - Người upload video từ local lên để kiểm tra
- Nhấn nút “Detect” để tiến hành kiểm tra
- Hệ thống trả về kết quả kiểm tra video
Dòng sự kiện khác - Upload video thất bại
Trạng thái hệ thống trước khi thực hiện use case
Trạng thái hệ thống sau khi thực hiện use case
- Chuyển đến trang kết quả sau kiểm tra
Các yêu cầu đặc biệt Không có
- Đặc tả usecase “Kiểm tra đường chín đoạn trên trang web”
Bảng 3-5 Đặc tả usecase "Kiểm tra đường chín đoạn trên trang web"
Tên chức năng Kiểm tra đường 9 đoạn trên trang web
Tóm tắt Người dùng kiểm tra xem trên một website có đường 9 đoạn trong hình ảnh hay không
Dòng sự kiện chính - Người dùng nhập URL website trên thanh tìm kiếm
- Nhấn nút “Get” để tiến hành down ảnh của trang web
- Hệ thống download ảnh và video về và hiển thị danh sách ảnh và video cho người dùng
- Người dùng chọn video hoặc ảnh muốn detect
- Hệ thống tiến hành kiểm tra đường 9 đoạn trên video hoặc ảnh do người dùng chọn
Dòng sự kiện khác - Người dùng không nhập URL website
Trạng thái hệ thống trước khi thực hiện use case
Trạng thái hệ thống sau khi thực hiện use case
- Chuyển đến trang kết quả sau kiểm tra
Các yêu cầu đặc biệt Không có
3.2.2.1 Sơ đồ tuần tự “Kiểm tra đường chín đoạn trên ảnh”
Hình 3-3 Sơ đồ tuần tự "Kiểm tra đường chín đoạn"
Bước 1 Người dùng kéo upload ảnh từ local hoặc nhập URL ảnh trên thanh tìm kiếm
Bước 2 Client-app gửi ảnh hoặc URL về phía server
Khi thông tin được gửi đến server dưới dạng URL, server sẽ truy cập hình ảnh theo URL đó Sau đó, server sử dụng YoloWrapper để kiểm tra sự hiện diện của đường chín đoạn trong hình ảnh Nếu phát hiện đường chín đoạn, hệ thống sẽ vẽ một hình chữ nhật bao quanh khu vực có đường chín đoạn đó.
Bước 4 Server mã hóa ảnh kết quả dưới dạng base64 rồi gửi về cho Client- app
Bước 5 Client-app nhận ảnh từ server và hiển thị kết quả cho người dùng
3.2.2.2 Sơ đồ tuần tự “Kiểm tra đường chín đoạn trên video”
Hình 3-4 Sơ đồ tuần tự "Kiểm tra đường chín đoạn trên video"
Bước 1 Người dùng upload video từ local
Bước 2 Client-app gửi video về server
Bước 3: Máy chủ áp dụng YoloWrapper để kiểm tra đường chín đoạn trong từng khung hình của video Khi phát hiện đường chín đoạn, hệ thống sẽ vẽ một hình chữ nhật xung quanh khu vực đó và ghi lại thời điểm xuất hiện của đường chín đoạn trong video.
Bước 4 Server mã hóa video dưới dạng base64 và gửi về cho Client-app Bước 5 Client-app hiển thị kết quả cho người dùng
3.2.2.3 Sơ đồ tuần tự “Kiểm tra đường chín đoạn trên trang web”
Hình 3-5 Sơ đồ tuần tự "Kiểm tra đường chín đoạn trên web"
Bước 1 Người dùng nhập địa chỉ trang web.
Bước 2 Client-app gửi địa chỉ web về server.
Bước 3 Server tiến hành tìm kiếm ảnh và link trên trang web.
Bước 4: Máy chủ sẽ lấy hình ảnh từ trang web và sử dụng YoloWrapper để kiểm tra sự xuất hiện của đường chín đoạn trên hình ảnh Nếu phát hiện đường chín đoạn, hệ thống sẽ vẽ hình chữ nhật bao quanh, mã hóa và thêm hình ảnh vào danh sách kết quả.
Bước 5 Chuyển sang ảnh khác và quay lại Bước 4 cho đến khi hết ảnh.
Bước 6 Server gửi trả danh sách những ảnh có chứa đường chín đoạn về cho Client-app
Bước 7 Client-app hiển thị danh sách ảnh có chứa đường chín đoạn
3.2.3.1 Sơ đồ các trang của website
Các màn hình trong hệ thống được biểu diễn thông qua hình dưới đây
Hình 3-6 Sơ đồ chi tiết màn hình
3.2.3.2 Danh sách chi tiết các trang
Bảng 3-6 Danh sách các trang
STT Tên trang Ý nghĩa, ghi chú
Trang mặc định khi người dùng truy cập vào trang web và để điều hướng đến các trang khác của website
2 Kiểm tra đường chín đoạn trên ảnh
Trang người dùng có thể upload hoặc nhập URL hình ảnh muốn quét
3 Trạng thái tiến trình quét ảnh Trang hiển thị trạng thái quá trình kiểm tra đường chín đoạn trên ảnh
4 Kết quả kiểm tra đường chín đoạn trên ảnh
Trang hiển thị kết quả cho người dùng sau khi quét ảnh
5 Kiểm tra đường chín đoạn trên video
Trang nơi người dùng upload video để kiểm tra
6 Trạng thái tiến trình quét video Trang hiển thị trạng thái quá trình kiểm tra đường chín đoạn trên video
7 Kết quả kiểm tra đường chín đoạn trên video
Trang hiển thị kết quả cho người dùng sau kiểm tra sau khi đã quét video
8 Kiểm tra đường chín đoạn trên trang một web
Trang cho phép người dùng nhập vào domain của trang web cần kiểm tra
9 Trạng thái tiến trình quét đường chín đoạn trên trang web
Trang hiển thị trạng thái quá trình quét đường chín đoạn trên trang web
10 Kết quả kiểm tra đường chín đoạn trên trang web
Trang hiển thị kết quả sau khi quét đường chín đoạn trên trang web
3.2.3.3 Mô tả chi tiết từng trang a Home
Bảng 3-7 Bảng mô tả chi tiết các đối tượng trên trang chủ
STT Tên đối tượng Chức năng
1 Navigation bar Điều hướng đến các trang khác của trang web
2 Link “Hình ảnh” Chuyển đến trang kiểm tra hình ảnh
3 Link “Video” Chuyển đến trang kiểm tra video
4 Link “Website” Chuyển đến trang kiểm tra một trang web
5 Button “Bắt đầu” Chuyển đến trang tương ứng của từng thẻ b Kiểm tra đường chín đoạn trên ảnh
Hình 3-8 Trang kiểm tra đường chín đoạn trên ảnh
Bảng 3-8 Bảng mô tả các đối tượng trên trang kiểm tra đường chín đoạn trên ảnh
STT Tên đối tượng Chức năng
1 Input “Nhập URL ảnh” Nhập URL của ảnh cần kiểm tra
2 Khu vực kéo thả ảnh Khu vực kéo thả ảnh để upload
3 Button “Choose file” Mở file dialog chọn ảnh để upload
4 Button “Kiểm tra” Quét đường chín đoạn trên ảnh c Trạng thái tiến trình quét ảnh
Hình 3-9 Trang trạng thái tiến trình quét ảnh
Bảng 3-9 Bảng mô tả chi tiết các đối tượng trên trang trạng thái tiến trình quét ảnh
STT Tên đối tượng Chức năng
1 Spinner “Quét ảnh” Mô tả trạng thái tiến trình quét ảnh
28 d Kết quả kiểm tra ảnh
Hình 3-10 Trang kết quả kiểm tra ảnh
Bảng 3-10 Bảng mô tả chi tiết các đối tượng trên trang kiểm tra ảnh
STT Tên đối tượng Chức năng
1 Progress bar “Đường chín đoạn”
Hiển thị phần trăm khả năng hình ảnh có đường chín đoạn
2 Image view Hiển thị hình ảnh với hình chữ nhật bao quanh đường chín đoạn
3 Link “Back to home” Link điều hướng về trang chủ
29 e Kiểm tra đường chín đoạn trên video
Hình 3-11 Trang kiểm tra đường chín đoạn trên video
Bảng 3-11 Bảng mô tả chi tiết các đối tượng trên trang kiểm tra đường chín đoạn trên video
STT Tên đối tượng Chức năng
2 Khu vực kéo thả ảnh Khu vực kéo thả video để upload
3 Button “Choose file” Mở file dialog chọn video để upload
4 Button “Kiểm tra” Quét đường chín đoạn trên video
30 f Trạng thái tiến trình quét video
Hình 3-12 Trang trạng thái tiến trình quét video
Bảng 3-12 Bảng mô tả chi tiết các đối tượng trên trang trạng thái tiến trình quét video
STT Tên đối tượng Chức năng
1 Spinner “Quét video” Mô tả trạng thái tiến trình quét video
31 g Kết quả kiểm tra video
Hình 3-13 Trang kết quả kiểm tra video
Bảng 3-13 Bảng mô tả chi tiết các đối tượng trên trang kết quả kiểm tra video
STT Tên đối tượng Chức năng
1 Video Hiển thị video sau khi đã được quét
2 Checkpoint list Danh sách các thời điểm xuất hiện đường chín đoạn trong video
3 Checkpoint button Giúp người dùng tua nhanh đến vị trí xuất hiện đường chín đoạn trong video
4 Link “Back to home” Link điều hướng về trang chủ
32 h Kiểm tra đường chín đoạn trên một trang web
Hình 3-14 Trang kiểm tra đường chín đoạn trên một trang web
Bảng 3-14 Bảng mô tả chi tiết các đối tượng trên trang kiểm tra đường chín đoạn trên một trang web
STT Tên đối tượng Chức năng
1 Input “Nhập URL website” Nhập URL của website cần kiểm tra
2 Button “Kiểm tra” Kiểm tra đường chín đoạn trên website
33 i Trạng thái tiến trình tìm đường chín đoạn trên trang web
Hình 3-15 Trang trạng thái tiến trình tìm đường chín đoạn trên trang web
Bảng 3-15 Bảng mô tả chi tiết các đối tượng trên trạng trạng thái tiến trình tìm đường chín đoạn trên trang web
STT Tên đối tượng Chức năng
1 Spinner “Lấy ảnh từ website”
Mô tả trạng thái tiến trình lấy ảnh từ trang web
2 Spinner “Quét ảnh” Mô tả trạng thái tiến trình quét ảnh lấy được từ trang web
34 j Kết quả kiểm tra trang web
Hình 3-16 Trang kết quả kiểm tra trang web
Bảng 3-16 Bảng mô tả chi tiết các đối tượng trên trang kết quả kiểm tra trang web
STT Tên đối tượng Chức năng
1 Danh sách các hình chứa đường chín đoạn
Hiển thị danh sách các hình chứa đường chín đoạn
2 Image view Hiển thị chi tiết nếu người dùng cần xem chi tiết hình ảnh
Thực nghiệm và đánh giá
Tập dữ liệu tự tạo thực nghiệm
Do sự thiếu hụt nghiên cứu về đường chín đoạn, bộ dữ liệu cho chủ đề này chủ yếu được tạo ra trong quá trình thực nghiệm Hình ảnh được thu thập từ Google với kích thước đa dạng, từ 100x200 đến 5000x4000, tổng cộng có 1956 bức ảnh có chất lượng tốt, không bị mờ hoặc nhòe.
Bộ dữ liệu được phân chia thành ba tập khác nhau nhằm phục vụ cho các quá trình huấn luyện, đánh giá và kiểm tra, như đã được mô tả trong bảng 4-1 và bảng 4-2.
Bảng 4-1 Bảng số liệu hình ảnh phân theo nội dung
Gán nhãn Không gán nhãn Tổng cộng
Không có đường chín đoạn 0 440 440
Bảng 4-2 Bảng số liệu hình ảnh phân theo vai trò
Gán nhãn Không gán nhãn Tổng cộng
Kịch bản thử nghiệm
Do hạn chế về phần cứng và để tiết kiệm thời gian sửa lỗi trong quá trình cài đặt các gói thư viện cần thiết cho thuật toán, nhóm đã quyết định sử dụng giải pháp hiệu quả hơn.
Google Colab là một công cụ hữu ích để huấn luyện và thử nghiệm mô hình, sử dụng hệ điều hành Ubuntu 18.04.3 LTS Cấu hình của Google Colab bao gồm 2xCPU Intel Xeon @ 2.30GHz, GPU NVIDIA Tesla T4 12GB và RAM 12GB Môi trường được thiết lập để kiểm nghiệm mô hình bao gồm Opencv 4.1.2, CUDA 10.1 và cuDNN 7.6.5.
4.2.2 Thực nghiêm trên bộ dữ liệu tự tạo
Trong quá trình thực nghiệm, chúng tôi sẽ gán nhãn 314 tấm ảnh từ tập dữ liệu đánh giá nhằm tinh chỉnh mô hình sau mỗi lần huấn luyện Điều này giúp tránh tình trạng overfitting, khi mô hình có độ chính xác cao trong huấn luyện nhưng lại dự đoán sai trong kiểm tra Cứ sau khoảng 100 lần huấn luyện, chúng tôi sẽ thực hiện đánh giá để đảm bảo hiệu suất của mô hình.
1 lần và liên tục như vậy cho đến khi hoàn thành Kết quả mAP (độ chính xác trung bình) cao nhất đạt 90%
Tập dữ liệu gồm 628 tấm ảnh sẽ được sử dụng để đánh giá độ chính xác của hệ thống Để đo lường, chỉ số Accuracy (%) sẽ được áp dụng nhằm xác định hiệu suất của mô hình Kết quả thu được từ tập dữ liệu này sẽ là kết quả chính thức của mô hình đối với bộ dữ liệu.
Bảng 4-3 cho thấy độ chính xác của hệ thống đối với ảnh bình thường (không có đường chín đoạn) chỉ đạt khoảng 72.5%, do sự tương đồng giữa các đường cong và đường chín đoạn gây nhầm lẫn Trong khi đó, độ chính xác với các hình ảnh có đường chín đoạn đạt khoảng 95.2%, đáp ứng yêu cầu Tuy nhiên, hệ thống vẫn gặp khó khăn trong việc nhận diện các hình ảnh quá mờ hoặc đường chín đoạn trên quả nhỏ.
Bảng 4-3 Bảng mô tả kết quả sau khi thực nghiệm trên bộ dữ liệu tự tạo
Sau khi thực nghiệm trên bộ dữ liệu, nhóm đã tích hợp thuật toán Yolo vào phần mềm và tiến hành kiểm tra trên 10 hình ảnh, 4 video dài khoảng 30 giây mỗi video và 1 trang web Kết quả cho thấy, với 10 hình ảnh, tốc độ nhận diện chỉ mất chưa đầy 1 giây và đạt độ chính xác 10/10, đây là một kết quả khả quan Tuy nhiên, với 4 video, tốc độ nhận diện chậm hơn, khoảng 2 phút cho mỗi video, nhưng vẫn nhận diện được đường chín đoạn Đối với trang web, thời gian nhận diện là khoảng 2 phút, nhưng không phát hiện được đường chín đoạn nào Tổng thể, ứng dụng đã đạt được yêu cầu đề ra.
Quá trình thực nghiệm cho thấy tốc độ xử lý tìm kiếm đường chín đoạn trên ảnh dưới một giây là kết quả khả quan, với độ chính xác đạt 95,2% cho ảnh có đường chín đoạn Tuy nhiên, độ chính xác chỉ đạt khoảng 72,5% cho các hình không có đường chín đoạn, cho thấy cần cải tiến thêm Một số hình ảnh có thể gây nhầm lẫn vẫn dẫn đến sai sót trong nhận diện Do giới hạn về phần cứng, tốc độ kiểm tra trên video chỉ đạt mức tạm chấp nhận, nhưng cơ bản đã đáp ứng được yêu cầu ban đầu.