1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận vấn đáp học phần xử lý ảnh trong công nghiệp đề tài nhận diện động vật ứng dụng xử lý ảnh

32 2 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Nhận diện động vật ứng dụng xử lý ảnh
Tác giả Ngụ Chế Quốc Dai
Người hướng dẫn Mai Vạn Hậu
Trường học Trường Đại Học Giao Thông Vận Tải
Chuyên ngành Xử lý ảnh trong công nghiệp
Thể loại Tiểu luận - Văn đáp học phần
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 32
Dung lượng 5,83 MB

Cấu trúc

  • 2.7.2. Ưu điểm và hạn chế của YOLOv8 a. Uu diém (17)
  • 2.7.3. Chi tiết các khối trong YOLOv8 (18)
  • 3.2. Huấn luyện mô hình Quá trình huấn luyện mô hình đã điễn ra trong môi trường có cấu hình như sau (22)
  • B Hình 3.7. Thự nghiệm với nhiều loài động vật (26)
    • 4.2. Hạn chế (27)
    • 4.3. Hướng phát triển (27)
  • TAI LIEU THAM KHAO [1] Pham Dinh Khanh, “YOLO-You only look once”, Khoa hoc dir ligu-Khanh’s blog (28)
  • CODE THE HIEN KET QUA SAU KHI TRAIN CAC CLASS (29)
  • CODE CHUONG TRINH CHINH (30)

Nội dung

Tổng quan về YOLO YOLO You Only Look Once là một mô hình mạng nơ-ron tích chập CNN nỗi bật được sử dụng cho việc phát hiện, nhận dạng và phân loại đối tượng trong hình ảnh.. Mặc dù YOLO

Ưu điểm và hạn chế của YOLOv8 a Uu diém

— Tốc độ: YOLOv8 được đánh giá là nhanh chóng và thời gian phán hôi thấp, giúp xử lý các tác vụ nhận điện đối tượng và phân-segment ảnh trong thời gian thực

Với nền tảng là những tiến bộ trong học sâu và thị giác máy tính, YOLOv8 đạt được độ chính xác cao trong nhận diện đối tượng, giúp đảm bảo hiệu quả đáng tin cậy trong các ứng dụng thực tế.

YOLOv8 có tính linh hoạt khi có thể triển khai trên cả GPU và CPU bằng các công nghệ hỗ trợ như TensorRT của Nvidia và OpenVino của Intel.

— Phái có kiến thức chuyên sâu về Machine Learning, Deep Learning và các thuật toán liên quan Cần phải được huấn luyện trên một tập đữ liệu đủ lớn và da dang để đạt được hiệu quả cao nhất

— Yêu cầu các tải nguyên tính toán cao để đạt được tốc độ xử lý nhanh và chính xác

— YOLOv§ có thể không hoạt động tốt trong tất cá các môi trường và có thể cần thêm điều chỉnh hoặc tối ưu hóa để đạt được hiệu suất tối ưu

Parameters (M) Latency A100 TensorRT FP 16 (ms/img)

Hình 2.7 So sánh độ chính xác và hiệu suất của các mô hình YOLO

Chi tiết các khối trong YOLOv8

