Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 20

YOLO v1

1.1 Cách hoạt động:

YOLO chia ảnh thành cac SxS grid cells. Mỗi grid cell chỉ dự đoán một vật thể đối tượng. Mỗi
gridcell dự đoán một số lượng cố định B các bounding boxes( thông thường B = 2 bounding
boxes). Mỗi bounding box bao gồm 5 phần tử (x, y, w, h) và box confidence score.
Mục đích của việc chia grid cells là chúng ta muốn đầu ra (Bx5 + C) của mạng cho từng grid cell
– cho chính xác một vùng (cell) trên ảnh. Bởi vì làm thế sẽ đảm bảo các vật thể đối tượng trên
ảnh không may bị bỏ xót. Ngược lại nếu không chia grid cells, có thể các đối tượng được dự
đoán chỉ tập trung vào 1 vùng của bức ảnh.
Lý do dung nhiều bounding boxes: để có thể dự đoán nhiều boxes với tỉ lệ, kích thước khác
nhau, … của đối tượng vật thể.
Khi đối tượng lớn hơn kích thước 1 cell: chỉ (x,y) thể hiện tâm của box được chuẩn hóa với
chính cell đang xét, còn w,h là được chuẩn hóa với kích thước của cả ảnh.
YOLO nhanh hơn các hệ thống phát hiện vật thể khác ( có thời gian inference time thấp), có thể
phát hiện vật thể với FPS cao  được sử dụng cho phát hiện vật thể thời gian thực là do:

 Các thuật toán phát hiện vật thể xử lý các giai đoạn trong đề xuất ứng viên -> rút đặt
trưng -> phân lớp -> tinh chỉnh bounding boxes
 Các thuật toán phát hiện vật thể được chia thành 2 nhóm:
 Nhóm 1: thuật toán xử lý riêng lẽ các giai đoạn (RCNN, fast RCNN, DPM,…) – một
quá trình gồm nhiều bước phức tạp sử dụng các neural networks – quá chậm trong ứng
dụng phát hiện vật thể thời gian thực. Đặc biệt RCNN sư dụng thuận toán Selective –
một thuật toán không áp dụng học trong bước đề xuất ứng viên.
 Nhóm 2: xử lý tích hợp các giai đoạn – duyệt toàn bộ ảnh: xác định vị trí, nhận diện
và phân lớp vật thể. YOLO thuộc nhóm 2.


Từ bảng ta thấy trong các hệ thống nhận diện thời gian thực (yêu cầu inference time thấp, FPS
cao) thì YOLO đang đứng thứ nhất. Hơn nữa một phiên bản Fast YOLO đánh đổi độ chính xác
nhưng FPS đạt tới 155.

1.2 Giải thích các tham số:


- Box confidence score: Cho biết khả năng cái box đó chứa vật thể đối thượng và độ
chính xác của bounding boxes.
- X, y: tọa độ tâm của vật thể đối tượng, được chuẩn hóa về 0,1 tương ứng với cell được
xét.
- W,h (width, height): chiều rộng và chiều cao của bounding box, được chuẩn hóa về 0, 1
tương ứng với chiều rộng và chiều cao của ảnh.
- Do đó tổng detections được thực hiện là (S,S,Bx5 + C)/ 1 bức ảnh: với mỗi grid cell, dự
đoán B bounding boxes, mỗi bounding box được dự đoán qua 5 tham số (x,y,w,h) và box
confidence score. Và cuối cùng là xác suất có điều kiện của C lớp. Cuối cùng ta sẽ chọn
lớp nào có xác suất cao nhất cho đối tượng đang được phân loại và giữ lại những
bounding boxes có box confidence scores cao.

1.3 Hai ngưỡng được xem xét để chọn ra


detection cuối cùng:
a. IoU(intersection over Union) :

Hai box trên một cái là box được dự đoán, một cái là true box.

b. Confidence threshold: ngưỡng confidence nhỏ nhất của


mô hình của vật thể được phát hiện:
Ở đây Pr(object) là một nếu vật thể được phát hiện được phát hiện, là 0 ngược lại. IoU ở
đây là của box được dự đoán so với Ground Truth.

1.4 Với mỗi grid cell:


- Dự đoán B bounding boxes, từng box có một box confidence score.
- Chỉ dự đoán một vật thể đối tưởng, mặc kệ có bao nhiều B bounding boxes đi chăng
nữa.
- Dự đoán C lớp xác suất có điều kiện.
Để tối ưu hóa YOLO, ta phải tính hàm mất mát và tính toán sao cho hàm mất mát là nhỏ nhất.

