Chương 1. TỎNG QUAN DE TÀI. Lý do thực hiện để tài. Nội dung chính.
Giới hạn để tài.ccccccccvscrrerrtrrrrrrrrrrrrrrrrrrrrrrrrrrrrre3 Chương2. CO SỞ LÝ THUYẾT. Boot linux SD Card image trên board DE1-SoC. Số dau cham động (Floating point) 2.
_ Khái niệm số dau chấm động 2. Chuan half-precision floating-point ieee-754-2008. Convolutional Neural Network — Mạng Noron tích chap. Convolutional Layer — Lớp tích chập.
Pooling Layer - Lớp tổng hợp. Fully Connected Layer — Lớp kết nối đầy đủ. Activation function - Các hàm kích hoạt ll 2. + St TH HH riưyc 2 2.
St TT re 2 2. Hàm tính IOŨ. Nhược điểm của YOLOVl. Dự đoán Vi tri trỰC tIÊp.
Bộ phân loại độ phân giải cao. __ Fine-Grained Features. Multi-Scale Training. __ Light-weight backbone.
Field Programmable Gate Array (FPGA). Tổng quan về board DEI-SoC. Intel® FPGA SDK for OpenCLTM,. Quy trình programing FPGA sử dung Intel® FPGA SDK for Chuong3.
| XAY DUNG HE DIEU HANH TUY BIEN LINUX CHO BOARD DEI-SOC. HH HH Hi,28 3. Tổng quan về hệ điều hành tùy biến linux cho board DE1-SoC. Quy trình xây du linux SD Card image cho board DEI-SoC.
Các công cụ cần THIS. Tạo file Preloader - preloader-mkpimage. Tạo file u-boot - u-boot. Xây dựng hệ thống file root (root filesystem).
Xây dựng OpenCL driver. Xây dựng file U-Boot SCripL. Tạo SD Card image. | THIET KE VÀ HIEN THUC MO HÌNH CUSTOM YOLO TREN DEI-SOC SỬ DUNG OPENCL.
Hệ thông SoC-FPGA của đề tai 4. Tổng quan hệ thống. Ludng hiện thực hệ thống SoC trong nhận diện đối tượng. Thiết kế mô hình YOLO tùy biến trên HPS portion.
Thiết kế bộ nhân ma tran (General matrix multiply) trên FPGA portion. Huấn luyện mô hình custom yolo. Chuẩn bị dữ liệu. Huấn luyện mô hình.--¿¿+222++++222++++tetrxvrrerrrseecrrg 4I Chương 5.
KÉT QUA VÀ ĐÁNH GIIÁ. Kết quả training mô hình Custom YOLO. Kết quả thực nghiệm mô hình. Kết quả chạy mô hình với ảnh.
Kết quả chạy mô hình với video. Kết quả và đánh giá. Kết quả mong đợi. Kết quả thực t6.
Đánh giá kết quả.-2222cccS2EEEetrEErttrrrrrrrrrrrrve 54 Chương 6. KÉT LUẬN VÀ HƯỚNG PHÁT TRIÊN. Hướng phát triển TÀI LIEU THAM KHẢO.222222-22222222222222222223222222222311112 2222 rrerree 57 DANH MỤC HÌNH ANH Hình 2.1: Layout của SD card dùng dé boot linux vào board DE1-SoC.2: Định dạng số half precision tuân theo tiêu chuẩn IEEE 754-2008.3 Mô hình VGG- 6 .4: Ví dụ về tích chập 2 chiều Stride 1, Valid Padding.5: Lớp Pooling khi Stride bằng 2.6: Lớp kết nói đầy đủ với 7 nốt đầu vào và 5 nốt đầu ra.8: Đồ thị ham Leaky ReLLU.¿-- ¿2222+++22ESS++ttEEYvrrrrrrrrrrrrrrsree 2 Hình 2.9: Sơ đồ kiến trúc mạng YOL/OVI.---2¿¿+2z++22E++z++22+zz+zrzxscez 3 Hình 2.10: Ví dụ về cách thức mô hình YOLO hoạt động .11: Công thức của hàm LOU .12: Kiến trúc mô hình tiny-YOLO.13: Dự đoán bounding box trong trong YOL/Ov2.14: Kiến trúc mô hình YOLOv2.- 2: ©++++£+EE+£+EEEE2EExevrrrerrrsee 21 Hình 2.15: Kiến trúc chung của FPGA Hình 2.16: Cấu trúc của khối logic có thể định cấu hình (CLB).17: Layout thực của board DEI-SOC.- -- + 65+ SS+£xskreerererererevee 24 Hình 2.18: Block diagram của board DEI-SoC.----¿-¿5+s+s+sc++x+x+ccsc++ 24 Hình 2.19: Quy trình thiết kế va biên dịch của một ứng dung sử dung sử dung Intel® FPGA SDK for OpenCLTM,.2c2cctrtttEEEE ri 26 Hình 3.1: BSP(Board Support Package) for Altera SDK OpenCL tại trang chủ Terasic .1: Kiến trúc hệ thống SoC-FPGA.------¿¿:©222+222vvzvv2cvvvrrerrrrrrrrrr 34 Hình 4.2: Luồng thiết kế của mô hình chạy trên board DE1-SoC.3: Hình ảnh kiến trúc mô hình custom YOLO.4: Tensor convolution Hình 4.5: Thuật toán GEMM Hình 4.6: Một số labels trong tập train COCO dataset.3: Kết quả chạy mô hình trên Intel CPU.4: Kết quả chạy mô hình trên Board DEI-SoC Hình 5.5: Kết quả dự đoán video trên board DE1-SoC DANH MUC BANG Bang 2.1: Chi tiết các file hệ thống trong mỗi partition.2: Giá trị thé hiện của số dấu chấm động .-----¿-22c+ccc+scce¿ 6 Bang 4.1: Các thông số của mạng custom YOLO.2: Thẻ hiện số lượng nhãn trong tập dữ liệu VOC và COCO .1: Thẻ hiện độ chính xác AP của từng labeÌs.2: Hiệu suất mô hình Tiny YOLO tập dữ liệu COCO.3: mAP và FLOPS của Tiny Yolov2 và Custom YOoÏO.4: IoU va Recall của Tiny-Yolov2 vs Custom-YoÏO.5: Tốc độ trung bình giữa CPU Intel và DE1-SoC.6: Tài nguyên su dụng trên FPGA của kernel. DANH MỤC TỪ VIẾT TẮT Ký hiệu hoặc viết tắt Chú thích mAP Mean Average Precision FPS Frame per second FPGA Field-programmable gate array CNN Convolutional Neural Network AI Artificial intelligence SDK Software Development Kit YOLO 'You only look once ReLU Rectified Linear Unit IOU Intersection Over Union NN Neural Network HPS Hardware Processor System rbf Raw Binary File dtb Device Tree Blob CLB Configurable Logic Block TÓM TẮT KHÓA LUẬN Trong lĩnh vực computer vision, có rat nhiều chủ dé, bài toán mà con người vẫn đang cố gang tối ưu: classification, object detection/recognition, semantic segmentation, style transfer.
Trong đó object detection là bài toán rat quan trong và phổ biến, ứng dụng rộng rãi. Một trong những cách dùng dé cải thiện tốc độ tính toán là hiện thực mang CNN (Convolutional Neural Network) trên FPGA (Field- programmable gate array). Tuy nhiên việc sử dung FPGA gặp một trở ngại đó là việc phải sử dụng ngôn ngữ đặc tả phần cứng đề thiết kế mạng CNN khá phức tạp và tốn nhiều thời gian. Để giải quyết khó khăn trên, trong đề tài này, nhóm đề xuất một hướng đi mới trong việc thiết kế phần cứng là sử dụng công nghệ Intel® FPGA SDK (Software Development Kit) for OpenCLTM để thiết kế phần cứng bằng ngôn ngữ C với framework OpenCL.
Từ đó hiện thực mang CNN trên board DEI-SoC dùng dé giải quyết bài toán Object detection với độ chính xác trung bình (Mean Average Precision ~ mAP) là 13.54% và tốc độ xử lý đạt trung bình là 3~4 FPS (Frame per second). TONG QUAN DE TÀI 1. Tổng quan Trong thời đại ngày nay, AI (artificial intelligence) mà cụ thé là lĩnh vực computer vision đã đang là một trong những lĩnh vực được quan tâm và đầu tư phát triển nhất trên hầu hết các quốc gia. Và một trong những lĩnh vực nghiên cứu nhiều nhất hiện nay là việc làm sao dé tăng tốc cho quá trình tính toán của mang CNN.
Một trong những phương pháp có thé nói đang là xu hướng hiện nay đó là việc hiện thực mô hình CNN lên FPGA do ưu điểm là khả năng tái lập trình và tốc độ tính toán nhanh. Theo như phương pháp truyền thống, ta sẽ sử dụng ngôn ngữ mô tả phần cứng như Verilog hay VHDL để thiết kế mạng CNN rồi sau đó sẽ nạp lên FPGA. Tuy nhiên nhược điểm của phương pháp nảy đó là ngôn ngữ mô tả phần cứng khá là phức tạp. Việc thiết kế mô hình với các ngôn ngữ trên sẽ tốn rất nhiều thời gian và thậm chí với những mô hình lớn việc thực hiện có thê nói là bat khả thi.
Dé giải quyết van đề trên, Intel phát triển một công nghệ phần mềm gọi là Intel® FPGA SDK for OpenCLTM cung cấp các công cụ giúp chúng ta tổng hợp phần cứng từ ngôn ngữ cấp cao là C với framework OpenCL nạp lên FPGA. Dựa vào công nghệ trên của Intel, dé tai UNG DUNG THUẬT TOÁN PHÁT HIEN DOI TƯỢNG TREN SOC-FPGA SỬ DỤNG OPENCL là một hướng đi mới để hiện thực mạng CNN trên FPGA đề giải quyết các bài toán về phát hiện đối tượng (object detection). Lý do thực hiện đề tài Theo kết quả của nghiên cứu và tìm hiểu của nhóm thì hiện tại các bài báo về đề tài hiện thực mạng CNN lên FPGA thì đã được thực hiện khá nhiều tuy nhiên việc sử dụng công nghệ Intel® FPGA SDK (Software Development Kit) for OpenCLTM của Intel để hiện thực mạng CNN thì chưa có bài báo hay tạp chí nào đề cập đến. Tuy nhiên việc hiện thực CNN bang công nghệ Intel® FPGA SDK for OpenCLTM ở trên thế giới đã được khá nhiều nhóm nghiên cứu thực hiện và đã có những bài báo viết về đề tài này.
Do đó nhóm quyết định thực hiện đề tai này dé có thể giúp các nhóm nghiên cứu sau có thể tiếp cận một hướng đi mới trong việc hiện thực mạng CNN trên FPGA. Mục tiêu thực hiện Mục tiêu chính của để tài là hiện thực mô hình custom YOLO bằng cách sử dụng OpenCL đề tối ưu hóa quá trình thực thi. Từ đó phát triển hệ thống phát hiện nhiều loại đối tượng đa dạng chính xác trong thời gian thực. Kết hợp xây dựng hệ điều hành tùy biến linux đề tối ưu thuật toán trên board.
Nội dung chính Những nội dung chính trong việc thực hiện đề tai nay là: — Xây dựng hệ điều hành linux cho board DEI-SoC. — _ Thiết kế mô hình custom YOLO (You only look once) trên DEI-SoC sử dụng OpenCL. — Hiện thực mô hình custom YOLO trên DE1-SoC và kiểm thử kết qua. Giới hạn đề tài Với framework của nhóm đang sử dụng nhóm thử nghiệm với mô hình Tiny- Yolov2 với 9 lớp convolution việc thực hiện phép toán trên board DEI-SoC là không đủ tài nguyên vì vậy với các tham số đó nhóm quyết định custom mô hình darknet bao gồm 8 lớp dé phát hiện 80 đối tượng phổ biến cần phát hiện cho xu hướng về lĩnh vực thị giác và robot hiện nay đề giảm lượng tài nguyên và tốc độ thực thi tốt hơn với hiệu suất sẽ giảm nhưng không đáng kẻ.
Boot linux SD Card image trên board DE1-SoC Để có thé boot linux lên board DE1-SoC bằng SD Card cần phải tạo trên SD Card 3 partion chứa các file hệ thông được mô tả ở Bảng 2.1 và có layout như Hình 2. Adres Trong mỗi partition cần chứa các file theo Bảng 2.1: Chỉ tiết các file hệ thống trong mỗi partition Vị trí Tên file Mô tả Partition | | zimage Compressed Linux kernel image file soc_system.dtb Linux Device Tree Blob file opencl.rbf Compressed FPGA configuration file uboot.img Uboot Image uboot.scr Uboot Script Partition 2 | rootfs Linux root filesystem Partition 3 | preloader-mkpimage.bin | preloader image 2. Số dấu chấm động (Floating point) 2. Khái niệm số dấu chấm động Trong tính toán, số dau cham động là dạng biểu diễn gần đúng của sé thực với sự thỏa hiệp giữa độ chính xác và khoảng giá trị.
Dạng biểu diễn số dấu chấm động bao gồm một phần định trị (significand), số mũ (exponent) và cơ số (base). Cơ số có thé là 2, 10 hoặc 16. Dạng biểu diễn của số đấu chấm động như sau: Significand x base °šPonent Ví dụ ta biểu dién số thực có giá trị 1.2345 ở dang số dấu chấm động như sau: 1.2345=12345x104 Thuật ngữ dấu cham động chi rằng dấu chấm co số có thé di động, nghĩa là dau cham cơ số có thé đặt tại bất kỳ vị trí nào trong phần định trị của số. Vị trí trên số của dấu chấm này được xác định bởi phần mũ và từ đó biêu diễn số dấu cham động có thể xem là một dạng của biểu diễn khoa học.
Có nhiều dạng biểu diễn số dau cham động được sử dụng trong hệ thống máy tính.