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