1.5 Hàm mất mát gồm:


Classification loss: nếu vật thể được phát hiện, thì sai số phân lớp được tính bằng
tổng bình phương lỗi của các lớp xác suất có điều kiện:
Giải thích công thức: Duyệt tất cả các cell có vật thể xuất hiện, tính tổng bình phương sai
số của xác suất có điều kiện.

Localization loss (sai số giữa bounding box được dự đoán và ground truth):

Giải thích công thức: Duyệt bounding box trong các cells chịu trách nhiệm phát hiện vật
thể , tính tổng sai số bình phương của bốn tham số (x,y,w,h). Lý do biểu thức chứa w và h có
căn bậc hai vì một phần muốn giải quyết vấn đề là chúng ta không muốn trọng lượng sai số
tuyệt đối của box có kích thước lớn bằng box có kích thước nhỏ. Ta muốn với cùng một lượng
error of pixels khi dự đoán, box kích thước lớn sẽ chịu error ít hơn box kích thước nhỏ. Hơn
nữa, để nhấn mạnh vào độ chính xác của boundary box, chúng ta nhân hàm mất mát này với
Lamda_coord (mặc định là 5).

Confidence loss: tính toán khả năng bounding box có chứa đối tượng:
Nếu đối tượng vật thể được phát hiện trong box, confidence loss được tính như sau:
Giải thích công thức: Duyệt boundary box trong các cell mà bounding box đó chịu trách
nhiệm cho phát hiện vật thể, tính sai số binh phương của tham số box confidence score trong
năm tham số xác định boundary box.
Nếu đối tượng vật thể không được phát hiện trong box, confidence loss được tính như sau:

Giải thích công thức: Chỉ khác trên một chút là ta chỉ duyệt các boundary box không tham
gia biểu thức ở trên và thêm trọng số lamda_noobj – no object để giảm trọng lượng của biểu
thức. Điều này nhằm mục đích tránh việc chúng ta phát hiện background nhiều hơn là đối
tượng vật thể vì đa số các box ở đây không chứa vật thể. (mặc định tham số lamda_noobj này là
0.5).

Tổng ta có hàm mất mát bằng tổng các hàm mất mát trên:
Non-maximal suppression: loại bỏ các phát hiện giống nhau (duplicate
detection) của cùng một object.

Thuật toán:
1. Sắp xếp các dự đoán bằng điểm độ tin cậy (confidence scores).
2. Bắt đầu với những top điểm tin cây, loại bỏ các dự đoán hiện tại đang xét nếu thấy bất
kì các dự đoán trước cùng lớp mà điểm IoU > N = 0.5 với dự đoán đang xét.
3. Lặp lại bước 2 đến khi tất cả dự đoán được kiểm tra.
Ở đây ta thấy điểm yếu của NMP là ngưỡng N là chìa khóa thành công của mô hình nhưng việc
chọn N trong các bài toán là khá khó. Một đề xuất của Navaneeth Bodla đã đề xuất Soft-NMS:
Thay vì loại bỏ hoàn toàn ứng viên được đề xuất, ta sẽ giảm giá trị confidence của box đó đi.

Toàn bộ quá trình của quá trình detection được


tổng kết như sau:
1. Chia bức ảnh thành 1 mạng SxS.
2. Phát hiện bounding box.
3. Tính toán các scores như trên.
4. Chọn các boxes dựa vào các ngưỡng confidence score và IoU score.
5. Sử dụng NMP để tránh các phát hiện giống nhau của cùng một vật thể.
6. Nếu detection trên cả hai ngưỡ.ng IoU và Confidence, nó sẽ là dự đoán cuối cùng.

Giới hạn:
- Đánh đổi giữa inference time và độ chính xác nên độ chính xác thấp.
- Khó phát hiện các vật thể nhỏ xuất hiện theo nhóm, như là một đàn chim chẳng hạn.
- Vấn đề Localization errors lớn. Ta xem biểu đồ dưới với Localization Errors 19%, việc
xác định bounding box bao vật thế với độ chính xác thấp.
- Chỉ có thể dự đoán 49 vật thể do 49 gridcells, mỗi gridcell chỉ có thể dự đoán 1 vật thể.

- Từ biểu đổ ta có thể thầy Localization errors của YOLO khá lớn (19%).

