Cài đặt Dashboard dựa trên nền tảng Thingsboard

Một phần của tài liệu Xây dựng ứng dụng phát hiện lửa trên jetson nano ứng dụng mô hình học sâu (Trang 69)

Thingsboard cài đặt dễ dàng nhất khi chạy hệ điều hành Ubuntu, tuy nhiên, Thingsboard vẫn có thể cài đặt trên Windows nhưng khá phức tạp. Người dùng có thể cài đặt Thingsboard trên một máy tính cùng mạng LAN để sử dụng chung.Tải bộ

cài đặt tại đây về:

https://github.com/thingsboard/thingsboard/releases/download/v3.2.2/thingsboard- 3.2.2.deb

CHƯƠNG 4 TRIỂN KHAI THỰC NGHIỆM VÀ ĐÁNH GIÁ :

KẾT QUẢ 4.1 Sơ đồ triển khai ứng dụng trên thiết bị

Admin: Sử dụng Camera được kết nối vào thiết bị Jetson để phát hiện ra những đám

cháy.

 Hình ảnh từ Camera sẽ được Streaming Server sử dụng thư viện Flask của Python để chiếu lên host. Tại Dashboard của Thingsboard, tạo một thẻ html để nhúng đường dẫn của Video Streaming lên.

 Các thông số từ vụ cháy như: Tỉ lệ khả năng xảy ra hỏa hoạn, số vị trí có đám cháy, FPS được gửi lên Thingsboard qua giao thức MQTT.  Trên Thingsboard, thiết lập một Rule Chain với điều kiện: Nếu tỉ lệ xảy

ra hỏa hoạn trên 70% thì gửi cảnh báo về cho Admin

User: Có thể truy cập vào hệ thống qua tài khoản xác thực được cấp để xem live

stream camera, thông số được gửi từ camera. Tuy nhiên, không thể nhận được Email cảnh báo từ Thingsboard

4.2 Thiết lập Streaming Server

Nguyên tắc hoạt động: Streaming sẽ đưa hình ảnh lên Web Server bằng cách upload từng frame hình ảnh camera bắt được lên. Trung bình, mỗi giấy sẽ có 20 khung hình được Camera ghi lại, đồng nghĩa với việc sẽ có 20 hình ảnh được tải lên Streaming Server mỗi giây Hệ thống được triển khai theo các bước sau:.

Bước 1: Cài đặt thư viện Flask cho python

Bước 2: Thiết lập Streaming Server bằng cách lập trình một chương trình bằng ngôn ngữ Python. Sử dụng các Function để tải liên tục các frame được ghi lại lên Web Server. Trong đề tài này nhóm sử dụng Localhost, cho nên sẽ có địa chỉ 127.0.0.1 Bước 3: Tại ứng dụng phát hiện lửa, ghi lại các frame từ camera thu về, kèm theo bounding box đã khoanh vùng vật thể được phát hiện vào một file hình ảnh tên detect.jpeg. Mỗi frame sẽ tự ghi đè liên tục lên hình ảnh này. Thêm dòng code cv.imwrite(detect.jpeg,”frame”) vào vòng lặp khi load mô hình.

Bước 4: Chạy thử nghiệm. Ta chỉ cần dùng đường dẫn của hình ảnh Stream liên kết đến Dashboard bằng thẻ <img> của html

4.3 Thiết lập trên Thingsboard

Dashboard ( bảng quản lý) của ứng dụng phát hiện lửa được chạy trên Thingsboard đã được cài đặt. Phương thức truyền thông tin sẽ được sử dụng là MQTT, Device tại Thingsboard chính là một Broker với cách xác thực là một mã Token riêng biệt. Bước 1: Tạo một thiết bị trên Thingsboard theo trình tự các bước trong hình sau:

Hình 4.3 Khởi tạo thiết bị trên Thingsboard  Sau khi bấm vào dấu cộng, một bảng khởi tạo sẽ hiện lên:

 Thực hiện các bước trên hình, sau đó bấm Add thì đã tạo xong một thiết bị mới

Bước 2: Lấy mã token để truy cập thiết bị

Hình 4.5 Lấy mã Token trên Thingsboard

