Tải bản đầy đủ (.docx) (20 trang)

Thị giác máy tính Phát hiện tàu bằng thuật toán YOLOv5

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.69 MB, 20 trang )

UỶ BAN NHÂN DÂN TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SÀI GỊN
--------------------------------℘℘ ------------------------------

BÁO CÁO CUỐI KỲ
MƠN: THỊ GIÁC MÁY TÍNH
KHOA CÔNG NGHỆ THÔNG TIN
Đề tài: PHÁT HIỆN TÀU BẰNG YOLOv5
Giáo viên hướng dẫn: PGS.TS. Phạm Thế Bảo
Nhóm sinh viên thực hiện: Nhóm 6
1.
2.

Trần Lê Quốc Thái
MSSV: 3119411064
Nguyễn Vĩnh Bảo
MSSV: 3119411010

Lớp: DCT119C1

TP HCM, 05-2022

MỤC LỤC


DANH MỤC HÌNH ẢNH
Hình 1. Sơ đồ mạng YOLO
Hình 2. Residual blocks
Hình 3 Bounding box regession
Hình 4. Intersection Over Union
Hình 5. Kiến trúc một output của model YOLO


Hình 6. Các feature maps của mạng YOLOv3 với input shape là 416 x 416,
output là 3 feature maps có kích thước lần lượt là 13 x 13, 26 x 26 và 52 x
52
Hình 7. Xác định anchor box cho một vật thể.
Hình 8. Phiên bản YOLOv5
Hình 9. Hình ảnh tàu và label của từng hình
Hình 10. Chuẩn bị folder data
Hình 11. Kết quả train
Hình 12. Biểu đồ kết quả

Trang 2


CHƯƠNG 1 : TỔNG QUAN
1.1 Giới thiệu :
Trí tuệ nhân tạo hay trí thơng minh nhân tạo (Artificial intelligence –
viết tắt là AI) là một ngành thuộc lĩnh vực khoa học máy tính (Computer
science). Là trí tuệ do con người lập trình tạo nên với mục tiêu giúp máy
tính có thể tự động hóa các hành vi thơng minh như con người. Ngày nay,
trí tuệ nhân tạo- Artificial intelligence (AI) đang ngày càng phổ biến và góp
phần thay đổi sâu sắc nhiều khía cạnh trong cuộc sống hàng ngày. Trong đó
thị giác máy tính – Computer Vision (CV) là một lĩnh vực quan trọng của
AI bao gồm các phương pháp thu nhận, xử lý ảnh kĩ thuật số, phân tích và
nhận dạng các hình ảnh.
Mạng Nơron học sâu (Deep learning) là lĩnh vực nghiên cứu các
thuật tốn, chương trình máy tính để máy tính có thể học tập và đưa ra
những dự đốn như con người. Nó được ứng dụng vào nhiều ứng dụng
khác nhau như khoa học, kỹ thuật, các lĩnh vực đời sống khác cũng như các
ứng dụng về phân loại và phát hiện đối tượng. Một ví dụ điển hình là CNN
(Convolutional Neural Network) áp dụng để nhận dạng tự động, tìm hiểu

các mẫu phân biệt từ ảnh bảng cách xếp chồng liên tiếp các lớp lên nhau và
trong nhiều ứng dụng, CNN hiện nay được coi là trình phân loại ảnh mạnh
và thúc đẩy các cơng nghệ trong 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 được một đối
tượng thì cơng nghệ CNN tiêu tốn cực lớn về tài nguyên như bảng thông,
bộ nhớ và khả năng xử lý của phần cứng.
Để giảm thiểu những tài ngun tiêu hao này, những thuật tốn, mơ
hình giải thuật theo thời gian được ra đời ngày càng nhiều và trong đó có
mơ hình YOLOv5 cho bài tốn nhận diện, cụ thể là ứng dụng vào đề tài
“Phát hiện tàu”.
1.2 Mục tiêu đề tài :
-

Vận dụng được những kiến thức cơ bản về huấn luyện mạng nơ-ron.
Xây dựng được một mơ hình có khả năng huấn luyện các tập dữ liệu
con tàu khác nhau.
Trang 3


-

Nhận diện được tàu có trong tập dữ liệu.

1.3 Giới hạn đề tài :
-

Trong đề tài này chỉ nhận diện được tàu không nhận diện các đối
tượng khác.
Tập dữ liệu có số lượng khá ít ảnh hưởng đến độ chính xác của mơ
hình.


1.4 Phương pháp nghiên cứu :
-