Backbone wos a ($3 : W//— “+ đ=“-_-/z x 3ằ Sees — Head yo.overead ~ + “ 7/71 ===* : A TF 7 la; -ẩ= Ƒ 7 ⁄ T

Hình 2.8 Chỉ tiết cầu trúc của YOLOv8

Backbone Backbone là phần đầu tiên của mạng YOLOv8, chịu trách nhiệm trích xuất các đặc trưng từ ảnh đầu vào Nó bao gồm các lớp convolutional vả pooling để giảm kích thước không gian của ảnh và tăng cường các đặc trưng hữu ích cho việc nhận điện đối tượng

Head Head là phần cuối của mạng YOLOv8, noi các đặc trưng trích xuất từ backbone duoc str dung dé dy doan cac bounding boxes, lép của đối tượng và các thông tin khác

Head thong bao gém cac lép convolutional va fully connected dé tao ra các đầu ra cuối cùng

Concat (Concatenation) Concat (Concatenation) 14 quá trình nối các tensor lại với nhau dọc theo một trục nhất định Trong YOLOv8, coneat thường được sử dụng đề kết hợp các đặc trưng từ các tầng

14 khác nhau của mạng hoặc tử các nguồn khác nhau để tạo ra một tensor có thông tin phong phú hơn

C2f(C2F - C2F Block) C2f có thể là viết tat cua "Cross Stage Partial Network (CSP) with Focus" Day là một phần cấu trúc sử dụng CSP và kỹ thuật tập trung đề tôi ưu hóa việc truyền thông tin và giảm độ phức tạp của mô hình

Upsample Upsample là quá trình tăng kích thước không gian cua tensor (anh) thong qua các kỹ thuật như 1nterpolation (nội suy) Trong YOLOv8, upsample thường được sử dụng để đưa các đặc trưng từ các mức độ phân giải thấp lên mức độ phân giải cao hon dé kết hợp với các đặc trưng từ các tầng trước

Conv (Convolution) Conv 1a viét tắt cha convolution (tích chập), một kỹ thuật trong mạng nơ-ron tích chập (CNN) để trích xuất các đặc trưng từ ảnh đầu vào Các lớp convolution áp dụng các bộ lọc (filter) để tạo ra các bản đồ đặc trung (feature map)

Detect Detect là một lớp hoặc một khối trong YOLOv8 chịu trách nhiệm trực tiếp dự đoán các bounding boxes và các lớp đối tượng Đây là nơi mà các đầu ra cuối cùng của mạng được tạo ra

Loss Terms Các thuật ngữ liên quan đến hàm loss trong YOLOv8 bao gồm:

Bbox (Bounding Box Regression): Đây là thành phần của hàm loss liên quan đến việc dự đoán các tọa độ của bounding boxes Nó đo lường sự khác biệt giữa các bounding boxes dự đoán vả bounding boxes thực tế

Cls (Classification): Day 1a thành phần của hàm loss liên quan đến việc dự đoán lớp của các đối tượng Nó đo lường sự khác biệt giữa các đự đoán lớp và các nhãn lớp thực tế

CloU (Complete Intersecton over Union): Đây là một metrle nâng cao cho bounding box regression, không chỉ tính toán loU mà còn bao gồm các yếu tố như khoảng cách giữa các tâm của các bounding boxes, tỷ lệ khung hình, và độ chồng chéo

Phân bố Tổn thất Tiêu cự (DFL) là một kỹ thuật tổn thất được sử dụng để cải thiện độ chính xác của các dự đoán hộp giới hạn bằng cách tối ưu hóa phân phối của hộp giới hạn Kỹ thuật này tập trung vào việc dự đoán các tham số của phân phối hơn là tập trung vào việc dự đoán trực tiếp hộp giới hạn Bằng cách tối ưu hóa phân phối của hộp giới hạn, DFL có thể cải thiện hiệu suất của các mô hình phát hiện đối tượng và đưa ra các dự đoán hộp giới hạn chính xác hơn.

BCE (Binary Cross-Entropy): Day là một hàm loss thường được sử dụng cho các bài toán phân loại nhị phân Trong YOLOv8, BCE có thể được sử dụng cho các thành phần phân loại của loss

Backbone: Trích xuất đặc trưng tử ảnh đầu vảo

Head: Dự đoán bounding boxes và lớp đối tượng

Coneat: N6i cac tensor lại với nhau

C2f: Cầu trúc CSP với kỹ thuật tập trung Ủpsample: Tăng kích thước không gian cua tensor

Conv: Tích chập đề trích xuất đặc trưng

Detect: Dự đoán bounding boxes và lớp đối tượng cuối cùng

Bbox: Regression cua bounding boxes

Cls: Phan loai lép déi tượng

CIoU: Metric nang cao cho bounding box regression

DFL: Ky thuat focal loss cho bounding box

BCE: Ham loss cho phân loại nhị phân

CHUONG 3 UNG DUNG HE THONG NHAN DIEN DONG VAT 3.1 Cơ sở dữ liệu Để thực hiện quá trình gán nhãn và huấn luyện mô hình, chúng em đã chuẩn bị các tập dữ liệu về 80 loài động vật khác nhau như: Trâu, Vol, Tê giác, Ngựa van, Nai, Hươu cao cổ, Ngựa, Su tu, Vet, Hồ, và nhiều loài khác Mỗi bức hình trong tập dữ liệu đều có một tệp gán nhãn đi kèm, giúp xác định chính xác loài động vật được hiền thị trong hinh

Dữ liệu đầu vào bao gồm tệp dữ liệu huấn luyện để máy học các đặc điểm của động vật và tệp dữ liệu kiểm tra để đánh giá mô hình đã học Quá trình huấn luyện này giúp mô hình nhận diện và phân loại chính xác các loài động vật khi gặp các bức ảnh mới.

Sau khi mô hình được huấn luyện xong, chúng em sẽ sử dụng tệp đữ liệu kiểm tra để đánh giá hiệu suất của mô hình Tệp dữ liệu kiểm tra bao gồm các bức hình mà mô hình chưa từng thấy trước đó, giúp chúng ta kiếm tra xem mô hình có thể đự đoán chính xác các loài động vật trong các hình này hay không Kết quá từ tệp dữ liệu kiếm tra sẽ được so sánh với nhãn thật của các bức hình để đánh giá độ chính xác và hiệu quả của mô hỉnh

Huấn luyện mô hình Quá trình huấn luyện mô hình đã điễn ra trong môi trường có cấu hình như sau

mô hình đã được pre-train trên Yolov8 sử dụng weight là yolov8n.pt được tải về từ mã nguồn open-souree Mô hình được huấn luyện trong gần 4 tiếng, sử dụng 7 card đồ họa huấn luyện Việc sử dụng nhiều GPU cùng lúc giúp tăng tốc độ huấn luyện và cho phép xử lý lượng đữ liệu lớn một cách hiệu quá Kết quá là mô hình có thể học và cải thiện khả năng dự đoán bounding box một cách chính xác và nhanh chóng

Cấu hình huấn luyện chi tiết:

— Kích thước hinh anh: 640x640 cho tap train va 640x640 cho tap val

— GPU huấn luyén: NVIDIA GeForce RTX 2080 TH

— Số lớp đữ liệu huấn luyện: 80 class(lớp) động vật

— Optimizer: SGD (Stochastic Gradient Descent), voi tốc độ học khởi tao 14 0.01va momentum là 0.9

Sau khi mô hình huấn luyện xong được lưu trữ thành 2 weight để str dung dé thir nghiệm là best.pt và last.pt, trong đó best.pt là weight có kết quả tốt nhất của mô hình huấn luyện trong khi last.pt là kết quá của epoch cuối cùng huấn luyện mô hình

3.3 Kết quả thực nghiệm 3.3.1 Kết quả quá trình huấn luyện a Về độ đo F1-score:

Quá trình huấn luyện và thử nghiệm mô hình đều cho thấy các giá trị loss giảm dân, điều này chứng tỏ mô hình đang học tốt và tối ưu hóa các tham số Trong suốt quá trình huấn luyện, ba giá trị loss quan trọng bao gồm loss tổng, loss phân loại, và loss định vị đều có xu hướng giảm, cho thấy sự cái thiện rõ rệt trong khả năng dự đoán của mô hình Kết quả về các chỉ số metrie/precision và metrie/recall cũng đạt khoảng 60%, điều này cho thay mô hình đã đạt được mức độ nhận điện ôn định đối với các đối tượng động vật

Việc đạt được preeision và recall ở mức 60% là một kết quả khá tốt, đặc biệt trong bối cảnh các bải toán nhận diện vật thể thường gặp nhiều thách thức về độ phức tạp và đa dạng của dữ liệu Preeision đạt 60% nghĩa là trong số các đối tượng được mô hình dự đoán là động vật, 60% là chính xác, trong khi recall đạt 60% nghĩa là mô hình có thé phát hiện ra 60% tổng số động vật thực sự có trong ảnh Mặc đù vẫn còn không gian để cái thiện, kết quả nảy cho thấy mô hình đã có nền táng vững chắc và có thê được cải thiện thêm qua việc tỉnh chỉnh và tăng cường đữ liệu huấn luyện ° N train/cls_loss train/dfi_loss _metries/precision(®) —

0.6 val/box_loss 20 40 val/cls_loss 0 val/dfl_Ioss 20 40 0 metrics/mAP50(B) 20 40 ° metrics/mAP50-95(B) 20 40

Hình 3.3 Kết quả của quá trình huấn luyện

19 b Về kết quả khi vẽ trực quan bằng ma trận nhằm lấn:

Ma trận nhằm lẫn chuẩn hóa (Confusion Matrix Normalized) la mét céng cy danh giá hiệu suất của các mô hình phân loại trong học máy, tương tự như ma trận nhằm lẫn thông thường, nhưng các giá trị trong ma trận này đã được chuẩn hóa để phản ánh tý lệ phan trăm thay vì số lượng mẫu tuyệt đối Ma trận nhằm lẫn chuẩn hóa hiển thị tỷ lệ đự đoán chính xác và sai lệch cho từng lớp, giúp chúng ta đễ đàng so sánh hiệu suất của mô hình trên các lớp khác nhau, đặc biệt là khi dữ liệu không cân bằng Vị dụ, trong một ma trận nhằm lẫn chuẩn hóa, mỗi ô sẽ biểu điễn tỷ lệ của số lượng dự đoán trong một lớp so với tổng số mẫu thực sự của lớp đó

Hình 3.4 Ma trận nhâm lần chuẩn hóa trong quá trình huấn luyện mô hình

Qua ma trận nhầm lẫn đã chuẩn hóa, có thể thấy vẫn còn 36 lớp động vật vẫn bị nhầm lẫn trong quá trình dự đoán Tuy tỷ lệ dự đoán sai này là nhỏ nhưng sự xuất hiện của các điểm màu xung quanh đường chéo chính biểu thị sự không hoàn hảo của mô hình.

Tuy nhiên, nếu các châm này rất nhỏ và giá trị của chúng gần bằng 0, điều này cho thay rằng số lượng các dự đoán sai là rất ít và mô hình vẫn hoạt động một cách ổn định

Sự giống nhau vẫn có ở các lớp tương tự nhau, chẳng hạn như giữa các loài chim hoặc các loài mẻo, nhưng 36 lượng dự đoán chính xác vẫn khá cao Điều này cho thay mô hình có khả năng phân loại tốt, mặc dù vẫn còn một số nhằm lẫn giữa các lớp Việc nhận diện và giải quyết các nhằm lẫn này là một phần quan trọng trong việc cải thiện hiệu suất của mô hình Có thể yêu cầu sự can thiệp bổ sung từ các chuyên gia hoặc thậm chí

20 cần phải tỉnh chỉnh lại quá trình huấn luyện hoặc kiến trúc mạng để giảm thiểu các sai sót Tuy nhiên, sự tổn tại của các lớp có tỷ lệ nhằm lẫn nhỏ này vẫn là một dâu hiệu tích cực, chỉ ra rằng mô hình đang hoạt động một cách khá ổn định và hiệu quả

Hình 3.5 Kết quả sau khi đã train xong ở đối tượng chủ yếu là vet

3.3.2 Kết quả quá trình thực nghiệm aca eam Hình 3.6 Thứ nghiệm VỚI mot con vật (loài cá xứu và loài buém)

21 Ế Aamal Detetor Leadimage| Load Video| tt]