Yolo v2
Joseph Redmon & Ali Farhadi 2016
Một vài cải tiến quan trọng:
Batch normalization (tăng 2% mAP):
Cách thức hoạt động: normalize output của activation của lớp trước trong mạng NN bằng cách
trừ đi giá trị trung bình của batch và sau đó chia cho độ lêch chuẩn của batch. Cho phép SGD
(Stochastic Gradient Decent) denormalize.
Lợi ích: Tăng tốc thời gian huấn luyện và giảm covariance shift, giảm overfitting. Covariance
shift, ví dụ khi ta huấn luyện trên tập ảnh những con mèo màu đen rồi dự đoán trên tâp ảnh
mèo có màu thì mô hình sẽ không cho kết quả tốt. Đó là khi áp dụng Batch Normalization!

High Resolution Classifier (tăng 4% mAP):


Cách thức hoạt động:
Yolo v1 Yolo v2
1.Huấn luyện mạng phân lớp với ảnh 1. Huấn luyện mô hình với ảnh 224x224.
224x224
2.Sau đó tăng độ phân giải lên 448x448 cho 2. Sau đó tinh chỉnh mạng phân lớp với ảnh
việc phát hiện (detection). 448x448 với 10 epochs trước khi huấn luyện
cho detection.

Lợi ích: Huấn luyện cho phân lớp tốt hơn do độ phân giải ảnh tăng từ 224 đến 448.

Anchor Boxes và Dimension Cluster(tăng 7% recall):


Cách thức hoạt động:
Sử dụng anchor boxes – k boxes phổ biến nhất trong training set bounding boxes với các hình
dạng khác nhau. Sử dụng phân cụm k-means và IoU để phân loại k hình dạng khác nhau. Chọn k
sao cho cân bằng tradeoff giữa độ phức tạp và độ recall cao.
Ví dụ khi phát hiện quần áo, trang phục, các anchor box có thể là box dài đứng – quần jeans,
quần dài, box vuông – váy, quần ngắn, box dài, đứng và rộng- áo choàng quá gối… là các
bounding box phổ biến trong datasets.
Lợi ích: Chúng ta chỉ xét những box phổ biến như thế này cho việc dự đoán nhanh hơn.

Fine-Grained Features:
Yolo v1 Yolo v2
Chia ảnh thành 7x7 grid cells. Chia ảnh thành 13x13 grid cells.

Lợi ích: phát hiện và localize những vật thể nhỏ và tăng số lượng vật thế có thể được phát hiện
từ 49 lên 169 / ảnh.

Multi-scale Training: cải thiện trong quá trình huấn luyện


Yolo v1 Yolo v2
Có vấn đề khi ảnh đầu vào giống với ảnh Giải quyết bằng cách huấn luyện với dữ liệu
trong training set nhưng kích thước khác. ảnh có kích thước ngẫu nhiên từ 320x320 tới
608x608 (step = 32)

Darknet 19:
Thay đổi trong cấu trúc mạng gồm 19 lớp convolution và 5 lớp max-pooling và 1 lớp softmax
cho phân lớp:
Tổng kết:

Từ bảng ta thấy với những cải tiến ở trên, độ chính xác của Yolo v2 so với v1 là tăng đáng kể
(63.4-78.6).
Giờ đây YOLO v2 đã có thể phát hiện và phân lớp các vật thể với kích thước khác nhau nhờ
Multi-scale Training. Đồng thời ta thấy do kích thước ảnh càng lớn dẫn đến tăng inference time
 FPS giảm từ 91 xuống 40. Nhưng so với YOLO thì mAP tăng mạnh mà FPS chênh lệch không
cao.

YOLO v3
Joseph Redmon
- Đánh đổi FPS, inference time để tăng độ chính xác. (YOLOv2 chạy tốt với 45 FPS, YOLO
v3 chạy tốt hơn với FPS 30).
- Sự thay đổi nhiều nhất so với phiên bản trước là mạng Darknet-53, cũng là nguyên nhân
khiến YOLO v3 giảm FPS. Cải thiện rút trích đặc trưng!

Kiến trúc của mạng:


Chú thích:
Residual blocks nằm trong mạng cho phép đầu ra của các lớp nhảy tới các lớp tiếp theo cách 2
-3 lớp. Nhờ đó Backpropagation (tính gradient ngược trong deep learning) sẽ nhanh hơn, đặc
biệt là khi mạng có rất nhiều lớp, cho phép chúng ta xây dựng những mạng sâu hơn nữa.