Dựa trên các kiến thức đã học về kiến thức huấn luyện một mạng nơron.
Thu thập tài liệu, tham khảo những ứng dụng liên quan đã có trước
đó.

1.5 Đối tượng và phạm vi nghiên cứu :
Phát hiện tàu trên biển có trong dữ liệu.
1.6 Bố cục quyển báo cáo :
Đề tài có tổng cộng 5 chương:


Chương 1 – Tổng quan

Trong chương này tìm hiểu về các vấn đề hình thành nên đề tài. Kèm
theo đó là một số nội dung và giới hạn của đề tài mà nhóm thực hiện đề
tài đã đặt ra.


Chương 2 – Cơ sở lý thuyết

Giới thiệu về các kiến thức nền tảng cũng như công nghệ và phần mềm
sử dụng trong đề tài bao gồm kiến thức về xử lý ảnh, lý thuyết mạng nơron, đặc điểm và cách huấn luyện một tập dữ liệu trong YOLOv5.


Chương 3 – Thiết kế hệ thống

Lên kế hoạch sử dụng tập mẫu, diễn giải các thơng số của mơ hình, q

trình huấn luyện, quá trình kiểm tra và thiết kế một hệ thống nhận diện
phát hiện tàu trên nền tảng YOLOv5.


Chương 4 – Kết quả

Kiểm tra kết quả của quá trình huấn luyện, kiểm tra mơ hình hệ thống.


Chương 5 – Kết luận

Trang 4


Trong chương này sẽ trình bày những kết quả của đề tài đã đạt được so
với mục tiêu đặt ra.

CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT
Trong vài năm trở lại đây, Object Detection là một trong những đề tài
rất hot của Deep learning bởi khả năng ứng dụng cao, dữ liệu dễ chuẩn bị
và kết quả ứng dụng cực kì nhiều. Các thuật toán mới của Object Detection
như YOLO, SSD có tốc độ khá nhanh và độ chính xác cao nên giúp cho
Object Detection có thể thực hiện các tác vụ dường như là real time, thậm
chí là nhanh hơn so với con người mà độ chính xác khơng giảm. Các mơ
hình cũng trở nên nhẹ hơn nên có thể hoạt động trên các thiết bị IoT để tạo
nên các thiệt bị thông minh.
2.1 Tổng quan về YOLO
Yolo (You Only Look Once) là một 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 ra từ việc kết hợp
giữa các convolutional layers và connected layers.Trong đóp các

convolutional layers sẽ trích xuất ra các feature của ảnh, cịn full-connected
layers sẽ dự đốn ra xác suất đó và tọa độ của đối tượng.
YOLO có thể khơng phải là thuật tốn tốt nhất nhưng nó là thuật tốn
nhanh nhất trong các lớp mơ hình object detection. Nó có thể đạt được tốc
độ gần như real time mà độ chính xác khơng q giảm so với các model
thuộc top đầu.
Một trong những ưu điểm mà YOLO đem lại đó là chỉ sử dụng thơng
tin tồn bộ bức ảnh một lần và dự đốn tồn bộ object box chứa các đối
tượng. Tính đến thời điểm hiện tại YOLO đã có tổng cộng có 5 phiên bản
(v1, v2, v3, v4, v5). Trong đó v5 làn phiên 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 về việc xác định vị trí của
Trang 5


vật thể, các rang buộc về không gian trên những bounding box, mỗi grid
cell chỉ có thể predict rất ít bounding box,…
2.1.1 Kiến trúc mạng YOLO
Kiến trúc mạng YOLO bao gồm: Base network là các mạng
convolution làm nhiệm vụ trích xuất đặc trưng. Phần phía sau là những
Extra Layers được áp dụng để phát hiện vật thể trên feature map của base
network.

Hình 1. Sơ đồ mạng YOLO
Thành phần Darknet Architechture được gọi là base network có tác dụng
trích suất đặc trưng. Output của base network là một feature map có kích
thước 7x7x1024 sẽ được sử dụng làm input cho các Extra layers có tác
dụng dự đốn nhãn và tọa độ bounding box của vật thể.
Base network của YOLO sử dụng chủ yếu là các convolutional layer.
Trong đó các convulutional layers sẽ trích xuất ra các feature của ảnh, cịn
full-connected layers sẽ dự đốn ra xác xuất đó và tọa độ của đối tượng.

2.1.2 Cách hoạt động của mạng YOLO
Thuật toán YOLO hoạt động bằng cách sử dụng ba kỹ thuật sau:




Residual blocks (khối dư).
Bounding box regession (Hồi quy hộp giới hạn).
Intersection Over Union (IOU).