B Hình 3.7 Thự nghiệm với nhiều loài động vật

Hạn chế

— Chưa phân loại được các loại động vật có cùng họ, hoặc chung loải

—_ Ảnh có nhiều động vật độ chính xác chưa đc cao.

Hướng phát triển

— Cái tiến thêm giái thuật xử lý ảnh để thu nhận được hình ánh chất lượng tốt hơn

— Cai tién giải thuật để ứng dụng có thê phát hiện được các động vật chưa có đặc tính riêng và các loài tương đối đa dạng

— Da dang hoa tap mẫu đề ứng dụng có thê nhận dạng được đa dạng loải hơn và thu được kết quả chính xác hơn

TAI LIEU THAM KHAO [1] Pham Dinh Khanh, “YOLO-You only look once”, Khoa hoc dir ligu-Khanh’s blog

[3] Nguyễn Quang Hoan, “Giáo #rình Xử lý ảnh”, Học viện Công nghệ Bưu chính Viễn thông, 2006,

[4] Nguyễn Đình Thúc, “??í tuệ nhân tạo, mạng NoRon phương pháp và ứng dung”, NXE Giáo Dục 2000

[5] Quốc Pham,”Tim hiéu mé hinh YOLO cho bai toan Object Detection”

CODE THE HIEN KET QUA SAU KHI TRAIN CAC CLASS