Stride: số pixels mà mỗi khi trượt bộ lọc trên ảnh đầu vào, ta chỉ di chuyển bộ lọc Stride pixels /
1 lần.
Downsample / Upsample: Giảm/ tăng độ phân giải của ảnh.
Mô tả cách YOLO v3 dự đoán với 3 scales:
1. Lần đầu detection là tại lớp thứ 82. 81 lớp đầu downsample ảnh, ví dụ với ảnh đầu vào
416x416 thì tại lớp thứ 81 với stride = 32, tại lớp thứ 82 sử dụng 1x1 detection kernel
nên sẽ cho chúng ta môt detection feature map có dạng: (416 / 32) x (416 / 32) x
(B*(5+C) ) = 13x13x255 với B=3 là số bounding box, 5 là 4 tham số dự đoán của
bounding box và 1 tham số confidence score, C=80 là C classes.
2. Sau đó feature map sẽ dược upsample 2x thành 26x26 và depth concatenated với
feature map ở lớp 61 nhờ vào residual blocks. Việc này giúp giữ lại các đặc trưng do
downsample tạo ra.
3. Lần thứ 2 detection ở lớp thứ 94, tạo ra feature map có dạng 26x26x255.
4. Tương tự lần 3 detection sẽ ở lớp cuối cùng với feature map có dạng 52x52x255.
Do đó với cấu trúc mạng như thế này đã giải quyết khó khan phát hiện vật thể nhỏ mà ở YOLO
v2 làm chưa tốt:
- Lớp 13x13 sẽ chịu trách nhiệm phát hiện vật thể lớn do độ phân giải thấp.
- Lớp 26x26 chịu trách nhiệm phát hiện vật thể trung.
- Lớp 52x52 chịu trách nhiệm phát hiện vật thể nhỏ.

YOLO v2 YOLO v3
Class Prediction Áp dụng softmax function khi các Áp dụng independent
nhãn của vật thể là không liên quan logistic classifers khi các
tới nhau (exclusive). Ví dụ ‘Chó’, nhãn của vật thể có liên
‘Mèo’. quan tới nhau ‘non-
exclusive’. Ví dụ nhãn trong
tập dữ liệu có thể có là:
“Chó”, “Động vật”!
Do đó tối thiểu hóa hàm MSE như ở Do đó tối thiểu hóa hàm
YOLO v1 cho phân lớp. binary cross-entropy loss
cho phân lớp.

Bounding box Anchor box với IoU cao


Prediction & Cost nhất sẽ có
Function confidence(objectness) = 1.
Các anchor boxes khác có
ngưỡng > 0.5 sẽ không sinh
ra cost. Với các anchor
boxes chưa được gán,
không sinh ra Classification
loss và Localization loss, chỉ
có confidence loss.
So sánh performance:

YOLO v3 hơn hẳn so với YOLO v2. Việc phát hiện các vật thể có kích thước nhỏ được cải thiện
rất nhiều (5% mAP trong YOLO v2 so với 18.3% mAP trong YOLO v3), nhưng vẫn chưa bắt kịp
với mô hình RetinaNet.

Yolo V4:
Alexey Bochkovskiy
AP tăng 10%. FPS tăng 12% đồng nghĩa những cải tiến được thêm vào không làm tăng inference
time.

YOLO v4 cải tiến trong cấu trúc mạng của nó:


Backbone: CSPDarknet53.
Neck: SPP, PAN.
Head YOLO v3.

Back Bone: một thành phần trong mạng học sâu, được cấu thành chủ yếu là các lớp
convolution: trích xuất các features. Bao gồm 3 phần:

Bag of freebies: một tập các phương pháp chỉ tăng chi phí huấn luyện hoặc thay đổi
chiến lược huấn luyện trong khi giữ inference time mức thấp:
Data augmentation tạo ra các bức ảnh mới từ các bức ảnh trong dữ liệu huấn luyện để giúp cho
mô hình học học được đa dạng các trường hợp có thể có trong thực tế. Các phương pháp được
sử dụng:
CutMix Tạo ra ảnh bằng cách cắt một
phần ảnh rồi vá ảnh đó bằng
phần cắt của ảnh khác.

Mosaic data Kết hợp bốn ảnh với một tỉ lệ


augmentation thích hợp tạo thành ảnh mới.
Việc này cho phép mô hình học
cách phát hiện vật thể ở một
scale nhỏ hơn mình thường
localize các hình ảnh khác nhau
trên cùng một khung (frame).

 Label Smoothing: xác suất phân lớp bây giờ tối đa sẽ là 0.9 thay vì 1 để tính toán mất
mát. Làm cách này giúp giảm overfitting.
 DropBlock regularization: một dạng dropout, một vùng liên tiếp trong feature map bị
