Professional Documents
Culture Documents
YOLO
YOLO
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.
Hai box trên một cái là box được dự đoán, một cái là true box.
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.
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!
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.
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.
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!
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.
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.
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.
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:
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
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