train: /home/thuongpt/study/repo_wild_animal/yolo_dataset/train val: /home/thuongpt/study/repo_wild_animal/yolo_dataset/test ne: 80 names: [ ‘Shark’, ‘Bear’, 'Sea lion’, 'Sparrow', ‘Raccoon’, ‘Penguin’, 'Crab', 'Koala’, 'Cattle’, ‘Ostrich’, 'Whale', Rabbif, ‘Lynx’, ‘Polar bear’, 'Parrot’, ‘Seahorse’, ‘Shrimp’, ‘Jaguar’, Deer’, ‘Snake’, 'Otter, 'Mule',

"Red panda’, 'Goldfish’, 'Raven’, ‘Squid’, 'Pig’, 'Goat', 'Snail', Ladybug', 'Worm, ‘Lion’, 'Duck’, 'Fish’,

‘Elephant’, 'Goose'’, Rhinoceros’, 'Harbor seal’, 'Swan', 'Sheep', 'Moths and butterflies’, 'Centipede’,

‘Jellyfish’, ‘Canary’, ‘Cheetah’, 'Butterfly', ‘Starfish’, 'Kangaroo', 'Horse’,'Mouse'’, 'Brown bear’, 'Hamster’,

‘Frog’, 'Camel, ‘Leopard’, ‘Woodpecker’, 'Bull, 'Hippopotamus’, 'Squirrel', 'Panda', ‘Chicken’,

‘Caterpillar’, ‘Lizard’, 'Turkey’, 'Turfle', "Tiger, 'Monkey', 'Scorpion', 'Zebra', 'Owl', ‘Eagle’, 'Sea turtle’, Tortoise’, 'Hedgehog’, 'Fox’, 'Spider, 'Giraffe', 'Crocodile', ‘Magpie’, 'Tick’]