Bước 3: Thiết lập đường truyền MQTT trên source code. Khai báo các thông tin như Token, host, các tham số cần truyền.

#Mã token truy cập vào thiết bị

ACCESS_TOKEN='r1NTs6vgP0ZD7z1Of6N6' #Địa chỉ host thinGboards

THINGSBOARD_HOST='192.168.1.6' client = mqtt.Client()

client.username_pw_set(ACCESS_TOKEN) #Các tham số cần gửi lên

fire_data={'firerate': 0,'ViTri': 0 ,'Thong Bao' 'Chua gui Email : canh bao', 'F PS': , } 0

Bước 4: Tạo bảng Dashboard từ các thông số được gửi lên.

Hình 4.6 Dashboard quản lý ứng dụng phát hiện lửa

4.4 Thiết lập Rule chain ( điều kiện để phát cảnh báo )

Hình 4.7 Rule Chain

Input: Thông số FireRate ( khả năng xảy ra hỏa hoạn ) được lấy từ kết quả

Camera thu được

Script: Xây dựng cấu trúc điều kiện để gửi cảnh báo. Điều kiện là khả năng

Hình 4.8 Thiết lập điều kiện Rule chain

o Nếu thỏa điều kiện (True), cảnh bảo được khởi tạo và gửi Email đến người dùng

o Nếu không thỏa (False), Rule chain sẽ hủy, và quay lại từ bước Input

4.5 Đánh giá kết quả các mô hình4.5.1 Chạy thử nghiệm các mô hình 4.5.1 Chạy thử nghiệm các mô hình

Hiện nay, để giải quyết các bài toán phát hiện vật thể, người ta thường sử dụng các mô hình của họ Yolo. Các mô hình Yolo phổ biến hiện nay là YOLOv3, YOLOv4, YOLOv5. Ngoài ra các mô hình Yolo khác (như YOLOv2, Yolo9000) đã không còn phổ biến vì để đạt được độ chính xác cao, cần thời gian huấn luyện rất lâu ( trên 6 tiếng đồng hồ ).

Mô hình YOLOv3 và mô hình YOLOv4 chạy trên nền tảng Darknet. Mô hình YOLOv5 chạy trên nền tảng Pytorch. Nhóm đã thực hiện xây dựng ba mô hình YOLOv3-tiny, YOLOv4-tiny và Yolo5s để đưa ra các so sánh và đánh giá trên cùng một khung hình Các thông số thử nghiệm: .

 Dataset huấn luyện : 1346 hình ảnh  Số vòng huấn luyện : 10000 integration

A. YOLOv3

Với thử nghiệm đầu tiên, YOLOv3 đạt được độ chính xác 75.7% với 10000 integration, thời gian huấn luyện khoảng 4 giờ đồng hồ Để đạt được độ chính xác . cao thì cần tăng thời gian huấn luyện và tập dataset. Tuy nhiên, với điều kiện sử dụng máy ảo Google Colab phiên bản miễn phí không cho phép nhóm thực hiện yếu tố này. Kết quả thu được nhưsau:

Hình 4.10 Thử nghiệm YOLOv3-tiny

Nhận xét:

- Sau 10000 vòng huấn luyện, mô hình YOLOv3 chưa đạt được kết quả tốt. Độ chính xác bé hơn 80%.

- Có khả năng phát hiện tất cả ngọn lửa trong khung hình nhưng độ khớp dữ liệu chỉ trung bình 45% như hình 54.

- Thời gian phản hồi kết quả nhận diện chưa nhan

B. YOLOv4

YOLOv4 đạt được kết quả tốt nhất trong các mô hình thử nghiệm, với độ chính xác lên đến 98%, thời gian huấn luyện khoảng 150 phút.

Hình 4.11 Kết quả huấn luyện của YOLOv4-tiny

Hình 4.12 Kết quả thử nghiệm YOLOv4-tiny

- Mô hình YOLOv4 nhận diện tốt tất cả vật thể, tất cả các vật thể đều có tỉ lệ khớp dữ liệu trên 80% cao hơn nhiều so với YOLOv3-tiny.

- Thời gian phản hồi kết quả nhận diện nhanh.

C. YOLOv5

