GIỚI THIỆU ĐỀ TÀI
Tổng quan đề tài
- Trạm biến áp (TBA) là nơi đặt máy biến áp và các thiết bị phân phối điện khác nhằm tạo nên một hệ thống truyền tải điện năng hoàn chỉnh Trạm biến áp có vai trò rất quan trọng nhằm đảm bảo tính ổn định trong việc cung cấp điện năng đến với các nhà máy, xí nghiệp, bệnh viện, trường học, nhà dân, …Chính vì thế, các TBA thường có công suất lớn lại có rất nhiều thiết bị điện quan trọng và đường dây điện, tủ điện bên trong Do đó, TBA thường rất hay xảy ra các vụ cháy nổ từ các lý do chủ quan cũng như khách quan của con người Vì vậy, làm việc trong môi trường này cần hết sức cẩn thận và cần có những thiết bị bảo hộ nhằm đảm bảo sự an toàn về người cũng như vật chất
- Dù biết rằng, trạm biến áp là một nơi rất có hại cho sức khoẻ của con người cho nên cần hết sức cẩn trọng khi di chuyển ra vào khu vực này Nhưng hiện nay vẫn xảy ra rất nhiều trường hợp người lạ xâm nhập trái phép vào trạm biến áp với mục đích trộm cắp hoặc phá hoại vật tư Ngoài yếu tố con người, thú vật lạ như có chó, mèo, vẫn thường lạc vào các khu vực này và vô tình gây thiệt hại đến các thiết bị, máy móc trong TBA Thế nhưng việc giám sát những trường hợp đột nhập trái phép vào các trạm biến áp vẫn còn được thực hiện chưa được nghiêm ngặt và còn nhiều sự lơ là có thể là do các yếu tố chủ quan của con người Hầu hết các trạm biến áp hiện nay trên cả nước chưa có một hệ thống giám sát thông minh và tự động mà phần lớn dựa vào các lực lượng bảo vệ thay phiên nhau canh gác
- Chính vì những nguy hiểm cho con người cũng như những thiệt hại về cơ sở vật chất có thể xảy ra nếu như có người tự ý ra vào TBA Một hệ thống giám sát và cảnh báo thông minh cần được triển khai để có nâng cao tính an toàn cũng như giảm được công sức cho lực lượng bảo vệ là một điều hết sức cần thiết.
Tình hình nghiên cứu hiện nay
Tuy nhiên, vẫn chưa nhiều đề tài nghiên cứu về ứng dụng xử lý ảnh trong việc phát hiện những yếu tố ngoại cảnh tác động trực tiếp đến trạm biến áp như con người, sự cố cháy nổ, …
- Trong những năm gần đây, đề tài về phân tích ảnh thông minh trích xuất từ các video hay IP camera (Intelligent Video Analytics) đang được rất nhiều sự quan tâm vì tính ưu việt của chúng trong việc phát hiện vật thể, phân tích và cảnh báo những tình huống bất thường mà không cần bất kỳ sự giám sát của con người
- Tuy nhiên vẫn có nhiều vấn đề trong việc triển khai hệ thống giám sát như chất lượng ảnh kém, bị ảnh hưởng bởi điều kiện ngoại cảnh như ban ngày, ban đêm sẽ tác động rất nhiều đến độ chính xác của các mô hình phát hiện vật thể Cùng với đó, hạ tầng máy tính để đảm bảo việc xử lý ảnh và tính toán cho một hệ thống nhiều camera hoạt động liên tục cùng một lúc và phải báo động theo thời gian thực là một vấn đề vô cùng khó khăn.
Mục tiêu và nhiệm vụ
- Từ những thông tin và bài học rút ra được từ những nghiên cứu trước đây, mục tiêu chính của đề tài này là: dựa vào hệ thống các camera an ninh được gắn cố định tại một số vị trí trong trạm biến áp ta xây dựng một hệ thống giám sát để phát hiện người, gửi cảnh báo khi có người vào khu vực nguy hiểm hoặc ra khỏi phạm vi làm việc cho phép, cảnh báo khi có người không đội mũ bảo hộ
- Những nhiệm vụ cần thực hiện bao gồm:
Nhiệm vụ 1: Huấn luyện mô hình Deep Learning (DL) để phát hiện người với độ chính xác cao trong nhiều điều kiện môi trường khác nhau của trạm biến áp
Kết quả phát hiện người có thể được sử dụng cho các bài toán thực tế sau đây:
+ Cảnh báo khi phát hiện người xuất hiện trong trạm biến áp + Cảnh báo khi nhận thấy người xuất hiện trong TBA có các hành động vi phạm phạm vi làm việc cho phép hay vô tình đi vào các khu vực nguy hiểm
+ Cảnh báo khi nhận thấy người đang làm việc trong trạm biến áp không đội mũ bảo hộ
Nhiệm vụ 2: Tối ưu hoá mô hình DL để đạt được tốc độ tính toán nhanh nhất với mục đích triển khai trên nhiều hạ tầng phần cứng khác nhau như máy chủ (Server) hoặc các máy tính nhúng (Edge Devices)
Nhiệm vụ 3: Triển khai một hệ thống giám sát có thể phân tích hình ảnh và xử lý các tính năng cần suy luận AI trên toàn bộ camera trong một trạm biến áp cùng một lúc mà vẫn đảm bảo được tốc độ tính toán gần bằng thời gian thực.
CƠ SỞ LÝ THUYẾT
Mô hình Deep Learning
- Mô hình EfficientDet [1] là một mô hình Object Detection (OD) được giới thiệu bởi Google Brain Team vào tháng 7 năm 2020
- Mô hình EfficientDet cho thấy được sự vượt trội về độ chính xác cũng như thời gian tính toán ít hơn nhiều so với các mô hình OD đã được công bố trước đây Qua Hình 2.1 ta có thể thấy, EfficientDet đạt được đến 55% COCO AP trong khi hiệu suất tính toán (FLOPS) thấp hơn nhiều so với các mô hình OD trước đó
Nguồn https://arxiv.org/pdf/1911.09070.pdf
- Mô hình EfficientDet được xây dựng trên mạng Deep Learning có tên là EfficientNet [2] đã được nhóm nghiên cứu công bố trước đó
- Hình 2.2 thể hiện kiến trúc của mạng EfficientDet với 3 phần chính như sau:
Hình 2.2 Cấu trúc mạng của mô hình EfficientDet
+ Khung xương (Backbone) của EfficientDet được tận dụng lại các thông số của một Deep Convolutional Network có tên là EfficientNet Với việc sử dụng một phương pháp Compound Scaling [2] mới giúp việc phân tích đặc trưng những vật thể nhỏ trong khung ảnh trở nên chính xác hơn mà không cần phải dùng ảnh có kích thước lớn hay một mô hình lớn với kiến trúc cực kỳ phức tạp EfficientNet đã chứng minh khả năng trong nhiều ứng dụng; do đó việc sử dụng EfficientNet làm xương sống sẽ giúp EfficientDet học một cách hiệu quả các đặc trưng phức tạp và những vật thể có kích thước nhỏ như người trong trạm biến áp
+ Phần cổ (Neck) của EfficientDet sử dụng một loại mô hình mới có tên là Bi-directional Feature Pyramid Network (Bi-FPN) [1] Bi-FPN có hiệu suất tốt hơn vì có ít tham số và ít FLOPs hơn so với các lớp cổ (Neck Layer) khác như PA- Net [3]hay NAS-FPN [4]
+ Sau khi hình ảnh ngõ vào được trích xuất đặc trưng (Extract Feature) trên các Backbone và Neck Layer, những đặc trưng này sẽ được dự đoán xem đó là vật thể gì và toạ độ của vật thể đó qua Head Layer là một Prediction Network
- EfficientDet được nhận định sẽ làm lu mờ đi model YOLO [5] đã làm mưa nhiên, chỉ 2 tháng sau khi EfficientDet được công bố, YOLOv5 [6] được công bố đã làm mọi người thật sự bất ngờ
- YOLOv5 được phát triển bởi Glenn Jocher trên Ultralytic Pytorch Framework, rất trực quan và tính toán nhanh Cái tên YOLOv5 vẫn còn bị một số tranh cãi vì tác giả của YOLOv5 không phải là người tạo ra các bản YOLO trước đó trên Darknet [5] YOLOv5 được xây dựng hoàn toàn trên Pytorch Sau khi xây dựng lại toàn bộ YOLOv3 [7] từ DarkNet sang Pytorch, tác giả đã có nhiều cải tiến khi thêm vào PA-Net [3] và CSP backbone giúp giảm thông số của mạng, tốc độ tính toán giảm đi đáng kể vả độ chính xác tăng
- Kiến trúc mạng của mô hình YOLOv5 được mô tả ở Hình 2.3 gồm những phần chính như sau:
Hình 2.3 Cấu trúc mạng của mô hình YOLOv5
+ Khung xưng (Backbone) của YOLOv5 là sự kết hợp của 2 loại Deep Convolutional Network có tên là Cross Stage Partial Network (CSP Net) [8] và DarkNet để trở thành một mạng có tên gọi là CSP DarkNet CSP Net giải quyết các vấn đề về thông tin gradient lặp đi lặp lại trong các mạng backbone có quy mô lớn và tích hợp các thay đổi gradient vào bản đồ đặc trưng (feature map), do đó làm giảm đáng kể các thông số của mạng và FLOPS của mô hình, nhờ đó việc sử dụng CSP Net không chỉ đảm bảo tốc độ suy luận và độ chính xác mà còn giảm kích thước mô
+ Khác với EfficientDet sử dụng Bi-FPN [1] là Neck Layer thì YOLOv5 sử dụng Path Aggregation Network (PA Net) [3] Tuy không tối ưu về mặt hiệu năng bằng Bi-FPN, PA Net cải thiện việc sử dụng các tín hiệu bản địa hóa chính xác (accurate localization signals) ở các lớp thấp hơn, điều này sẽ giúp nâng cao độ chính xác trong việc xác định vị trí của đối tượng
+ Cuối cùng, phần đầu của YOLOv5 sử dụng một lớp mạng YOLO
Nó tạo ra 3 kích thước khác nhau của feature map sau khi trích xuất đặc trưng cho phép mô hình xử lý các đối tượng nhỏ, vừa và lớn Điều này cực kỳ cần thiết đối với các ứng dụng phát hiện người vì mô hình có thể xác định chính xác những người đang đứng ở nhiều vị trí khác nhau (xa hay gần)
- Mạng ResNet-50 là một trong những biến thể của mạng ResNet (Residual Network) [9] một mạng học sâu dùng để phân loại ảnh (Classification Model) được giới thiệu vào năm 2015
- Khi huấn luyện các mạng Neural Network có nhiều lớp tích chấp, một vấn đề thường xuyên xảy ra là Vanishing Gradient [10] Để có thể giải quyết vấn đề này ResNet đưa ra một giải pháp là sử dụng một kết nối “tắt” xuyên qua một hay nhiều layer của mạng Một khối như vậy gọi là một Residual Block [9] như hình 2.4 Cách sử dụng nối tắt này nhằm để bổ sung ngõ vào của block vào đầu ra của layer, việc làm này sẽ tránh cho đạo hàm bằng 0 vì có cộng thêm giá trị đầu vào Chính vì thế sẽ hạn chế được vấn đề Vanishing Gradient.
Phương pháp đánh giá mô hình Deep Learning
2.2.1 Đánh giá Object Detection Model Độ chính xác trung bình (mAP)
- Độ chính xác mAP [11] là một độ đo thông dụng để đánh giá các mô hình
OD hiện nay Để tìm hiểu về mAP, trước tiên ta cần hiểu một số khái niệm về Precision, Recall và IoU
IoU (Intersection over Union) là tỷ lệ giữa phần giao và phần hợp của vùng dự đoán và vùng đối tượng thật
Nguồn https://blogcuabuicaodoanh.files.wordpress.com/2020/02/image.png
Hình 2.5 Công thức tính IoU
+ Area of Overlap là diện tích vùng giao nhau giữa bounding box mà mô hình dự đoán được (predicted bounding box) và phần bounding box đúng (ground-truth box)
+ Area of Union bao gồm diện tích phần hợp của predicted bounding box và ground truth box
- Mỗi một bức ảnh sau khi quá trình suy luận của mô hình Object Detection sẽ nhận được một số predicted bounding box sau khi tính IoU dựa vào các ground-truth boxes đã được gán nhãn từ trước ta sẽ có một giá trị IoU riêng Từ công thức trong
- Để xác định liệu dự đoán đó có đúng hay sai ta dựa vào mức ngưỡng (threshold) cho trước Nếu IoU của dự đoán đó lớn hơn hoặc bằng ngưỡng thì đó là một dự đoán đúng và ngược lại là dự đoán sai
True/False - Negative/Positive [12] trong bài toán Object Detection (xét trên một vật thể hay một lớp dữ liệu)
- True Positive (TP): là một dự đoán đúng khi bounding box của vật thể được dự đoán có IoU lớn hơn hoặc bằng ngưỡng Biểu thị cho số lượng dự đoán đúng của mô hình
- False Positive (FP): là một dự đoán sai khi bounding box của vật thể có IoU bé hơn ngưỡng Biểu thị cho số lượng dự đoán sai của mô hình
- False Negative (FN): trường hợp mà bức ảnh đó có ground-truth (GT) box (tức là có vật thể cần phát hiện) nhưng mô hình lại không đưa ra một predicted box nào Biểu thị cho sự thiếu sót của mô hình
Precision - Recall [12] trong bài toán Object Detection được tính theo công thức như sau:
- Precision thể hiện cho độ chính xác của mô hình Object Detection
- Recall thể hiện cho độ tốt của khả năng phát hiện vật thể trong mô hình Object Detection
- Khi đánh giá mô hình Object Detection ta sẽ sử dụng một tập dữ liệu đánh giá (Validation dataset) đã được gán nhãn (xác định GT boxes) từ trước Sau khi tiến hành dự đoán kết quả của tập dữ liệu này, với mỗi predicted box ta sẽ có một chỉ số confidence tương ứng cho độ chính xác mà mô hình dự đoán cho vật thể đó
- Sau đó, tiến hành tính Precision-Recall (với một ngưỡng IoU cố định) cho các predicted box của toàn bộ kết quả dự đoán mà mô hình suy luận được từ tập dữ liệu trên và sắp xếp kết quá theo giá trị giảm dần của confidence score
- Từ bảng kết quả đó ta sẽ vẽ đường cong Precision-Recall Từ đường cong Precision-Recall này ta vẽ được đường Interpolated Precision như Hình 2.6
Nguồn https://blogcuabuicaodoanh.files.wordpress.com/2020/02/image-13.png
Hình 2.6 Đồ thị biểu diễn mối quan hệ giữa Precision-Recall
- Thông số Interpolated Precision ( ) [10] được xác định bởi công thức
(2.3) là giá trị lớn nhất của Precision tại điểm Recall đó ( )
Average Precision (AP) được tính như sau với 11 là số điểm Interpolated Tuy nhiên, với các bộ dữ liệu mới hiện nay, AP thường không tính bằng diện tích phần dưới của đường Interpolated Precision
Mean Average Precision (mAP) interp
= ồ để được chỉ số mAP của cả mô hình Trong tập data COCO, AP được tính với 101 điểm Interpolated Precision và sau đó tính AP trung bình với các ngưỡng IoU từ [0.5- 0.95]
- Accuracy (độ chính xác) [13] là phương pháp đơn giản nhất dùng để đánh giá các Classification Models xem mô hình có tỷ lệ dự đoán đúng cao đến mức nào trong tổng các trường hợp xảy ra Accuracy chính là tỉ lệ giữa tổng các điểm dữ liệu mà mô hình dự đoán đúng và tổng số điểm dữ liệu
Accuracy =correct predictions total data points (2.5)
- Tuy nhiên phương pháp này có nhược điểm là chỉ cho ta biết phần trăm lượng dữ liệu được phân loại đúng mà không chỉ ra được cụ thể mỗi lớp dữ liệu được phân loại như thế nào, lớp nào được mô hình phân loại đúng nhiều nhất hay lớp nào có dữ liệu bị phân loại sai nhiều nhất
- Với nhược điểm của Accuracy đã nêu ở trên, chúng ta cần có một phương pháp đánh giá khác trực quan hơn về độ chính xác của các lớp dữ liệu Confusion Matrix là một phương pháp có thể giải quyết vấn đề này
- Cũng giống như các khái niệm True/False - Positive/Negative đã giới thiệu ở phần 2.2.1 Confusion Matrix dựa vào các khái niệm này để thể hiện một cách trực quan về thông tin tỉ lệ dự đoán đúng lớp dữ liệu của mô hình, giúp phát hiện các lớp có tỉ lệ dự đoán cao hay thấp
- Khác với cách định nghĩa của phương pháp đánh giá Object Detection Model, ở phương pháp đánh giá Classification Model, các giá trị True/False – Positive/Negative được định nghĩa như sau:
+ True Positive (TP) là khi một dữ liệu ở lớp Positive được mô hình dự đoán vào đúng lớp Positive
+ False Positive (FP) là khi một dữ liệu ở lớp Negative nhưng được mô hình dự đoán vào lớp Positive (Dự đoán sai)
+ True Negative (TN) là khi một dữ liệu ở lớp Negative được mô hình dự đoán vào đúng lớp Negative
+ False Negative (FN) là khi một dữ liệu ở lớp Positive nhưng được mô hình dự đoán vào lớp Negative (Dự đoán sai)
- Trong đó, True/False thể hiện tính chính xác trong quá trình phân loại của mô hình và Positive/Negative thể hiện các lớp dữ liệu mà mô hình phân loại vào
Hình 2.8 Cách tính Precision-Recall trên Confusion Matrix
Tối ưu hoá mô hình Deep Learning bằng TensorRT
- NVIDIA TensorRT [18] là một SDK được tạo ra với mục đích tối ưu hoá các mô hình Deep Learning, nâng cao hiệu năng tính toán cho phần cứng (GPU) Nó có thể giúp các mô hình suy luận kết quả ở các mức chính xác tính toán khác nhau như FP32, FP16, INT8
- TensorRT hỗ trợ đa nền tảng giúp Server có thể quản lý nhiều mô hình mà không bị giới hạn về tài nguyên và bộ nhớ Có thể tối ưu hoá nhiều dạng mô hình Deep Learning khác nhau như TensorRT, TensorFlow, Pytorch, TensorFlow GraphDef, TensorFlow SavedModel, ONNX Runtime, …
Nguồn https://developer.nvidia.com/tensorrt
Hình 2.14 Tối ưu hoá model bằng TensorRT
- TensorRT có các tính năng [19] nổi trội nhằm mục đích tối ưu hiệu năng thực thi của các mô hình Deep Learning thể hiện ở Hình 2.14:
+ Reduce Mixed Precision (Giảm độ chính xác hỗn hợp) + Layer and Tensor Fusion (Hợp nhất các tensor và lớp của model) + Kernel Auto-turning (Tự điều chỉnh các lớp dữ liệu cho phù hợp) + Dynamic Tensor Memory (Điều chỉnh dung lượng bộ nhớ) + Mutil-Stream Execution (Xử lý song song nhiều luồng) + Time Fusion (Tối ưu hoá tính toán của các Kernel)
- Hai chức năng chính ảnh hưởng đến cấu trúc và trọng số của các mô hình Deep Learning sau khi tối ưu là Reduce Mixed Precision và Layer Tensor Fusion
- Nhiệm vụ chính của tính năng Layer Tensor Fusion [19] [20] là phân tích cấu trúc của các mạng Neural Network và tìm kiếm những cấu trúc mạng nào có thể thực hiện tối ưu hoá TensorRT sẽ tái cấu trúc lại các lớp mạng này để quá trình tính toán được nhanh và hiệu quả hơn mà không làm thay đổi kết quả trính toán cơ bản lệnh tính toán này đều thực hiện rất nhanh bằng GPU và các nhân CUDA (CUDA Cores) [21] nhưng lại phải tốn thời gian đọc và ghi dữ liệu vào nhân Tensor (Tensor Cores) [21] ở mỗi lớp tính toán
- TensorRT sẽ dùng phương pháp Tensor Fusion để kết hợp các kernel theo chiều dọc và tính toán tuần tự nhau Việc làm này sẽ làm giảm việc khởi chạy nhân CUDA nhiều lần và tránh luôn việc đọc ghi dữ liệu giữa các lớp Tensor
Nguồn http://www.serc.iisc.ac.in/serc_web/wp-content/uploads/2021/04/TENSORRT.pdf
Hình 2.15 Cấu trúc mạng trước và sau khi tối ưu bằng Layer và Tensor Fusion
- Hình 2.14 thể hiện quá trình tái cấu trúc lại các layer có thể tối ưu hoá của một mạng Neural Network, các lớp Convolutional, Bias và ReLU được kết hợp lại thành một kernel duy nhất gọi là CBR Sau đó thay vì thực thi 3 phép tính cho 3 layer ta chỉ cần tính một lần duy nhất cho kernel CBR và có cùng một kết quả
- Các mạng Neural Network thường được huấn luyện với độ chính xác của các trọng số là 32-bit hoặc 64-bit để giúp cho quá trình học của mô hình bằng thuật toán lan truyền ngược (Back-Propagation) [22] được tốt hơn Tuy nhiên việc tính toán trong quá trình ứng dụng các mạng này vào thực tế sẽ mất nhiều thời gian vì tầm giá trị lớn Trong khi tính toán thực tế (không huấn luyện) thì Back-Propagation là không cần thiết
Nguồn http://www.serc.iisc.ac.in/serc_web/wp-content/uploads/2021/04/TENSORRT.pdf
Hình 2.16 Các mức chính xác của model
- Do đó, việc sử dụng một mô hình với độ chính xác tính toán của các trọng số thấp hơn như FP32, FP16 hay INT8 là cần thiết để dung lượng của mô hình nhẹ hơn, quá trình tính toán nhanh hơn nhiều lần Quá trình chuyển đổi độ chính xác của mô hình từ FP32 sang FP16 hay INT8 gọi là quantization [18] [19]
Nguồn http://www.serc.iisc.ac.in/serc_web/wp-content/uploads/2021/04/TENSORRT.pdf
Hình 2.17 Hiệu năng của model ResNet-50 ở các mức FP32, FP16 và INT8
- Tuy nhiên, việc chuyển đổi mức độ chính xác của mô hình sẽ làm thông tin trọng số của mô hình mất mát dẫn tới độ chính xác của mô hình sẽ giảm đi so với mô hình gốc Ngược lại, đánh đổi của việc giảm độ chính xác thì hiệu năng tính toán của mô hình sẽ tăng đáng kể như Hình 2.17.
Nền tảng triển khai mô hình Deep Learning trên Server
- Có tên gọi đầy đủ là NVIDIA Triton Inference Server [23] là một bộ công cụ mã nguồn mở được phát triển bởi NVIDIA dùng để triển khai (deploy) các mô hình Deep Learning lên môi trường production (Server) và giúp các mô hình tương thích cao với các phần cứng của họ
Nguồn https://developer.nvidia.com/nvidia-triton-inference-server
Hình 2.18 Mô tả mô hình Triton Serving
- So với các Inference Server khác hiện nay, Triton Serving có rất nhiều ưu điểm như:
+ Hỗ trợ đa nền tảng (Support Multiple Frameworks): Triton Serving cho phép các nhà phát triển có thể triển khai nhiều loại mô hình AI khác nhau, được
Pytorch, ONNX Runtime, … Ngoài ra, ta có thể triển khai Triton Serving ở môi trường khác nhau như tại máy cục bộ, đám mây hoặc các thiết bị biên (Edge Devices)
+ Hiệu năng suy luận cao (High-Performance Inference): do Triton Serving được xây dựng bởi NVIDIA-một nhà sản xuất phần cứng (GPU) dành cho các nghiên cứu và ứng dụng AI lớn nhất hiện nay Chính vì thế độ tối ưu phần cứng của Triton Serving là rất tốt giúp cho việc tính toán trở nên nhanh hơn và tiết kiệm tài nguyên hơn do đó rất thích hợp cho các ứng dụng về Streaming Inference
+ Việc triển khai các mô hình lên Triton Serving rất dễ dàng và nhanh chóng khi hiện nay nó được hỗ trợ dưới dạng Docker Container
- Triton Serving có nhiều tính năng hữu ích cho quá trình triển khai một sản phẩm AI như:
+ Có thể tải lên cùng lúc nhiều model AI khác nhau + Hộ trợ các chuẩn giao tiếp tốt nhất hiện nay như REST API, gRPC + Có thể kết hợp suy luận nối tiếp nhiều model với nhau bằng tính năng Ensemble Models [24] và Ensemble Scheduler [24]
+ Hỗ trợ Dynamic Batching giúp tối ưu tài nguyên tính toán
- NVIDIA DALI (Data Loading Library) [25] là một thư viện được NVIDIA xây dựng với mục đích tăng tốc quá trình tiền xử lý dữ liệu đầu vào của các ứng dụng có sử dụng mô hình Deep Learning DALI có thể thực thi ở nhiều phần cứng khác nhau như CPU hoặc GPU
Nguồn https://developer.nvidia.com/blog/accelerating-inference-with-triton-inference-server-and-dali
- Vì có thể thực thi trên GPU nên nhờ vào DALI việc xử lý dữ liệu ngõ vào của các mô hình sẽ nhanh hơn và ít tốn tài nguyên hơn so với các phương pháp xử lý dữ liệu truyền thống Ta hoàn toàn có thể kết hợp NVIDIA DALI với Triton Serving để tối ưu hoá quá trình suy luận AI, giảm độ trễ khi phải tiền xử lý dữ liệu đặc biệt là dữ liệu ảnh
- Kết hợp với tính năng Ensemble Models [26], ta sẽ dễ dàng xây dựng một
AI Inference Pipeline trên Triton Serving giúp việc triển khai các ứng dụng AI có thể diễn ra một cách dễ dàng hơn
Nguồn https://developer.nvidia.com/blog/accelerating-inference-with-triton-inference-server-and-dali
Hình 2.20 Mô tả quá trình dùng DALI trong Ensemble Model của Triton Serving
QUÁ TRÌNH THỰC HIỆN
Ý tưởng thực hiện đề tài
3.1.1 Giải quyết các bài toán trong trạm biến áp
- Với mục tiêu ban đầu là dựa vào hệ thống các camera giám sát được lắp đặt sẵn để giải quyết các bài toán thực tế trong trạm biến áp như: phát hiện người đột nhập vào trạm, phát hiện người di chuyển vào vùng nguy hiểm (không được phép), phát hiện người không đội mũ bảo hộ chuyên dụng Nhận thấy điểm chung và cũng là vấn đề quan trọng để giải quyết 3 bài toán trên là cần phải phát hiện được người dựa vào hình ảnh trích xuất từ camera
- Chính vì thế, cần phải huấn luyện một mô hình học sâu (Deep Learning Model) có khả năng nhận diện vật thể hay còn gọi là mô hình nhận diện vật thể (Object Detection Model) để nhận diện chính xác người trong nhiều trường hợp và trong điều kiện ngoại cảnh khác nhau Ở phần 3.2 sẽ trình bày các huấn luyện và đánh giá độ chính xác của các mô hình khác nhau để tìm ra một mô hình thích hợp nhất
3.1.2 Giải quyết bài toán tốc độ xử lý
- Qua quá trình khảo sát thực tế trong các Trạm Biến Áp, số lượng camera được lắp đặt sẵn trong trạm biến áp tầm khoảng từ 15-20 camera Nếu giả sử mỗi camera có tốc độ trung bình khoảng 25 FPS (frame per second) thì số lượng ảnh cần phải xử lý AI trong một giây là 500 frames, đây là một số lượng ảnh rất lớn cần được xử lý và chưa tính đến các tác vụ khác Chính vì thế để đảm bảo một hệ thống 20 camera có thể suy luận AI chính xác và phải duy trì được tốc độ báo động real-time là một bài toán cực kỳ khó khăn và cần phải có một số cân nhắc và đánh đổi
- Đầu tiên cần phải có một máy chủ (Server) đủ mạnh để có thể xử lý một lúc nhiều việc như: decoding luồng camera, xử lý ảnh, suy luận AI và lưu trữ dữ liệu, … Việc xử lý quá nhiều công việc sẽ ảnh hưởng đến hiệu năng của Server cũng như không đảm bảo được độ ổn định của hệ thống Trong khi hiện nay, có rất nhiều máy tính nhúng có thể giải quyết các tác vụ xử lý ảnh rất tốt và giá thành rẻ Chính vì thế, nhằm giảm tải cho Server, đề tài luận văn đề xuất một hệ thống xử lý AI cho các camera kết hợp giữa Cloud Computing và Edge Computing Chi tiết sẽ được trình bày rõ hơn ở phần 3.4
- Chưa dừng ở đó, với một khối lượng xử lý rất lớn đòi hỏi thời gian suy luận của DL Model cần phải rất nhanh Tuy nhiên độ chính xác của các DL model tỷ lệ thuận với độ phức tạp của model đó, đồng nghĩa tỷ lệ nghịch với tốc độ xử lý Do đó, một mô hình có độ chính xác càng cao cần có nhiều thời gian xử lý và điều này là không phù hợp cho các bài toán cần tốc độ xử lý nhanh như camera Để giải quyết bài toán này ta cần phải tối ưu hoá các mô hình DL đã huấn luyện để có thể tương thích tốt với phần cứng nhằm tăng tốc độ xử lý và vẫn duy trì được độ chính xác ở mức chấp nhận được Đồng thời cần có một nền tảng để triển khai các mô hình DL
Huấn luyện mô hình Deep Learning
3.2.1.1 Mô hình Object Detection COCO Dataset 2017
Hình 3.1 Một số hình ảnh trong tập COCO 2017
- COCO 2017 Dataset [27] là một tập dữ liệu đã được gán nhãn sẵn gồm 80 classes khác nhau Trong đó có tổng cộng 123,287 hình được chia thành 2 tập dữ liệu:
+ Tập data train gồm khoảng 118,000 ảnh đã được gán nhãn
+ Tập data validation gồm khoảng 5,000 ảnh đã được gán nhãn
- Do ta chỉ cần các hình ảnh về người để phục vụ cho quá trình huấn luyện, vì vậy từ tập data COCO 2017 có 80 classes này tiến hành lọc ra những ảnh nào xuất hiện người dựa vào tập nhãn đã có sẵn
- Sau khi lọc ta thu được:
+ Data train: 34,212 ảnh có người + Data val: 2,685 ảnh có người
- Ngoài ra, để tăng Precision (giảm False Positive) cho mô hình, ta cần thêm những ảnh không xuất hiện người để bổ sung vào tập data train Tham khảo một số bài viết thì đa phần các tác giả chọn khoảng 10% ảnh data train là ảnh background (không xuất hiện người)
+ Data train: 4,000 ảnh không có người + Data val: 2,259 ảnh không có người
- Vì mục đích của mô hình này là phát hiện người trong trạm biến áp, nên ta cần có thêm một bộ dữ liệu về ảnh người trong TBA
- Substation Dataset là bộ dữ liệu chụp lại ảnh người di chuyển và xuất hiện trong TBA
- Tập dữ liệu ảnh này có kích thước ảnh lớn bao gồm 306 ảnh chưa được gán nhãn
- Sau khi gán nhãn và tăng cường dữ liệu cho tập huấn luyện ta thu được + Data train + augment: 483 ảnh đã gán nhãn
+ Data val: 123 ảnh đã gán nhãn
- Ngoài ra, để tăng độ chính xác cho mô hình cần huấn luyện, tránh các trường hợp phát hiện nhằm các vật thể có sẵn trong môi trường trạm biến áp như cột điện, tủ điện, bình chữa cháy, ta bổ sung 1259 ảnh chụp môi trường trong TBA mà không có người để huấn luyện cho mô hình
- Để tạo nên sự đa dạng trong góc nhìn (góc chụp ảnh), giúp mô hình có thể nhận diện người ở nhiều góc hơn Ta sử dụng thêm một bộ dữ liệu Youtube Dataset
- Tập dữ liệu này gồm 4,343 ảnh được cắt ra từ các video trộm đột nhập trên
Youtube và chưa được gán nhãn Đa phần ảnh trong bộ dữ liệu này được chụp trong môi trường thiếu sáng hoặc khi camera đã chuyển sang chế độ nhìn đêm Từ đó, tập dữ liệu này có thể giúp mô hình của chúng ta nhận biết được người trong môi trường thiếu sáng
- Sau khi gán nhãn và tăng cường dữ liệu ta có được
+ Data train: 2,821 ảnh đã gán nhãn + Data validation: 829 ảnh đã gán nhãn + Data test: 870 ảnh đã gán nhãn
Hình 3.3 Một số hình ảnh trong tập Youtube
- Tăng cường dữ liệu còn gọi là Data Augmentation dùng để gia tăng số lượng ảnh bằng các phép xử lý ảnh thông thường nhằm tạo nên sự đa dạng cho tập dữ liệu huấn luyện nhưng vẫn giữ được tính tổng quát của tập dữ liệu
- Do số lượng ảnh của tập COCO 2017 Dataset khá lớn nên ta không cần tăng cường dữ liệu cho tập dữ liệu này
- Thực hiện tăng cường dữ liệu cho Youtube và Substation Dataset
- Các phép biến đổi hình học thông dụng và được mô tả ở các hình sau:
Hình 3.4 Hình ảnh dữ liệu được Augmentation
- Với model YOLO v5, khi huấn luyện model, có thể chọn chế độ augment online, có nghĩa là chương trình huấn luyện sẽ tự động tăng cường dữ liệu trong quá trình huấn luyện mà không cần phải tăng cường dữ liệu trước đó
- Mô hình này dùng để giải quyết bài toán xác định người có đội mũ bảo hộ hay không Dữ liệu dùng để huấn luyện mô hình được thu thập trong quá trình khảo
- Việc tiếp theo cần làm là trích xuất hình ảnh người từ các bộ dữ liệu đã thu thập được Để nhanh chóng và thuận tiện hơn trong quá trình thu thập dữ liệu, đề tài luận văn này sử dụng mô hình YOLOv5-m đã huấn luyện sẵn để thực hiện phát hiện người sau đó thu thập lại các bức ảnh người đó
- Để loại bỏ đi các tình huống người không đội nón mà chỉ cầm hoặc ôm nón gõy nhầm lẫn cho mụ hỡnh trong quỏ trỡnh huấn luyện, ta tiến hành cắt ẵ bức ảnh người chỉ giữ lại phần thân trên và đầu người làm dữ liệu huấn luyện mô hình Classification Ngoài ra, để tăng độ chính xác cho mô hình chỉ những hình ảnh nào người thật sự đội nón trên đầu mới được tính là đội nón Còn lại các trường hợp như cầm nón che đầu, hay vị trí nón không đúng yêu cầu đều được xem là không đội nón
Hình 3.5 Một số hình ảnh trong tập dữ liệu có đội mũ bảo hộ
- Sau quá trình xử lý và tăng cường dữ liệu ta thu thập được:
+ Data train: 817 ảnh không đội nón + 1247 ảnh đội nón bảo hộ
+ Data validation: 215 ảnh không đội nón + 407 ảnh đội nón bảo hộ + Data test: 970 ảnh không đội nón + 2879 ảnh đội nón bảo hộ
- Vì số lượng ảnh người không đội nón bảo hộ thu thập được còn khá ít, chính vì vậy cần bổ sung thêm ảnh người không đội nón được trích xuất từ các camera khác nhau để cân bằng với tập ảnh có người đội mũ bảo hộ
+ Data train: 400 ảnh + Data validation: 195 ảnh + Data test: 1684 ảnh
Hình 3.6 Một số hình ảnh trong tập dữ liệu không đội mũ bảo hộ
- Với mục đích huấn luyện một mô hình có khả năng nhận diện người với độ chính xác cao nhằm phát hiện người trong điều kiện môi trường đặc thù là có nhiều vật cản như trạm biến áp, luận văn này tiến hành huấn luyện hai mô hình Object Detection có độ chính xác cao nhất hiện nay như đã giới thiệu ở phần 2 là EfficientDet và YOLO v5
- Sau khi đã thu thập và tăng cường dữ liệu cho các tập dữ liệu đã trình bày ở phần 3.2.1 Ta tiến hành quá trình huấn luyện mô hình nhận diện người trên tập dữ liệu trên
- Về phần dữ liệu huấn luyện, thực hiện kết hợp cả 3 bộ dữ liệu (Dataset) là COCO 2017, Substation và Youtube lại với nhau Trong đó tập huấn luyện (training dataset) có tổng cộng 37,033 ảnh có người, 4000 ảnh không có người lấy từ bộ COCO
2017 và 1,259 ảnh không có người lấy từ bộ Substation Về phía tập đánh giá ( validate dataset) có tổng cộng 5,773 ảnh trong đó có khoảng 1/4 là ảnh không có người Chi tiết về các tập dữ liệu được thể hiện ở Bảng 3.1
Bảng 3.1 Chi tiết dữ liệu dùng để huấn luyện mô hình YOLOv5 và EfficientDet
Tối ưu mô hình Deep Learning
Tối ưu hoá mô hình là một việc rất quan trọng để có thể tận dụng hết hiệu năng của phần cứng (GPU) cho quá trình suy luận và giúp việc triển khai các mô hình lên môi trường production dễ dàng hơn Công cụ mà chúng ta dùng để tối ưu hoá mô hình đã được giới thiệu ở phần trên đó là NVIDIA TensorRT [18]
3.3.1 Tối ưu hoá model EfficientDet
- Mục tiêu của việc tối ưu hoá mô hình EfficientDet là để so sánh hiệu năng với mô hình YOLOv5 ở phần sau Do mạng EfficientDet-D1 được xây dựng trên nền tảng TensorFlow được phát triển bởi Google, do đó có một số lớp mạng không thể thực hiện tối ưu bằng TensorRT Chính vì vậy, hiện nay có một platform phục vụ cho việc tối ưu hoá các mô hình TensorFlow đó chính là TF-TRT
- Ở mô hình EfficientDet-D1, ta chỉ có thể tối ưu hoá mô hình về độ chính xác tính toán là FP32, còn với độ chính xác FP16 thì ta chưa thực hiện được do có một
+ Đầu tiên, file trọng số của model EfficientDet-D1 vừa huấn luyện sẽ được lưu dưới dạng file ckpt Ta cần chuyển file model_effd1.ckpt về dạng đóng băng (freeze) đó là file model_effd1.pd
Hình 3.13 Quá trình freeze model EfficientDet-D1
+ Sau đó ta sử dụng TF-TRT để tối ưu hoá model hình EfficientDet-D1 với ngõ vào là file model_effd1.pd
Hình 3.14 Quá trình tối ưu hoá mô hình EfficientDet-D1
+ Trong quá trình tối ưu, ta có thể chọn batch_size cho ngõ vào mô hình, độ chính xác tính toán là FP32, FP16 hoặc INT8
+ Do không thể chuyển mô hình về dạng FP16, ta chỉ thu được một mô hình EfficientDet-D1 đã tối ưu hoá về dạng FP32 được lưu dưới dạng file model_effd1_fp32.pb
3.3.2 Tối ưu hoá model YOLOv5
- Với mô hình YOLOv5-m được xây dựng trên Pytorch, việc tối ưu bằng NVIDIA TensorRT sẽ dễ dàng hơn Ở đề tài luận văn này, quá trình tối ưu mô hình sẽ sử dụng TensorRT phiên bản 7.0 Tham khảo một mã nguồn mở là TensorRTx [30] để tối ưu model
- Ta tiến hành tối ưu mô hình YOLOv5-m thành các mô hình có độ chính xác tính toán thấp hơn là FP32 và FP16 [19] Ở đây ta không chuyển mô hình về dạng INT8 vì kết quả của mô hình không tốt và cần phải có quá trình canh chỉnh (calibration) Quá trình tối ưu được miêu tả ở Hình 3.15, trong đó:
+ Mô hình gốc của YOLOv5-m sau khi train có định dạng của Pytorch là yolov5_m.pt Trước khi tối ưu mô hình, ta cần chuyển mô hình về dạng yolov5_m.wts theo hướng dẫn ở TensorRTx
+ Sau đó ta tiến hành tối ưu hoá mô hình bằng NVIDIA TensorRT version 7.0, thông thường mô hình sau khi tối ưu cần cố định ngõ vào, vì thế ta cho batchsize của ngõ vào là 1, kích thước ảnh trùng với kích thước ngõ vào của model YOLOv5-m là 640x640x3 Độ chính xác tính toán, ta sẽ chuyển mô hình về cả hai mức là FP32 và FP16 để thực hiện so sánh
Hình 3.15 Quá trình tối ưu hoá mô hình YOLOv5-m
+ Sau khi đã tối ưu hoá thành công mô hình ta sẽ thu được các file yolov5_m_fp32.engine (FP32) hoặc yolov5_m_fp16.engine (FP16) và file libmyplugins.so là file thư viện dùng cho việc triển khai mô hình trên Triton Serving
3.3.3 Tối ưu hoá model ResNet-50
- Với ResNet-50, mục tiêu của việc tối ưu mô hình này là để tăng tốc quá trình suy luận phục vụ cho bài toán phát hiện người không đội mũ bảo hộ
- Vì cũng được xây dựng và huấn luyện bằng Pytorch nên quá trình tối ưu của mô hình ResNet-50 cũng tương tự như YOLOv5-m, tuy nhiên ta cần chuyển mô hình này về dạng ONNX model trước khi tối ưu hoá bằng TensorRT Để tương thích với mô hình YOLOv5-m giúp dễ dàng cho quá trình triển khai trên Triton Serving, ta cũng sử dụng TensorRT version 7.0
- Có một lưu ý quan trọng đó là ResNet-50 sẽ được thực thi sau khi nhận kết đến batchsize ngõ vào của mô hình ResNet-50 cũng cần phải không cố định thì mới tối ưu được quá trình tính toán
- Chính vì thế trong trường hợp này ta không thể nào cố định batchsize của ResNet-50 khi tối ưu như của YOLOv5 ở phần trên Thay vào đó, khi tạo ra mô hình dưới dạng resnet50.onnx (ONNX file) ta phải chọn batchsize ngõ vào của mô hình là không xác định [?,3,224,224] như Hình 3.16
Hình 3.16 Quá trình tối ưu hoá mô hình ResNet-50
- Sau đó tiến hành tối ưu hoá mô hình resnet50.onnx trên và thu được mô hình resnet50_fp16.engine Để triển khai trên Triton Serving ta chuyển định dạng file lại thành resnet50_fp16.plan.
Triển khai hệ thống xử lý AI
3.4.1 Xây dựng hệ thống xử lý AI
- Một hệ thống giám sát sử dụng mô hình DL để phân tích hình ảnh cần những yêu cầu sau:
+ Đường truyền tín hiệu tốt kết nối giữa camera và các thiết bị khác + Các camera hiện nay thường truyền tín hiệu thời gian thực theo giao thức RTSP [14] nên cần một thiết bị để giải mã (Decoding) và chuyển tín hiệu RTSP về dạng ảnh RGB dùng cho xử lý ảnh
+ Một hệ thống suy luận (Inference) để phân tích hình ảnh thu được từ camera và phát hiện vật thể (người) xuất hiện trong hình ảnh đó
+ Một hệ thống giám sát (Surveillance System) để báo cáo kết quả và báo động khi có đột nhập
Hình 3.17 Sơ đồ quá trình triển khai mô hình Deep Learning trong hệ thống giám sát
- Trong thực tế, ta có thể sử dụng một máy chủ (Server) để đồng thời nhận tín hiệu truyền về và giải mã (Decoding) cũng như suy luận (Inference) để phát hiện các tình huống đột nhập và báo động Ưu điểm của cách này là giúp cho việc xây dựng một hệ thống giám sát trở nên đơn giản hơn Tuy nhiên, một hệ thống như vậy không thể nào đáp ứng được nhu cầu tính toán của một trạm biến áp với hàng chục camera vì máy tính sẽ vừa tốn tài nguyên cho việc giải mã tín hiệu vừa phải gánh một khối lượng tính toán rất lớn từ các mô hình Deep Learning Từ đó, hệ thống này sẽ không đảm bảo được tính thời gian thực khi số lượng camera trở nên quá lớn
- Hiện nay, với sự phát triển không ngừng của về kỹ thuật phần cứng, các máy tính nhúng ra đời với khả năng tính toán ngày một tăng, có thể giúp ta giải quyết vấn đề này Máy tính nhúng (Edge Devices) với ưu điểm là nhỏ gọn, tuy không thể có
- Trong hệ thống giám sát thông minh, ta hoàn toàn có thể sử dụng một máy tính nhúng như là một Edge Device để thực hiện giải mã tín hiệu truyền từ các camera, tiền xử lý tín hiệu để giảm bớt gánh nặng tính toán cho máy chủ (Server)
- Chính vì thế, hệ thống giám sát TBA trong đề tài luận văn này được mô tả ở Hình 3.17, sẽ chia làm 2 phần chính được mô tả cụ thể ở 2 phần tiếp sau đây
3.4.2 Triển khai hệ thống Cloud Computing
Hình 3.18 Quá trình thực thi mô hình Deep Learning trên Server
- Như một số bài nghiên cứu đã đề cập, một mô hình Deep Learning càng chính xác thì đòi hỏi khối lượng tính toán càng cao Chính vì thế, thời gian cần cho việc tính toán sẽ rất nhiều và không thể đảm bảo được yêu cầu thời gian thực nếu như thời gian tính toán đó lên đến vài giây Để giải quyết vấn đề này cần một máy tính có thể tính toán nhanh và thực hiện nhiều phép tính phức tạp trong cùng một lúc Vì thế bước sử dụng mô hình DL để phát hiện người sẽ được thực hiện tại máy chủ (Server)
- Yêu cầu đặt ra cho thời gian tính toán của mô hình này trên tài nguyên phần cứng có sẵn của máy chủ sẽ rất cao Vì phải đáp ứng cùng lúc không chỉ một mà nhiều yêu cầu suy luận (Inference Request) từ các Edge Device (ED) gửi đến Chính vì thế, ta cần phải tối ưu hóa mô hình bằng platform NVIDIA TensorRT đã được đề cập ở phần 3.3 để giảm thời gian suy luận của mô hình AI đồng thời đảm bảo không giảm độ chính xác so với mô hình gốc (Native Model)
- Mô hình này được triển khai bằng Triton Serving sẽ được đề cập ở phần sau để đảm bảo đáp ứng được yêu cầu tính toán của nhiều Edge Device cùng một lúc
3.4.2.2 Triển khai mô hình Deep Learning bằng Triton Serving
- Sau khi đã tối ưu hoá được các mô hình DL bằng NVIDIA TensorRT, ta sẽ sử dụng các file được tạo ra trong quá trình tối ưu để triển khai lên Triton Serving
- Với Triton Serving ta sẽ triển khai trên Server với phần cứng là GPU NVIDIA RTX3090, để có thể sử dụng được tài nguyên phần cứng này ta cần phải cài đặt Docker và NVIDIA Docker để hỗ trợ cho quá trình thực hiện
- Triton Server đã được phát triển và đóng gói sẵn thành nhiền phiên bản vào các Docker Images được cung cấp miễn phí từ NVIDIA, tuy nhiên ta phải dùng version phù hợp với các mô hình Deep Learning đã tối ưu Ở phần trước, ta sử dụng TensorRT 7.0 cho quá trình tối ưu, vì thế Triton Serving có bản release 21.03 hỗ trợ TensorRT 7.0 để không xung đột version Docker Image của phiên bản này có tên là: nvcr.io/nvidia/tritonserver:21.03-py3
- Từ file 2 file model_name.engine và libmyplugins.so được tạo ra khi tối ưu mô hình, ta chuyển file model_name.engine thành file có dạng model_name.plan Sau đó tạo một thư mục mẹ chứa 2 folder models và plugins, tiếp theo ta chuyển các file trên vào thư mục theo cấu trúc như Hình 3.19 Với tên các thư mục con trong folder models là tên của các mô hình để gọi trong Triton Serving
Hình 3.19 Cấu trúc thư mục chứa các mô hình triển khai trên Triton Serving
- Sau đó ta thực hiện chạy Docker Container chứa Triton Server đã được giới thiệu ở trên ở chế độ runtime=nvidia để có thể thực thi trên NVIDIA GPU Thư mục tritis_model_repo_fp16 vừa được tạo sẽ được mount vào container như Hình 3.20
Hình 3.20 Lệnh dùng để khởi chạy một Triton Serving trên Docker Container
- Sau quá trình cài đặt và khởi chạy Docker Container Triton Server trên Server, ta sẽ có thể gọi request từ Client đến Triton Serving thông qua 2 port là 8010 cho giao thức HTTP/REST API và 8011 cho giao thức gRPC [31] Luận văn này sẽ gọi Triton Serving qua giao thức gRPC Ngoài ra, ta có thể theo dõi thông số vấn hành của Triton Serving bằng cách gọi vào port 8012
3.4.2.3 Sử dụng DALI và Ensemble Models trên Triton Server YOLOv5-m
- Với mục đích chuyển quá trình tiền xử lý (pre-processing) và hậu xử lý (post- processing) từ Client vào Triton Serving ở Server để tận dụng được tài nguyên của Server và giảm tải cho quá trình xử lý tại Client Ta sử dụng thư viện DALI với khả năng hỗ trợ tải ảnh và xử lý ảnh trên GPU và kết hợp với tính năng Ensemble Model của Triton Serving để triển khai quá trình này
Triển khai hệ thống giám sát
3.5.1 Xây dựng hệ thống giám sát
- Từ quá trình thực hiện suy luận AI để giải quyết các bài toán của trạm biến áp đã trình bày ở các phần trên, công việc tiếp theo ta cần thực hiện là xây dựng một hệ thống giám sát hoàn chỉnh với các mục tiêu chính như sau:
+ Quản lý được các thiết bị Edge Devices và Camera trong TBA + Thiết lập và điều chỉnh các thông số cần thiết để để các Edge Device có thể hoạt động tốt trong các điều kiện khác nhau
+ Giám sát được các báo động mà mô hình Deep Learning phát hiện được về các bài toán đã đề ra để kịp thời giải quyết sự cố
Hình 3.30 Sơ đồ toàn bộ hệ thống giám sát của trạm biến áp
- Với các mục tiêu trên, đề tài luận văn đề xuất một hệ thống giám sát vận hành dựa trên các services hoạt động độc lập dựa vào Docker Container [32] Chi tiết về hệ thống giám sát được thể hiện ở Hình 3.30 được chia thành hai nhóm chính là các services hoạt động tại Server và các services hoạt động tại Edge Devices
- Nhóm services ở Server được chạy trên các Docker Container với chức năng và chi tiết hoạt động của các services như sau:
Cơ sở dữ liệu (Database Service)
- Để có thể quản lý được các ED, Cameras, AI Models và các cài đặt mà người dùng gán cho các camera thì chúng ta cần phải có một service Database làm nơi lưu trữ cũng như truy xuất thông tin
- Để chạy được một Database Service, ta sử dụng PostgreSQL [33] – một hệ thống quản trị cơ sở dữ liệu được sử dụng phổ biến hiện nay PostgreSQL có hỗ trợ sẵn một Docker Image để người dùng có thể dễ dàng sử dụng mà không cần gặp khó
- Để xây dựng cơ sở dữ liệu cho Hệ thống giám sát, ta cần xác định các đối tượng của hệ thống mà ở đây 3 đối tượng chính của hệ thống là Edge Devices, Cameras và Models (AI Models)
Hình 3.31 Sơ đồ liên kết các bảng trong Database
- Ở Hình 3.31, lấy trọng tâm là 3 đối tượng đã nêu ta xây dựng mối quan hệ của các bảng dữ liệu (gắn với thông tin của 3 đối tượng) với nhau Các bảng dữ liệu trung gian của các đối tượng là EdgeHasCameras, EdgeHasModels
- Để phục vụ cho bài toàn xác định người trong vùng nguy hiểm, ta cần xây dựng thêm bảng Areas chứa các thông tin của vùng tương ứng với mỗi Camera trong Edge Device
- Vì mỗi camera có thể tồn tại ở nhiều Edge Device khác nhau và có các vùng nguy hiểm (Areas) khác nhau tuỳ vào cài đặt của người giám sát, do đó dữ liệu tại bảng Area không nên kết nối với bảng Cameras mà phải kết nối đến bảng EdgeHasCameras để phản ánh cụ thể đây là vùng nguy hiểm của camera A trong thiết
- Để có thể tuỳ chỉnh các thông số hoạt động của Edge Device, ta cần thêm một bảng lưu thông số của từng ED, do đó ta có thêm bảng DsConfigs với mỗi dòng dữ liệu trong bảng này chứa thông số của duy nhất một ED tương ứng Do đó ta cần phải liên kết bảng EdgeDevice và bảng DsConfigs thông qua bảng EdgeHasConfigs
- API Service là một dịch vụ chạy ngầm dưới hệ thống giám sát có nhiệm vụ thực thi các yêu cầu từ người dùng thông qua giao diện (GUI) để truy xuất dữ liệu từ Database và để gửi các lệnh điều khiển xuống Edge Devices
- Trong sơ đồ chi tiết hệ thống giám sát được giới thiệu ở phần 3.5.1 ta có thể thấy, chỉ có duy nhất API Service mới có quyền truy cập vào Database Việc làm này nhằm tránh bị xung đột dữ liệu xảy ra khi có quá nhiều service chạy độc lập đều có thể thay đổi dữ liệu trong Database Chính vì vậy, các service khác chỉ có thể cập nhập và truy xuất dữ liệu thông qua API Service
- Trong hệ thống giám sát mà luận văn xây dựng, GUI Service sẽ gọi vào API Service để thực hiện các tác vụ như tạo, thêm, sửa hoặc xoá các đối tượng (Edge Device, Camera, Model, …)
- Ngoài các chức năng cơ bản như trên, các tác vụ khác như lưu dữ liệu vùng nguy hiểm (Areas), điều chỉnh thông số của ED, thêm camera vào ED hay cập nhập trạng thái của Edge Device đều được thực thi tại API Service khi nhận được yêu cầu từ GUI
- Chi tiết các API trong hệ thống giám sát được thể hiện ở bảng sau với địa chỉ của API Service {api} = ‘http://127.0.0.1:8002’
Bảng 3.5 Danh sách các API cho đối tượng Edge Device
Bảng 3.6 Danh sách các API cho đối tượng Camera, Model và Area
- RabbitMQ [34] là một Message Broker dùng để phục vụ như cầu giao tiếp giữa các ứng dụng với nhau Trong hệ thống giám sát này, ta dùng RabbitMQ như là phần mềm trung gian giúp quản lý các gói tin (message) được gửi giữa các services trong nội bộ Server với nhau
KẾT QUẢ VÀ ĐÁNH GIÁ
Kết quả thuật toán nhận diện chuyển động
4.1.1 Đánh giá độ chính xác
- Như đã đề cập ở phần 3, thuật toán phát hiện chuyển động đóng vai trò là một bộ lọc dùng để loại bỏ các khung ảnh không có sự kiện bất thường nhằm giảm tải cho Server trong việc suy luận AI Do đó, độ chính xác của mô hình phát hiện chuyển động cũng sẽ ảnh hưởng đến độ chính xác của toàn hệ thống giám sát
- Thuật toán phát hiện chuyển động theo phương pháp Image Subtraction cần có 2 frame ảnh liên tiếp nhau để so sánh Chính vì thế, để đánh giá độ chính xác của mô hình ta cần thu thập các video và trích xuất ảnh từ các đoạn video trên thành các ảnh liên tiếp nhau Sau đó, ta quan sát và so sánh các frame ảnh trên để phân loại ảnh có chuyển động và không chuyển động Ở bài đánh giá này, ta sử dụng 2 video có người di chuyển trong trạm biến áp và 2 video có người di chuyển vào ban đêm tổng cộng 2062 ảnh để đánh giá độ chính xác
- Tiến hành tính các thông số sau và thống kê ở Bảng 4.1:
+ True Positive: khi thuật toán phát hiện đúng frame có chuyển động + False Posivive: khi thuật toán phát hiện frame có chuyển động nhưng thực tế là không có chuyển động
+ False Negative: khi frame ảnh trong thực tế có chuyển động nhưng thuật toán không phát hiện được
Bảng 4.1 Bảng đánh giá độ chính xác của thuật toán phát hiện chuyển động
- Từ Bảng 4.1 ta thấy tỉ lệ phát hiện chính xác chuyển động (Precision) của mô hình là 96,78% và độ nhạy khi phát hiện chuyển động (Recall) là 84,92% Hình 4.1 thể hiện tổng quan nhất về quá trình phát hiện chuyển động trong 4 đoạn video đã đánh giá ở trên
Hình 4.1 So sánh kết quả phát hiện chuyển động của mô hình so với thực tế
- Thuật toán phát hiện chuyển động mà ta xây dựng có độ chính xác cao, tuy nhiên vẫn còn nhiều tình huống như vật thể di chuyển ở vị trí xa, điều kiện trời tối khó phân biệt các vùng chuyển động, vật thể di chuyển theo hướng thẳng về camera thì mô hình phát hiện chuyển động sẽ cho thấy sự sai sót nên cần được cải thiện thêm.
- Để đánh giá hiệu năng tính toán của thuật toán phát hiện chuyển động bằng CUDA OpenCV (CUDA_AbsDiff) mà luận văn đề xuất, ta cần so sánh phương pháp này với các phương pháp phát hiện chuyển động khác để có một kết luận chính xác nhất Ở đây ta so sánh với hàm phát hiện chuyển động bằng Optical Flow sử dụng thuật toán Farneback (CUDA_OF_Farneback) và một mô hình có cùng cách tính như CUDA_AbsDiff nhưng thực hiện tính toán trên CPU (CPU_AbsDiff)
- Trong bài đánh giá này,quá trình kiểm tra sẽ thực hiện 3 lần với 3 kích thước
Bảng 4.2 Kết quả đo hiệu năng của thuật toán nhận diện chuyển động
- Từ các giá trị đo được, ta có được sơ đồ so sánh hiệu năng như sau
Hình 4.2 Hiệu năng của thuật toán phát hiện chuyển động bằng CUDA OpenCV
- Ta có thể thấy được, phương pháp so sánh hai khung ảnh liên tiếp (AbsDiff) cho kết quả tính toán tốt hơn so với phương pháp OpticalFlow của OpenCV Tuy nhiên, CPU_AbsDiff dù có hiệu năng tốt nhất nhưng nó thực thi hoàn toàn trên CPU mà cần rất nhiều tài nguyên CPU cho quá trình tính toán này Do đó, ta không còn nhiều tài nguyên để thực hiện tác vụ khác Do vậy, dù có kết quả hiệu năng không cao bằng CPU_AbsDiff do phải tốn thời gian cho quá trình tải dữ liệu từ CPU lên GPU để tính toán nhưng CUDA_AbsDiff cũng có kết quả khá cao và không kém so với CPU_AbsDiff Vì thế, phương pháp CUDA_AbsDiff là phương pháp tốt nhất để
Kết quả huấn luyện mô hình Deep Learning
- Như mục đích ban đầu là tìm ra một mô hình nhận diện vật thể có độ chính xác cao nhất để sử dụng cho toàn bộ các bài toán của hệ thống giám sát Chính vì thế, ta đã chọn huấn luyện hai mô hình có độ chính xác cao nhất hiện nay là EfficientDet và YOLOv5 Ta cần so sánh hai mô hình này và chọn ra mô hình thích hợp nhất
- Để đánh giá các mô hình nhận diện vật thể như EfficientDet và YOLOv5 người ta thường dùng một thông số gọi là mAP đã được giải thích ở chương 2
- Nhằm đánh giá trung thực nhất, ta thực hiện đánh giá trên tập dữ liệu Substation gồm 306 ảnh đã được giới thiệu ở phần 3.2.1 Tập dữ liệu Substation là tập dữ liệu thu thập trong môi trường làm việc thực tế của trạm biến áp và hoàn toàn không được dùng để huấn luyện hai mô hình trên mà chỉ dùng với mục đích đánh giá mô hình
-Ta thực hiện suy luận tất cả các ảnh trong tập dữ liệu trên với hai mô hình đã huấn luyện cũng như với một số mô hình đã huấn luyện sẵn (pre-trained models) để có cách nhìn tổng quan nhất
- Một số kết quả suy luận của 2 mô hình EfficientDet–D1 và YOLOv5–m được thể hiện ở các hình ảnh sau:
Hình 4.3 So sánh kết quả nhận diện thực tế của mô hình EfficientDet-D1 (trái) và
- Từ các kết quả dự đoán của hai mô hình thể hiện ở các hình trên, bằng mắt thường ta có thể thấy được mạng YOLOv5-m có kết quả tốt hơn trong một số tình huống người đứng lẫn khuất sau các thanh sắt, cột điện (Hình 4.3(c)) Cả hai mô hình ít xảy ra trường hợp dự đoán nhằm vật thể khác thành người, tuy nhiên vẫn có một số tình huống mà hai mô hình bỏ sót người
- Tiến hành tính các giá trị Precision và Recall từ tập dữ liệu đánh giá trên và thu được biểu đồ đường cong Precision-Recall [12] với 11 mức ngưỡng IoU khác nhau
Hình 4.4 Đường cong Precision-Recall mô hình EfficientDet-D1 và YOLOv5-m
- Thực hiện đánh giá kết quả dự đoán của hai mô hình vừa huấn luyện và so sánh kết quả với các mô hình đã được huấn luyện sẵn (pretrained model) đã được công bố [35] Kết quả đánh giá được thể hiện ở Bảng 4.3
Bảng 4.3 So sánh độ chính xác của các mô hình Object Detection
Model mAP AP@75 AP@50 Input Type Dataset
Trên tập dữ liệu Substation
- Từ kết quả đánh giá trên, ta có thể thấy mô hình YOLOv5-m mà chúng ta huấn luyện có kết quả tốt hơn nhiều so với mô hình EfficientDet-D1 và vẫn có độ chính xác cao hơn mô hình YOLOv5-m pretrained
- Với kết quả đánh giá thu được, ta có thể kết luận mô hình YOLOv5-m vừa huấn luyện được có độ chính xác tốt nhất để phát hiện người trong TBA Một vấn đề cần đánh giá nữa là hiệu năng tính toán của 2 mô hình Efficient Det và YOLOv5 khi đã tối ưu bằng TF-TensorRT và TensorRT trên Triton Serving để có kết luận cuối cùng
- Đối với mô hình Classification được huấn luyện để phân biệt người có đội mũ bảo hộ hay không, ta sử dụng mô hình ResNet-50 [9] như đã trình bày ở các phần trên Sau khi huấn luyện và đánh giá với tập dữ liệu Validation gồm 817 ảnh và cho độ chính xác 95%
- Tuy nhiên, như đã nêu ở phần 2 thì độ đo Accuracy chỉ thể hiện một các chung chung về tổng số kết quả dự đoán đúng trong toàn bộ tập dữ liệu và không cho chúng ta cái nhìn cụ thể về độ chính xác của từng lớp dữ liệu Cộng với việc ta chỉ đánh giá mô hình ResNet-50 vừa huấn luyện trên tập dữ liệu khá nhỏ (817 ảnh) thì không thể nào vội vàng kết luận về độ chính xác của mô hình được
- Chính vì vậy, ta sẽ tiến hành đánh giá độ chính xác của mô hình trên các độ đo Precision và Recal, cũng như sử dùng phương pháp AUC đã đề cập ở phần 2 để đánh giá mô hình
- Để kết quả có độ tin cậy cao nhất, ta sẽ đánh giá mô hình với tập dữ liệu Test gồm 5533 ảnh trong đó có 2654 ảnh người không đội mũ bảo hộ và 2879 ảnh người có đội mũ bảo hộ
- Sau khi thực thi suy luận để nhận diện người và phân loại người có đội mũ bảo hộ hay không Đây là một số hình ảnh kết quả ta thu được
Hình 4.5 Kết quả phân loại của mô hình ResNet-50
- Tiếp theo ta thực hiện tính các độ đo Precision và Recall của mô hình ResNet-
50 trên tập dữ liệu Test
- Ở đây, mô hình ResNet-50 vừa huấn luyện có 2 lớp dữ liệu cần phân biệt: class_id=0: mô hình dự đoán ảnh đầu vào là ảnh người không đội mũ bảo hộ class_id=1: mô hình dự đoán ảnh đầu vào là ảnh người có đội mũ bảo hộ
- Với mục tiêu là báo động khi phát hiện người không đội mũ bảo hộ, ta xem class_id = 0 là lớp Positive và class_id = 1 là lớp Negative Kết quả của quá trình đánh giá mô hình ResNet-50 được thể hiện ở Hình 4.6 cụ thể như sau:
Kết quả tối ưu mô hình Deep Learning
- Các mô hình Deep Learning sau khi được huấn luyện và đánh giá đều đạt được độ chính xác khá cao Tuy nhiên do đây là các mô hình có độ phức tạp trong kiến trúc cũng như dung lượng khá lớn nên thời gian suy luận của các mô hình gốc (Native Models) này thường rất lâu và không thích hợp cho việc triển khai các mô hình này lên hệ thống giám sát thực tế
- Chính vì thế sau quá trình sử dụng TensorRT để tối ưu hoá mô hình YOLOv5 cùng như TensorFlow-TensorRT để tối ưu hoá mô hình EfficientDet như đã trình bài ở phần 3.3 Ta cần đánh giá lại độ chính xác của các mô hình được tối ưu và hiệu năng tính toán của chúng để tìm ra mô hình thích hợp nhất Mô hình được đánh giá tốt khi có độ chính xác cao và thời gian xử lý nhanh
- Về đánh giá độ chính xác, ta tiến hành tính độ đo mAP để đánh giá các mô hình YOLOv5-m được tối ưu hoá về mức chính xác FP32 và FP16 so với YOLOv5- m gốc (Native) Tương tự với EfficientDet-D1 được tối ưu hoá về FP32 (chưa thể chuyển về mức chính xác FP16) để so sánh với EfficientDet-D1 Native
- Về quá trình đánh giá hiệu năng của các mô hình trên ta thực hiện như phương pháp đã trình bày ở phần 4.1 khi Client và Server được triển khai trên cùng một máy để giảm thời gian truyền tải dữ liệu
- Các model được đánh giá là:
+ EfficientDet-D1-native: là mô hình gốc (Native Model) thu được sau khi huấn luyện chưa qua tối ưu hóa
+ EfficientDet-D1-FP32: là mô hình đã được tối ưu hóa từ Native
Model bằng TF-TRT có độ chính xác tính toán FP32
+ YOLOv5-m-exp23-native: là mô hình gốc thu được qua quá trình huấn luyện chưa qua tối ưu hóa
+ YOLOv5-m-exp23-FP32: là mô hình đã được tối ưu hóa từ model native bằng TensorRT có độ chính xác tính toán FP32
+ YOLOv5-m-exp23-FP16: là mô hình đã được tối ưu hóa từ model native bằng TensorRT có độ chính xác tính toán FP16
- Kết quả của quá trình đánh giá các mô hình thể hiện ở 2 Bảng 4.3 và 4.4
Bảng 4.4 Kết quả đánh giá độ chính xác của các mô hình
Bảng 4.5 Kết quả đánh giá hiệu năng của các mô hình
-Từ hai bảng đánh giá trên ta có thể thấy rằng tuy độ chính xác bị suy hao qua quá trình tối ưu hoá mô hình bằng TensorRT, tuy nhiên đổi lại hiệu năng tính toán của các mô hình tăng đáng kể, đặc biệt là mô hình YOLOv5-m-FP16 với hiệu năng tăng hơn 300% so với YOLOv5-m-Native
- Biểu đồ Hình 4.8 cho ta thấy rõ ràng hơn về lợi ích của việc tối ưu hoá mô hình bằng TensorRT khi dù có độ chính xác tương đương nhau nhưng tốc độ xử lý của YOLOv5-m-FP16 lại vượt trội (gấp 2 lần) so với YOLOv5-m-FP32
Hình 4.8 So sánh sự tương quan giữa độ chính xác và tốc độ xử lý của các models
- Chính vì thế, YOLOv5-m-FP16 sẽ được sử dụng làm mô hình chính cho hệ thống giám sát
- Cùng với đó, ta cũng đánh giá hiệu năng của mô hình ResNet-50 khi đã tối ưu về độ chính xác tính toán là FP16 Ta thực hiện suy luận ở 4 kích thước batchsize ngõ vào khác nhau là 1, 4, 8, 16 tương đương với số ảnh được inference cùng một lúc
Bảng 4.6 Kết quả đánh giá hiệu năng của các mô hình ResNet-50
- Ở Bảng 4.6, độ đo FPS không phản ánh số ảnh xử lý trong 1 giây mà thể hiện số lượng request được suy luận trong 1 giây Ví dụ với batchsize, mô hình có tốc độ xử lý là 84 FPS nghĩa là có 84 request được xử lý, mỗi request có 16 ảnh suy ra có 16*84 = 1344 ảnh được xử lý trong một giây Từ đây ta có thể thấy được hiệu quả của tính năng Dynamic Batching của Triton Serving khi triển khai cho mô hình ResNet-50.
Kết quả hiệu năng tính toán trên Triton Serving
- Sau khi đánh giá và tìm ra được mô hình thích hợp nhất cho hệ thống là YOLOv5-m-FP16 có tốc độ xử lý rất cao và độ chính xác ở mức chấp nhận được Ta tiến hành triển khai mô hình này lên Triton Serving để sẵn sàng cho việc xử lý AI cho hệ thống
- Như đã giới thiệu ở phần trước, ngoài việc có thể tạo ra một môi trường hoạt động cho các mô hình Deep Learning, Triton Serving giúp chúng ta có thể triển khai một pipeline xử lý AI hoàn chỉnh trên Server nhờ sự hỗ trợ của thư viện DALI Với mục đích giảm tải cho Client trong việc phải tiền xử lý dữ liệu trước khi gửi lên Server và hậu xử lý khi nhận kết quả, ta đã xây dựng được một serving có thể xử lý hoàn toàn quá trình pre và post-processing trên Server ở phần 3 Sau đây ta sẽ đánh giá hiệu năng xử lý của các AI pipeline đó và so sánh chúng với các quá trình xử lý truyền thống
- Ở đây, với phần so sánh các mô hình Object Detection ta sẽ so sánh quá trình suy luận của mô hình YOLOv5-m-FP16 với 3 hình thức xây dựng sau:
+ YOLOv5-m-FP16 là mô hình được triển khai trên Triton Serving là không tính thời gian pre-processing và post-processing
+ YOLOv5-m-FP16 (pre+post client) cũng là mô hình YOLOv5-m- FP16 trên Triton Serving nhưng ta sẽ tính thêm thời gian cho pre-processing và post- processing ở Client
+ YOLOv5-m-DALI cũng là mô hình YOLOv5-m-FP16 nhưng được tích hợp thêm phần post-processing và pre-processing tại Triton Serving
- Thực hiện bài đánh giá quá trình suy luận của các mô hình trên với số lượng concurrent request lần lượt là 10 và 100 và số lượng ảnh tương ứng là 200 và 100 ảnh Ta đánh giá với 3 kích thước ảnh khác nhau là 360x640, 640x640, 720x1280 mỗi quá trình đánh giá thực hiện 3 lần và kết quả là trung bình của 3 lần đánh giá
- Kết quả đánh giá của 3 mô hình trên được thể hiện ở Bảng 4.7
Bảng 4.7 Kết quả hiệu năng của các mô hình triển khai trên Triton Serving
- Từ bảng kết quả đo trên, ta thiết lập một đồ thị như Hình 4.9 để dễ dàng so sánh Dựa vào đồ thị so sánh ta có thể thấy, việc sử dụng DALI để tích hợp quá trình pre-processing và post-processing từ Client lên Triton Serving giúp hiệu năng tính toán cải thiện một cách đáng kể với FPS của mô hình YOLOv5-m-DALI đạt được là
411 tăng gần 40% so với với YOLOv5-m-FP16 (chưa tính quá trình tiền và hậu xử lý) và tăng gấp 4 lần nếu so sánh với YOLOv5-m-FP16 với thời gian xử lý pre-post- processing tại Client
Hình 4.9 So sánh tốc độ xử lý của các model khi triển khai trên Triton Serving
- Ngoài ra, ta cũng đánh giá luôn hiệu năng thực thi của Triton Serving khi kết hợp tính toán cả hai mô hình YOLOv5-m-FP16 và ResNet-50 để phục vụ cho bài toán thứ 3 là phát hiện người không đội mũ bảo hộ Với quá trình tính toán hoàn toàn được thực hiện tại Triton Serving từ khâu pre-process đến phát hiện người, cắt ảnh người và sử dụng ResNet-50 để phân loại hình ảnh và trả về kết quả suy luận
- Ta so sánh hiệu năng thực thi hai mô hình trên khi số người trong ảnh thay đổi từ 1 thành 8 người Điều này có nghĩa là khối lượng tính toán ở mô hình ResNet-
50 sẽ tăng từ 1 lên 8 lần
Bảng 4.8 Kết quả hiệu năng khi kết hợp 2 mô hình YOLOv5 và ResNet-50
- Kết quả đo được thể hiện ở Bảng 4.8 và từ đó suy ra được biểu đồ so sánh hiệu năng ở Hình 4.10
- Ta thấy, khi số lượng người thay đổi thì hiệu năng tính toán của mô hình cũng thay đổi đáng kể nên sẽ cần cải thiện thêm về khâu xử lý để cho kết quả tốt hơn vì nếu môi trường thực tế có nhiều người thì sẽ ảnh hưởng nhiều đến hiệu năng tính toán chung của hệ thống
Hình 4.10 So sánh tốc độ xử lý của mô hình kết hợp YOLOv5+ResNet-50 với
Kết quả hiệu năng tính toán thực thi tại Edge Device
- Các thông số đánh giá ở phần 4.4 được đo khi Client và Server chạy trên cùng một máy tính nhằm mục đích triệt tiêu độ trễ của quá trình truyền tải dữ liệu thông qua mạng Ethernet Nên các thông số trên phản ảnh được hiệu năng tối đa mà Card đồ hoạ RTX 3090 đáp ứng để có thể suy luận các mô hình tại Server qua Triton Serving Cho ta biết được với tài nguyên phần cứng hiện tại, thì hiệu năng tối đa mà Server có thể thực thi được là bao nhiêu
- Còn với hệ thống giám sát mà ta muốn xây dựng với nền tảng giao tiếp giữa
- Chính vì vậy, độ trễ trên đường truyền là một vấn đề cần phải xem xét Do vậy, phần đánh giá này sẽ đo hiệu năng của quá trình suy luận khi các Client gửi request đặt tại Edge Device và so sánh với kết quả đo ở phần 4.4 để thấy được sự ảnh hưởng của đường truyền đối với hệ thống giám sát của chúng ta
- Để tăng tính thuyết phục, ta thực hiện khởi chạy một mô hình pre-trained là YOLOv4-tiny tại chính Edge Device để cùng so sánh hiệu năng xem liệu việc thực thi tại Edge Device có tốt hơn việc gửi request về Server hay không?
- Ta tiến hành đo hiệu năng của các mô hình sau
+ YOLOv5-m-FP16 (pre+post client) là mô hình thực hiện quá trình pre_processing và post_processing tại Edge Device (Client) và quá trình suy luận AI trên Triton Serving đặt tại Server
+ YOLOv5-m-DALI là mô hình thực hiện việc gửi request tại ED
(Client) và quá trình pre-processing, suy luận AI, post-processing tại Triton Serving
+ YOLOv4-tiny là mô hình nhận diện người triển khai tại ED
- Ngoài ra ta cũng tiến hành đo hiệu năng quá trình kết hợp giữa YOLOv5 và ResNet-50 khi gửi request tại ED và thực thi suy luận ở Triton Serving qua hai mô hình YOLOv5-ResNet-DALI có batch_size cho ResNet lần lượt là 1 và 8
- Kết quả đo khi thực thi tại Edge Device được thể hiện ở Bảng 4.9
Bảng 4.9 Kết quả hiệu năng của các mô hình khi thực thi tại Edge Device
- Từ bảng dữ liệu trên ta lập một biểu đồ (Hình 4.11) để so sánh hiệu năng giữa các mô hình thực thi tại Edge Device gồm YOLOv5-m-FP16 (pre+post client) và YOLOv5-m-DALI với các mô hình tương đương nhưng thực thi tại Server, cùng với đó là so sánh với mô hình YOLOv4-tiny thực thi hoàn toàn tại ED (không gửi request lên Server)
- Kết quả so sánh cho thấy, dù bị giảm khá nhiều khi thực hiện gửi dữ liệu suy luận AI từ ED lên Server, nhưng tốc độ xử lý của các mô hình vẫn đáp ứng được tốc độ real-time cho camera
- Như trên Hình 4.10, với việc sử dùng mô hình YOLOv5-m-DALI gửi request từ ED với kích thước ảnh 360x640 ta có thể đạt tốc độ xử lý là 168 FPS gấp 4 lần so với việc suy luận tại ED với mô hình YOLOv4-tiny Với tốc độ này ta hoàn toàn có thể chạy cùng một lúc 4-5 camera có tốc độ 25FPS để suy luận AI mà không bị trễ
Hình 4.11 So sánh tốc độ xử lý các mô hình YOLOv5-m khi thực thi tại Edge
Device và tại Server ta có thể thấy, vẫn có suy hao trong việc truyền dữ liệu nhưng với tốc độ xử lý này, ta vẫn hoàn toàn có thể chạy được 5 camera để phát hiện người không đội mũ bảo hộ ở độ phân giải 360x640 Tuy nhiên để việc cảnh báo chính xác ta chỉ nên chạy 1 camera có độ phân giải 720x1280
Hình 4.12 So sánh tốc độ xử lý các mô hình kết hợp YOLOv5+ResNet-50 khi thực thi tại Edge Device và tại Server
- Sau khi đã chọn được các phương pháp phù hợp để tích hợp vào hệ thống giám sát, bài kiểm tra cuối cùng là tính ổn định của hệ thống Hai hình dưới đây là toàn bộ các thông số FPS của các camera gửi về khi hệ thống hoạt động thực tế Hệ thống giám sát chạy mô hình YOLOv5-m-DALI với ngõ vào là ảnh có kích thước 360x640 và thực hiện trên 4 camera trong khoảng thời gian 2 ngày liên tục
Hình 4.13 Tốc độ của 4 camera ghi nhận trong 2 ngày khi chạy các mô hình AI
Hình 4.14 Tốc độ trung bình của các camera ghi nhận trong 2 ngày khi chạy các mô hình AI
- Nhìn vào Hình 4.13 và 4.14 ta có thể thấy rằng, tuy các camera có tốc độ thay đổi khác nhau tuy nhiên vẫn giữ ở tốc độ 25 FPS
- Ta thấy có 2 khoảng thời gian mà tốc độ của camera ít thay đổi nhất chính là thời gian ban đêm khi ít người xuất hiện trong các camera, lúc đó mô hình AI sẽ ít được thực thi nhờ vào hiệu quả của thuật toán phát hiện chuyển động Vào ban ngày, khi có nhiều người xuất hiện, hệ thống phải thực thi các tác vụ suy luận AI, tuy nhiên