2.1.2.1 Residual blocks
Đầu tiên, hình ảnh được chia thành nhiều lưới khác nhau. Mỗi lưới
có kích thước là S x S. Hình 2 cho thấy một hình ảnh đầu vào được chia
thành các lưới, có nhiều ơ lưới có kích thước bằng nhau. Mỗi ơ lưới sẽ phát
hiện các vật thể xuất hiện bên trong chúng.
Trang 6


Hình 2. Residual blocks
2.1.2.2 Bounding box regession
Bounding box regression là bài tốn dự đốn khi output là biến liên
tục, vì bounding box regression ở đây (x,y,w,h) là bốn biến liên tục nên ta
gọi là bài toán regression.
Mỗi Bounding box trong hình ảnh bao gồm các thuộc tính sau:





Chiều rộng (bw).

Chiều cao (bh).
Các lớp (ví dụ : tàu, ơ tơ,…). Được thể hiện bằng chữ c.
Đường viền tâm hộp (bx, by)

Trang 7


Hình 3 Bounding box regession
2.1.2.3 Intersection Over Union
IOU là hàm đánh giá độ chính xác của object detector trên tập dữ
liệu thức tính IOU được thể hiện quan Hình 4

Hình 4. Intersection Over Union
Trong đó Area of Overlap là diện tích phần giao nhau giữa predicted
bounding box với grouth-truth bouding box, cịn Area of Union là diện tích
phần hợp giữa predicted bounding box với grouth-truth bouding box.

Trang 8


Những bounding box được đánh nhãn bằng tay trong tập traing set và test
set. Nếu IOU > 0.5 thì prediction được đánh giá là tốt.
2.2 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ần:

Trong đó :


P0 là xác suất dự báo vật thể xuất hiện trong bounding box
giúp xác định bounding box. Trong đó tx, ty là tọa độ




tâm
và tw, th là kích thước rộng, dài của bounding box.



là véc tơ phân phối xác xuất dự báo của các classes

Như vậy output sẽ được xác định theo số lượng classes theo công thức
(n_class + 5). Nếu huấn luyện 80 classes thì bạn sẽ có output là 85.
Trường hợp áp dụng anchors/cell thì số lượng tham số output sẽ là:

Trang 9


Hình 5. Kiến trúc một output của model YOLO
2.3 Dự báo trên nhiều feature map
Cũng tương tự như SSD, YOLOv3 dự báo trên nhiều feature map.
Những feature map ban đầu có kích thước nhỏ giúp dự báo được cái object
kích thước lớn. Những feature map sau có kích thước lớn hơn trong khi

Trang 10


anchor box được giữ cố định kích thước nên sẽ giúp dự báo các vật thể kích
thước nhỏ.

Hình 6. Các feature maps của mạng YOLOv3 với input shape là 416 x 416,

output là 3 feature maps có kích thước lần lượt là 13 x 13, 26 x 26 và 52 x
52
Trên mỗi một cell của các feature map chúng ta sẽ áp dụng 3 anchor
box để dự đoán vật thể. Như vậy số lượng các anchor box khác nhau trong
một mơ hình YOLO sẽ là 9 (3 featue map x 3 anchor box).
Đồng thời trên một feature map hình vng S x S, mơ hình YOLOv3
sinh ra một số lượng anchor box là: S x S x 3. Như vậy số lượng anchor
boxes trên một bức ảnh sẽ là:

2.4 Anchor box
Để tìm được bounding box cho vật thể, YOLO sẽ cần các anchor box
làm cơ sở ước lượng. Những anchor box này sẽ được xác định trước và sẽ
bao quanh vật thể một cách tương đối chính xác. Sau này thuật toán
regression bounding box sẽ tinh chỉnh lại anchor box để tạo ra bounding
box dự đoán cho vật thể. Trong một mơ hình YOLO:

Trang 11


Hình 7. Xác định anchor box cho một vật thể.
2.5 Tổng quan về YOLOv5
YOLOv5 là bản cải tiến mang tính mở rộng theo một cách tự nhiên
của YOLOv3 PyTorch bởi tác giả Glenn Jocher. Kho lưu trữ YOLOv3
PyTorch là điểm đến phổ biến cho các nhà phát triển để chuyển các trọng
số YOLOv3 Darknet sang PyTorch và sau đó chuyển sang sản xuất.
Thuật toán YOLOv5 về cơ bản cũng thừa hưởng từ các phương pháp
cơ bản của YOLO tuy nhiên YOLOv5 áp dụng một số thuật toán phát hiện
vật thể nhanh tối ưu hóa các phép tốn thực hiện giúp tăng tốc độ nhận diện
và giảm thời gian huấn luyện một cách tối ưu.
2.5.1 Cấu trúc mạng YOLOv5