Khác biệt với hai phiên bản trên, YOLOv5 được phát triển trên nền tảng Pytorch được cấu hình sẵn các tham số để huấn luyện mô hình. Với IoU 0.5, độ chính xác YOLOv5 đạt được 95% sau khoảng hai tiếng đồng hồ huấn luyện. Kết quả thu được:

Hình 4.14 Kết quả thử nhiệm trên YOLOv5

Nhận xét:

- Mô hình có hiệu suất cao khi độ khớp dữ liệu trên các vật thể đều xấp xỉ 90% trở lên.

- Xử lý các khung hình dưới 480p chưa tốt, mô hình phù hợp phát hiện trong điều kiện camera có độ phân giải cao.

4.5.2 Thông số chi tiết các mô hình thử nghiệm

Để đưa ra sự lựa chọn chính xác giữa các mô hình, nhóm đã thực hiện xây dựng nhiều mô hình, từ hiệu năng được biểu diễn, lựa chọn chính xác và cải thiện chất lượng sau đó tiến hành sử dụng trên thiết bị Jetson Nano. Các mô hình ban đầu được xây dựng trên Laptop là YOLOv3, YOLOv4, YOLOv5, với kết quả sau đây:

Mô hình CPU GPU RAM

FPS trung bình Độ chính xác Độ mất mát Kích thước YOLOv3- tiny 22.10% 9% 1961.5 MB 19.5 75.7% 3.16% 34Mb YOLOv4- tiny 21.70% 10% 1961.5 MB 22.5 98% 2.2% 23Mb YOLOv5s 15% 15% 2857 MB 30 95% 2% 28Mb Tflite (tối ưu từ YOLOv4- tiny) 10% 15% 1556Mb 30 98% 2.2% 23Mb

Mô hình được xây dựng trên Laptop có cấu hình:  Memory: 16384MB RAM

 CPU: AMD Ryzen 5 4600H with Radeon Graphics (12 CPUs), ~3.0GHz

 GPU : NVIDIA GeForce GTX 1650 Ti, Memory: 13000MB VRAM.

Mô hình CPU GPU RAM FPS trung bình Độ chính xác Độ mất mát Kích thước YOLOv3- tiny 96% 84% 1.41Gb 6 75.7% 3.16% 34Mb YOLOv4- tiny 88% 64% 1,45Gb 7 98% 2.2% 23Mb YOLOv5s

Không thể chạy trên Jetson Nano phiên bản 2Gb, vì chỉ cẩn load Camera lên thì hệ thống lập tức báo lỗi thiếu bộ nhớ và hay bị

sập nguồn. TensorRT (tối ưu từ YOLOv4- tiny) 50% 90% 1,2Gb 20 98% 2.20% 32Mb Tflite (tối ưu từ YOLOv4- tiny) 90% 0% 1,8Gb 7.5 98% 2.20% 23Mb

Nhận xét kết quả và đánh giá các mô hình:

A. YOLOv3 và YOLOv4

- Số lượng RAM sử dụng của hai mô hình tương đương nhau.

o Nguyên nhân: Hai mô hình cùng sử dụng chung nền tảng Darknet để

chạy và đào tạo mô hình. Ngoài ra, khi chạy trên hai thiết bị Laptop và Jetson Nano, số lượng khung hình trên một giây của hai mô hình không chênh lệnh quá nhiều, máy tính không cần sử dụng thêm bộ nhớ để xử lý hình ảnh, cho nên lượng RAM sử dụng không có sự chênh lệch lớn giữa hai phiên bản.

- Sau 10000 interation, YOLOv4 đạt được hiệu quả cao hơn YOLOv3 về độ chính xác, độ mất mát, FPS.