CODE CHUONG TRINH CHINH

import tkinter as tk from tkinter import filedialog import cv2 from PIL import Image, ImageTk from ultralytics import YOLO class AnimalDetectorApp: def init (self, root): self.root = root self.root.title( Animal Detector") self.root.geometry("800x600")

# Create frames self button_frame = tk Frame(root, pady) self button_frame.pack(side=tk.TOP, fill=tk.X) self image frame = tk Frame(root) self image _frame.pack(side=tk TOP, fill=tk BOTH, expand=True)

# Create buttons self.load_image_button = tk.Button(self.button_frame, text="Load Image", command=self.load_image) self.load_image_button.pack(side=tk.LEFT, padx=5) self.load_video_button = tk Button(self.button_frame, text="Load Video", command=self.load_ video) self.load_video_button pack(side=tk.LEFT, padx=5) self.exit_button = tk Button(self.button frame, text="Exit", command=root.quit) self exit_button.pack(side=tk.LEFT, padx=5)

# Create label to display images selfimage label = tk Label(self.image_ frame) self image_label.pack(fill=tk.BOTH, expand=True)

# Load YOLO model self weight file = "D:\\wild-animal-detect-yolov8-master\\runs\\detect\\train5\\weights\\best.pt"

26 self-yolo_model = YOLO(self.weight_file) def load_image(self): file_path = filedialog.askopenfilename() if file_path: self.detect_animal_in image(file path) def load_video(self): file_path = filedialog.askopenfilename() if file_path: self.detect_animal_in_video(file_path) def detect_animal_in_image(self, image path): image = cv2.imread(image_path) results = self-yolo_model{image) for result in results: for box in result.boxes: xl, yl, x2, y2 = map(nt, box.xyxy[0]) cls = box.cls.itemQ label = self:yolo_model.names[int(cls)] cv2.rectangle(image, (x1, yl), (x2, y2), (0, 255, 0), 2) cv2.putText(image, label, (x1, y1 - 10), cv2.FONT HERSHEY SIMPLEX, 0.9, (36, 255, 12),2) image rgb = cv2.cvtColor(image, cv2.COLOR_ BGR2RGB) image_tk = ImageTk PhotoImage(Image.fromarray(image_rgb)) selfimage label.config(image=image tk) selfimage label.image = image tk def detect_animal_in_video(self, video path): cap = cv2 VideoCapture(video_path) while True: ret, frame = cap.read() if not ret: break results = self-yolo_model(frame) for result in results: for box in result boxes:

Ngày đăng: 18/09/2024, 19:59

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN