Tối ưu hố mơ hình Deep Learning bằng TensorRT

Một phần của tài liệu Huấn luyện, tối ưu và triển khai mô hình nhận diện người trên hệ thống giám sát của trạm biến áp (Trang 33)

2. CƠ SỞ LÝ THUYẾT

2.4. Tối ưu hố mơ hình Deep Learning bằng TensorRT

2.4.1.!Giới thiệu về TensorRT

- NVIDIA TensorRT [18] là một SDK được tạo ra với mục đích tối ưu hố các mơ hình Deep Learning, nâng cao hiệu năng tính tố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 tố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 hố 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 hố 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 hố tính tố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.

2.4.2.!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 để q trình tính tốn được nhanh và hiệu quả hơn mà khơng làm thay đổi kết quả trính tốn cơ bản

lệnh tính tố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 tố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 tố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 hố 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ả.

2.4.3.!Reduce Mixed Precision

- 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 tốn lan truyền ngược (Back-Propagation) [22] được tốt hơn. Tuy nhiên việc tính tốn trong q 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 tố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 tố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, q trình tính tốn nhanh hơn nhiều lần. Q 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 tốn của mơ hình sẽ tăng đáng kể như Hình 2.17.

2.5.! Nền tảng triển khai mơ hình Deep Learning trên Server

2.5.1.!Triton Serving

- 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 đào tạo trên nhiều framework khác nhau như TensorFlow, NVIDIA TensorRT [18],

Pytorch, ONNX Runtime, … Ngồ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 tốn trở nên nhanh hơn và tiết kiệm tài ngun 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 q 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 ngun tính tốn.

2.5.2.!DALI Triton Backend

- 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 q 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.

- 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 hồn tồn có thể kết hợp NVIDIA DALI với Triton Serving để tối ưu hố q 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ả q trình dùng DALI trong Ensemble Model của Triton Serving

3.!QUÁ TRÌNH THỰC HIỆN

3.1.! Ý 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 tố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 tố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 hố 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

3.2.! Huấn luyện mơ hình Deep Learning

3.2.1.!Chuẩn bị dữ liệu

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

- Ngồ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

Substation Dataset

- 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

- Ngồ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.

Youtube Dataset

- Để 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

Tăng cường dữ liệu

- 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 đó.

3.2.1.2.! Mơ hình Classification

- Mơ hình này dùng để giải quyết bài tố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 q 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 q 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 q 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. Ngồ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 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ộ

3.2.2.!Huấn luyện mơ hình

3.2.2.1.! Mơ hình Object Detection

- 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 độ

Một phần của tài liệu Huấn luyện, tối ưu và triển khai mô hình nhận diện người trên hệ thống giám sát của trạm biến áp (Trang 33)

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

(113 trang)