o Nguyên nhân: Trong file cấu hình của YOLOv3-tiny có 13 lớp Convolutional, trong khi đó YOLOv4-tiny có 21 lớp Convolutional. Điều này dẫn đến khả năng xử lý hình ảnh cũng như độ chính xác khi huấn luyện của YOLOv4 cao hơn YOLOv3 khi đi qua nhiều lớp xử lý.

 Về kích thước: YOLOv3 có kích thước lớn hơn nhiều so với YOLOv4. Ở phiên bản YOLOv4, tác giả Alexey đã tối ưu mô hình Pretrain ngay từ đầu, dẫn đến việc sau khi huấn luyện mô hình tùy chỉnh, không sinh ra mô hình có kích thước lớn như YOLOv3.

 Độ chính xác vượt trội của YOLOv4 cũng chính là nguyên nhân chính khiến mô hình sử dụng ít CPU và GPU hơn so mới YOLOv3. Khi một khung hình có chứa ngọn lửa, YOLOv4 với độ chính xác cao có thể dùng ít vòng lặp hơn YOLOv3 để nhận diện ra vật thể rồi vẽ Bounding Box xung quanh. Từ đó, dẫn đến việc tiết kiệm tài nguyên máy tính.

B. YOLOv5

- YOLOv5 là phiên bản mới nhất của mô hình phát hiện vật thể “You only look once”. Tuy không được coi như là một phiên bản thứ 5 chính thức, nhưng nó vẫn có nhiều cải tiến và đạt được hiệu quả cao với tỉ lệ chính xác lên đến 95%.

- Khác với hai phiên bản YOLOv3 và YOLOv4, YOLOv5 được chạy trên nền tảng Pytorch. Đối với nền tảng này, việc khởi động mô hình dẫn đến tiêu thụ lượng lớn RAM, cho nên khi thực hiện trên thiết bị Jetson Nano phiên bản 2Gb không thể load hình ảnh từ Camera.

- YOLOv5s chỉ có 8 lớp Convolutional giúp mô hình giảm quá trình xử lý hình ảnh, nâng cao số khung hình trên một giây. Tuy nhiên, việc nối tiếp bởi các lớp BottleneckCSP vẫn giúp khả năng nhận diện vật thể được đảm bảo.

- YOLOv5 có các bản s/m/l, lần lượt theo thứ tự nhỏ/vừa/lớn, các bản của YOLOv5 đều đã được nhóm phát triển Ultralystic cấu hình sẵn và không thể thay đổi thông số được như ở YOLOv3 và YOLOv4. Điều này dẫn đến độ ổn định của mô hình khi ta thực hiện hai lần huấn luyện khác nhau trên cùng một tệp dataset và cùng số vòng huấn luyện thì YOLOv5 vẫn trả về kết quả như nhau.

- Việc tối ưu hóa của mô hình YOLOv5 có độ khó khá cao, khi thường xảy ra lỗi xung đột các phiên bản của thư viện với hệ điều hành Jetpack của Jetson Nano, hơn nữa TensorRT 5.5 (phiên bản mới nhất) và nền tảng Pytorch mà YOLOv5 đang sử dụng chưa có sự tương thích với nhau. Khi nhóm thực nghiệm tối ưu trên Jetson Nano, việc Debug diễn ra trên 3 tiếng đồng hồ mà không có tham số nào được trả về.

- Kết luận: YOLOv5 là mô hình phù hợp chạy trên các máy tính có bộ nhớ cao, tối thiểu là 4Gb RAM.