bỏ đi. DropBlock bỏ đi các features ở 1 vùng liên quan tới nhau. Điều này giúp mạng sẽ
xem xét các chỗ khác trên feature map để fit dữ liệu.

Bag of specials: các phương pháp tăng inference time nhưng đổi lại cải thiện đáng kệ độ
chính xác:

 Sử dụng Mish activation cho các neurons trong mạng.


 Cross-stage partial connection (CSP).
 Multi-input weighted residual connections (MiWRC).

Detector:
Bag of Freebies:
 CIoU
 DropBlock regularization
 Mosaic data augmentation
 Self-Adversarial Training

Bag of Specials:
 Mish activation
 SPP-block
 SAM-block
 PAN path aggregation block

Kết luận:
Khi chạy trên các kiến trúc Maxwell, Volta, Pascal GPUs thì từ biểu đồ trên ta có thể thấy với
cùng một khoảng FPS thì YOLO v4 có độ chính xác cao nhất. So với phiên bản YOLO v3 thì với
cùng FPS thì độ chính xác đã cải thiện 10-12 % mAP. YOLO v4 vẫn là mô hình phát hiện vật thể
thời gian thực tốt nhất tại thời điểm đó.

TỔNG KẾT
YOLO v1 YOLO v2 YOLO v3 YOLO v4
(cải thiện ở toàn bộ (cải thiện ở Rút (cải thiện lớn
giai đoạn: Đề xuất ứng Trích Đặc Trưng, nhất ở bước
viên, Rút trích đặc Phân lớp, Tinh training, Rút
trưng,) Chỉnh BB) trích đặc
trưng)
Batch Không Có Có
normaliza
tion
High Không Có Có
Resolutio
n Classifer
Anchor Không Có cộng với K-means Có Có
Box Clustering Đề xuất
ứng viên
Hướng Không Multi-Scale Training
giải quyết
khi ảnh
test giống
ảnh train
nhưng
kích
thước
khác
Kiến trúc Darknet Darknet-19 Darknet-53
mạng
Residual Không Không Có Có
Block
Upsample Không Không Có Có
Hướng Không Fine-Grained Features: Feature Pyramid
giải quyết chia 13 x13 grid cells. Netwwork:.
vấn đề  Rút trích đặc Multi-scale
nhận diện trưng prediction
vật thể Rút trích đặc
nhỏ trưng
Class Softmax Softmax Logistic classifier
Prediction Phân lớp
Hàm mất MSE MSE Binary cross-
mát cho entropy  Phân
phân lớp lớp
Hàm mất Anchor box với
mát cho IoU cao nhất sẽ
Bouding có
box confidence(obje
ctness) = 1. Các
anchor boxes
khác có ngưỡng
> 0.5 sẽ không
sinh ra cost. Với
các anchor
boxes chưa
được gán, không
sinh ra
Classification
loss và
Localization loss,
chỉ có
confidence loss.
Bouding Có score cho
Box bouding box 
Tinh chỉnh BB
Data CutMix, Mosaic
augmenta data
tion augmentation
Label 1 1 1 0.9
smooth
Class
score
Regulariza DropBlock
tion
Activation RELU logistic Softmax Mish

TƯƠNG LAI CỦA YOLO


YOLO đã trở nên rất nổi tiếng cho bài toán phát hiện vật thể thời gian thực. Tuy
nhiên kể từ phiên bản YOLOv3, tác giả đầu tiên của YOLO là Joseph Redmon
đã không còn nghiên cứu và cải thiện kiến trúc này nữa. Anh còn tuyên bố đã
ngừng nghiên cứu về thị giác máy tính do các lo ngại công nghệ được sử dụng
sai mục đích (sử dụng cho quân sự, các lo ngại về quyền riêng tư). Tuy thế, trên
quan điểm của tôi, công nghệ luôn có 2 mặt, tốt và xấu. Chúng ta vẫn sẽ nhận
được các "bản nâng cấp" YOLO từ các tác giả khác, như YOLOv4 vừa mới ra
mắt gần đây. Và trong tương lai YOLO v5 có thể sẽ được đăng báo chính thống.

Tham khảo:
1. https://arxiv.org/pdf/2004.10934.pdf
2. https://becominghuman.ai/explaining-yolov4-a-one-stage-detector-cdac0826cbd7
3. https://towardsdatascience.com/whats-new-in-yolov4-323364bb3ad3
4. https://blog.roboflow.com/a-thorough-breakdown-of-yolov4/
5. https://towardsdatascience.com/residual-blocks-building-blocks-of-resnet-
fd90ca15d6ec
6. https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b

You might also like