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ã hội.
Có thêm kiến thức về lập trình ngôn ngữ Python cùng với việc sử dụng các thư viện. Nắm bắt được cách thức vận hành của một hệ thống IoT hiện đại. Tiếp cận và phân tích nhiều mô hình phát hiện vật thể, xây dựng riêng được
một hệ thống cảnh báo hoạt động hiệu quả.
Tạo ra bộ dữ liệu được thu thập riêng cho hệ thống, tổng hợp một số bộ dữ liệu có sẵn khác hỗ trợ cho các nghiên cứu sau này
Sử dụng hiệu quả thiết bị nhúng có cấu hình thấp trong phục vụ trong việc xây dựng mô hình Deep Learning, tiết kiệm được tài nguyên máy tính, có khả năng phát hiện lửa trong thời gian thực
5.2 Hướng phát triển
Sự phát triển của công nghệ trong thời đại 4.0 tạo nên nhiều ứng dụng có khả năng áp dụng tốt và cuộc sống của con người. Chính vì thế, các dự án luôn phải đổi mới và cập nhật để có thể tối ưu về hiệu suất và chi phí.
Định hướng phát triển trong tương lai:
Phát triển đề tài dựa trên nhiều mô hình khác nhau, có thể tối ưu hóa và triển khai trên nhiều thiết bị máy tính, nhúng, di động,… Ví dụ như : Tflite trên thiết bị Google Coral, hệ điều hành Android. Đặc biệt, mô hình có khả năng chạy ổn định ngay trên cả những thiết bị có cấu hình thấp.
Hoàn thiện hệ thống cảnh báo sớm trên nền tảng tự phát triển mà không cần qua phần mềm mã nguồn mở.
Phát triển tập Dataset riêng, có độ chính xác cao, nhận diện được mọi góc cạnh của đối tượng. Phát hiện được lửa trong thời gian sớm nhất
TÀI LIỆU THAM KHẢO Tiếng Anh:
1. Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao, “YOLOv4: Optimal Speed and Accuracy of Object Detection” submitted to arXiv:2004.10934, 23 Apr 2020.
2. Glenn-Jocher, Ultralystic, “YOLOv5 Documentation”, https://github.com/ultralytics/YOLOv5
3. Hamilton, Eric (27 December 2018). “What is Edge Computing: The Network Edge Explained”. cloudwards.net. Retrieved 2019-05-14
4. Joseph Redmon, Ali Farhadi, “YOLOv3: An Incremental Improvement”, ”, submitted to arXiv:1804.02767, 8 Apr 2018.
5. Lê Việt Hùng, “Tensorflow-YOLOv4-Tflite”,
https://github.com/hunglc007/tensorflow-YOLOv4-tflite
6. Nvdia TensorRT Documentation,
https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html
7. Shixiao Wu, Libing Zhao, “Using Popular Object Detection Methods for Real Time Forest Fire Detection”, submitted to 2018 11th International Symposium on Computational Intelligence and Desgin.
8. ShreedharNiradi, AsmitaNagathan, LaxmiSampagavi, Kmounika, KrupaDandage, “Implementation of Forest Fire Detection System using IoT Neural Network”, IRJET volume:07 Iussue: 04 | Apr 2020
Tiếng iệt V
1.Nguyễn Việt Hoàng, Tìm hiểu về Yolo trong bài toán Realtime Object Detection ,https://viblo.asia/p/tim-hieu-ve-yolo-trong-bai-toan-real- time-object-detection-yMnKMdvr57P
2. Phạm Đình Khanh, Tìm hiểu cơ bản về Object Detection, https://phamdinhkhanh.github.io/
3. Tiep Vu Huu, Machine Learning cơ bản,
https://machinelearningcoban.com/
4. Trịnh Duy Thanh, Tìm hiểu về điện toán biên, https://bkhost.vn/posts/edge-computing- -gila