Hình 4.15 Kiến trúc YOLOv5 ( Nguồn : https://github.com/ultralytics/YOLOv5 )

C.TensorRT và Tflite

- TensorRT và Tflite là hai mô hình được nhóm tối ưu từ mô hình đạt hiệu suất cao nhất là YOLOv4-tiny. Nhóm đã đạt được kết quả và có các so sánh sau đây:

o Về Tflite:

 Tflite là bản tối ưu hóa được TensorRT phát triển, phù hợp chạy trên các thiết bị như Google Coral, PC, thiết bị di động sử dụng hệ điều hành Android.

 Tflite không được hãng Nvidia hỗ trợ khi chạy trên thiết bị Jetson Nano, tuy đã cấu hình sử dụng GPU trên thiết bị, nhưng trong khi chạy ứng dụng phát hiện lửa thì GPU vẫn không hoạt động. Tuy không ảnh hưởng đến độ chính xác, nhưng đây vẫn chưa phải kết quả nhóm mong muốn.

 Khi Tflite chạy trên Laptop, mô hình đã đạt được hiệu suất rất cao, với lượng tài nguyên máy tính tiêu thụ thấp nhưng lại đạt được hiệu suất rất cao khi đạt tới mức 30 FPS và có xu hướng tăng lên nếu được kết nối bởi Camera chất lượng hơn có khả năng bắt được nhiều khung hình trên một giây.

 Kết luận: Tflite là một trong những biện pháp tốt để tối ưu mô hình. Trong tương lại, nếu nhóm có điều kiện sẽ sử dụng mô hình này để thực thi trên thiết bị Coral.

o Về TensorRT:

 TensorRT được người dùng Jetson Nano đánh giá là bản tối ưu tốt nhất để chạy mô hình ứng dụng học sâu trên thiết bị nhúng. Với sự hỗ trợ của nhà sản xuất, TensorRT được hỗ trợ tương thích hệ tính toán song song của GPU (CUDA) trên Jetson Nano, dẫn đến việc khi sử dụng mô hình này, sẽ đạt được hiệu suất rất cao về FPS, cũng như tiết kiệm tài nguyên máy tính RAM, CPU.  Nhược điểm của mô hình này là chỉ có thể chạy trên thiết bị nhúng của hãng Nvdia và không có sự đa dạng về thiết bị sử dụng.

Lý do chọn mô hình YOLOv4-tiny để tối ưu hóa:

Từ bảng thông số, các phân tích đánh giá và kết quả thực nghiệm trên, có thể nhận thấy mô hình YOLOv4-tiny thích hợp để tối ưu hóa sang TensorRT và là mô hình phù hợp nhất với thiết bị Jetson Nano. Mô hình được tối ưu từ YOLOv4 có thể giúp một thiết bị có cấu hình thấp hơn rất nhiều lần so với một máy tính, laptop vẫn có thể xây dựng một hệ thống ứng dụng và chạy với hiệu quả cao. Từ đó, đáp ứng được yêu cầu của khóa luận là xây dựng ứng dụng phát hiện lửa trên thiết bị có cấu hình thấp, phát hiện lửa trong thời gian thực.

4.6 Chạy thực nghiệm

Tại máy tính, SSH vào thiết bị Jetson Nano như hình dưới đây. Để thực hiện được ứng dụng, ta phải đồng thời khởi động ứng dụng lửa và hệ thống Streaming cùng một lúc.

Hình 4.16 Khởi động hệ thống

Sau khi hệ thống được khởi động, ngay lập tức bảng điều khiển ở trên Thingsboard sẽ xuất hiện các thông số bao gồm hình ảnh trực tiếp từ Camera, FPS, khả năng đã xảy ra hỏa hoạn, số vị trí cháy ( có bao nhiêu ngọn lửa được phát hiện ).

Ta có thể thấy như hình dưới đây. Mặc dù mô hình đã trải qua quá trình đưa khung hình lên Streaming Server những vẫn đảm bảo khả năng phát hiện đầy đủ các vật thể. Đảm bảo được FPS cao (trung bình là 20).

Hình ảnh 4.17 dưới đây được tiến hành kiểm thử trên hình ảnh ngọn lửa được lấy từ điện thoại đi động và hình ảnh 4.18 được kiểm thử trên ngọn lửa thật. Đồng thời cả hai mẫu kiểm thử đều đạt được kết quả tốt.

Hình 4.17 Kết quả thử nghiệm 1

Hình 4.19 Thingsboard phát cảnh bảo

Khi xuất hiện hỏa hoạn một Email sẽ được gửi đến nhằm cảnh báo người dùng

CHƯƠNG 5 TỔNG KẾT: QUÁ TRÌNH VÀ HƯỚNG PHÁT TRIỂN

ĐỀ TÀI 5.1 Kết quả đạt được

Trong quá trình nghiên cứu và thực hiện khóa luận này, nhóm đã đạt được một số kết quả nhất định, có thể kể đến như:

 Nghiên cứu các kiến thức về máy học, học sâu, thị giác máy tính. Hiểu được cách xây dựng mô hình phát hiện vật thể để giải quyết được vấn đề trong xã

Một phần của tài liệu Xây dựng ứng dụng phát hiện lửa trên jetson nano ứng dụng mô hình học sâu (Trang 69)

Tải bản đầy đủ (PDF)

(93 trang)