Cấu trúc YOLOv5 gồm 3 phần chính :
Backbone: mơ hình để học các vị trí đặc trưng của vật thể, các đặc
điểm hình ảnh ở các mức độ chi tiết khác nhau.
Head : để tăng khả năng phân biệt đặc trưng dự đoán class và
bounding box. Bao gồm 2 tầng:



DenseNet ở tầng này giúp dự đốn trên tồn bộ mơ hình RPN
YOLO hoặc SSD
Sparse Preediction giúp dự đoán với từng mảng được dự đốn
vật thể với các mơ hình RCNN

Neck : nằm giữa Backbone và Head , giúp làm giàu thông tin bằng
cách kết hợp thơng tin giữa q trình bottom-up và q trình top-down.

Trang 12


2.6 Phân loại YOLOv5
Khác với các bản YOLO trước, YOLOv5 cung cấp luôn 4 phiên bản
với kiến trúc mạng khác nhau:





YOLOv5s phiên bản nhỏ
YOLOv5m phiên bản trung bình
YOLOv5l phiên bản lớn

YOLOv5x phiên bản cực lớn

Hình 8. Phiên bản YOLOv5
2.7 Những cải tiến của YOLOv5 so với các phiên bản trước
Năm 2020, Glenn Jocher đã cho ra mắt YOLOv5 trên kho lưu trữ
của Ultralytics của mình YOLOv5 đã có những cải tiến hơn so với
YOLOv4:





Cải thiện về cấu hình huấn luyện.
Cải thiện về thời gian huấn luyện.
Tốc độ phát hiện nhanh.
YOLOv5 có nhiều phiên bản phù hợp với từng đối tượng sử dụng =>
tính thực thi cao. Nhưng so về độ chính xác thì YOLOv4 chiếm phần
tối ưu hơn.

CHƯƠNG 3 : THIẾT KẾ HỆ THỐNG
Trang 13


3.1 Tập dữ liệu chuẩn bị cho quá trình huấn luyện
Bước 1 : Dùng phần mềm Make Sence để gán nhãn cho từng hình ảnh
tàu trong tập dữ liệu

Hình 9. Hình ảnh tàu và label của từng hình
Bước 2 : Lưu hình ảnh và nhãn (labels) dưới dạng các tập folder sau


Trang 14


Hình 10. Chuẩn bị folder data
3.2 Hóa trình huấn luyện
Bước 1 : Cài đặt môi trường YOLOv5 trong Google Colab

Bước 2 : Truyền dữ liệu data vào Colab

Nén folder data thành file rar hoặc zip với tên “coco128”
Dùng câu lệnh như bên dưới để giải nén các nội dung bên trong tập
dữ liệu

Bước 3 : Tiến hành thay đổi dữ liệu của YOLOv5

Trang 15


Vào file data/coco128.yaml để thay đổi dữ liệu gốc của YOLOv5

Thay đổi những đường liên kết đến tập dữ liệu data coco128 đã
truyền lên lúc đầu.
Thay đổi classes với nc:1 và name là boat
Bước 4 : Tiến hành huấn luyện
Tiến hành train tập dữ liệu với kích thước ảnh 460 và train trong 150
lần. Với tập dữ liệu có quy mơ nhỏ thì sử dụng YOLOv5s để tăng tốc độ
train lên một cách đáng kể

Trang 16



CHƯƠNG 4 : KẾT QUẢ
Sau khi train 150 lần chúng ta sẽ thu về được kết quả với độ chính
xác cao trên 50%

Trang 17


Hình 11. Kết quả train

Hình 12. Biểu đồ kết quả

Chương 5 : KẾT LUẬN

Trang 18


Thuật toán YOLOv5 phát hiện đối tượng tàu tương đối chính xác với
tốc độ nhanh gần như real-time, tuy khơng khơng thể chính xác cao như
những thuật tốn khác trong mơ hình Object Detection.
YOLO là một mơ hình Object Detection phát hiện vật thể nên mục
tiêu của mơ hình khơng chỉ là dự báo nhãn cho vật thể như các bài tốn
classification mà nó cịn xác định được nhiều vật thể có nhãn khác nhau
trong một bức ảnh thay vì chỉ phân loại duy nhất một nhãn cho một bức
ảnh.

Trang 19




×