Mặc dù YOLO có thê không phải là thuật toán tốt nhất về độ chính xác, nhưng nó được công nhận là một trong những thuật toán nhanh nhất trong các lớp mô hình phát hiện đối tượng object d
OUTPUT của YOLO Output của mô hình YOLO là một véc tơ sẽ bao gồm các thành phânof, ,0,.0,.€ „D, y'= [Do y y na Đ› P boundingbox ° score of c classes
- po: laxac suat du bao vat thé xuat hién trong bounding box
- bobo bol, giúp xác dinh bounding box Trong đó t,,t, la toa d6 tâm và t„„tụ là boundingbox kích thước rộng, dai cua bounding box
- PrrParPe- la véc to phan phoi xac suat du bao cua cac classes score of c classes 2.5 Hàm mat mat (Loss Function)
Sau khi đã định nghĩa được những thông tin mà mô hình cần phải dự đoán, và kiến trúc của mô hình CNN Bây giờ là lúc mà chúng ta sẽ định nghĩa hàm lỗi
YOLO sử dụng hàm lỗi bình phương giữa dự đoán và nhãn để tính độ lỗi cho mô hình Độ lỗi tổng bao gồm ba độ lỗi con sau: độ lỗi định vị, độ lỗi phân lớp và độ lỗi độ tin cậy khi xác định lớp.
- Độ lỗi của việc đữ đoán loại nhãn của Object-Classification Loss - Độ lỗi của dự đoán tạo độ cũng như chiều dải, rộng của Boundary Box -
- _ Độ lỗi của ụ vuụng cú chứa object nào hay khụng - Confủidenee Loss
Chúng ta mong muốn hàm lỗi có chức năng sau:
- Trong quá trình huấn luyện, mô hình sẽ nhìn vào những ô vuông có chứa object Tang Classification Score lớp đúng của obJect đó lên
- Sau đó, cũng nhìn vào ô vuông đó, tìm boundary box tốt nhất trong 2 boxes được dự đoán
- _ Tăng Localization Score của boundary box đó lên, thay đổi thông tin boundary box để gần đúng với nhãn Đối với những ô vuông không chứa object, giảm Confidence Score va chung ta sé khéng quan tam dén classification score va Localization Score của những ô vuông này
Lỗi phân loại chỉ được tính đối với các ô được gắn nhãn là có đối tượng Lỗi phân loại tại các ô đó được tính bằng độ lệch bình phương giữa nhãn dự đoán và nhãn chính xác của nó.
bằng I nếu ô vuông đang xét có object, ngược lại băng 0 - ?,lc|: là xác xuất có điều của lớp c tại ô vuông tương ứng mà mô hình dự đoánYOLOv8 1 Tổng quan về YOLOv8YOLOv8 là một mô hình nhận dạng đối tượng tiên tiến dựa trên mạng convolutional neural network (CNN) được phát triển bởi Joseph Redmon và nhóm nghiên cứu của ông tại Đại học Washinpton Đây là phiên bản nâng cấp của YOLOv7, với những cải tiến đáng kế về cả tốc độ và độ chính xác trong việc nhận diện đối tượng Những tiễn bộ này đạt được thông qua một loạt các cải tiến kỹ thuật, bao gồm việc su dung mang kim tự tháp đặc trưng (feature pyramid network), các mô-đun chú ý không gian (spatial attention modules), và các kỹ thuật tăng cường dữ liệu tiên tiến (advanced data augmentation techniques)
Mô hình YOLOv§ sử dụng kiến trúc darknet-53, một loại mạng nơ-ron sâu được tối ưu hóa cho việc trích xuất đặc trưng từ hỉnh ảnh Darknet-53 có 53 lớp convolutional, giúp mô hình học được các đặc trưng phức tạp từ dữ liệu hình ảnh một cách hiệu quả Trên cơ sở các đặc trưng này, thuật toán nhận dạng đối tượng của
YOLOv8 được áp dụng để xác định vị trí và phân loại các đối tượng trong ảnh Dưới đây là các tính năng nôi bật của YOLOv8:
- Tăng cường mô hình bằng cách thêm các kênh phân tán để tăng tốc độ tính toán
- Sử dụng kỹ thuật Attention để cải thiện khả năng nhận dạng đối tượng của mô hinh
- _ Áp dụng phương pháp đào tạo mới đề tăng tốc độ hội tụ
- Su dung kién tric mạng nơ-ron mới: Sử dụng kiến trúc YOLOv4 làm cơ so dé tăng hiệu suất và độ chính xác của mô hình
- _ Tích hợp cơ chế tự động điều chỉnh tỷ lệ tăng kích thước của hình ảnh đầu vào
- Hỗ trợ giám sát bằng video (Video Supervision): Mô hình có khả năng phát hiện và giám sát vật thể trong các video và đưa ra dự đoán liên tục trên toàn bộ video
- Tích hợp công nghệ Ensemble
- Tinh nang diéu chinh tỷ lệ tự động (AutoAnchor): Cải thiện việc phát hiện đối tượng với nhiều tỷ lệ khác nhau
Hinh 2.1 Lịch sử hình thành Ưu điểm và hạn chế của VOLOv8 a Ưu điểm
YOLOv8 tự hào với tốc độ xử lý nhanh chóng và độ trễ thấp, cho phép xử lý thời gian thực các tác vụ nhận diện đối tượng và phân khúc hình ảnh Ngoài ra, nhờ tích hợp những tiến bộ trong học sâu và thị giác máy tính, YOLOv8 mang lại độ chính xác cao trong việc phát hiện đối tượng.
Sự linh hoạt: YOLOv8 hỗ trợ việc nhận diện đối tượng và phân-segment trên cả GPU và CPU, tận dụng các công nghệ như TensorRT cua Nvidia va OpenVino cua Intel b Nhược điểm:
Phải có kiến thức chuyên sâu vé Machine Learning, Deep Learning va cac thuật toán liên quan Cần phải được huấn luyện trên một tập dữ liệu đủ lớn và đa dạng đề đạ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
YOLOv8 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
Hình 2.1 So sánh độ chính xác và hiệu suất của các mô hình YOLO
2.7.3 Chi tiết các khối trong VOLOv8
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, Voi, Tê giác, Ngựa văn, Nai, Hươu cao cô, Ngựa, Sư tử, Vẹt, 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
Input (9.58 GB) test (80 directories) a? © Data x
Oo O ơ ơ Oo es, 187 files Girectories, 1% files directories, 76 files 1 directories, 177 files
Hinh 3.1 Cac thư mục chứa hình ảnh và các nhãn của từng ảnh Dữ liệu đầu vào bao gồm hai tệp: Tệp dữ liệu huấn luyện (train data) và tệp dữ liệu kiểm tra (test data) Tệp dữ liệu huấn luyện được sử dụng để huấn luyện mô hình, tức là để máy học các đặc điểm và mẫu của các loài động vật trong tập dữ liệu Quá trình huấn luyện này sẽ giúp mô hình có khả năng 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 hình mới
Sau khi mô hình được huấn luyện xong, chúng em sẽ sử dụng tệp dữ 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ể dự đ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 đữ 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ả cua m6 hinh
Thuong thi, dé dam bảo rằng mô hình có thể học tốt từ đữ liệu huấn luyện và cũng có đủ dữ liệu kiếm tra để đánh giá mô hình một cách khách quan, đữ liệu thường được chia thành hai tập với tỷ lệ 8/2, tương đương với 80% cho dữ liệu huấn luyện vả
20% cho dữ liệu kiếm tra Việc chia tỉ lệ này giúp đảm bảo rằng mô hình có đủ đữ liệu để học mà vẫn có thê đánh giá chính xác hiệu suất của mô hình trên các dữ liệu mới chưa từng thấy trước đó
Sự chuẩn bị và xử lý dữ liệu cẩn thận, từ việc dán nhãn chính xác cho từng hình ảnh đến việc chia tỷ lệ hợp lý giữa dữ liệu huấn luyện và dữ liệu kiểm tra, rất quan trọng để đảm bảo rằng mô hình học máy của chúng ta có thể hoạt động hiệu quả và đạt được kết quả tốt trong việc nhận dạng và phân loại các loài động vật.
Hinh 3.2 Biéu dé vé tỉ lệ tép train va tép test 3.2 Huấn luyện mô hình
Quá trình huấn luyện mô hình đã diễn ra trong môi trường có cấu hình như sau: mô hình đã được pre-train trên YOLOv§ sử đụng weight là yolov8n.pt được tải về từ mã nguồn open-source 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 kha nang du doan 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:
- Kich thước hinh ảnh: 640x640 cho tập train và 640x640 cho tập val
- GPU huan luyén: NVIDIA GeForce RTX 2080 Ti
- §6 6p dé ligu huan luyén: 80 class(lép) déng vat
- Optimizer: SGD (Stochastic Gradient Descent), v6i toc d6 hoc khởi tạo là 0.01va momentum 1a 0.9
Sau khi mô hình huấn luyện xong được lưu trữ thành 2 weight đề sử dụng đề thử nghiệm là best.pt và last.pt, trong đó best.pt là weipht 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:
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
4.3 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
Cải tiến giải thuật dé ứ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 dạng hóa tập 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
[1] Pham Dinh Khanh, “YOLO-You only look once”, Khoa hoc di liêu-Khanh”s blog [2] Pham Viét Binh, D6 Nang Toan, “Gido trinh mén hoc Xie lý ảnh”, Khoa Công nghệ Thông tín — Đại học Thái Nguyên, 2007
[3] Nguyễn Quang Hoan, “Giáo ?rình Xứ lý ảnh”, Học viện Công nghệ Bưu chính
[4] Nguyễn Đình Thúc, “7z uệ nhân tạo, mạng NơRon phương pháp và ứ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”
PHU LUC CODE THE HIEN KET QUA SAU KHI TRAIN CAC CLASStrain: /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', 'Rabbit', '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', 'Turtle', 'Tiger', 'Monkey', 'Scorpion’, 'Zebra’,
‘Owl’, 'Eagle', 'Sea turtle’, 'Tortoise', 'Hedgehog’, 'Fox', 'Spider', 'Giraffe', 'Crocodile’,
CODE CHUONG TRINH CHINHThe Animal Detector App is a GUI-based application that utilizes the powerful YOLO (You Only Look Once) algorithm for real-time object detection It leverages tkinter for its intuitive user interface, allowing users to easily navigate the app The integration of the ev2 library provides seamless video capture functionality, while the PIL (Python Imaging Library) enables efficient image manipulation and display Furthermore, the inclusion of the nultralytics library ensures accurate and reliable object detection, empowering users to identify animals with ease.
# Create frames self.button_frame = tk.Frame(root, pady) self-button_frame.pack(side=tk TOP, fill=tk.X) selfimage frame = tk Frame(root) selfimage frame.pack(side=tk.TOP, fill=tk.BOTH, expand=Tme)
# Create buttons selfload_ image button = tk.Button(self-button_frame, text="Load Image", command=self.load_image) selfload_ image button.pack(side=tk.LEFT, padx=5) selfload video button = tk.Button(selfbutton frame, text="Load Video", command=selfload_ video) selfload_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) selfimage_ label pack(fill=tk BOTH, expand=True)
24 self- weight file = "D:\\wild-animal-detect-yolov8-master\\runs\\detect\\train5 \\weights\\best.pt" selfyolo model =YOLO(selfweight file) defload_ mmage(selÐ): file path = filedialog.askopenfilename() if file path: self.detect_animal in Immage(file path) defload_video(self): file path = filedialog.askopenfilename() if file path: selfdetect ammal 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: x1, yl, x2, y2 = map(int, box.xyxy[0]) cls = box.cls.1tem() label = self-yolo_model namesfint(cls)] cv2.rectangle(image, (x1, yl), (x2, y2), (0, 255, 0), 2) cv2.putText(image, label, (x1, yl - 10), cv2 FONT HERSHEY SIMPLEX, 0.9, (36, 255, 12), 2) image rgb = cv2.cvtColor(mage, cv2.COLOR BGR2RGB) wmage_tk = ImageTk.Photolmage(Image.fromarray(image_rgb)) selfimage_ label.config(image=image_ tk) selfimage_label.image =image_tk defdetect animal m 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: