1. Trang chủ
  2. » Giáo Dục - Đào Tạo

NHẬN DIỆN ĐỘNG VẬT BẰNG YOLOv5

40 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 40
Dung lượng 3,23 MB

Nội dung

ĐẠI HỌC ĐÀ NẴNG PHÂN HIỆU TẠI KON TUM BÁO CÁO TIỂU LUẬN ĐỀ TÀI NHẬN DIỆN ĐỘNG VẬT BẰNG YOLOv5 GIÁO VIÊN HƯỚNG DẪN : TS HUỲNH HỮU HƯNG SINH VIÊN THỰC HIỆN : SY THATOM LỚP : K12TT MSSV :1817480201026 Kon tum, tháng 10 năm 2022 ĐẠI HỌC ĐÀ NẴNG PHÂN HIỆU TẠI KON TUM BÁO CÁO TIỂU LUẬN ĐỀ TÀI NHẬN DIỆN ĐỘNG VẬT BẰNG YOLOv5 GIÁO VIÊN HƯỚNG DẪN : TS HUỲNH HỮU HƯNG SINH VIÊN THỰC HIỆN : SY THATOM LỚP : K12TT MSSV :1817480201026 Kon tum, tháng 10 năm 2022 MỤC LỤC DANH MỤC HÌNH ẢNH .6 DANH MỤC BẢNG .7 CHƯƠNG 1: TỔNG QUAN 1.1 Giới thiệu 1.2 Mục tiêu đề tài 1.3 Giới hạn đề tài 1.4 Phương pháp nghiên cứu 1.5 Đối tượng và phạm vi nghiên cứu 1.6 Bố cục quyển báo cáo CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Tổng quan về YOLO .9 2.1.1 Kiến trúc mạng YOLO 2.1.2 Nguyên lý hoạt động của mạng YOLO 11 2.2 Output của YOLO 12 2.2.1 Dự báo nhiều feature map 13 2.2.2 Anchor box 15 2.2.3 Hàm mất mát ( Loss Function) 16 2.2.3.1 Classification Loss 17 2.2.3.2 Localization Loss .18 2.2.3.3 Confidence Loss 18 2.3 Dự báo bounding box 19 2.3.1 Non-max suppression 20 2.4 Thuật toán sử dụng YOLOv5 .21 2.4.1 Phân loại YOLOv5 .21 2.5 Cấu trúc của YOLOv5 việc nhận diện vật thể (Object Detection) .23 2.6 Những cải tiến của YOLOv5 so với các phiên bản trước 24 CHƯƠNG : THIẾT KẾ HỆ THỐNG .25 3.1 Tập dữ liệu chuẩn bị cho quá trình huấn luyện 25 3.2 Quá trình huấn luyện .28 3.2.1 Tiến hành huấn luyện 29 CHƯƠNG 4: KẾT QUẢ .31 4.1 Kết quả quá trình huấn luyện 31 4.2 Hoạt động của hệ thống 32 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 34 5.1 Kết luận 34 5.2 Hướng phát triển 34 PHỤ LỤC 35 TÀI LIỆU THAM KHẢO 38 DANH MỤC HÌNH ẢNH Hình 2.1: Kiến trúc mạng YOLO 10 Hình 2.2: Các layer mạng darknet-53 11 Hình 2.3: Cách hoạt động của mạng YOLO 12 Hình 2.4: Kiến trúc một output của model YOLO 13 Hình 2.5: Các feature maps mạng YOLOv3 với input shape 416x416, output feature maps có kích thước 13x13, 26x26 52x52 14 Hình 2.6: Xác định anchor box cho vật thể 15 Hình 2.7: Khi vật thể người xe trùng mid point thuộc cell Thuật toán cần thêm lượt tiebreak để định đâu class cho cell .16 Hình 2.8: Tính toán Loss Function cho object: tam giác và hình thoi .17 Hình 2.9: Công thức ước lượng bounding box từ anchor box .20 Hình 2.10: Non-max suppression Từ bounding box ban đầu bao quanh xe giảm xuống bounding box cuối 20 Hình 2.11: So sánh kích thước lưu trữ Model của các mẫu mã YOLOv5 22 Hình 2.12: So sánh độ trễ trung bình giữa các phiên bản YOLO(v3,v4,v5) .23 Hình 2.13: Cấu trúc nhận diện vật thể của YOLOv5 24 Hình 3.1: Hình ảnh về Trâu và label của từng hình .25 Hình 3.2: Hình ảnh về Hươu và label của từng hình 26 Hình 3.3: Hình ảnh về Voi và label của từng hình 26 Hình 3.4: Hình ảnh về Hươu cao cổ và label của từng hình 27 Hình 3.5: Sử dụng roboflow.ai để gia tăng tập dữ liệu vốn có 27 Hình 3.6: clone Yolov5 và cài đặt các dependencies 28 Hình 3.7: Thêm các hình và label cho quá trình huấn luyện .28 Hình 3.8: Phân chia hình theo label từng loài 29 Hình 3.9: Quá trình huấn luyện với 16 lớp và 100 lần 29 Hình 4.1: Kết quả display sau đã train xong 30 DANH MỤC BẢNG Bảng 1: Đánh giá mức độ chính xác của quá trình nhận diện 32 TỔNG QUAN Giới thiệu Ngày nay, trí tuệ nhân tạo-Artificial Intelligence (AI) ngày càng phở biến và góp phần thay đổi sâu sắc nhiều khía cạnh sống ngày Trong thị giác máy tính-Computer Vision (CV) lĩnh vực quan trọng AI bao gồm phương pháp thu nhận, xử lí ảnh kỹ thuật số, phân tích nhận dạng hình ảnh Mạng Nơron học sâu (Deep learning Network) lĩnh vực nghiên cứu thuật toán, chương trình máy tính để máy tính học tập đưa dự đoán người Nó ứng dụng vào nhiều ứng dụng khác khoa học, kỹ thuật, lĩnh vực đời sống khác ứng dụng phân loại phát đối tượng Một ví dụ điển hình CNN (Convolutional Neural Network) áp dụng để nhận dạng tự động, tìm hiểu mẫu phân biệt từ ảnh cách xếp chồng liên tiếp lớp lên nhiều ứng dụng, CNN coi trình phân loại ảnh mạnh thúc đẩy cơng nghệ lĩnh vực thị giác máy tính, làm địn bẩy cho q trình học máy Nhưng bên cạnh đó, để phân loại đối tượng cơng nghệ CNN tiêu tốn cực lớn tài nguyên băng thông, nhớ khả xử lý phần cứng Để giảm thiểu tài nguyên tiêu hao này, thuật tốn, mơ hình giải thuật theo thời gian đời ngày nhiều có mơ hình YOLOv5 cho tốn nhận diện, cụ thể ứng dụng vào đề tài “Nhận diện động vật” Mục tiêu đề tài Vận dụng được những kiến thức bản về huấn luyện mạng nơ-ron Xây dựng được một mô hình có khả huấn luyện các tập dữ liệu động vật khác Nhận diện được tất cả các loài động vật có tập dữ liệu Giới hạn đề tài Trong đề tài này nhận diện 1loài động vật là: Chim bổ câu Tập dữ liệu có số lượng ảnh hưởng đến độ xác mộ hình Phương pháp nghiên cứu Dựa các kiến thức đã học về cách huấn luyện một mạng nơ-ron Thu thập tài liệu, tham khảo ứng dụng liên quan có trước Đới tượng và phạm vi nghiên cứu Nhận dạng các loài động vật hoang dã tự nhiên có tập dữ liệu, loài động vật: Chim bổ câu CƠ SỞ LÝ THUYẾT Trong vài năm trở lại đây, Object detection đề tài hot deep learning khả ứng dụng cao, liệu dễ chuẩn bị kết ứng dụng nhiều Các thuật tốn Object detection YOLO, SSD có tốc độ nhanh độ xác cao nên giúp cho Object Detection thực tác vụ dường real time, chí nhanh so với người mà độ xác khơng giảm Các mơ hình trở nên nhẹ nên hoạt động thiết bị IoT để tạo nên thiết bị thông minh Tổng quan về YOLO YOLO(You only look once) là mơ hình mạng CNN cho việc phát hiện, nhận dạng, phân loại đối tượng. YOLO được tạo từ việc kết hợp convolutional layers connected layers Trong đóp convolutional layers trích xuất feature ảnh, cịn full-connected layers dự đốn xác suất tọa độ đối tượng.[1] YOLO khơng phải thuật tốn tốt thuật tốn nhanh lớp mơ hình object detection Nó đạt tốc độ gần real time mà độ xác khơng giảm so với model thuộc top đầu YOLO thuật tốn object detection nên mục tiêu mơ hình khơng dự báo nhãn cho vật thể tốn classification mà cịn xác định location vật thể Do YOLO phát nhiều vật thể có nhãn khác ảnh thay phân loại nhãn cho ảnh Một ưu điểm mà YOLO đem lại sử dụng thơng tin tồn ảnh lần dự đốn tồn object box chứa đối tượng, mơ hình xây dựng theo kiểu end-to-end nên huấn luyện hoàn toàn gradient descent Tính đến thời điểm hiện tại YOLO đã có tổng cộng phiên bản(v1,v2,v3,v4,v5) Trong đó bản v5 là bản mới nhất, khác phục được các nhược điểm của các phiên bản trước như: lỗi việc xác định vị trí vật thể, ràng buộc không gian bounding box, grid cell predict bounding box, 2.1.1 Kiến trúc mạng YOLO Kiến trúc YOLO bao gồm: Base network mạng convolution làm nhiệm vụ trích xuất đặc trưng Phần phía sau Extra Layers áp dụng để phát vật thể feature map base network Base network YOLO sử dụng chủ yếu convolutional layer fully conntected layer Các kiến trúc YOLO đa dạng tùy biến thành version cho nhiều input shape khác nhau.[1] Hình 2.1: Kiến trúc mạng YOLO Thành phần Darknet Architechture gọi base network có tác dụng trích suất đặc trưng Output base network feature map có kích thước 7x7x1024 sử dụng làm input cho Extra layers có tác dụng dự đốn nhãn tọa độ bounding box vật thể Ở phiên bản thứ của YOLO tức là YOLOv3 tác giả áp dụng mạng feature extractor darknet-53 Mạng gồm 53 convolutional layers kết nối liên tiếp, layer theo sau batch normalization activation Leaky Relu Để giảm kích thước output sau convolution layer, tác giả down sample filter với kích thước Mẹo có tác dụng giảm thiểu số lượng tham số cho mơ hình Hình 2.2: Các layer mạng darknet-53 Các ảnh đưa vào mô hình scale để chung kích thước phù hợp với input shape mơ hình sau gom lại thành batch đưa vào huấn luyện Hiện YOLO hỗ trợ đầu vào 416x416 608x608 Mỗi đầu vào có thiết kế layers riêng phù hợp với shape input Sau qua layer convolutional shape giảm dần theo cấp số nhân Cuối ta thu feature map có kích thước tương đối nhỏ để dự báo vật thể ô feature map.[1] Kích thước feature map phụ thuộc vào đầu vào Đối với input 416x416 feature map có kích thước 13x13, 26x26 52x52 Và input 608x608 tạo feature map 19x19, 38x38, 72x72 2.1.2 Nguyên lý hoạt động của mạng YOLO 10 Quá trình huấn luyện Sử dụng nền tảng có sẵn Google Colab kết hợp với models YOLOv5 để tiến hành quá trình huấn luyện Hình Clone yolov5 cài đặt dependencies Sau clone xong, uploade file zip datasets mơi tạo xong từ công cụ Makesense.ai vào google colab unzip Hình 3.1: upload unzip datasets 26 Sau sửa dư liệu coco128.yaml lưu lại xong Hinh coco128.yaml sau sửa dư liệu Tiến hành huấn luyện Chaỵ câu lệnh python train.py với 16 lớp và 200 lần 49 hình ảnh 27 Hinh Quá trình huấn luyện với 16 lớp 200 lần Sau chaỵ câu lệnh python train.py với 16 lớp và 200 lần 49 hình ảnh 28 xong, nhận kết tương tự vậy, try cập theo đường dẫn đến file best.pt tải file Hình tải file best.pt Sau chạy câu lệnh python detect.py với link youtube 29 Hinh chạy câu lệnh python detect.py với link youtube 30 KẾT QUẢ Kết quả quá trình huấn luyện Hình 4.1: Kết quả display sau đã train xong 31 32 Hoạt động của hệ thống Dưới là một số hình ảnh quá trình test sau đã training xong Sau tiến hành kiểm tra, nhóm em đưa được bảng đánh giá mức độ chính xác: Tên động vật Tổng số lần Nhận diện 33 Nhận diện sai Độ chính xác ChimBồCâu kiểm tra đúng 3266 3020 146 95,38% Bảng 1: Đánh giá mức độ chính xác của quá trình nhận diện 34 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Mô hình đã bản thực hiện được việc nhận dạng động vật dựa vào tập dữ liệu huấn luyện Độ chính xác chưa cao vì tập dữ liệu còn ít, và đợ đa dạng đợng vật thấp Hướng phát triển Cải tiến thêm giải thuật xử lý ảnh để thu nhận hình ảnh chất lượng tốt Cải tiến giải thuật để ứng dụng phát động vật chưa có đặc tính riêng lồi tương đối đa dạng Đa dạng hóa tập mẫu để ứng dụng nhận dạng đa dạng lồi thu kết xác 35 PHỤ LỤC # clone YOLOv5 repository !git clone https://github.com/ultralytics/yolov5  # clone repo %cd yolov5 !git reset  hard 886f1c03d839575afecb059accf74296fad395b6 # install dependencies as necessary !pip install -qr requirements.txt  # install dependencies (ignore errors) import torch from IPython.display import Image, clear_output  # to display images from utils.google_utils import gdrive_download  # to download models/ datasets # clear_output() print('Setup complete. Using torch %s %s' % (torch. version , torch.cuda get_device_properties(0) if torch.cuda.is_available() else 'CPU')) %cd /content # this is the YAML file Roboflow wrote for us that we're loading into this  notebook with our data %cat data.yaml # define number of classes based on YAML import yaml with open("data.yaml", 'r') as stream:     num_classes = str(yaml.safe_load(stream)['nc']) #this is the model configuration we will use for our tutorial  %cat /content/yolov5/models/yolov5s.yaml #customize iPython writefile so we can write variables from IPython.core.magic import register_line_cell_magic @register_line_cell_magic def writetemplate(line, cell):     with open(line, 'w') as f:         f.write(cell.format(**globals())) %%writetemplate /content/yolov5/models/custom_yolov5s.yaml # parameters nc: {num_classes}  # number of classes depth_multiple: 0.33  # model depth multiple width_multiple: 0.50  # layer channel multiple # anchors anchors:   - [10,13, 16,30, 33,23]  # P3/8   - [30,61, 62,45, 59,119]  # P4/16   - [116,90, 156,198, 373,326]  # P5/32 # YOLOv5 backbone 36 backbone:   # [from, number, module, args]   [[-1, 1, Focus, [64, 3]],  # 0-P1/2    [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4    [-1, 3, BottleneckCSP, [128]],    [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8    [-1, 9, BottleneckCSP, [256]],    [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16    [-1, 9, BottleneckCSP, [512]],    [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32    [-1, 1, SPP, [1024, [5, 9, 13]]],    [-1, 3, BottleneckCSP, [1024, False]],  # 9   ] # YOLOv5 head head:   [[-1, 1, Conv, [512, 1, 1]],    [-1, 1, nn.Upsample, [None, 2, 'nearest']],    [[-1, 6], 1, Concat, [1]],  # cat backbone P4    [-1, 3, BottleneckCSP, [512, False]],  # 13    [-1, 1, Conv, [256, 1, 1]],    [-1, 1, nn.Upsample, [None, 2, 'nearest']],    [[-1, 4], 1, Concat, [1]],  # cat backbone P3    [-1, 3, BottleneckCSP, [256, False]],  # 17 (P3/8-small)    [-1, 1, Conv, [256, 3, 2]],    [[-1, 14], 1, Concat, [1]],  # cat head P4    [-1, 3, BottleneckCSP, [512, False]],  # 20 (P4/16-medium)    [-1, 1, Conv, [512, 3, 2]],    [[-1, 10], 1, Concat, [1]],  # cat head P5    [-1, 3, BottleneckCSP, [1024, False]],  # 23 (P5/32-large)    [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)   ] # train yolov5s on custom data for 100 epochs # time its performance %%time %cd /content/yolov5/ !python train.py  img 416  batch 16  epochs 100  data ' /data.yaml' -cfg ./models/custom_yolov5s.yaml  weights ''  name yolov5s_results  -cache # first, display our ground truth data print("GROUND TRUTH TRAINING DATA:") 37 Image(filename='/content/yolov5/runs/train/yolov5s_results/ test_batch0_labels.jpg', width=900) # print out an augmented training example print("GROUND TRUTH AUGMENTED TRAINING DATA:") Image(filename='/content/yolov5/runs/train/yolov5s_results/ train_batch0.jpg', width=900) # use the best weights! %cd /content/yolov5/ !python detect.py  weights runs/train/yolov5s_results/weights/best.pt -img 416  conf 0.4  source  /test/images #display inference on ALL test images #this looks much better with longer training above import glob from IPython.display import Image, display for imageName in glob.glob('/content/yolov5/runs/detect/exp/*.jpg'): #assu ming JPG     display(Image(filename=imageName))     print("\n") 38 TÀI LIỆU THAM KHẢO [1] Phạm Đình Khanh, “YOLO-You only look once”, Khoa học dữ liệu-Khanh’s blog [2] Phạm Việt Bình, Đỗ Năng Tồn, “Giáo trình mơn học Xử lý ảnh”, Khoa Cơng nghệ Thông tin – Đại học Thái Nguyên, 2007 [3] Nguyễn Quang Hoan, “Giáo trình Xử lý ảnh”, Học viện Cơng nghệ Bưu Viễn thơng, 2006 [4] Nguyễn Đình Thúc, “Trí tuệ nhân tạo, mạng NơRon phương pháp ứng dụng”, NXB Giáo Dục 2000 [5] Quốc Phạm,”Tìm hiểu mô hình YOLO cho bài toán Object Detection” [6] Joseph Nelson, Jacob Solawetz, “YOLOv5 is Here:State-of-the-Art Object Detection at 140 FPS” 39 40

Ngày đăng: 29/10/2022, 15:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w