Chương 1: Tổng quan đề tài — Chương 2: Cơ sở lý thuyết đề tài — Chương 3: Nội dung thực hiện — Chương 4: Kết quả thực hiện — Chương 5: Kết luận. CƠ SỞ LÝ THUYET DE TÀI 2. Socket là gi? Socket là giao diện lập trình ứng dụng mạng được dùng dé truyền và nhận dit liệu trên internet. Giữa hai chương trình chạy trên mạng cần có một liên kết giao tiếp hai chiều, hay còn gọi là two-way communication để kết nối 2 process trò chuyện với nhau.
Điểm cuối (endpoint) của liên kết này được gọi là socket. Một chức năng khác của socket là giúp các tầng TCP hoặc TCP Layer định danh ứng dụng mà dữ liệu sẽ được gửi tới thông qua sự ràng buộc với một công port (thé hiện là một con số cụ thé), từ đó tiến hành kết nối giữa client và server.1 mô tả chỉ tiết vị trí của socket trong mô hình mạng. o controlled by „ process. app developer controlled by OS Hình 2.
Mô hình mạng va vị tri của socket Người dùng cần socket bởi vì ưu những điểm mạnh của nó. Socket hỗ trợ hầu hết các hệ điều hành bao gồm MS Windows, Linux. Ngoài ra, socket cũng được sử dụng với nhiều ngôn ngữ lập trình, gồm C, C++, Java, Visual Basic, Visual 14 C++. nên nó có thể tương thích với hầu hết mọi đối tượng người dùng với những câu hình máy khác nhau.
Đặc biệt, người dùng cũng có thê chạy cùng một lúc nhiêu socket liên tục, giúp nâng cao hiệu suât làm việc, cũng như tiệt kiệm thêm nhiêu thời gian và công sức hơn. [10] Có nhiều loại socket như: Stream Socket, Datagram Socket. Nhưng trong đề tài này chỉ sử dụng WebSocket. WebSocket là gì? Websocket là công cụ hỗ trợ việc kết nối qua lại trên internet giữa client và server.
Giúp diễn ra nhanh chóng và hiệu quả hơn thông qua việc sử dụng TCP socket. Không chỉ sử dụng riêng cho ứng dụng web, Websocket có thé áp dụng cho bat kì ứng dụng nào khác cần có sự trao đổi thông tin trên Internet. Cách hoạt động chi tiết của WebSocket được mô tả chỉ tiết trong hình 2. OS Client ˆ GET Exe x | ¬ polling :H GET polling | Pits Y Y Hình 2.
Cách hoạt động của WebSocket 15 Ưu điểm của WebSocket: — Tăng tốc độ truyền tải thông tin giữa 2 chiều — Dé phát hiện và xử lý trong trường hợp có lỗi xảy ra —. Dễ dàng sử dụng, không cần cài đặt thêm các phần mềm bồ sung khác — Không cần sử dụng nhiều phương pháp kết nối khác nhau Nhược điểm của WebSocket: — Chưa hỗ trợ trên tất cả các trình duyệt — Với các dịch vụ có phạm vi yêu cầu, Websocket chưa hỗ trợ hoàn toàn. Message Queuing Telemetry Transport: Message Queuing Telemetry Transport (MQTT) là giao thức truyền thông điệp (message) theo mô hình publish/subscribe (cung cấp / thuê bao), được sử dung cho các thiết bị IoT với băng thông thấp, độ tin cậy cao và khả năng được sử dụng trong mạng lưới không ôn định. Nó dựa trên một Broker (tạm dịch là “May chủ môi giới”) “nhẹ” (khá ít xử lý) và được thiết kế có tính mở (tức là không đặc trưng cho ứng dụng cụ thê nào), đơn giản và dễ cài đặt.
MỌTTT là lựa chon lý tưởng trong các môi trường như: — Những nơi mà giá mạng viễn thông đắt đỏ hoặc băng thông thấp hay thiếu tin cậy. — Khi chạy trên thiết bị nhúng bị giới hạn về tài nguyên tốc độ và bộ nhớ. — Bởi vì giao thức này sử dụng băng thông thấp trong môi trường có độ trễ cao nên nó là một giao thức lý tưởng cho các ứng dụng M2M (Machine to Machine). MOQTT cũng là giao thức được sử dụng trong Facebook Messenger.
VỊ trí của MQTT trong hệ thống được mô tả ở hình 2. 16 : Server (NodeJs, Attacher Fe Sensor oom MOTT ==+ PHP.) —= LÍ Mobile Web Thing app app Hinh 2. Vi tri cua MQTT trong hé thong Ưu điểm của MQTT: — Truyền thông tin hiệu quả hơn. — Tang khả năng mở rộng.
— Giảm đáng ké tiêu thụ băng thông mạng. — Rất phù hợp cho điều khiến và do thám. — Tối đa hóa băng thông có san. — Chi phí thấp.
— Rấtan toàn, bảo mật. - Được sử dụng trong các ngành công nghiệp dầu khí, các công ty lớn như Amazon, Facebook,. — Tiết kiệm thời gian phát triển. — Giao thức publish/subscribe thu thập nhiều dữ liệu hơn và tốn ít băng thông hơn so với giao thức cũ.
Mô hình Pub/Sub: Client: — Publisher - Nơi gửi thông điệp — Subscriber - Nơi nhận thông điệp Broker: Máy chủ Trong đó Broker được coi như trung tâm, nó là điểm giao của tất cả các kết nối đến từ Client (Publisher/Subscriber). Nhiệm vụ chính của Broker là nhận thông điệp (message) từ Publisher, xếp vào hàng đợi rồi chuyển đến một địa điểm cụ thé. Nhiệm vụ phụ của Broker là nó có thé đảm nhận thêm một vai tinh năng liên quan tới quá trình truyền thông như: bảo mat message, lưu trữ message, logs,. Client thì được chia thành hai nhóm là Publisher và Subscriber.
Client chỉ làm ít nhất một trong 2 việc là publish các thông điệp (message) lên một/nhiều topic cụ thể hoặc subscribe một/nhiều topic nào đó dé nhận message từ topic này.4 mô tả chỉ tiết về mô hình Pub/Sub. ng F Publish ————— Subscribe — oe ee Hình 2. Mô hình Pub/Sub Ưu điểm: — Kết nối riêng rẽ, độc lập. — Khả năng mở rộng.
— Thời gian tách biệt (Time decoupling). — Đồng bộ riêng rẽ (Synchronization decoupling). 18 Nhược điểm: — Máy chủ (Broker) không cần thông báo về trạng thái gửi thông điệp. Do đó không có cách nào dé phát hiện xem thông điệp đã gửi đúng hay chưa.
— Publisher không hề biết gì về trạng thái của subscribe và ngược lại. — Những kẻ xấu (Malicious Publisher) có thé gửi những thông điệp xấu, và các Subscriber sẽ truy cập vào những thứ mà họ không nên nhận. OpenCV: OpenCV (Open Source Computer Vision Library) là một thư viện phần mềm chứa hàng ngàn thuật toán xử lý ảnh và video, được thiết kế để giúp các nhà phát triển đễ đàng xây dựng các ứng dụng thị giác máy tính. OpenCV hỗ trợ nhiều ngôn ngữ lập trình khác nhau như C++, Python, Java, và hoạt động trên nhiều hệ điều hành khác nhau như Windows, macOS, Linux và Android.
Các tính năng nỗi bật của OpenCV: — Xử lý ảnh: OpenCV cung cấp các công cụ mạnh mẽ dé đọc, ghi, hiển thị, biến đổi, lọc và phân tích ảnh. Bạn có thể dễ dàng thực hiện các tác vụ như thay đổi kích thước, xoay, cắt, làm mịn, tăng độ tương phan, phát hiện biên, phân đoạn ảnh, và nhiều hơn thế nữa. -_ Xử lý video: OpenCV cho phép bạn đọc, ghi, hiển thị va xử lý video theo thời gian thực. Bạn có thé thực hiện các tác vụ như theo dõi đối tượng, phát hiện chuyền động, ước tính chuyền động, én định video, và thậm chi xây dựng các hệ thống nhận dạng hành động.
— Machine learning: OpenCV tích hợp các thuật toán machine learning (học máy) để giải quyết các bài toán thị giác máy tính phức tạp. Bạn có thể sử dụng các mô hình học máy có sẵn hoặc huấn luyện mô hình của riêng mình dé thực hiện các tác vụ như phân loại đối tượng, nhận dạng khuôn mặt, phát hiện vật thê, và nhiêu hơn thê nữa. 19 -_ Giao diện người dùng: OpenCV cung cấp các công cụ dé xây dựng giao diện người dùng đồ họa cho các ứng dụng thị giác máy tính của bạn. Bạn có thé dễ dàng tạo các cửa số, nút bam, thanh trượt và các thành phần khác dé tương tác với người dùng.
[12] Sơ đồ cau trúc của OpenCV có thê được mô ta bằng hình 2.3 Core ML Basic structures, Tools for classification algorithms and and drawing functions clustering Hình 2. Sơ đồ cấu trúc của thư viện OpenCV Trong đó: Phần Core của thư viện bao gồm các lĩnh vực chức năng sau: — Khởi tao các cấu trúc dit liệu cơ bản — Sao chép, điền và truy cập các phan tử con của cấu trúc dit liệu -_ Các hàm số học, logic, thống kê và toán học — Các hàm vẽ (đường thắng, hình tròn, hình chữ nhật, văn bản) -_ Xử lý lỗi Phan CV của thư viện chứa các chức năng sau: — Tinh toán gradient, phát hiện cạnh và góc. — Tìm kiếm đặc trưng dé theo dõi. —_ Nội suy và biến đổi hình học.
— Chuyên đôi mau sắc. 20 —_ Các phép toán hình thái. — So khớp mẫu. — Tinh toán và phân tích biểu đồ.
— Phan đoạn hình ảnh và các thành phan liên kết. — Phân tích chuyền động và theo dõi đối tượng. — Nhận dạng đối tượng. — _ Hiệu chỉnh camera và tái tạo cảnh 3D.
Phần GUI của thư viện OpenCV không chỉ dành riêng cho GUI mà còn bao gồm các chức năng sau: - Tạo giao diện người dùng đồ họa - cửa sé, thanh trượt, phát hiện sự kiện chuột và bàn phím. —_ Tải và lưu hình anh ở nhiều định dạng khác nhau. — Nhap/xuat tệp video và thiết lập thông số camera. — Các chức năng tiện ích và hệ thống khác.
Có một phần riêng biệt của thư viện OpenCV dành riêng cho các thuật toán học máy (machine learning). Nó cực kỳ hữu ích cho tất cả các ứng dụng nhận dạng mẫu hiện đại và bao gồm các phương pháp phân loại sau: — Naive Bayes — k-nearest neighbors — Máy vecto hỗ tro (Support vector machines) — Cây quyết định (Decision trees) — Boosting — Random trees — _ Thuật toán kỳ vọng tối đa (Expectation-maximization) — Mạng no-ron (Neural networks) [13] 21 2. YOLO: YOLO (You Only Look Once) là một trong những thuật toán phát hiện đối tượng (object detection) nổi tiếng và hiệu quả nhất trong lĩnh vực thị giác máy tính. Thuật toán này được phát triển bởi Joseph Redmon vào năm 2015 và nhanh chóng trở thành một công cụ quan trọng trong việc phát hiện đối tượng theo thời gian thực.
Cụ thê hơn thì Yolo là một mô hình mạng CNN cho việc phát hiện, nhận dạng, phân loại đối tượng. Yolo được tạo ra từ việc kết hợp giữa các convolutional layers và connected layers. Trong đóp các convolutional layers sẽ trích xuất ra các feature của ảnh, còn full-connected layers sẽ dự đoán ra xác suất đó và tọa độ của đối tượng.6 thể hiện kiến trúc chung của YOLO. Layer 7x7 x64-s-2 3x3x192 1x1x128 aioe 1x1x512 }r 3x3x1024 Maxpool Layer = Maxpool Layer 3x3x25ó 3x3x512 3x3x1024 3x3x1024 2x2+2 2x2-s-2 1x1x256 1x1x512 3x3x1024 3x3x512 3x3x1024 3x3x1024-s-2 Maxpool Layer Maxpool Layer 2x2-s-2 2x2-s-2 Hình 2.
Mô hình của YOLO Nguyên lý hoạt động của YOLO: Khác với các phương pháp phát hiện đối tượng truyền thống như R-CNN (Region-based Convolutional Neural Networks), YOLO sử dụng cách tiếp cận toàn diện (end-to-end) dé phát hiện đối tượng.